在我使用 nohup 启动它、退出服务器并重新登录后,如何监控仍在运行的作业(我猜是分离的?)?通常,我jobs -l
用来查看正在运行的内容,但这显示为空白。
问问题
2694 次
4 回答
9
您需要了解流程和工作之间的区别。作业由 shell 管理,因此当您结束终端会话并开始新的会话时,您现在处于一个具有自己的作业表的新 Bash 实例中。您无法从原始外壳访问作业,但正如其他答案所指出的那样,您仍然可以找到并操作已启动的进程。例如:
$ nohup sleep 60 &
[1] 27767
# Our job is in the jobs table
$ jobs
[1]+ Running nohup sleep 60 &
# And this is the process we started
$ ps -p 27767
PID TTY TIME CMD
27767 pts/1 00:00:00 sleep
$ exit # and start a new session
# Now jobs returns nothing because the jobs table is empty
$ jobs
# But our process is still alive and kicking...
$ ps -p 27767
PID TTY TIME CMD
27767 pts/1 00:00:00 sleep
# Until we decide to kill it
$ kill 27767
# Now the process is gone
$ ps -p 27767
PID TTY TIME CMD
于 2013-08-13T20:11:23.220 回答
2
您可以使用ps -u "$USER"
或获得在当前用户下运行的进程列表ps -u "$(whoami)"
。
于 2013-08-13T20:04:29.213 回答
2
您可以监控进程是否仍在运行
ps -p <pid>
nohup
, 使用命令后得到的进程ID在哪里。
如果您看到您处理的有效条目可能是有效的。
于 2013-08-13T19:39:43.103 回答
1
尝试这个 :
ps -ef | grep <pid>
于 2013-08-13T19:54:42.913 回答