Как я могу контролировать работу, которая все еще работает (я думаю, оторвана?) После того, как я начал ее с nohup, вышел из сервера и зашел в систему? Обычно я использую jobs -l
, чтобы увидеть, что работает, но это показывает пробел.Работа -l после nohup
ответ
Вам необходимо понять 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
Вы можете контролировать если если еще Состояние процессов работы с использованием
ps -p <pid>
, где это идентификатор процесса вы получите после того, как с помощью команды nohup
.
Если вы видите действительные записи, которые вы обрабатываете, вероятно, жив.
Попробуйте это:
ps -ef | grep <pid>
Вы могли бы иметь список процессов, запущенных под текущим пользователем с ps -u "$USER"
или ps -u "$(whoami)"
.
Да, спасибо, это именно то различие, которое мне нужно было понять. – Mittenchops