GNU/Linux >> Linux Esercitazione >  >> Linux

Come ottenere l'ID del processo per terminare un processo nohup?

lavori -l dovrebbe darti il ​​pid per l'elenco dei processi nohup.uccidili (-9) delicatamente.;)


Sto usando red hat linux su un server VPS (e tramite SSH - putty), per me ha funzionato quanto segue:

Innanzitutto, elenchi tutti i processi in esecuzione:

ps -ef

Quindi nella prima colonna trovi il tuo nome utente; L'ho trovato le seguenti tre volte:

  • Uno era la connessione SSH
  • La seconda era una connessione FTP
  • L'ultimo è stato il processo nohup

Quindi nella seconda colonna puoi trovare il PID del processo nohup e digita solo:

kill PID 

(ovviamente sostituendo il PID con il PID del processo nohup)

E questo è tutto!

Spero che questa risposta sia utile per qualcuno che sono anche molto nuovo a bash e SSH, ma ho trovato il 95% delle conoscenze di cui ho bisogno qui :)


supponiamo che io stia eseguendo lo script ruby ​​in background con il comando seguente

nohup ruby script.rb &

quindi posso ottenere il pid del processo in background sopra specificando il nome del comando. Nel mio caso il comando è ruby.

ps -ef | grep ruby

uscita

ubuntu   25938 25742  0 05:16 pts/0    00:00:00 ruby test.rb

Ora puoi facilmente terminare il processo usando il comando kill

kill 25938

Quando si utilizza nohup e metti l'attività in background, l'operatore in background (& ) ti darà il PID al prompt dei comandi. Se il tuo piano è di gestire manualmente il processo, puoi salvare quel PID e usarlo in seguito per terminare il processo se necessario, tramite kill PID o kill -9 PID (se hai bisogno di forzare l'uccisione). In alternativa, puoi trovare il PID in seguito tramite ps -ef | grep "command name" e individuare il PID da lì. Nota che nohup la parola chiave/comando stesso non appare nel ps output per il comando in questione.

Se usi uno script, puoi fare qualcosa di simile nello script:

nohup my_command > my.log 2>&1 &
echo $! > save_pid.txt

Questo eseguirà my_command salvando tutto l'output in my.log (in uno script, $! rappresenta il PID dell'ultimo processo eseguito). Il 2 è il descrittore di file per l'errore standard (stderr ) e 2>&1 dice alla shell di indirizzare l'output dell'errore standard allo standard output (descrittore di file 1 ). Richiede &1 in modo che la shell sappia che è un descrittore di file in quel contesto invece di un semplice file chiamato 1 . Il 2>&1 è necessario per catturare qualsiasi messaggio di errore che normalmente viene scritto in errore standard nel nostro my.log file (che proviene dallo standard output). Vedi Reindirizzamento I/O per maggiori dettagli sulla gestione del reindirizzamento I/O con la shell.

Se il comando invia l'output regolarmente, puoi controllare l'output occasionalmente con tail my.log , o se vuoi seguirlo "dal vivo" puoi usare tail -f my.log . Infine, se hai bisogno di terminare il processo, puoi farlo tramite:

kill -9 `cat save_pid.txt`
rm save_pid.txt

Linux
  1. Come uccidere un processo zombie su Linux

  2. Come trovare l'ID di processo (pid) di un programma terminale in esecuzione?

  3. Come ottengo il percorso di un processo in Unix/Linux

  4. Come ottenere l'ID processo del processo in background?

  5. Come ottenere il PID dal processo figlio biforcuto nello script della shell

Come uccidere un processo in Linux

Come trovare l'ID di processo di un programma e ucciderlo [Suggerimento rapido]

Come KILL un processo su Linux

Come uccidere o terminare un processo Linux:la guida definitiva

Come trovare il PID e il PPID di un processo in Linux

Come trovare il file .pid per un determinato processo