หากคุณกำลังสร้างหุ่นยนต์แพลตฟอร์มเซ็นเซอร์สถานีอากาศคุณไม่ต้องการให้รหัสหยุดทำงานหลังจากตัดการเชื่อมต่อจากเทอร์มินัลและ Nohup มันเหมาะสำหรับคุณ Nohup ผ่านชุดตัวอย่าง
มีช่วงเวลาที่คุณต้องการเริ่มต้นคำสั่งและทิ้งไว้แม้หลังจากปิดเซสชันเทอร์มินัล / SSH วิธีที่ง่ายที่สุดคือใช้ Nohup (ไม่มี hangtups) ซึ่งจะเปิดคำสั่งหรือสคริปต์ใด ๆ ที่ดำเนินการนานหลังจากปิดเทอร์มินัล
การใช้ Nohup ขั้นพื้นฐานใน Linux
พื้นฐานที่สุด Nohup มันสามารถใช้กับอาร์กิวเมนต์เดียวเท่านั้นสคริปต์ / คำสั่งที่เราต้องการเรียกใช้ ตัวอย่างเช่นถ้าเรามีสคริปต์ทุบตีเรียก test.sh เราสามารถเรียกใช้มันได้
nohup ./test.sh
หากสคริปต์ / คำสั่งสร้างเอาต์พุตมาตรฐานข้อมูลเอาต์พุตจะถูกบันทึกไว้ nohup.out ไม่ใช่เทอร์มินัล เพื่อตรวจสอบผลลัพธ์ที่เราสามารถใช้ได้ หาง เพื่อติดตามการอัปเดตที่ทำกับไฟล์
tail -f nohup.out
ตัวอย่างของการใช้ nohup
เราได้สร้างสคริปต์ทุบตีอย่างง่ายซึ่งพิมพ์ข้อความบนหน้าจอทุกวินาทีและอัปเดตค่าที่เก็บไว้ในตัวแปร n– นี่คือรหัสของไฟล์นี้ที่เรียกว่า test.sh
#!/bin/bash
n=0
while true
do
echo "I keep counting"
echo $n
n=$((n+1))
sleep 1
done
1. เปิดตัวแก้ไขข้อความและวางรหัสตัวอย่าง
2. บันทึกไฟล์ในแคตตาล็อกหน้าแรกเป็นแบบทดสอบ
3. เปิดเทอร์มินัลและตั้งค่าการทดสอบ
chmod +x test.sh
4. การทดสอบนี้การทดสอบนี้สามารถเรียกใช้งานได้โดยเริ่มต้นคำสั่ง หากคุณประสบความสำเร็จให้กด Ctrl + C เพื่อหยุด
5. ใช้ nohup และใช้การทดสอบ. sh เป็นอาร์กิวเมนต์– โปรดทราบว่าเราต้องใช้./test.sh เพื่อแจ้งระบบว่าจะค้นหาสคริปต์ได้ที่ไหน ทางออกเดียวในเทอร์มินัลคือ “nohup: ไม่สนใจข้อมูลอินพุตและแนบกับ” nohup.out “
nohup ./test.sh
6. เปิดเทอร์มินัลอื่นและใช้คำสั่ง tail เพื่อติดตามการอัปเดตที่ทำไปยังไฟล์ nohup.out คุณควรเห็น “เนื้อหาลอตเตอรี” และหมายเลขเพื่อเลื่อนหน้าจอขึ้น
tail -f nohup.out
7. ปิดเทอร์มินัล หากคุณถูกขอให้ยืนยันการปิดให้เลือกใช่ เทอร์มินัลของหาง -F จะทำงานโดยแสดงให้เห็นว่า Nohup ยังคงใช้สคริปต์อยู่ เรายืนยันสิ่งนี้โดยเปิดตัว HTOP และกำลังมองหาการทดสอบ
ทิศทางของเอาต์พุต nohup
Nohup มีข้อ จำกัด เขาเขียนโดยค่าเริ่มต้น nohup.outดังนั้นหากเรามีสองอินสแตนซ์ NoHup พวกเขาทั้งคู่จะบันทึกลงในไฟล์เดียวกัน
เพื่อข้ามสิ่งนี้เราสามารถใช้การเปลี่ยนเส้นทางเพื่อส่งทางออกไปยังไฟล์อื่น มาใช้กันเถอะ Nohup พร้อมกับ ปิง แนะนำหนึ่งในเซิร์ฟเวอร์ Google DNS และบันทึกเอาต์พุตของคุณบน googleping.txt
1. เปิดหน้าต่างเทอร์มินัล
2. การใช้คำสั่ง nohup ใช้ ping 8.8.8.8 เป็นอาร์กิวเมนต์ นี่จะเป็นหนึ่งในเซิร์ฟเวอร์ Google DNS ทุกวินาทีการทดสอบการสื่อสารที่มีประโยชน์
nohup ping 8.8.8.8 > GooglePing.txt
3. เปิดเทอร์มินัลอื่นและใช้หางเพื่อติดตาม Googleping.txt กด Ctrl+C เมื่อคุณพร้อมที่จะหยุดหางเอาต์พุต
nohup ping 8.8.8.8 > GooglePing.txt
4. ในเทอร์มินัล Nohup ให้กด Ctrl+C เพื่อหยุด ping
เริ่มต้นคำสั่ง nohup ในพื้นหลัง
เมื่อไร Nohup มันเริ่มต้นว่าเขาสามารถควบคุมเทอร์มินัลได้อย่างมีประสิทธิภาพปิด แต่ด้วยเวทมนตร์ Linux อีกเล็กน้อยเราสามารถใส่คำสั่งในพื้นหลังได้ โดยการวางคำสั่งบนพื้นหลังเราสามารถใช้เทอร์มินัลต่อไป
เราจะใช้ตัวอย่าง Ping อีกครั้งเพื่อแสดงให้เห็น
1. เปิดหน้าต่างเทอร์มินัล
2. การใช้คำสั่ง nohup ใช้ ping 8.8.8.8 เป็นอาร์กิวเมนต์จากนั้นเพิ่มและส่งคำสั่งไปยังพื้นหลัง ควรจำไว้ว่าเอาต์พุตเริ่มต้นของคำสั่งนี้จะเป็นตัวระบุกระบวนการ (PID) เราต้องการมันในภายหลัง
nohup ping 8.8.8.8 > GooglePing.txt &
3. เปิดเทอร์มินัลอื่นและใช้หางเพื่อติดตาม Googleping.txt
4. ในเทอร์มินัล Nohup ให้กด Enter เพื่อกลับไปที่แอสเซมบลี คำสั่ง nohup กลับมาหาเรา แต่ไม่มีพรอมต์ โดยการกด Enter เราจะเห็นการตรวจสอบที่ถูกต้องของเทอร์มินัล
5. ใช้คำสั่ง KILL กับตัวระบุกระบวนการเพื่อให้กระบวนการพื้นหลังเสร็จสิ้น หากกระบวนการนี้ไม่จำเป็นอีกต่อไปการฆ่ามันเพื่อรักษาทรัพยากรเป็นแนวปฏิบัติที่ดีที่สุด หากเราจากตัวอย่างนี้เพื่อเรียกใช้อย่างต่อเนื่อง DNS Google Server Ping จนกว่าคอมพิวเตอร์จะถูกปิด
kill 28365