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 อย่างไร?
| คุณสมบัติ | Nohup | Daemon |
|---|---|---|
| วัตถุประสงค์ | งานครั้งเดียว รันนานแต่จบสิ้นสุด | บริการรันตลอดเวลา (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 บ่อยครั้ง