Saat ini saya menggunakan baris seperti ini di file skrip sh saya:
kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'`
Tapi saya ingin tahu bagaimana menyebutnya hanya jika proses (di myServer
sini) berjalan?
Saat ini saya menggunakan baris seperti ini di file skrip sh saya:
kill `ps aux | grep -F 'myServer' | grep -v -F 'grep' | awk '{ print $2 }'`
Tapi saya ingin tahu bagaimana menyebutnya hanya jika proses (di myServer
sini) berjalan?
Jawaban:
Saya biasanya hanya menggunakan pgrep dan pkill
if pgrep myServer; then pkill myServer; fi
pkill myServer
atau killall -q myServer
? Tidak ada kerugian untuk mencoba membunuh proses yang tidak ada.
|| true
kemudian.
if ! killall -q myServer; then echo ERROR; fi
?
Sedikit pendekatan yang berbeda akan menjadi seperti ini:
killall PROCESS || echo "Process was not running."
Ini akan menghindari 1
Kode-Kesalahan yang dikembalikan dari killall
perintah, jika prosesnya tidak ada. Bagian echo
hanya akan bertindak, jika killall
kembali 1
, sementara itu sendiri akan kembali 0
(sukses).
killall -q
lebih baik
killall -q
tidak didukung pada semua rasa unix, macOS Catalina masih belum memilikinya.
coba gunakan:
sudo kill `pidof process_name`
di mana process_name adalah nama proses yang ingin Anda bunuh. Apa yang hebat tentang ini adalah bahwa pidof akan mendaftar pid dari semua proses yang cocok dengan nama yang diberikan. Karena membunuh menerima beberapa pid, itu akan membunuh mereka semua dalam satu tingkah.
Beri tahu saya jika ini membantu.
kill `pidof process_name
. Jika itu mengembalikan daftar kosong, lewati panggilan bunuh.
Naskah Kecil yang saya buat dengan R&D. Saya harap Anda akan menyukainya
#!/bin/bash
echo " Enter the process name:"
read $proc_name
if pgrep $proc_name
then
echo " $proc_name running "
pkill $proc_name
echo "$proc_name got killed"
else
echo " $proc_name is not running/stopped "
fi
simpan dengan beberapa nama seperti script.sh lalu
chmod +x script.sh
./script.sh
Kemudian berikan nama proses Anda.
Catatan: Saya sudah mencoba berkali-kali dengan ini dan baik-baik saja.
Periksa apakah ada proses dengan pidof
. Jika ya, bunuhlah:
(! pidof process_name) || sudo kill -9 $(pidof process_name)
Kode keluar selalu 0 setelah menjalankan perintah di atas.
kill
hanya ketika proses sedang berjalan, karena ada kondisi perlombaan antara tes dan doakill
(mungkin proses berhenti karena alasan lain dalam waktu singkat). Anda harus menggunakanpkill
ataukillall
yang melakukan persis sama dengan apa yang Anda coba lakukan, tetapi dengan kurang mengetik (dan mungkin beberapa kelebihan lainnya juga).