โดยทั่วไปแล้วสิ่งนี้น่าจะใช้ได้
เมื่อคุณคลิก "X" เพื่อปิดหน้าต่างเทอร์มินัลนั่นคือการส่ง "สัญญาณ" จากเดสก์ท็อปของคุณ (GNOME, KDE และอื่น ๆ ) ไปยังแอปพลิเคชันเทอร์มินัล เนื่องจากคุณใช้งาน MATLAB ในเชลล์นี้ก็ถือว่าเป็นกระบวนการลูกสำหรับแอปพลิเคชันเทอร์มินัล
ดังนั้นส่วนหนึ่งของความรับผิดชอบในการเป็นกระบวนการหลักคือคุณส่งสัญญาณ "ใกล้" แบบเดียวกันนี้ให้กับลูก ๆ ของคุณ
ทีนี้ถ้าคุณเข้าใจแนวคิดเกี่ยวกับสิ่งที่ฉันเพิ่งอธิบายไปแล้วลองมาแทนที่คำศัพท์จริง ๆ อีกหน่อย
สัญญาณ
ครั้งแรกกับ "สัญญาณ" มีกลุ่มสัญญาณที่แตกต่างกันซึ่งคุณสามารถส่งไปยังกระบวนการ Unix ได้ เพื่อให้มันง่ายมี 4 ที่คุณมักจะเห็น, SIGHUP
, SIGTERM
, และSIGINT
SIGKILL
SIGHUP
สัญญาณ SIGHUP ถูกส่งไปยังกระบวนการเมื่อปิดเทอร์มินัลการควบคุม มันถูกออกแบบมาเพื่อแจ้งให้ทราบถึงกระบวนการของการปล่อยสายอนุกรม ในระบบที่ทันสมัยสัญญาณนี้มักจะหมายความว่าการควบคุมหลอกหรือ terminal เสมือนถูกปิด
SIGTERM
สัญญาณ SIGTERM เป็นสัญญาณทั่วไปที่ใช้เพื่อทำให้โปรแกรมหยุดทำงาน แตกต่างจาก SIGKILL สัญญาณนี้สามารถบล็อกจัดการและเพิกเฉยได้ เป็นวิธีปกติในการขอให้โปรแกรมยุติอย่างสุภาพ
SIGINT
สัญญาณ SIGINT (“ โปรแกรมขัดจังหวะ”) จะถูกส่งเมื่อผู้ใช้พิมพ์อักขระ INTR (ปกติคือ Cc)
SIGKILL
สัญญาณ SIGKILL ใช้เพื่อทำให้โปรแกรมหยุดทำงานทันที ไม่สามารถจัดการหรือเพิกเฉยได้ดังนั้นจึงเป็นอันตรายถึงชีวิตได้เสมอ นอกจากนี้ยังเป็นไปไม่ได้ที่จะปิดกั้นสัญญาณนี้
หมายเหตุ: SIGINT
สิ่งที่ถูกส่งเมื่อคุณใช้Ctrl+ Cเพื่อ "หยุด" โปรแกรมจากบรรทัดคำสั่งในขณะที่โปรแกรมกำลังทำงานอยู่
กำลังใช้อันไหนอยู่
เป็นไปได้มากSIGTERM
ว่าสภาพแวดล้อมในหน้าต่างของคุณถูกส่งผ่านไปยังเทอร์มินัลของคุณ เทอร์มินัลของคุณน่าจะส่งSIGHUP
มาที่ MATLAB สัญญาณนี้เปิดโอกาสให้กระบวนการทั้งหมดในการทำความสะอาดภายในเครื่อง (ปิดไฟล์, สิ้นสุดกระบวนการ, ฯลฯ ) ด้วยตนเอง
คำสั่ง kill
คุณสามารถส่งสัญญาณด้วยตนเองโดยใช้คำสั่งที่มีชื่อไม่ดี, kill
. ดังนั้นในการส่งSIGTERM
สัญญาณไปยังเทอร์มินัลหรือSIGHUP to MATLAB, you could determine their PID using
ps` ของคุณแล้วเรียกใช้คำสั่งนี้เพื่อส่งสัญญาณ:
$ kill -SIGTERM <PID>
หรือสิ่งนี้:
$ kill -SIGHUP <PID>
คุณสามารถรับรายการสัญญาณทั้งหมดโดยใช้คำสั่งนี้:
$ 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
...
...
สังเกตว่าสัญญาณมีตัวเลขหรือไม่ คุณมักจะเห็นพวกเขาใช้แบบนั้นแทนชื่อ:
$ kill -15 <PID>
หรือน่าอับอาย-9
ซึ่งสามารถฆ่ากระบวนการใด ๆ สวย