Jak uzyskać identyfikator procesu, aby zabić proces nohup?
Uruchamiam proces nohup na serwerze. Kiedy próbuję go zabić, moja konsola szpachlowa zamyka się.
Tak staram się znaleźć ID procesu:
ps -ef |grep nohup
To jest polecenie zabijania
kill -9 1787 787
8 answers
Gdy użyjesz nohup
i umieścisz zadanie w tle, operator tła (&
) poda ci PID W wierszu polecenia. Jeśli planujesz ręcznie zarządzać procesem, możesz zapisać ten PID i użyć go później do zabicia procesu, jeśli zajdzie taka potrzeba, za pomocą kill PID
lub kill -9 PID
(jeśli musisz wymusić zabicie). Alternatywnie, można znaleźć PID później przez ps -ef | grep "command name"
i zlokalizować PID stamtąd. Zauważ, że samo słowo kluczowe/polecenie nohup
nie pojawia się na wyjściu ps
dla polecenia w pytanie.
Jeśli użyłeś skryptu, możesz zrobić coś w stylu:
nohup my_command > my.log 2>&1 &
echo $! > save_pid.txt
Spowoduje to my_command
zapisanie wszystkich danych wyjściowych do my.log
(w skrypcie $!
reprezentuje PID ostatniego wykonanego procesu). 2
jest deskryptorem pliku dla błędu standardowego (stderr
) i 2>&1
mówi powłoce, aby skierowała standardowe wyjście błędu do standardowego wyjścia (deskryptor pliku 1
). Wymaga &1
, aby powłoka wiedziała, że jest deskryptorem pliku w tym kontekście, a nie tylko plikiem o nazwie 1
. 2>&1
jest potrzebny do przechwytywania wszelkich komunikatów o błędach, które normalnie są zapisywane do naszego pliku my.log
(który pochodzi ze standardowego wyjścia). Zobacz przekierowanie We/Wy aby uzyskać więcej informacji na temat obsługi przekierowania we/wy za pomocą powłoki.
Jeśli polecenie wysyła wyjście regularnie, możesz sprawdzić wyjście od czasu do czasu za pomocą tail my.log
, lub jeśli chcesz podążać za nim "na żywo", możesz użyć tail -f my.log
. Na koniec, jeśli chcesz zabić proces, możesz to zrobić poprzez:
kill -9 `cat save_pid.txt`
rm save_pid.txt
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-21 18:13:25
Używam red hat linux na serwerze VPS (i przez SSH-putty), dla mnie działało:
Najpierw wymieniasz wszystkie uruchomione procesy:
ps -ef
Następnie w pierwszej kolumnie znajdziesz swoją nazwę użytkownika; ja znalazłem ją trzy razy:
- jednym z nich było połączenie SSH
- drugi był połączeniem FTP
- ostatni był proces nohup
Następnie w drugiej kolumnie można znaleźć PID procesu nohup i tylko "type": "content"]}
kill PID
(zastąpienie PID oczywiście PID procesu nohup)
I to jest to!
Mam nadzieję, że ta odpowiedź będzie przydatna dla kogoś, kto również jest bardzo nowy w bash i SSH, ale znalazłem 95% wiedzy, której potrzebuję tutaj:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-06 10:37:38
Załóżmy, że uruchamiam skrypt Rubiego w tle za pomocą poniższego polecenia
nohup ruby script.rb &
Następnie mogę uzyskać pid powyższego procesu tła, podając nazwę polecenia. W moim przypadku komendantem jest ruby.
ps -ef | grep ruby
Wyjście
ubuntu 25938 25742 0 05:16 pts/0 00:00:00 ruby test.rb
Teraz możesz łatwo zabić proces używając polecenia kill
kill 25938
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-06-23 05:23:47
Jobs-L powinien podać pid dla listy procesów nohup. Zabij (-9) je delikatnie. ;)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-04 06:28:23
Możesz spróbować]}
kill -9 `pgrep [command name]`
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-23 00:33:55
To działa w Ubuntu
Wpisz to, aby dowiedzieć się PID
ps aux | grep java
Zostanie pokazany cały uruchomiony proces dotyczący Javy
W moim przypadku jest
johnjoe 3315 9.1 4.0 1465240 335728 ? Sl 09:42 3:19 java -jar batch.jar
Now kill it kill -9 3315
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-02-07 02:37:26
Uruchomiłem serwer django następującym poleceniem.
nohup manage.py runserver <localhost:port>
To działa na CentOS:
:~ ns$netstat -ntlp
:~ ns$kill -9 PID
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-06 05:28:44
Załóżmy, że wykonujesz program java za pomocą nohup, możesz uzyskać identyfikator procesu java przez
`ps aux | grep java`
Wyjście
xxxxx 9643 0.0 0.0 14232 968 pts/2
Następnie możesz zabić proces wpisując
sudo kill 9643
Lub powiedzmy, że musisz zabić wszystkie procesy Javy, a następnie użyć
sudo killall java
To polecenie zabija wszystkie procesory java. możesz tego użyć z procesem. po prostu podaj nazwę procesu na końcu polecenia
sudo killall {processName}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-27 04:55:20