Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม Bash

ทำให้คำสั่ง Linux ทำงานอัตโนมัติเมื่อรีบูทและเริ่มต้นระบบ: คู่มือทีละขั้นตอน

ผมมักหลงใหลในสิ่งที่เกิดขึ้นเบื้องหลังเมื่อบูตระบบ Linux และล็อกอิน โดยการกดปุ่มเปิดเครื่องบน Bare Metal หรือเริ่มต้น Virtual Machine จะทำให้เกิดลำดับเหตุการณ์ที่นำไปสู่ระบบที่ทำงานได้เต็มที่ – บางครั้งในเวลาน้อยกว่าหนึ่งนาที สิ่งเดียวกันก็เกิดขึ้นเมื่อคุณล็อกออฟและ/หรือปิดระบบ

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

ในบทความที่ไม่ขึ้นอยู่กับ Distro ใดๆ นี้ เราจะพูดถึงวิธีการดั้งเดิมสำหรับการบรรลุเป้าหมายเหล่านี้ใน Linux

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

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

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

วิธีที่ 1 – ใช้ Cron Job

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

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

  1. ก) Cron Daemon ต้องกำลังทำงานอยู่ (ซึ่งเป็นกรณีปกติภายใต้สภาพแวดล้อมปกติ)
  2. ข) สคริปต์หรือไฟล์ Crontab ต้องรวม Environment Variables (ถ้ามี) ที่จะต้องการ (ดูรายละเอียดเพิ่มเติมที่ StackOverflow thread นี้)

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

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

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

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

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

script1.sh:

#!/bin/bash
DATE=$(date +'%F %H:%M:%S')
DIR=/home/gacanepa
echo "Current date and time: $DATE" > $DIR/file1.txt

script2.sh:

#!/bin/bash
SITE="Tecmint.com"
DIR=/home/gacanepa
echo "$SITE rocks... add us to your bookmarks." > $DIR/file2.txt
ทำให้คำสั่ง Linux ทำงานอัตโนมัติเมื่อรีบูทและเริ่มต้นระบบ: คู่มือทีละขั้นตอน

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

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

การรันสคริปต์ Linux เมื่อล็อกอินและล็อกเอาท์

เพื่อรันสคริปต์เมื่อล็อกอินหรือล็อกเอาท์ ให้ใช้ ~.bash_profile และ ~.bash_logout ตามลำดับ ส่วนใหญ่คุณอาจต้องสร้างไฟล์หลัง者手动 只要在每个文件底部添加一行调用脚本的命令,就像之前一样,就准备好了。

สรุป

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

พัฒนาทักษะ Linux ของคุณให้ก้าวหน้าขึ้น

สมาชิก Root ได้รับการเข้าถึงเต็มรูปแบบทุกหลักสูตร โปรแกรมเตรียมสอบรับรอง และไลบรารีเนื้อหา Linux แบบ Hands-on ที่เพิ่มขึ้นเรื่อยๆ — มีหลักสูตรใหม่เพิ่มทุกเดือน

สิ่งที่คุณจะได้รับ:

  • เข้าถึงบทความพรีเมียมทั้งหมดโดยไม่มีโฆษณา
  • เข้าถึงหลักสูตรทั้งหมด: เรียนรู้ Linux, AI สำหรับ Linux, Bash Scripting, Ubuntu Handbook, Golang และอื่นๆ
  • เข้าถึงการรับรอง Linux (RHCSA, RHCE, LFCS และ LFCA)
  • เข้าถึงหลักสูตรใหม่ทันทีที่เปิดตัว
  • รับจดหมายข่าวรายสัปดาห์
  • ความช่วยเหลือลำดับแรกในความคิดเห็น
  • ชุมชน Telegram แบบส่วนตัว
  • เชื่อมต่อกับชุมชน Linux
ทำให้คำสั่ง Linux ทำงานอัตโนมัติเมื่อรีบูทและเริ่มต้นระบบ: คู่มือทีละขั้นตอน

Gabriel Cánepa เป็น GNU/Linux Sysadmin และ Web Developer จาก Villa Mercedes, San Luis, Argentina เขาทำงานให้บริษัทผลิตภัณฑ์ผู้บริโภคชั้นนำโลก และเพลิดเพลินในการใช้เครื่องมือ FOSS เพื่อเพิ่มประสิทธิภาพผลิตภาพในทุกด้านของงานประจำวัน

บทช่วยสอนแต่ละบทที่ TecMint สร้างโดยทีมผู้ดูแลระบบ Linux ที่มีประสบการณ์ เพื่อให้ตรงตาม มาตรฐานคุณภาพสูงของเรา