ค้นหาเว็บไซต์

วิธีดำเนินการคำสั่ง/สคริปต์อัตโนมัติในระหว่างการรีบูตหรือเริ่มต้นระบบ


ฉันหลงใหลกับสิ่งที่เกิดขึ้นเบื้องหลังเสมอเมื่อฉันบูตระบบ Linux และเข้าสู่ระบบ ด้วยการกดปุ่มเปิด/ปิดบนโลหะเปลือยหรือสตาร์ทเครื่องเสมือน คุณจะก่อให้เกิดเหตุการณ์ต่างๆ ที่นำไปสู่ระบบที่มีฟังก์ชันการทำงานเต็มรูปแบบ - บางครั้งใช้เวลาไม่ถึงนาที เช่นเดียวกับเมื่อคุณออกจากระบบและ/หรือปิดระบบ

สิ่งที่ทำให้สิ่งนี้น่าสนใจและสนุกสนานยิ่งขึ้นคือคุณสามารถให้ระบบปฏิบัติการดำเนินการบางอย่างเมื่อบู๊ตและเมื่อคุณเข้าสู่ระบบหรือออกจากระบบ

ในบทความ distro-agnostic นี้ เราจะพูดถึงวิธีการดั้งเดิมในการบรรลุเป้าหมายเหล่านี้ใน Linux

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

การรันสคริปต์ Linux ระหว่างรีบูตหรือเริ่มต้นระบบ

มีสองวิธีแบบดั้งเดิมในการรันคำสั่งหรือรันสคริปต์ระหว่างการเริ่มต้นระบบ:

วิธีที่ # 1 - ใช้งาน cron

นอกจากรูปแบบปกติ (นาที/ชั่วโมง/วันของเดือน/เดือน/วันในสัปดาห์) ที่ใช้กันอย่างแพร่หลายในการระบุตารางเวลาแล้ว cron scheduler ยังอนุญาตให้ใช้ @reboot ได้อีกด้วย คำสั่งนี้ตามด้วยเส้นทางที่แน่นอนไปยังสคริปต์ จะทำให้สคริปต์ทำงานเมื่อเครื่องบูท

อย่างไรก็ตาม มีข้อควรระวังสองประการสำหรับแนวทางนี้:

  1. a) cron daemon จะต้องทำงานอยู่ (ซึ่งเป็นกรณีภายใต้สถานการณ์ปกติ) และ
  2. b) สคริปต์หรือไฟล์ crontab จะต้องมีตัวแปรสภาพแวดล้อม (ถ้ามี) ที่จำเป็น (โปรดดูรายละเอียดเพิ่มเติมที่เธรด StackOverflow นี้)

วิธีที่ # 2 - ใช้ /etc/rc.d/rc.local

วิธีการนี้ใช้ได้แม้กระทั่งกับการแจกแจงแบบอิง systemd เพื่อให้วิธีนี้ใช้งานได้ คุณต้องให้สิทธิ์ดำเนินการแก่ /etc/rc.d/rc.local ดังนี้:

chmod +x /etc/rc.d/rc.local

และเพิ่มสคริปต์ของคุณที่ด้านล่างของไฟล์

รูปภาพต่อไปนี้แสดงวิธีเรียกใช้สคริปต์ตัวอย่างสองตัว (/home/gacanepa/script1.sh และ /home/gacanepa/script2.sh) โดยใช้ cron< job และ rc.local ตามลำดับ และผลลัพธ์ตามลำดับ

#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt
#!/bin/bash
SITE="linux-console.net"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt

โปรดทราบว่าสคริปต์ทั้งสองจะต้องได้รับสิทธิ์ดำเนินการก่อนหน้านี้:

chmod +x /home/gacanepa/script1.sh
chmod +x /home/gacanepa/script2.sh

การรันสคริปต์ Linux เมื่อเข้าสู่ระบบและออกจากระบบ

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

สรุป

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