ลด 50% ทุกแผน มีเวลาจำกัด เริ่มต้นที่ $2.48/mo
เหลืออีก 8 นาที
เซิร์ฟเวอร์และระบบปฏิบัติการ

คำสั่ง nohup ทำงานอย่างไรใน Linux – ไวยากรณ์ กรณีการใช้งาน และตัวอย่าง

เอด้า เลิฟกู๊ด By เอด้า เลิฟกู๊ด อ่าน 8 นาที อัปเดตเมื่อวันที่ 14 กรกฎาคม 2024
คำสั่ง nohup

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

ทำความเข้าใจเกี่ยวกับไวยากรณ์ nohup ของ Linux

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

nohup [command] [arguments] &

คุณควรเปลี่ยน [สั่งการ] ด้วยคำสั่งหรือสคริปต์ที่คุณต้องการเรียกใช้ และ [การโต้แย้ง] คืออาร์กิวเมนต์หรือตัวเลือกใดๆ ที่คำสั่งต้องการ ที่ & สัญลักษณ์ส่งคำสั่งให้ทำงานในพื้นหลัง ลองดูตัวอย่าง:

nohup myscript.sh &

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

สำรวจตัวเลือก nohup

แม้ว่าคำสั่ง nohup จะไม่มีทางเลือกมากมาย แต่การทำความเข้าใจวิธีใช้งานอย่างมีประสิทธิภาพด้วยคำสั่งต่างๆ และเทคนิคการเปลี่ยนเส้นทางสามารถเพิ่มประสิทธิภาพได้ ก่อนอื่น เรามาดูกันว่าเราจะรับข้อมูลเกี่ยวกับคำสั่ง nohup ได้อย่างไร:

nohup –-help 
nohup --version

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

การรันกระบวนการด้วยคำสั่ง nohup

หากคุณต้องการรันกระบวนการด้วยคำสั่ง nohup คุณสามารถทำตามโครงสร้างเดียวกับที่ฉันอธิบายไว้ในส่วนสุดท้าย:

nohup [command]

หากคุณต้องการรันกระบวนการในเบื้องหลัง เพียงเพิ่ม & จนจบคำสั่งของคุณ

การรันหลายกระบวนการในเบื้องหลังด้วยคำสั่ง nohup

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

nohup bash -c '[command A] && [command B]' &

แทนที่ [คำสั่ง ก] และ [คำสั่ง B] ด้วยคำสั่งที่คุณต้องการเรียกใช้ในเบื้องหลัง ลองนึกภาพว่าคุณต้องการอัพเดตแพ็คเกจระบบของคุณก่อน จากนั้นจึงล้างไฟล์ที่ไม่จำเป็น และคุณต้องการทำเช่นนี้โดยใช้คำสั่ง nohup:

nohup bash -c 'sudo apt-get update && sudo apt-get autoremove -y' &

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

การเปลี่ยนเส้นทางเอาต์พุตแบบกำหนดเอง

ผลลัพธ์ของกระบวนการนี้จะถูกเปลี่ยนเส้นทางไปที่ nohup.out โดยค่าเริ่มต้น แต่ถ้าคุณต้องการรับเอาต์พุตในเส้นทางอื่นล่ะ? นี่คือวิธีที่คุณสามารถทำได้:

nohup [command] > [/path/to/new/output.txt]

อย่าลืมแทนที่ค่าใน [] ด้วยคำสั่งและเส้นทางไฟล์ที่คุณต้องการ

การรวม nohup เข้ากับคำสั่งอื่น ๆ

nohup สามารถใช้ร่วมกับคำสั่งและไพพ์อื่นๆ เพื่อสร้างกลุ่มคำสั่งที่มีประสิทธิภาพได้ ลองดูตัวอย่างนี้:

nohup find / -name "*.log" | xargs grep "ERROR" > error_logs.txt 2>&1 &

นี่. หา คำสั่งใช้เพื่อค้นหาไฟล์บันทึกและ เกรป ใช้เพื่อค้นหาคำว่า “ERROR” เอาต์พุตรวมจะถูกเปลี่ยนเส้นทางไปที่ error_logs.txt.

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

ข้อผิดพลาดทั่วไปและการแก้ไขปัญหา

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

การอนุญาตถูกปฏิเสธ

ข้อผิดพลาดนี้เกิดขึ้นเมื่อสคริปต์หรือคำสั่งที่คุณพยายามเรียกใช้ไม่มีสิทธิ์ดำเนินการ ผลลัพธ์ของข้อผิดพลาดมีลักษณะดังนี้: nohup: ล้มเหลวในการเรียกใช้คำสั่ง 'myscript.sh': การอนุญาตถูกปฏิเสธ

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

chmod +x myscript.sh 
nohup ./myscript.sh &

ไม่พบคำสั่ง

ข้อผิดพลาดนี้เกิดขึ้นหากไม่พบคำสั่งหรือสคริปต์ในตำแหน่งที่ระบุหรือไม่พร้อมใช้งานใน PATH ของคุณ ผลลัพธ์ของข้อผิดพลาดมีลักษณะดังนี้: nohup: ไม่สามารถเรียกใช้คำสั่ง 'myscript.sh': ไม่มีไฟล์หรือไดเรกทอรีดังกล่าว

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

nohup /path/to/myscript.sh &

ตรวจสอบให้แน่ใจว่าได้ติดตั้งคำสั่งและพร้อมใช้งานใน PATH ของคุณ

ไม่มีเอาท์พุต

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

nohup myscript.sh > output.log 2>&1 &

ตามตัวอย่าง คำสั่งนี้เปลี่ยนเส้นทางทั้งเอาต์พุตมาตรฐานและข้อผิดพลาดมาตรฐานไปยังไฟล์ชื่อ output.log.

สคริปต์ไม่ทำงานในพื้นหลัง

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

กระบวนการหยุดทำงานหรือไม่ตอบสนอง

กระบวนการที่เริ่มต้นด้วย nohup อาจหยุดทำงานหรือไม่ตอบสนอง สิ่งนี้สามารถเกิดขึ้นได้หากกระบวนการกำลังรออินพุตหรือหากมีปัญหากับทรัพยากรที่กระบวนการพยายามเข้าถึง มีสองวิธีแก้ไขปัญหานี้:

  • ตรวจสอบอินพุตที่จำเป็น: ตรวจสอบให้แน่ใจว่าคำสั่งไม่ต้องการอินพุตแบบโต้ตอบใดๆ
  • ปัญหาด้านทรัพยากร: ตรวจสอบว่าคำสั่งสามารถเข้าถึงทรัพยากรที่จำเป็น (เช่น ไฟล์ เครือข่าย)

เขียนทับ nohup.out

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

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

บทสรุป

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

หากคุณเป็นนักพัฒนา Linux ที่ต้องการเพิ่มประสบการณ์ Linux ของคุณให้สูงสุด ลองพิจารณาอัปเกรดเป็นเวอร์ชันที่เชื่อถือได้ ลินุกซ์ วีพีเอส. บริการ VPS บนคลาวด์ของเราให้การสนับสนุนตลอด 24 ชั่วโมงทุกวันและรับประกันความพร้อมใช้งาน 99.95% ซึ่งหมายความว่าแอปพลิเคชันของคุณทำงานได้อย่างราบรื่นตลอดเวลา และคุณสามารถรับความช่วยเหลือได้ตลอดเวลาของวัน ด้วยโครงสร้างพื้นฐานที่แข็งแกร่งและทรัพยากรที่เชื่อถือได้ VPS ของเราได้รับการออกแบบมาเพื่อตอบสนองความต้องการของโปรแกรมเมอร์ Linux นอกจากนี้คุณยังสามารถติดตั้งการกระจาย Linux ที่คุณต้องการไว้ล่วงหน้าได้ ทำให้การตั้งค่ารวดเร็วและง่ายดาย ยกระดับโปรเจ็กต์ Linux ของคุณไปอีกระดับด้วย VPS ที่ให้พลังและความยืดหยุ่นที่คุณต้องการ

คำถามที่พบบ่อย

อะไรคือความแตกต่างระหว่าง ไม่นะ และ &?

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

เหตุใดจึงใช้ nohup?

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

ไฟล์ nohup out คืออะไร?

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

แบ่งปัน

เพิ่มเติมจากบล็อก

อ่านต่อ

แอพที่โฮสต์เองที่ดีที่สุดที่คุณสามารถเรียกใช้ด้วย Cosmos Cloud ภาพหน้าปกพร้อมแผงแอพรอบแดชบอร์ดของ Cosmos
เซิร์ฟเวอร์และระบบปฏิบัติการ

แอพที่โฮสต์เองที่ดีที่สุดที่คุณสามารถรันด้วย Cosmos Cloud: ไฟล์ สื่อ รหัสผ่าน ระบบอัตโนมัติ และอื่นๆ อีกมากมาย!

บางทีคุณอาจตั้งค่า Cosmos Cloud ไว้แล้วและตอนนี้ต้องการดูว่าแอปใดที่เข้ากันได้ดีกับมัน หรือบางทีคุณอาจยังไม่ได้ตัดสินใจเลือก Cosmos และแค่อยากจะดูว่ามันเหมาะกับงานของคุณแค่ไหน

นิค ซิลเวอร์นิค ซิลเวอร์ อ่าน 16 นาที
Portainer vs Cosmos Cloud สำหรับการจัดการแอพ Docker ครอบคลุมด้วยไดอะแกรมการตั้งค่าไฮบริดและตัวเลือกนีออนเทียบกับบล็อกการเข้าถึง
เซิร์ฟเวอร์และระบบปฏิบัติการ

Portainer vs Cosmos Cloud: เหมาะที่สุดสำหรับการจัดการแอพ Docker

หากคุณรู้จัก Docker อยู่แล้ว และเพียงต้องการวิธีที่สะอาดกว่าในการรันแอปสแต็กที่กำลังเติบโต ต่อไปนี้เป็นคำตอบสั้นๆ สำหรับ Portainer กับ Cosmos Cloud Portainer เป็นตัวเลือกที่ดีกว่าสำหรับไดเร็ค

นิค ซิลเวอร์นิค ซิลเวอร์ อ่าน 14 นาที
กราฟิกฟีเจอร์ Cosmos Cloud vs CasaOS vs Umbrel แสดงเส้นทางที่โฮสต์ด้วยตนเองสามเส้นทางภายในโลกเครือข่ายคลาวด์แบบนามธรรมแห่งเดียว
เซิร์ฟเวอร์และระบบปฏิบัติการ

Cosmos Cloud กับ CasaOS กับ Umbrel: แพลตฟอร์มที่โฮสต์เองใดที่เหมาะกับการตั้งค่าของคุณ?

คำตอบสั้นๆ ก็คือ CasaOS ยังคงเป็นจุดเริ่มต้นที่ง่ายที่สุด Umbrel ให้ความรู้สึกที่สะอาดตาที่สุด และ Cosmos Cloud ก็สมเหตุสมผลมากขึ้นเมื่อคุณต้องการควบคุม Doma ที่เข้มงวดยิ่งขึ้น

นิค ซิลเวอร์นิค ซิลเวอร์ อ่าน 11 นาที

พร้อมที่จะใช้งานหรือยัง? จาก $2.48/เดือน

คลาวด์อิสระ ตั้งแต่ปี 2008 AMD EPYC, NVMe, 40 Gbps คืนเงินภายใน 14 วัน