práce -l by vám měl poskytnout pid pro seznam procesů nohup. Kill (-9) je jemně.;)
Používám red hat linux na serveru VPS (a přes SSH - putty), pro mě fungovalo následující:
Nejprve vypíšete všechny běžící procesy:
ps -ef
Poté v prvním sloupci najdete své uživatelské jméno; Našel jsem to třikrát:
- Jedním z nich bylo připojení SSH
- Druhým bylo připojení FTP
- Poslední byl proces nohup
Poté ve druhém sloupci najdete PID procesu nohup a zadáte pouze:
kill PID
(samozřejmě nahrazením PID PID procesu nohup)
A je to!
Doufám, že tato odpověď bude užitečná pro někoho, kdo jsem také velmi nový v bash a SSH, ale našel jsem zde 95 % znalostí, které potřebuji :)
předpokládejme, že na pozadí spouštím ruby skript s níže uvedeným příkazem
nohup ruby script.rb &
pak mohu získat pid výše uvedeného procesu na pozadí zadáním názvu příkazu. V mém případě je příkaz ruby.
ps -ef | grep ruby
výstup
ubuntu 25938 25742 0 05:16 pts/0 00:00:00 ruby test.rb
Nyní můžete proces snadno zabít pomocí příkazu kill
kill 25938
Při použití nohup a dáte úlohu na pozadí, operátor na pozadí (& ) vám na příkazovém řádku poskytne PID. Pokud máte v plánu řídit proces ručně, můžete si toto PID uložit a použít jej později k ukončení procesu, pokud to bude potřeba, pomocí kill PID nebo kill -9 PID (pokud potřebujete zabít násilím). Případně můžete PID najít později pomocí ps -ef | grep "command name" a odtud vyhledejte PID. Všimněte si, že nohup samotné klíčové slovo/příkaz se v ps neobjevuje výstup pro daný příkaz.
Pokud používáte skript, můžete ve skriptu provést něco takového:
nohup my_command > my.log 2>&1 &
echo $! > save_pid.txt
Tím se spustí my_command uložení veškerého výstupu do my.log (ve skriptu $! představuje PID posledního provedeného procesu). 2 je deskriptor souboru pro standardní chybu (stderr ) a 2>&1 řekne shellu, aby směroval standardní chybový výstup na standardní výstup (deskriptor souboru 1 ). Vyžaduje &1 takže shell ví, že se v tomto kontextu jedná o deskriptor souboru, nikoli pouze o soubor s názvem 1 . 2>&1 je potřeba k zachycení všech chybových zpráv, které se normálně zapisují do standardní chyby do našeho my.log soubor (který pochází ze standardního výstupu). Další podrobnosti o práci s přesměrováním I/O pomocí shellu naleznete v části Přesměrování I/O.
Pokud příkaz odesílá výstup pravidelně, můžete výstup občas zkontrolovat pomocí tail my.log , nebo pokud to chcete sledovat "živě", můžete použít tail -f my.log . Nakonec, pokud potřebujete proces ukončit, můžete to udělat pomocí:
kill -9 `cat save_pid.txt`
rm save_pid.txt