2013-08-13 2 views
4

Как я могу контролировать работу, которая все еще работает (я думаю, оторвана?) После того, как я начал ее с nohup, вышел из сервера и зашел в систему? Обычно я использую jobs -l, чтобы увидеть, что работает, но это показывает пробел.Работа -l после nohup

ответ

5

Вам необходимо понять difference between a process and a job. Задания управляются оболочкой, поэтому, когда вы заканчиваете сеанс терминала и запускаете новый, вы теперь находитесь в новом экземпляре 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 
+0

Да, спасибо, это именно то различие, которое мне нужно было понять. – Mittenchops

2

Вы можете контролировать если если еще Состояние процессов работы с использованием

ps -p <pid>, где это идентификатор процесса вы получите после того, как с помощью команды nohup.

Если вы видите действительные записи, которые вы обрабатываете, вероятно, жив.

2

Вы могли бы иметь список процессов, запущенных под текущим пользователем с ps -u "$USER" или ps -u "$(whoami)".

Смежные вопросы