在nohup之后的工作-l

时间:2013-08-13 19:31:18

标签: linux bash nohup

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

4 个答案:

答案 0 :(得分:6)

您需要了解difference between a process and a job。作业由shell管理,因此当您结束终端会话并启动一个新会话时,您现在处于一个新的Bash实例中,并具有自己的作业表。您无法从原始shell访问作业,但正如其他答案所述,您仍然可以找到并操作已启动的进程。例如:

$ 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

答案 1 :(得分:2)

您可以使用

监控是否仍在运行

ps -p <pid>,使用nohup命令后获得的进程的ID。

如果您看到有效的条目,您可能会处于活跃状态。

答案 2 :(得分:2)

您可以使用ps -u "$USER"ps -u "$(whoami)"列出当前用户下运行的流程列表。

答案 3 :(得分:1)

试试这个:

ps -ef | grep <pid>