Android

คำสั่ง nohup Linux

nohup - Run Commands in the Background - Linux CLI

nohup - Run Commands in the Background - Linux CLI

สารบัญ:

Anonim

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

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

วิธีใช้คำสั่ง nohup

ไวยากรณ์สำหรับคำสั่ง nohup มีดังนี้:

nohup COMMAND

คำสั่งไม่ยอมรับตัวเลือกอื่น ๆ ยกเว้น --help และ --version มาตรฐาน

ลองมาดูตัวอย่างต่อไปนี้:

nohup mycommand

nohup: ignoring input and appending output to 'nohup.out'

nohup รันคำสั่ง mycommand ในส่วนหน้าและเปลี่ยนทิศทางเอาต์พุตคำสั่งไปยังไฟล์ nohup.out ไฟล์นี้ถูกสร้างขึ้นในไดเรกทอรีการทำงานปัจจุบัน หากผู้ใช้ที่รันคำสั่งไม่มีสิทธิ์ในการเขียนไปยังไดเร็กทอรีการทำงานไฟล์จะถูกสร้างในโฮมไดเร็กทอรีของผู้ใช้

หากคุณออกจากระบบหรือปิดเทอร์มินัลกระบวนการจะไม่ถูกยกเลิก

เรียกใช้คำสั่งในพื้นหลัง

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

ในการรันคำสั่งในพื้นหลังให้ใส่เครื่องหมาย & ท้ายคำสั่ง:

nohup mycommand &

เอาต์พุตประกอบด้วยเชลล์งาน ID (ล้อมรอบด้วยวงเล็บ) และ ID กระบวนการ:

25177

คุณสามารถใช้ ID งานเพื่อนำคำสั่งไปยังเบื้องหน้าโดยใช้คำสั่ง fg

หากด้วยเหตุผลบางอย่างที่คุณต้องการยกเลิกกระบวนการใช้คำสั่ง kill ตามด้วย ID กระบวนการ:

kill -9 25132

การเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์

โดยดีฟอลต์ nohup เปลี่ยนทิศทางเอาต์พุตคำสั่งไปยังไฟล์ nohup.out หากคุณต้องการเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์อื่นให้ใช้การเปลี่ยนเส้นทางเชลล์มาตรฐาน

ตัวอย่างเช่นหากต้องการเปลี่ยนทิศทางเอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐานไปยัง mycommand.out คุณควรใช้:

nohup mycommand > mycommand.out 2>&1 &

ในการเปลี่ยนทิศทางเอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐานไปยังไฟล์ต่าง ๆ:

nohup mycommand > mycommand.out 2> mycommand.err &

ทางเลือก

มีโปรแกรมทางเลือกหลายโปรแกรมที่คุณสามารถใช้เพื่อหลีกเลี่ยงคำสั่งที่จะถูกยกเลิกเมื่อคุณปิดเครื่องหรือยกเลิกการเชื่อมต่อ

จอภาพ

Screen หรือ GNU Screen เป็นโปรแกรม multiplexer เทอร์มินัลที่ช่วยให้คุณเริ่มเซสชันของหน้าจอและเปิดหน้าต่าง (เทอร์มินัลเสมือน) จำนวนเท่าใดก็ได้ภายในเซสชันนั้น กระบวนการที่ทำงานในหน้าจอจะยังคงทำงานต่อไปเมื่อหน้าต่างของพวกเขาไม่ปรากฏแม้ว่าคุณจะถูกตัดการเชื่อมต่อ

Tmux

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

บอกปัด

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

ข้อสรุป

nohup ช่วยให้คุณสามารถป้องกันคำสั่งจากการยกเลิกเมื่อคุณออกจากระบบหรือออกจากสถานี

nohup terminal