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
Author: infused, 2013-06-30

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
 256
Author: lurker,
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:)

 59
Author: Phonebox,
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
 30
Author: Sanjay Salunkhe,
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. ;)

 11
Author: Puneet S. Chauhan,
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]`
 4
Author: Balliver,
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

Proces zombie w końcu się zatrzymał.
 1
Author: John Joe,
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 
 0
Author: user2468325,
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}
 0
Author: NuOne T Attygalle,
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