2013-05-29 3 views
28

Я обращаюсь к серверу, на котором работает CentOS (дистрибутив Linux) с SSH-соединением. Поскольку я не всегда могу войти в систему, я использую «nohup [command] &» для запуска моих программ.Как получить список запущенных программ с nohup

Я не мог найти, как получить список всех программ, которые я начал использовать nohup. «jobs» работает только до выхода из системы. После этого, если я снова вернусь, команда jobs ничего мне не покажет, но я могу видеть в моих файлах журналов, что мои программы все еще работают.

Есть ли способ получить список всех программ, которые я начал использовать «nohup»?

ответ

53

Когда я начал с $ nohup storm dev-zookeper,

method1: использованием jobs,

[email protected]:/home/vmfest# jobs -l 
[1]+ 11129 Running     nohup ~/bin/storm/bin/storm dev-zookeeper & 

METHOD2:с использованием команды ps.

$ ps xw 
PID TTY  STAT TIME COMMAND 
1031 tty1  Ss+ 0:00 /sbin/getty -8 38400 tty1 
10582 ?  S  0:01 [kworker/0:0] 
10826 ?  Sl  0:18 java -server -Dstorm.options= -Dstorm.home=/root/bin/storm -Djava.library.path=/usr/local/lib:/opt/local/lib:/usr/lib -Dsto 
10853 ?  Ss  0:00 sshd: vmfest [priv] 

TTY колонка с ? =>nohup запущенных программ.

Описание

  • Телетайп колонка = терминал, связанный с процессом
  • STAT столбца = состояние процесса
    • S = прерываемой сна (ожидания события для завершения)
    • l = многопоточное (с использованием CLONE_THREAD, например NPTL pthreads do)

Ссылка

$ man ps # затем искать /PROCESS STATE CODES

17

Вместо nohup вы должны использовать screen. Он достигает такого же результата - ваши команды работают «отсоединены». Тем не менее, вы можете возобновить сеансы экрана и вернуться в свой «скрытый» терминал и увидеть недавний прогресс внутри этого терминала.

screen имеет много вариантов. Чаще всего я использую эти:

Для начала первой сессии экрана или взять на себя из самых последних отдельностоящих один:

screen -Rd 

Чтобы отсоединиться от текущей сессии: Ctrl + ACtrl + D

Вы также можете запустить несколько экранов - прочитайте документы.

+5

Кажется быть хорошей альтернативой для меня , Я также узнал, что могу найти PID с «ps auwx» –

+3

Вопрос четко спрашивает * Есть ли способ получить список всех программ, которые я начал использовать «nohup»? *, Но этот ответ даже не слегка обратитесь к вопросу. Почему это принято? –

+0

Потому что в 2013 году это был единственный ответ, который помог. –

4

Вы не можете точно получить список команд, начатых с nohup, но вы можете видеть их вместе с другими процессами, используя команду ps x. Команды, начатые с nohup, будут иметь знак вопроса в столбце TTY.

+1

«ps x» не помогло, но я узнал, что «ps auxw» делает. –

6

Если у вас есть выход стандартной редирект "nohup.out" просто посмотреть, кто использует этот файл

lsof | grep nohup.out 
+0

Это умный способ. Но в моем случае это не дает никаких результатов. Хотя я уверен, что команда nohup все еще запущена, и она использует файл nohup.out. –

1

Вы также можете просто использовать верхнюю команду и идентификатор пользователя будет указывать на работу запущенных и их время.

$ top

(это покажет все запущенные рабочие места)

$ top -U [user ID]

(Это покажет рабочие места, которые являются специфическими для идентификатора пользователя)

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