Я получаю доступ к серверу с CentOS (дистрибутив Linux) через SSH-соединение. Поскольку я не могу всегда оставаться в системе, я использую "nohup [command] &" для запуска своих программ.
Я не мог найти, как получить список всех программ, которые я начал использовать nohup. «Работа» срабатывает только до того, как я выйду из системы. После этого, если я снова войду в систему, команда jobs ничего не покажет мне, но я вижу в своих файлах журнала, что мои программы все еще работают.
Есть ли способ получить список всех программ, которые я начал использовать "nohup"?
Ответы:
Когда я начал
$ 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
запущенными программами.Описание
Справка
$ man ps
# затем поиск/PROCESS STATE CODES
источник
nohup
. В нем перечислены процессы, которые не прикреплены к TTY, что совсем другое дело: процессы, запущенные с,nohup
остаются прикрепленными к своему родительскому TTY, пока он не будет закрыт; процессы, не подключенные к TTY, не обязательно запускалисьnohup
. Таким образом, метод 2 перечисляет среди других процессов некоторые программы, работающие сnohup
.Вместо этого
nohup
вы должны использоватьscreen
. Это дает тот же результат - ваши команды работают «отдельно». Однако вы можете возобновить сеансы экрана и вернуться в их «скрытый» терминал и увидеть недавний прогресс внутри этого терминала.screen
есть много вариантов. Чаще всего использую такие:Чтобы начать сеанс первого экрана или заменить последний отключенный:
Чтобы отключиться от текущего сеанса: Ctrl+ACtrl+D
Вы также можете запустить несколько экранов - прочтите документацию.
источник
Если у вас есть стандартное перенаправление вывода на "nohup.out", просто посмотрите, кто использует этот файл.
источник
man lsof
: «Обычно потоки и задачи наследуют файлы вызывающего, но могут закрывать одни и открывать другие, поэтому lsof всегда сообщает обо всех открытых файлах потоков и задач». Я не смог найти информацию о nohup в его man, но похоже, что он использует два потока, а не один.Вы не можете точно получить список команд, с которых начался,
nohup
но вы можете увидеть их вместе с другими вашими процессами, используя командуps x
. Команды, начинающиеся с,nohup
будут отмечены вопросительным знаком в столбце TTY.источник
Вы также можете просто использовать команду top, и ваш идентификатор пользователя будет указывать на выполняемые задания и их время.
$ top
(это покажет все запущенные задания)
$ top -U [user ID]
(Это покажет задания, специфичные для идентификатора пользователя)
источник