ฉันไม่เคยรู้ว่าเมื่อใดเวลาที่ดีที่สุดในการใช้ nohup และ & ในตอนท้ายของคำสั่ง
ฉันไม่เคยรู้ว่าเมื่อใดเวลาที่ดีที่สุดในการใช้ nohup และ & ในตอนท้ายของคำสั่ง
คำตอบ:
Nohup ทำให้โปรแกรมไม่สนใจสัญญาณ HUP ทำให้สามารถเรียกใช้งานได้หลังจากปิดเทอร์มินัลปัจจุบัน / ผู้ใช้ออกจากระบบ Nohup ไม่ได้ส่งโปรแกรมไปที่พื้นหลัง
& ที่ส่วนท้ายของคำสั่งเกี่ยวข้องกับการควบคุมงานเชลล์ทำให้ผู้ใช้สามารถทำงานต่อในเซสชันเชลล์ปัจจุบันได้
โดยปกติแล้วจะไม่มีการรวมและ & เพื่อรวมโปรแกรมที่ทำงานหลังจากออกจากระบบของผู้ใช้และอนุญาตให้ทำงานต่อที่เชลล์เซสชันปัจจุบัน
โดยทั่วไปฉันจะใช้&
เมื่อฉันต้องการเรียกใช้คำสั่งเบื้องหลังซึ่งจะใช้เวลาไม่นานในการรันหรือเป็นคำสั่งที่ฉันไม่สนใจจริงๆหากโปรแกรมนั้นถูกยกเลิกหากฉันออกจากระบบโดยไม่คาดคิด
xcalc &
rdesktop 1.2.3.4 &
./this_only_takes_a_few_seconds_but_i_want_my_shell_back.py &
เมื่อทำงานกับ VPN หรือการเชื่อมต่อระยะไกลซึ่งหลบฉันมักจะใช้nohup
สำหรับการทำงานใด ๆ ที่จะใช้เวลาสักครู่ในการทำงาน เมื่อรันการนำเข้าข้อมูลขนาดใหญ่บนรีโมตโฮสต์ตัวอย่างเช่นคุณอาจต้องการใช้nohup
เพื่อให้แน่ใจว่าการตัดการเชื่อมต่อจะไม่ทำให้คุณเริ่มต้นใหม่เมื่อคุณเชื่อมต่อใหม่
nohup ./do_data_load.py mydatafile.txt &
นอกจากนี้ยังใช้เมื่อผู้พัฒนาไม่ได้ติดตั้งบริการอย่างถูกต้องดังนั้นคุณต้องใช้nohup
เพื่อให้แน่ใจว่าจะไม่ถูกฆ่าเมื่อคุณออกจากระบบ
nohup sillyd &
หากคุณลืมที่จะใช้nohup
เมื่อเรียกใช้บางอย่างเช่นสองตัวอย่างล่าสุดคุณสามารถใช้ bash หรือ zsh builtin disown
เพื่อให้ได้เอฟเฟกต์เดียวกัน
$ sillyd &
[1] 12345 # Whoops!
$ disown %1
มันค่อนข้างยากที่จะใช้nohup
หาก&
คุณไม่สามารถกลับไปที่เซสชัน nohup'd ได้อีกหากคุณออกจากระบบ สิ่งนี้ช่วยลดความได้เปรียบสำหรับคำสั่งแบบโต้ตอบ screen
ในกรณีที่คุณมีคำสั่งแบบโต้ตอบคุณต้องการที่จะยังคงอยู่ในช่วงการประชุมหรือหลีกเลี่ยงความซับซ้อนเชื่อมต่อคุณสามารถใช้ อาวุธของกองกำลังติดอาวุธอย่างเต็มที่และการดำเนินงานscreen
เซสชั่นอยู่นอกเหนือขอบเขตของบทความนี้ดังนั้นคุณจึงควรตรวจสอบในรายละเอียดเพิ่มเติม
byobu
ซึ่งเพิ่มคุณสมบัติที่ดีบางอย่างให้กับหน้าจอ มันมีอยู่ในส่วนใหญ่ที่เหมาะสมและใน EPEL repos สำหรับ Red Hat
nohup: ออกจากระบบผู้ใช้ปัจจุบันกระบวนการจะไม่หยุด
&: ด้วยสัญลักษณ์นี้จะไม่มีเอาต์พุตในเทอร์มินัลปัจจุบันซึ่งเป็นกระบวนการที่ทำงานเบื้องหลัง