Bash Script เมื่อเริ่มต้น? (Linux)


12

มีวิธีใดบ้างในการสร้าง / เรียกใช้สคริปต์ทุบตีในการรีบูต (เช่นใน Debian / Ubuntu เป็นต้นเนื่องจากเป็นกล่อง 2 กล่องที่บ้านของฉัน)

นอกจากนี้มีคำแนะนำที่แนะนำสำหรับการทำงาน cron หรือไม่ ฉันใหม่สมบูรณ์สำหรับพวกเขา (แต่พวกเขาจะใช้ประโยชน์ได้ดี)

คำตอบ:


21

บน Ubuntu / Debian / Centos คุณสามารถตั้งค่างาน cron เพื่อรัน @reboot สิ่งนี้จะทำงานหนึ่งครั้งเมื่อเริ่มต้นระบบ ใช้ crontab -e เพื่อแก้ไข crontab และเพิ่มบรรทัดเช่นตัวอย่างด้านล่างเช่น

@reboot /path/to/some/script 

มีทรัพยากรมากมายสำหรับ cron ถ้าคุณมองหามัน เว็บไซต์นี้มีตัวอย่างที่ดีหลายประการ


7

อีกวิธีหนึ่งในการเริ่มต้นบางสิ่งขณะบู๊ตบนแพลตฟอร์ม* nixจำนวนมากคือ (หรือว่าฉันคิดว่านี่อาจจะเริ่มหลุดลอยไป - ดูทางเลือกอื่น ๆ ) เพื่อวางสคริปต์ในไดเรกทอรีซึ่งขึ้นอยู่กับระบบปฏิบัติการ / การกระจายเฉพาะ สิ่งที่ชอบ/etc/rc2.d, /etc/rc3.d, /etc/rc/rc3.dหรือชอบ (การกระจายที่แตกต่างกันใช้ที่แตกต่างกัน "ระดับการทำงาน" ซึ่งเป็นจำนวนที่มาจาก - ดูลิงค์ด้านล่าง) บ่อยครั้งที่สิ่งเหล่านี้จะเชื่อมโยงไปยังหรือที่ไฟล์จาก/etc/init.dเพื่อการดำเนินการที่ง่ายขึ้นด้วยมือและพวกเขาใช้อาร์กิวเมนต์ "เริ่มต้น" และ / หรือ "หยุด" ในแพลตฟอร์มส่วนใหญ่ * nix และ "สถานะ", "รีสตาร์ท" ฯลฯ บนแพลตฟอร์ม Linux มากมาย ในระบบดังกล่าวเหล่านี้จะดำเนินการโดยทั่วไปinit,inittab. บนระบบ * BSD มีสไตล์ที่แตกต่างกันของแนวคิดที่คล้ายกันและตามที่ลิงก์ด้านบนมีรูปแบบที่หลากหลาย

ในรูปแบบข้างต้นสคริปต์ในเช่น/etc/rc2.d(สำหรับระบบที่มี runlevel เริ่มต้นที่ 2) โดยทั่วไปแล้วจะเริ่มต้นด้วยตัวอักษรSหรือKจากนั้นเป็นตัวเลขสองหลัก สคริปต์ที่ขึ้นต้นด้วย S จะถูกเรียกใช้ตามลำดับพจนานุกรม (ซึ่งแปลโดยทั่วไปเป็นลำดับตัวเลข) เมื่อทำการบูทขึ้นสู่ระดับ 2 โดยมีอาร์กิวเมนต์ว่า "เริ่มต้น" เมื่อปิดระบบสคริปต์ที่ขึ้นต้นด้วย K จะทำงานคล้ายกันโดยมีอาร์กิวเมนต์ "หยุด"

ไฟล์ใน/etc/init.d(หรือบางครั้ง/etc/rc/init.dหรือรูปแบบอื่น ๆ ) จะถูกตั้งชื่อโดยไม่มีคำนำหน้า S และ K หรือหมายเลขที่เป็นตัวเลข โดยปกติแล้วไฟล์ในไดเรกทอรี /etc/rc?.d ต่างๆ symlink ../init.d/ไปไฟล์จริงมักจะอ้างอิงทางคำนำหน้าเส้นทางญาติ

ยูทิลิตี้ต่าง ๆ มีอยู่ในระบบต่าง ๆ เพื่อจัดการสิ่งเหล่านี้เช่นกันการเปิดและปิดสิ่งต่าง ๆ ฯลฯ บน IRIX (ตั้งแต่ IRIX 4 อย่างน้อยถ้าหน่วยความจำของฉันทำหน้าที่) มันเคยเป็นเครื่องมือที่เรียกว่าchkconfigซึ่งจะไม่จัดการ ลิงก์ที่จะตรวจสอบโดยสคริปต์เพื่อดูว่าควรรันหรือไม่ ฉันคิดว่า IRIX เป็นระบบปฏิบัติการแรกที่มีบางอย่างเช่นนี้ ต่อมาใน RedHat บางเวอร์ชั่นที่ฉันเคยมีมีเครื่องมือชื่อเดียวกัน แต่มันมีความแตกต่างเล็กน้อยจัดการกับ symlink จริง ๆ - ดูchkconfig(8)สิ่งที่ฉันคิดว่าน่าจะเป็นรุ่นเดียวกัน (หรือคล้ายกันมาก) อย่างที่ฉันเคยใช้

ในระบบ Ubuntu 9.04 ที่ฉันเข้าใช้ดูเหมือนว่าupdate-rc.dจะเป็นสคริปต์ที่จะเรียกใช้

หากคุณอยู่ในระบบที่ใช้ inittab คุณสามารถเพิ่มสิ่งต่าง ๆ ได้โดยตรงซึ่งจะเป็นประโยชน์อย่างยิ่งสำหรับสิ่งที่คุณต้องการเรียกใช้ไม่เพียงครั้งเดียวตอนบู๊ต แต่ยังมีการตรวจสอบอย่างแข็งขัน ( หากinit) respawnผิดพลาดหรือยุติ ดูผลลัพธ์ของman inittab(ถ้าคุณมี) ในระบบของคุณสำหรับข้อมูลเพิ่มเติม และ / หรือman initฯลฯ มีรสชาติที่แตกต่างกันมากมายและฉันไม่คุ้นเคยกับ Debian หรือ Ubuntu อย่างมากในขณะนี้ดังนั้นฉันไม่แน่ใจว่าจะชี้คุณไปที่ใด แต่หวังว่านี่จะเป็นจุดเริ่มต้นให้คุณ .

ส่วน @reboot ใน crontob ยังใหม่สำหรับฉัน แต่ก็ดูเหมือนว่ามันอาจเป็นตัวเลือกที่มีประโยชน์ - แม้ว่าฉันจะแนะนำสคริปต์เริ่มต้นว่าเป็นสิ่งที่ดีกว่าสำหรับหลาย ๆ สิ่ง แต่ดูman 5 crontabข้อมูลเพิ่มเติมเกี่ยวกับสิ่งที่คุณสามารถใส่ในการกำหนดค่า cron ของคุณและวิธีที่มันจะบอกให้ทำงานสิ่งต่างๆและเมื่อใด (รวมถึงสมมติว่า cron รุ่น Vixie / ISC [ดูประวัติของ cron ] ด้วย@reboot)

ฉันหวังว่าจะเป็นประโยชน์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.