Genel olarak bu şekilde yapılması iyi olur.
Terminal penceresini kapatmak için "X" düğmesini tıklattığınızda, masaüstünüzden (GNOME, KDE, vb.) Terminal uygulamasına bir "sinyal" göndererek kendini kapatmasını söyler. MATLAB'ı bu kabukta çalıştırdığınız için, terminal uygulaması için bir alt süreç olarak kabul edilir.
Ebeveynlik süreci olmanın sorumluluklarının bir kısmı da, bu aynı "sinyali" çocuklarınıza göndermenizdir.
Şimdi neyi açıkladığımı kavramsal olarak anlarsanız, gerçek terminolojinin biraz daha yerini alalım.
sinyalleri
İlk olarak "sinyal" ile, aslında Unix işlemlerine gönderebileceğiniz farklı sinyallerden oluşan bir aile vardır . Basit tutmak için 4 genellikle görecekleri anlamına vardır SIGHUP
, SIGTERM
, SIGINT
, ve SIGKILL
.
SIGHUP
SIGHUP sinyali kontrol terminali kapalı olduğunda bir işleme gönderilir. Başlangıçta bir seri hat düşüş sürecini bildirmek için tasarlanmıştır. Modern sistemlerde, bu sinyal genellikle sözde veya sanal terminalin kontrolünün kapatıldığı anlamına gelir.
SIGTERM
SIGTERM sinyali, program sonlandırmasına neden olmak için kullanılan genel bir sinyaldir. SIGKILL'in aksine, bu sinyal engellenebilir, kullanılabilir ve yok sayılabilir. Bir programdan kibarca sona erdirilmesini istemenin normal yolu budur.
SIGINT
Kullanıcı INTR karakterini (normalde Cc) yazdığında SIGINT (“program kesmesi”) sinyali gönderilir.
sigkill
SIGKILL sinyali, programın derhal sonlandırılmasına neden olmak için kullanılır. İşlenemez veya göz ardı edilemez ve bu nedenle her zaman ölümcüldür. Bu sinyali engellemek de mümkün değildir.
NOT: SIGINT
Çalışmanın ortasında iken bir programı komut satırından "kırmak" için Ctrl+ kullandığınızda gönderilen Cmesajdır.
hangisi kullanılıyor?
Büyük olasılıkla SIGTERM
pencere ortamınız tarafından çağrılıyor ve terminalinize aktarılıyor. Terminaliniz büyük olasılıkla SIGHUP
MATLAB'a gönderilir. Bu sinyal, tüm süreçlere herhangi bir yerel temizlik (dosyaları kapatma, bitirme işlemleri, vb.) Yapma fırsatı verir.
öldürme komutu
Kötü adlandırılmış komutu kullanarak kendiniz sinyal gönderebilirsiniz kill
,. Yani göndermek için SIGTERM
terminal veya sinyal SIGHUP to MATLAB, you could determine their PID using
ps` ve sonra onları sinyal göndermek için bu komutu çalıştırın:
$ kill -SIGTERM <PID>
veya bu:
$ kill -SIGHUP <PID>
Bu komutu kullanarak sinyallerin tam bir listesini alabilirsiniz:
$ 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
...
...
Sinyallerin sayı olduğuna dikkat edin? Sık sık isimleriyle değil, bu şekilde kullanıldığını görürsünüz:
$ kill -15 <PID>
Ya da -9
hemen hemen her işlemi öldürebilen rezil .