แม้ว่าคำตอบก่อนหน้านี้ที่นี่ทั้งหมดตอบสนองความต้องการเพื่อความสมบูรณ์แบบคุณยังสามารถปิดเครื่องของคุณทันทีที่เสร็จงาน
bash
สคริปต์สามารถเป็นtrap
ped, หมายถึงสัญญาณบางอย่างสามารถถูกดักและงานบางอย่างสามารถดำเนินการเมื่อจำเป็น EXIT
เป็นหนึ่งในสัญญาณที่สามารถดักจับได้
คุณจะสามารถ:
- ตั้งค่า
trap
สำหรับEXIT
เชลล์สคริปต์อัตโนมัติของคุณหมายถึงการยกเลิกงานอัตโนมัติของคุณ
- ตั้งค่า
trap
สำหรับ.bashrc
EXIT
ความหมายของคุณเมื่อใดก็ตามที่คุณออกจากระบบของเครื่องปิดเครื่อง
ตัวเลือก # 1 จะเป็นกรณีที่เหมาะถ้างานของคุณไม่จำเป็นต้องมีการตรวจสอบเฉพาะกิจและการตัดสินใจด้วยตนเอง
ตัวเลือก # 2 จะครอบคลุมกรณีที่คุณลืมที่จะออกจากเครื่องโดยไม่ต้องปิดเครื่อง มีข้อแม้ว่า; หากคุณมีเทอร์มินัลหลายเครื่องที่เปิดอยู่และคุณออกจากหนึ่งในนั้นมันจะยังคงปิดเครื่องเหมือนเดิมทั้งหมด (สามารถเขียนสคริปต์เพื่อหลีกเลี่ยงปัญหานี้ แต่ฉันจะไม่แก้ปัญหาให้ซับซ้อน)
cleanup(){
# Do some tasks before terminating
echo oh la la, cleaning is so nice
echo "See you later, world"
sudo poweroff & # finally shutdown
}
trap cleanup EXIT
นี่อาจเป็น.bashrc
ตัวเลือก # 2 ท้ายของสคริปต์สำหรับตัวเลือก # 1
ทำไมไม่ใช้poweroff
ตอนท้ายสคริปต์?
ฉันชอบที่จะใช้set -eo pipefail
ที่ด้านบนของสคริปต์ของฉัน หากมีข้อผิดพลาดเกิดขึ้นมันจะไม่ล้มเหลวในทันที มันจะหยุดดำเนินการคำสั่งเพิ่มเติม trap
ของEXIT
สัญญาณควรจะครอบคลุมกรณีที่สคริปต์ยุติก่อนกำหนดเนื่องจากข้อผิดพลาด
อย่างไรก็ตามสำหรับงานของคุณนี่อาจหมายความว่าเครื่องจะปิดก่อนที่จะเสร็จสมบูรณ์
ฉันมีbash
เทมเพลตเรียบง่ายที่ฉันใช้เพื่อทำให้การดีบักสคริปต์ง่ายขึ้น บางทีมันอาจจะเป็นการใช้งานบางอย่าง โปรดดูส่วนสำคัญนี้
at
(การดำเนินการเพียงครั้งเดียว)