Computer >> คอมพิวเตอร์ >  >> ระบบ >> Linux

วิธีเรียกใช้ Bash Commands ในพื้นหลังใน Linux

วิธีเรียกใช้ Bash Commands ในพื้นหลังใน Linux

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

สิ้นสุดคำสั่งด้วย &

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

วิธีเรียกใช้ Bash Commands ในพื้นหลังใน Linux
COMMAND &

เมื่อปิดเซสชันเทอร์มินัล คำสั่งจะสิ้นสุดลง คุณยังสามารถฆ่าคำสั่งได้โดยการออก jobs คำสั่ง ค้นหาหมายเลขคำสั่งที่กำลังรัน และฆ่ามันด้วย kill สั่งการ. ไวยากรณ์นั้นเป็นดังนี้:

วิธีเรียกใช้ Bash Commands ในพื้นหลังใน Linux
kill %1

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

&หลังจากออกคำสั่งแล้วก็ปฏิเสธมัน

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

หากต้องการใช้วิธีนี้ ให้เริ่มต้นด้วยการเพิ่ม & .

COMMAND &

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

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

วิธีเรียกใช้ Bash Commands ในพื้นหลังใน Linux

ตอนนี้คุณสามารถปิดเทอร์มินัลของคุณและดำเนินการต่อเกี่ยวกับวันของคุณ มันยังคงส่งสิ่งต่าง ๆ ไปยัง STDOUT หรือ STDERR แต่เมื่อคุณออกและเปิดเทอร์มินัลของคุณอีกครั้ง คุณจะไม่เห็นอะไรเลย คุณสามารถค้นหาคำสั่งอีกครั้งด้วย top หรือ ps คำสั่งและฆ่ามันด้วย kill สั่งการ.

วิธีเรียกใช้ Bash Commands ในพื้นหลังใน Linux

&หลังคำสั่งด้วย /dev/null

กำลังเพิ่ม & หลังจากที่คำสั่งจะพุชคำสั่งไปที่พื้นหลัง แต่ด้วยเหตุนี้ คำสั่งพื้นหลังจะยังคงพิมพ์ข้อความลงในเทอร์มินัลในขณะที่คุณใช้งาน หากคุณต้องการป้องกันสิ่งนี้ ให้ลองเปลี่ยนเส้นทางคำสั่งไปที่ /dev/null .

วิธีเรียกใช้ Bash Commands ในพื้นหลังใน Linux
COMMAND &>/dev/null &

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

Nohup พร้อม &และ /dev/null

ต่างจากคำสั่งก่อนหน้าโดยใช้ nohup อนุญาตให้คุณเรียกใช้คำสั่งในพื้นหลังและให้มันทำงานต่อไปได้ ยังไง? nohup ข้ามสัญญาณ HUP (สัญญาณวางสาย) ทำให้สามารถเรียกใช้คำสั่งในพื้นหลังได้แม้ในขณะที่เครื่องปิดอยู่ รวมคำสั่งนี้กับการเปลี่ยนเส้นทางไปที่ “/dev/null” (เพื่อป้องกันไม่ให้ nohup สร้างไฟล์ nohup.out) และทุกอย่างจะไปยังพื้นหลังด้วยคำสั่งเดียว

nohup COMMAND &>/dev/null &
วิธีเรียกใช้ Bash Commands ในพื้นหลังใน Linux

โปรแกรมเทอร์มินัลส่วนใหญ่บน Linux ในปัจจุบันมีคุณสมบัติในตัวเพื่อให้ทำงานในเบื้องหลังได้อย่างง่ายดาย นอกจากนั้น ระบบ init ที่ทันสมัย ​​(เช่น systemd) ยังอนุญาตให้ผู้ใช้เริ่มโปรแกรมต่างๆ เช่น บริการเมื่อเปิดเครื่องหรือเมื่อใดก็ได้

อย่างไรก็ตาม บางโปรแกรมบน Linux ยังขาดความสามารถในการทำงานเป็น daemon หรือรวมเข้ากับระบบ init ที่ทันสมัย นี่เป็นความไม่สะดวกอย่างแท้จริง แต่ก็สามารถเข้าใจได้ เนื่องจากไม่ใช่นักพัฒนาทุกคนที่มีทักษะหรือเวลาในการเพิ่มคุณสมบัติใหม่

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

หากคุณชอบบทความนี้เกี่ยวกับ Linux อย่าลืมตรวจสอบเนื้อหา Linux อื่นๆ ของเรา เช่น วิธีเชื่อมต่อบัญชี Google ของคุณกับ GNOME Shell, Linux distros ที่ดีที่สุดสำหรับผู้ใช้ windows และคำสั่ง LS ที่คุณต้องรู้