Найдите процесс, запущенный командой nohup

Я запускаю исполняемый файл сервера в Centos, используя следующую команду "nohup server &". Теперь мне нужно убить процесс "server". Но я попробовал команду "ps -a", чтобы получить PID, но не смог получить процесс. Как теперь убить "server"?


person 2vision2    schedule 04.01.2013    source источник
comment
ps auxwww|grep -i 'сервер' должен возвращать все процессы, в которых есть 'сервер'. В противном случае сервер может быть уже остановлен.   -  person Usman Saleem    schedule 04.01.2013
comment
@Usman Saleem, спасибо, это решает мой ответ. У меня есть еще одно сомнение, сервер nohup и правильная ли команда для запуска процесса в фоновом режиме, даже если я закрою терминал?   -  person 2vision2    schedule 04.01.2013
comment
@Mikhail, спасибо, это решает мой ответ. У меня есть еще одно сомнение, сервер nohup и правильная ли команда для запуска фонового процесса, даже если я закрываю терминал?   -  person 2vision2    schedule 04.01.2013
comment
Да, вы можете определить PID сразу, когда вы вызываете команду: «nohup server &», за которой следует «print $! ›› server_pid_file'   -  person Usman Saleem    schedule 04.01.2013
comment
да, использование команды nohup означает, что ваш «серверный» процесс отклонит прерывание «HUP», которое ОС отправляет при закрытии терминала. Он также отбросит «kill -HUP pid» или «kill -1 pid».   -  person Usman Saleem    schedule 04.01.2013
comment
Вы также можете использовать batch или at для запуска server   -  person Basile Starynkevitch    schedule 04.01.2013


Ответы (4)


ps auxwww|grep -i 'server' должен возвращать все процессы, в которых есть server. В противном случае сервер может быть уже остановлен.

Вы должны быть в состоянии определить PID (и сохранить его в файле) следующим образом:

nohup server &
print $! >> my_server.pid
person Usman Saleem    schedule 04.01.2013

Если был создан файл nohup.out, вы можете запустить в bash:

# lsof nohup.out

он вернет pid, который создал/запускает файл

с уважением!

person ignivs    schedule 20.08.2014

Не существует определенного способа поймать точный процесс с помощью команды ps, но вы можете использовать следующее:

ps -a | grep "server"

Вы получите список всех процессов, запущенных с именем «сервер».

Или вы можете использовать любые другие ключевые слова для поиска вывода ps.

person Arpit    schedule 04.01.2013

Лучший способ запустить сервер в Centos — с помощью команды service.

So service httpd start

Есть шанс, что вы захотите написать свою программу как демон

Демон (или служба) — это фоновый процесс, предназначенный для автономной работы с минимальным вмешательством пользователя или без него. Демон http веб-сервера Apache (httpd) является одним из таких примеров демона. Он ожидает в фоновом режиме, прослушивая определенные порты, и обслуживает страницы или обрабатывает сценарии в зависимости от типа запроса.

См. http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html

person Mikhail    schedule 04.01.2013
comment
Мне просто нужно запустить исполняемый фон? Вы можете привести пример? - person 2vision2; 04.01.2013
comment
@2vision2 вы хотите написать свою программу как демон Linux, см. netzmafia.de /skripten/unix/linux-daemon-howto.html - person Mikhail; 04.01.2013