Jeg kjører en nohup-prosess på serveren. Når jeg prøver å drepe den, lukkes putty-konsollen i stedet.
Slik prøver jeg å finne prosess-ID-en:
ps -ef |grep nohup
dette er kommandoen for å drepe
kill -9 1787 787
Når du bruker nohup
og legger oppgaven i bakgrunnen, vil bakgrunnsoperatøren (&
) gi deg PID ved ledeteksten. Hvis du planlegger å administrere prosessen manuelt, kan du lagre denne PID-en og bruke den senere til å drepe prosessen ved behov, via kill PID
eller kill -9 PID
(hvis du trenger å tvinge prosessen til å bli drept). Alternativt kan du finne PID-en senere ved hjelp av ps -ef | grep "kommandonavn"
og finne PID-en derfra. Merk at nohup
nøkkelordet/kommandoen i seg selv ikke vises i ps
-utdataene for den aktuelle kommandoen.
Hvis du bruker et skript, kan du gjøre noe slikt:
nohup my_command > my.log 2>&1 &
echo $! > save_pid.txt
Dette vil kjøre my_command
og lagre alle utdata i my.log
(i et skript representerer $!
PID-en til den sist utførte prosessen). 2
er filbeskrivelsen for standardfeil (stderr
), og 2>&1
forteller skallet å rute standardfeilutdata til standardutdata (filbeskrivelsen 1
). Det krever &1
slik at skallet vet at det er en filbeskrivelse i den konteksten og ikke bare en fil med navnet 1
. 2>&1
er nødvendig for å fange opp eventuelle feilmeldinger som normalt skrives til standardfeil i filen my.log
(som kommer fra standardutdata). Se I/O-omdirigering for mer informasjon om håndtering av I/O-omdirigering med skallet.
Hvis kommandoen sender utdata med jevne mellomrom, kan du sjekke utdataene av og til med tail my.log
, eller hvis du vil følge den "live", kan du bruke tail -f my.log
. Til slutt, hvis du trenger å drepe prosessen, kan du gjøre det via:
kill -9 `cat save_pid.txt`
rm save_pid.txt
Jeg bruker red hat linux på en VPS-server (og via SSH - putty), for meg fungerte følgende:
Først lister du opp alle prosessene som kjører:
ps -ef
Deretter finner du brukernavnet ditt i den første kolonnen; jeg fant det følgende tre ganger:
I den andre kolonnen finner du PID-en til nohup-prosessen, og du skriver bare inn:
kill PID
(og erstatter selvfølgelig PID med nohup-prosessens PID).
Og det var det!
Jeg håper dette svaret vil være nyttig for noen, jeg er også veldig ny på bash og SSH, men fant 95% av kunnskapen jeg trenger her :)