5

在我使用 nohup 启动它、退出服务器并重新登录后,如何监控仍在运行的作业(我猜是分离的?)?通常,我jobs -l用来查看正在运行的内容,但这显示为空白。

4

4 回答 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 回答