Sunucuda bir nohup işlemi çalıştırıyorum. Onu öldürmeye çalıştığımda putty konsolum kapanıyor.
süreç kimliğini bu şekilde bulmaya çalışıyorum:
ps -ef |grep nohup
bu öldürme komutudur
kill -9 1787 787
nohupkullanırken ve görevi arka plana koyduğunuzda, arka plan operatörü (
&) komut isteminde size PID'yi verecektir. Planınız süreci elle yönetmekse, bu PID'yi kaydedebilir ve daha sonra gerekirse
kill PIDveya
kill -9 PID(öldürmeye zorlamanız gerekiyorsa) aracılığıyla süreci öldürmek için kullanabilirsiniz. Alternatif olarak, PID'yi daha sonra
ps -ef | grep "command name"ile bulabilir ve PID'yi oradan bulabilirsiniz. Söz konusu komut için
psçıktısında
nohup` anahtar kelimesinin/komutunun kendisinin görünmediğini unutmayın.
Bir komut dosyası kullansaydınız, şöyle bir şey yapabilirdiniz:
nohup my_command > my.log 2>&1 &
echo $! > save_pid.txt
Bu my_command
komutunu çalıştıracak ve tüm çıktıyı my.log
dosyasına kaydedecektir (bir betikte $!
son çalıştırılan sürecin PID'sini temsil eder). 2standart hata (
stderr) için dosya tanımlayıcısıdır ve
2>&1kabuğa standart hata çıktısını standart çıktıya (dosya tanımlayıcısı
1) yönlendirmesini söyler. Kabuğun sadece
1adlı bir dosya yerine bu bağlamda bir dosya tanımlayıcısı olduğunu bilmesi için
&1gerektirir. 2>&1
, normalde standart hataya yazılan hata mesajlarını my.log
dosyamıza (standart çıktıdan gelen) yakalamak için gereklidir. Kabuk ile G/Ç yönlendirmesi hakkında daha fazla bilgi için G/Ç Yönlendirmesi adresine bakın.
Komut düzenli olarak çıktı gönderiyorsa, çıktıyı ara sıra tail my.log
ile kontrol edebilir veya "canlı" takip etmek istiyorsanız tail -f my.log
kullanabilirsiniz. Son olarak, süreci öldürmeniz gerekiyorsa, bunu şu yolla yapabilirsiniz:
kill -9 `cat save_pid.txt`
rm save_pid.txt
Bir VPS sunucusunda red hat linux kullanıyorum (ve SSH - putty aracılığıyla), benim için aşağıdakiler çalıştı:
İlk olarak, çalışan tüm süreçleri listelersiniz:
ps -ef
Sonra ilk sütunda kullanıcı adınızı bulursunuz; ben aşağıdaki üç kez buldum:
Ardından ikinci sütunda nohup işleminin PID'sini bulabilir ve sadece yazabilirsiniz:
kill PID
(PID'yi elbette nohup sürecinin PID'si ile değiştirerek)
İşte bu kadar!
Umarım bu cevap birileri için faydalı olur Ben de bash ve SSH konusunda çok yeniyim, ancak ihtiyacım olan bilginin% 95'ini burada buldum :)