วิธีเริ่มคำสั่ง Linux ในพื้นหลังและแยกกระบวนการใน Terminal

Withi Reim Kha Sang Linux Ni Phun Hlang Laea Yaek Krabwnkar Ni Terminal



ในคู่มือนี้ เราจะเรียนรู้วิธีเรียกใช้คำสั่งในเบื้องหลังและวิธีแยกกระบวนการออกจากเทอร์มินัล

ข้อกำหนดเบื้องต้น:

ในการดำเนินการตามขั้นตอนในคู่มือนี้ คุณต้องมีส่วนประกอบต่อไปนี้:

  • ระบบ Linux ที่ใช้งานได้ เรียนรู้เพิ่มเติมเกี่ยวกับ ตั้งค่า Ubuntu VM บน VirtualBox .
  • การเข้าถึง ผู้ใช้ที่ไม่ใช่รูทที่มีสิทธิ์ sudo .

เรียกใช้กระบวนการจากเทอร์มินัล

เมื่อใดก็ตามที่เรียกใช้คำสั่ง กระบวนการต่างๆ จะถูกวางไข่ภายใต้เทอร์มินัล หากเทอร์มินัลปิด กระบวนการที่เกี่ยวข้องทั้งหมดจะถูกยกเลิกโดยอัตโนมัติ ในบางสถานการณ์อาจไม่สะดวก ตัวอย่างเช่น:







  • ข้อมูลเอาต์พุตและข้อความแสดงข้อผิดพลาด/การวินิจฉัยจำนวนมากล้นหลาม
  • การปิดเทอร์มินัลโดยไม่ตั้งใจซึ่งส่งผลให้กระบวนการที่อาจมีความสำคัญต่อภารกิจต้องยุติลง ฯลฯ

เพื่อจัดการกับปัญหาเหล่านี้ มีสองตัวเลือก:



  • เรียกใช้กระบวนการในพื้นหลัง
  • แยกกระบวนการออกจากเทอร์มินัล

กระบวนการที่ทำงานอยู่เบื้องหลังจะไม่ทำให้เอาต์พุตของเทอร์มินัลมากเกินไป นอกจากนี้ เทอร์มินัลยังมีอิสระในการรันคำสั่งเพิ่มเติม สำหรับกระบวนการแยกออก กระบวนการเหล่านี้จะไม่ยุติแม้ว่าเทอร์มินัลจะปิด



การเริ่มต้นกระบวนการในพื้นหลัง

ในหลายกรณี คำสั่งอาจใช้เวลาสักครู่จึงจะเสร็จสมบูรณ์ โดยทั่วไป ผู้ใช้จะถูกบังคับให้รอจนกว่าคำสั่งจะเสร็จสิ้น ตัวอย่างเช่น เมื่อคุณใช้โปรแกรมแก้ไขข้อความ เชลล์จะไม่สามารถใช้งานได้จนกว่าโปรแกรมแก้ไขจะปิด





ในการสาธิต เราใช้คำสั่ง “ใช่”:

$ ผู้ชาย ใช่



วิธีที่ 1:

มีสองวิธีที่เราสามารถส่งกระบวนการทำงานไปยังพื้นหลังได้

ขั้นแรก เราหยุดกระบวนการโดยไม่ยุติ โดยเรียกใช้คำสั่งต่อไปนี้แล้วกด “Ctrl + Z”:

$ ใช่ 'สวัสดีชาวโลก' > / ผู้พัฒนา / โมฆะ

ตอนนี้ให้เรียกใช้คำสั่ง 'bg' เพื่อส่งกระบวนการในพื้นหลัง:

$ บีจี

เมื่อพุชเข้าสู่พื้นหลังแล้ว กระบวนการจะกลับมาทำงานต่อ คำสั่งต่อไปนี้แสดงรายการงานที่กำลังรันอยู่เบื้องหลังทั้งหมด:

$ งาน

วิธีที่ 2:

ในวิธีการก่อนหน้านี้ กระบวนการเริ่มต้นทำงานในเบื้องหน้าก่อน เราหยุดกระบวนการชั่วคราว ส่งไปยังเบื้องหลัง จากนั้นดำเนินการต่อ เราสามารถเรียกใช้กระบวนการได้โดยตรงในพื้นหลัง

โดยเพิ่มเครื่องหมาย “&” ที่ท้ายคำสั่ง:

$ ใช่ “โอ้ ลอง จอห์นสัน” > / ผู้พัฒนา / โมฆะ &

ที่นี่ กระบวนการที่เกิดขึ้นจะทำงานโดยอัตโนมัติในเบื้องหลัง หากต้องการตรวจสอบ ให้ตรวจสอบรายการงานเบื้องหลัง:

$ งาน

วิธีที่ 3:

เรายังสามารถเริ่มกระบวนการในพื้นหลังด้วยความช่วยเหลือของ tmux มัลติเพล็กเซอร์อันทรงพลังที่สามารถจัดการเซสชันเทอร์มินัลหลายเซสชันภายในหน้าต่างเดียว ไม่ได้ติดตั้งไว้ล่วงหน้าใน Linux อย่างไรก็ตาม มีให้บริการสำหรับ Linux distros ที่สำคัญทั้งหมด เรียนรู้เพิ่มเติมเกี่ยวกับ การติดตั้ง tmux บน Linux .

ในตัวอย่างต่อไปนี้ เราใช้ tmux เพื่อ ping เป้าหมายและบันทึกผลลัพธ์:

$ tmux ใหม่ -d 'ping -c 9 127.0.0.1 > ping.log'

ไฟล์บันทึกตรวจสอบว่าคำสั่งรันสำเร็จหรือไม่:

$ แมว ping.log

เป็นเพียงตัวอย่างหนึ่งของสิ่งที่ tmux สามารถทำได้ เรียนรู้เพิ่มเติมเกี่ยวกับ tmux พร้อมตัวอย่าง .

การคืนงานสู่เบื้องหน้า

หากคุณต้องการให้งานกลับสู่เบื้องหน้า เราจะใช้คำสั่ง “fg” เราต้องการหมายเลขงานจากคำสั่งงาน

ขั้นแรก กำหนดงานที่คุณต้องการนำมาเป็นเบื้องหน้า:

$ งาน

ตอนนี้ ใช้คำสั่ง “fg”:

$ %< หมายเลขงาน >

การแยกกระบวนการออกจากเทอร์มินัล

กระบวนการใดๆ ที่เกี่ยวข้องกับเทอร์มินัลจะถูกยุติเมื่อเทอร์มินัลปิดลง ไม่ว่าจะทำงานเบื้องหน้าหรือเบื้องหลังก็ตาม เพื่อหลีกเลี่ยงการยุติกระบวนการ เราจะแยกกระบวนการเป้าหมายออกจากเทอร์มินัล/เชลล์

วิธีที่ 1:

ในการปฏิเสธกระบวนการ เราต้องมีกระบวนการเบื้องหลังก่อน:

$ ใช่ 'คิวเวอร์ตี้' > / ผู้พัฒนา / โมฆะ &

ตรวจสอบรายการงานพื้นหลังที่กำลังทำงานอยู่:

$ งาน

จดบันทึกหมายเลขซีเรียลของงานพื้นหลังเป้าหมาย ตอนนี้ ใช้คำสั่ง 'ปฏิเสธ' เพื่อแยกออกจากเทอร์มินัล:

$ ปฏิเสธ %< หมายเลขงาน >

งานเป้าหมายควรจะหายไปจากรายการงาน:

$ งาน

อย่างไรก็ตาม คุณยังสามารถเห็นกระบวนการทำงานอยู่เบื้องหลัง:

$ ปล ถึง

วิธีที่ 2:

อีกวิธีในการแยกกระบวนการออกจากเทอร์มินัลหลักคือการใช้คำสั่ง 'nohup' มันทำให้กระบวนการทำงานอยู่เบื้องหลังแม้หลังจากปิดเทอร์มินัลแล้ว

การใช้ 'nohup' มีดังนี้:

$ ไม่อัพ < สั่งการ > &

ตรวจสอบว่าสร้างงานสำเร็จหรือไม่:

$ งาน

วิธีที่ 3:

วิธีนี้จะแยกกระบวนการเป้าหมายออกโดยสิ้นเชิง เป็นวิธีที่มีประสิทธิภาพมากขึ้นในการแยกแอป GUI

ตัวอย่างเช่น หากต้องการเริ่ม Firefox และแยกออกจากเทอร์มินัลอย่างสมบูรณ์ ให้ใช้คำสั่งต่อไปนี้:

$ ไฟร์ฟอกซ์ ผู้พัฒนา / โมฆะ &>/ ผู้พัฒนา / โมฆะ &

ที่นี่:

  • เดอะ /dev/null เป็นอุปกรณ์พิเศษใน Linux ที่กำจัดข้อมูลใด ๆ ที่เขียนลงไป
  • ในคำสั่งก่อนหน้านี้ อินพุตถูกอ่านจากและเอาต์พุตถูกส่งไปยัง /dev/null . เรียนรู้เพิ่มเติมเกี่ยวกับ วิธีอื่นในการใช้ /dev/null .

บทสรุป

เราได้สาธิตวิธีต่างๆ ในการเรียกใช้กระบวนการในเบื้องหลัง เรายังแสดงวิธีการแยกกระบวนการออกจากเทอร์มินัลหลัก เทคนิคเหล่านี้มีประโยชน์ทุกครั้งที่ทำงานกับเทอร์มินัลหรือ เรียกใช้สคริปต์ .

หากคุณต้องการรันคำสั่งบางคำสั่งในรูปแบบเฉพาะ เราสามารถออฟโหลดได้ในรูปแบบ a บริการระบบ . สำหรับเครื่องระยะไกล เราสามารถใช้เครื่องมือของบุคคลที่สามเช่น สามารถดำเนินการได้เกือบทุกอย่างโดยอัตโนมัติ .

มีความสุขในการคำนวณ!