Saya menulis sebuah apel yang menyalakan lampu saya. Saya mengekspornya sebagai aplikasi dengan nama "LightsOn", dan muncul dengan nama itu di monitor aktivitas.
Dalam keadaan tertentu, aplikasi ini macet. Saya dapat menghentikannya secara paksa dari Activity Monitor, tetapi saya ingin dapat melakukannya dari skrip. killall LightsOn
tidak bekerja; Saya diberitahu itu no matching processes belonging to you were found
.
Bagaimana cara memaksa keluar aplikasi ini dari terminal dengan benar? Atau, bagaimana saya bisa menemukan nama yang tepat untuk killall?
applescript
Wowfunhappy
sumber
sumber
pkill -9 -f LightsOn
akan melakukannya!killall LightsOn
tidak berhasil.Jawaban:
Alasannya
killall LightsOn
tidak berhasil adalah karena semua nama proses aplikasi yang menjalankan AppleScript adalahapplet
. Misalnya, jalur yang dapat dieksekusi adalah:Secara umum dan dengan asumsi proses tidak tergantung, orang dapat menggunakan
killall applet
namun itu akan menghentikan semua menjalankan aplikasi AppleScript , dan tentu saja yang mungkin tidak diinginkan.Ketika suatu proses digantung, Anda harus menggunakan
KILL
sinyal , misalnya:Namun,
pkill
adalah cara untuk pergi dengan mudah menargetkan aplikasi AppleScript tertentu dan karena itu tergantung ... gunakanKILL
sinyal , misalnya:Atau:
Catatan dalam contoh ini,
-9
hanyalah cara lain untuk mengatakan-KILL
.Sekarang dengan
pkill
dan menggunakan-f
opsi , seseorang dapat menggunakan lebih banyak dari daftar argumen lengkap , misalnya:Maka tidak ada ambiguitas untuk
applet
proses mana yang ditargetkan. Orang dapat menggunakan daftar argumen lengkap sebanyak yang diperlukan untuk menargetkan proses yang benar .Misalnya,
pkill -9 -f LightsOn
akan menghentikan aplikasi AppleScript bernamaNoLightsOn
, jadi selalu gunakan cukup daftar argumen lengkap untuk mengakhiri proses yang benar.Sebagai referensi:
Dari
pkill
halaman manual:Dari
killall
halaman manual:Perhatikan bahwa ini hanyalah daftar sinyal parsial dan digunakan dengan banyak utilitas berbeda yang dapat menghentikan proses. Lihat berbagai halaman manual dari utilitas yang digunakan untuk informasi tambahan.
sumber
Coba ini:
ps auxwww | fgrep -v fgrep | fgrep -i LightsOn
Itu akan menunjukkan kepada Anda informasi proses yang cocok.
Anda juga dapat mencoba
pkill
yang seharusnya berfungsi seperti ini:pgrep -fl LightsOn
Jika itu menunjukkan Anda PID, maka Anda dapat beralih ke
pkill
:pkill -9 -f LightsOn
Ketika Anda menjalankan pkill -9, Anda tidak memberi tahu aplikasi untuk menghentikannya sendiri, sebaliknya Anda memberi tahu OS untuk berhenti menjalankan program, apa pun programnya.
Ketika aplikasi macet mengirimkan
kill
sinyal # sinyal, itu akan secara otomatis memberikan sinyal <15>, yang berarti meminta aplikasi untuk menghentikannya sendiri, itu tidak dapat melakukannya saat macet.sumber
ps auxwww | fgrep -v fgrep | fgrep -I LightsOn
:, mengapa !? kapanpkill -9 -f LightsOn
akan melakukannya!pkill -fl LightsOn
tidak mematikan aplikasi di mesin saya. Saya tampaknya membutuhkan -9.killall
tidak melakukan apa yang diharapkan.pkill -9
adalah instrumen yang tumpul, bukan langkah pertama. IMO.