Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Linux

Nohup คืออะไร และใช้งานอย่างไรใน Linux

nohup (No Hangups) เป็นคำสั่งเสริม ที่บอกระบบอย่าหยุดกระบวนการเมื่อ user logout หรือ terminal ปิด ทำให้สคริปต์/คำสั่งรันต่อไปจนเสร็จ แม้จะหลุดจากเซสชัน SSH ก็ตาม คล้าย tmux หรือ screen แต่เบากว่า สำหรับงานที่รันนานและจบสิ้นสุดลงเอง

ไวยากรณ์พื้นฐาน

nohup command [args] &
  • & ทำให้รันใน background คืน terminal ให้ใช้งานต่อได้
  • ทำงานกับคำสั่งใดๆ ได้: script, binary, system command

ตัวอย่างการใช้งาน

รันสคริปต์ backup นานๆ ผ่าน SSH:

nohup sh backup-script.sh &

ระบุไฟล์ output เอง (แทน nohup.out เริ่มต้น):

nohup sh backup-script.sh > /path/to/custom.log &

ไฟล์ nohup.out

ค่าเริ่มต้น nohup เขียน stdout และ stderr รวมกันใน nohup.out ที่โฟลเดอร์ปัจจุบัน สามารถเปลี่ยน path ได้ตามตัวอย่างข้างต้น

ประโยชน์: รันสคริปต์ audit บน remote server แล้ว logout กลับมา ดู log จาก local machine ได้

Nohup ต่างจาก Daemon อย่างไร?

คุณสมบัติNohupDaemon
วัตถุประสงค์งานครั้งเดียว รันนานแต่จบสิ้นสุดบริการรันตลอดเวลา (web server, db)
ความซับซ้อนง่าย ใช้กับสคริปต์เดี่ยวได้เลยต้องเขียนโปรแกรม/ตั้งค่า service unit
การจัดการจบงานเอง ไม่ต้องดูแลต้องมีระบบจัดการ (systemd, sysvinit)

สรุป: ใช้ nohup สำหรับ "งาน batch รันนาน จบเอง" ใช้ daemon สำหรับ "บริการที่ต้องทำงานตลอด"

เคล็ดลับเพิ่มเติม

  • ตรวจสอบงานที่รันด้วย nohup: jobs -l (ใน shell เดียวกัน) หรือ ps aux | grep scriptname
  • หยุดงาน nohup: หา PID แล้ว kill PID
  • รวมกับ nice ปรับ priority: nohup nice -n 10 heavy-task.sh &

nohup เป็นเครื่องมือเล็กแต่น่าใช้สำหรับ sysadmin และ developer ที่ต้องรันงานบน remote server บ่อยครั้ง