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 myServersini) 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 myServersini) berjalan?
Jawaban:
Saya biasanya hanya menggunakan pgrep dan pkill
if pgrep myServer; then pkill myServer; fi
pkill myServeratau killall -q myServer? Tidak ada kerugian untuk mencoba membunuh proses yang tidak ada.
|| truekemudian.
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 1Kode-Kesalahan yang dikembalikan dari killallperintah, jika prosesnya tidak ada. Bagian echohanya akan bertindak, jika killallkembali 1, sementara itu sendiri akan kembali 0(sukses).
killall -qlebih baik
killall -qtidak 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.
killhanya ketika proses sedang berjalan, karena ada kondisi perlombaan antara tes dan doakill(mungkin proses berhenti karena alasan lain dalam waktu singkat). Anda harus menggunakanpkillataukillallyang melakukan persis sama dengan apa yang Anda coba lakukan, tetapi dengan kurang mengetik (dan mungkin beberapa kelebihan lainnya juga).