我有一个 VPSDigitalOcean
和一个Ubuntu Droplet
.为了执行后台任务,我使用nohup
命令。
# nohup python patrol.py &
一切正常,但是当我关闭 ssh 连接并再次连接时,我发现进程 ID 不存在。Python 任务每 20 分钟向 api 发送一个请求。从 api 服务器控制台,我发现该进程仍然有效。但是从ps
命令我找不到进程ID
答案1
ps
默认情况下,仅显示在同一终端中运行的进程,因此在 SSH 连接终止后发送到后台的进程将不会显示。
正如手册所说,使用ps -ef
或其中之一(手册页):
要使用标准语法查看系统上的每个进程:
ps -e ps -ef ps -eF ps -ely
使用 BSD 语法查看系统上的每个进程:
ps ax ps axu
不过,如果您只想每 20 分钟运行一次,那么运行它cron
可以让您不必在系统重新启动时重新启动进程,并且即使先前的运行由于某种原因崩溃,也可以运行未来的任务。