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