在Linux中如何通过nohup命令监控进程状态
在 Linux 中,nohup 是一个常用工具,常用于在后台运行程序,使其脱离终端控制,即使你关闭了 SSH 或终端窗口,程序也不会被中断。不过,nohup 本身不具备监控功能,它只是确保进程持续运行。要监控进程状态,还需结合其他工具使用。
下面我给你系统讲一下:如何使用 nohup 启动进程 + 查看和监控其状态。
一、使用 nohup 启动后台进程
示例:启动一个 Python 脚本
nohup python3 your_script.py > output.log 2>&1 &
含义:
nohup:忽略挂起信号
> output.log 2>&1:标准输出和错误输出都写入日志
&:让程序在后台运行
启动后会生成一个默认日志文件(如 nohup.out),或你指定的 output.log。
二、如何查看进程是否在运行
方法 1:通过 ps 命令查看
ps aux | grep your_script.py
你会看到包含 python3 your_script.py 的一行,说明它在运行。
方法 2:用 pgrep 快速找进程号(PID)
pgrep -f your_script.py
如果返回 PID,则进程存活。没有返回说明进程没在运行。
方法 3:查看 nohup.out 或自定义日志输出
tail -f output.log
可以实时查看程序是否有输出、是否报错、运行进度如何。
三、持续监控建议
1. 用 top 或 htop 查看资源消耗
top -p
或者
htop # 更好用的交互式界面,需安装
2. 用 watch 命令定时查看进程状态
watch -n 5 'pgrep -fl your_script.py'
每 5 秒自动刷新查看进程是否存在。
四、建议搭配 Supervisor 或 systemd 使用(更专业)
nohup 虽方便,但不具备自动重启、日志轮转等功能。
推荐部署服务时用:
supervisor → 简单易配
systemd → 现代 Linux 系统的默认进程管理器
比如 supervisor 的配置样例:
[program:myjob]
command=/usr/bin/python3 /home/user/your_script.py
autostart=true
autorestart=true
stdout_logfile=/var/log/myjob.log
stderr_logfile=/var/log/myjob.err
总结一下:
启动程序:nohup ./run.sh > run.log 2>&1 &
查看是否还在跑:`ps aux
查看输出:tail -f run.log
持续监控:watch -n 5 'pgrep -fl run.sh'