Secara umum ini harus dilakukan dengan cara ini.
Ketika Anda mengklik "X" untuk menutup jendela terminal, yaitu mengirim "sinyal" dari desktop Anda (GNOME, KDE, dll.) Ke aplikasi terminal, memerintahkannya untuk mematikan dirinya sendiri. Karena Anda menjalankan MATLAB di shell ini dianggap proses anak ke aplikasi terminal.
Jadi bagian dari tanggung jawab menjadi proses orang tua, adalah Anda pada gilirannya mengirimkan "sinyal" yang sama ini kepada anak-anak Anda.
Sekarang jika Anda memahami secara konseptual apa yang baru saja saya jelaskan, mari kita gantikan terminologi yang sebenarnya.
sinyal
Pertama dengan "sinyal", sebenarnya ada seluruh keluarga sinyal berbeda yang dapat Anda kirim ke proses Unix. Untuk tetap sederhana ada 4 yang Anda sering akan melihat, SIGHUP
, SIGTERM
, SIGINT
, dan SIGKILL
.
PENJUALAN
Sinyal SIGHUP dikirim ke proses ketika terminal pengendali ditutup. Awalnya dirancang untuk memberi tahu proses penurunan garis serial. Dalam sistem modern, sinyal ini biasanya berarti bahwa mengendalikan terminal semu atau virtual telah ditutup.
SIGTERM
Sinyal SIGTERM adalah sinyal umum yang digunakan untuk menyebabkan penghentian program. Tidak seperti SIGKILL, sinyal ini dapat diblokir, ditangani, dan diabaikan. Ini adalah cara normal untuk dengan sopan meminta suatu program untuk berakhir.
SIGINT
Sinyal SIGINT ("program interrupt") dikirim ketika pengguna mengetik karakter INTR (biasanya Cc).
SIGKILL
Sinyal SIGKILL digunakan untuk menyebabkan penghentian program dengan segera. Itu tidak dapat ditangani atau diabaikan, dan karenanya selalu berakibat fatal. Juga tidak mungkin untuk memblokir sinyal ini.
CATATAN: SIGINT
adalah apa yang dikirim ketika Anda menggunakan Ctrl+ Cuntuk "memecah" sebuah program dari baris perintah ketika sedang di tengah-tengah berjalan.
yang mana yang digunakan?
Kemungkinan besar SIGTERM
ini dipanggil oleh lingkungan windowing Anda dan diturunkan ke terminal Anda. Terminal Anda kemungkinan besar kemudian mengirim SIGHUP
ke MATLAB. Sinyal ini memberi semua proses kesempatan untuk melakukan pembersihan lokal (menutup file, mengakhiri proses, dll.) Sendiri.
bunuh perintah
Anda dapat mengirim sinyal sendiri menggunakan perintah dengan nama buruk kill
,. Jadi untuk mengirim SIGTERM
sinyal ke terminal Anda atau SIGHUP to MATLAB, you could determine their PID using
ps` dan kemudian jalankan perintah ini untuk mengirim sinyal:
$ kill -SIGTERM <PID>
atau ini:
$ kill -SIGHUP <PID>
Anda bisa mendapatkan daftar lengkap sinyal menggunakan perintah ini:
$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
...
...
Perhatikan bahwa sinyal memiliki angka? Anda akan sering melihat mereka digunakan seperti itu alih-alih dengan nama mereka:
$ kill -15 <PID>
Atau yang terkenal -9
, yang bisa membunuh hampir semua proses.
Kemungkinan besar tidak masalah, tetapi Anda akan kehilangan data tergantung pada aplikasi apa yang Anda buka. Misalnya, jika Anda memiliki editor file terbuka, Anda mungkin kehilangan beberapa perubahan Anda jika Anda tidak menyimpan dan keluar dengan benar. Jika Anda khawatir, cukup logout / keluar dari terminal dengan benar. Jika Anda tidak suka mengetik
exit
ataulogout
coba sajaCtrl-D
.sumber
Ctrl-D
, itu hanya berlaku pada command prompt.