Як отримати список програм, що працюють з nohup


81

Я отримую доступ до сервера, на якому запущено CentOS (дистрибутив Linux) із з'єднанням SSH. Оскільки я не завжди можу залишатися в системі, я використовую "nohup [команда] &" для запуску своїх програм.

Я не міг знайти, як отримати список усіх програм, які я почав використовувати nohup. "робота" працює лише до того, як я вийду з системи. Після цього, якщо я знову ввійду в систему, команда Jobs нічого не показує, але у своїх журналах я бачу, що мої програми все ще працюють.

Чи є спосіб отримати список усіх програм, які я почав використовувати "nohup"?


Знайшов чудову статтю, яка може допомогти з питанням: cyberciti.biz/faq/… . Найголовніше, корисно, якщо ви можете інтерпретувати результати команди ps, особливо стовпець stat. Якщо ні, читайте статтю ЗАРАЗ ;-)
jumping_monkey

Відповіді:


115

Коли я починав з $ nohup storm dev-zookeper,

МЕТОД1: використання jobs,

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

МЕТОД2: використання 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запущеними програмами.

Опис

  • Стовпець TTY = термінал, пов'язаний із процесом
  • Стовпець STAT = стан процесу
    • S = переривний сон (очікування завершення події)
    • l = багатопотоковий (використовуючи CLONE_THREAD, як це робить NPTL pthreads)

Довідково

$ man ps # потім шукати /PROCESS STATE CODES


5
Метод 2 не містить переліку програм, які були запущеніnohup . У ньому перелічені процеси, які не приєднані до TTY, що зовсім інша річ: процеси, розпочаті з, nohupзалишаються приєднаними до батьківського TTY, поки він не буде закритий; процеси, які не приєднані до TTY, не обов'язково запускалися nohup. Тобто метод 2 серед інших процесів перелічує деякі програми, що працюють із nohup.
Арктур ​​Б,

4
Jobs не працює для мене, працює лише для того самого сеансу ssh, якщо я від'єднаюсь і
підключуся

29

Замість nohup, ви повинні використовувати screen. Це досягає того самого результату - ваші команди працюють "від'єднано". Тим не менш, ви можете відновити сеанси екрану та повернутися до їхнього "прихованого" терміналу та побачити останній прогрес всередині цього терміналу.

screenмає багато варіантів. Найчастіше я використовую такі:

Щоб розпочати перший сеанс екрану або взяти на себе останнє відокремлене:

screen -Rd 

Щоб від'єднатися від поточного сеансу: Ctrl+ACtrl+D

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


6
Здається, це хороша альтернатива для мене. Я також дізнався, що я міг знайти PID з "ps auwx"
Nils De Winter

7
Питання чітко задається. Чи є спосіб отримати список усіх програм, які я почав використовувати "nohup"? , проте ця відповідь навіть трохи не стосується питання. Чому це прийнято?
Парк Луки Джошуа

3
Бо ще в 2013 році це допомогла єдина відповідь.
Nils De Winter

21

Якщо у вас є стандартне переспрямування на "nohup.out", просто подивіться, хто використовує цей файл

lsof | grep nohup.out

1
Це розумний спосіб. Але в моєму випадку це не дає результатів. Хоча я впевнений, що команда nohup все ще працює, і вона використовує файл nohup.out.
Юліус Ш.

1
Це нормально у всіх TTY, але покажіть подвійний процес для кожного nohup!
Nabi KAZ

@ NabiK.AZ від man lsof: "Загалом потоки та завдання успадковують файли абонента, але можуть закрити деякі та відкрити інші, тому lsof завжди повідомляє про всі відкриті файли потоків та завдань." Я не зміг знайти інформацію про nohup у його людині, але, схоже, він використовує дві нитки, а не одну.
Ярослав Нікітенко

6

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


3
"ps x" не допомогло, але я з'ясував, що "ps auxw" робить.
Nils De Winter

5

Ви також можете просто використати верхню команду, і ваш ідентифікатор користувача вкаже виконувані завдання та їх час.

$ top

(це покаже всі запущені завдання)

$ top -U [user ID]

(Це покаже завдання, специфічні для ідентифікатора користувача)


До того ж, приємним у цьому є те, що він залишається на вашій консолі, щоб ви могли спостерігати за роботою і знати, коли вона закінчується
rgilligan
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.