别再只拿 Codex 写代码了!15+ 个“不务正业“的用法,让它变成你的全能数字员工
2026/7/14 17:06:40
SSH断开,程序就停了?
今天聊聊怎么让程序在后台持续运行。
当你SSH登录服务器运行程序,断开SSH后程序会收到SIGHUP信号然后退出。
最简单的方法:
nohup命令&例子:
nohupjava-jarapp.jar&输出会保存到nohup.out文件。
指定输出文件:
nohupjava-jarapp.jar>app.log2>&1&查看后台进程:
jobspsaux|grepapp.jarscreen可以创建一个"虚拟终端",断开后程序继续运行。
安装:
aptinstallscreen# Ubuntuyuminstallscreen# CentOS基本用法:
# 创建新会话screen-Smyapp# 在会话里运行程序java-jarapp.jar# 按Ctrl+A然后按D,脱离会话(程序继续运行)# 查看会话列表screen-ls# 重新连接会话screen-rmyapp常用快捷键(先按Ctrl+A):
tmux比screen功能更强,是现代化的选择。
安装:
aptinstalltmux# Ubuntuyuminstalltmux# CentOS基本用法:
# 创建新会话tmux new-smyapp# 运行程序java-jarapp.jar# 按Ctrl+B然后按D,脱离会话# 查看会话tmuxls# 重新连接tmux attach-tmyapp# 关闭会话tmux kill-session-tmyapp常用快捷键(先按Ctrl+B):
正式环境推荐把程序注册成systemd服务。
创建服务文件:
sudovim/etc/systemd/system/myapp.service[Unit] Description=My Application After=network.target [Service] Type=simple User=app WorkingDirectory=/opt/app ExecStart=/usr/bin/java -jar /opt/app/myapp.jar Restart=always RestartSec=10 [Install] WantedBy=multi-user.target启用服务:
sudosystemctl daemon-reloadsudosystemctlenablemyappsudosystemctl start myapp管理服务:
systemctl start myapp systemctl stop myapp systemctl restart myapp systemctl status myapp# 查看日志journalctl-umyapp-f| 场景 | 推荐方法 |
|---|---|
| 临时运行脚本 | nohup |
| 调试开发 | tmux/screen |
| 正式生产 | systemd |
# 查看所有进程psaux# 查找特定进程psaux|grepjavapgrep-fmyapp# 结束进程kill进程IDkill-9进程ID# 强制我用星空组网管理多台服务器,经常需要远程查看后台进程:
# 查看各服务器Java进程foripin10.26.1.{10..15};doecho"===$ip==="sshroot@$ip"ps aux | grep java | grep -v grep"done后台运行程序的方法:
nohup 命令 &记住:生产环境一定要用systemd,可以开机自启、崩溃自动重启。
有问题评论区交流~