รับสคริปต์ให้ทำงานเมื่อบู๊ตไม่ใช่เข้าสู่ระบบ


11

ฉันจะเรียกใช้สคริปต์เฉพาะให้ทำงานอย่างไร (ไม่ควรเป็น superuser) ทุกครั้งที่เครื่องบู๊ต แต่ก่อนเข้าสู่ระบบ มันเป็นสิ่งสุดท้ายที่จะต้องใช้ในการบู๊ต ฉันส่วนใหญ่ต้องการให้สคริปต์ทำงานแม้ว่าจะไม่มีผู้ใช้ลงชื่อเข้าใช้


1
@bruce ลองดูสิ่งนี้ -> askubuntu.com/questions/9382/…
hhlp

1
คุณสามารถใช้พุ่งพรวดหรือ cron หรืออาจเป็นวิธีอื่นทั้งหมด สิ่งสำคัญสิ่งหนึ่งที่ต้องรู้ก็คือมันสามารถทำงานได้เร็วแค่ไหน เช่นจำเป็นต้องใช้ระบบไฟล์เฉพาะเพื่อติดตั้งหรือไม่ต้องใช้ X เพื่อทำงานจำเป็นต้องใช้ DBus จำเป็นต้องมีเครือข่ายหรือมากกว่าโดยทั่วไป: มันต้องการทรัพยากรใด ๆ ที่จะมีอยู่หรือไม่?
JanC

@ JanC: ใช่แล้วมันต้องการทุกอย่างที่คุณถาม (ยกเว้น X) ซึ่งเป็นเหตุผลว่าทำไมฉันถึงอยากให้มันเป็นสิ่งสุดท้ายที่ต้องถูกเรียกใช้ ไม่มีเหตุผลจริงๆที่จะเรียกใช้ก่อนหน้านี้เช่นกัน
Malabarba

@ hhlp: เจ๋งขอบคุณ แต่สคริปต์จะทำงานเร็วแค่ไหนถ้าฉันใช้วิธีการนั้น ดังที่ฉันได้กล่าวไว้ข้างต้นจะเป็นการดีที่สุดถ้าเป็นสิ่งสุดท้าย (ก่อนเข้าสู่ระบบ)
Malabarba

การเข้าสู่ระบบไม่จำเป็นต้องใช้เครือข่ายเว้นแต่ว่าคุณต้องการลงชื่อเข้าใช้เซิร์ฟเวอร์เทอร์มินัลและ / หรือคุณมีเงิน $ HOME ของคุณบนเครือข่ายที่ใช้ร่วมกัน ... ;-)
JanC

คำตอบ:


8

cronฉันจะแนะนำให้ใช้ ค่าเวลาพิเศษของการ@rebootจะวางไข่งานของคุณในการรีบูตแต่ละครั้งในฐานะผู้ใช้ของคุณ ตัวอย่างเช่นเรียกใช้crontab -eและใช้:

@reboot /home/yourself/bin/some_script_to_run

สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับรูปแบบเวลาพิเศษให้ดู man 5 crontab


ขอบคุณดูเหมือนง่ายพอ สิ่งนี้ไม่ได้ขึ้นอยู่กับผู้ใช้คนใดที่สร้าง cronjob ใช่มั้ย มันทำงานในตอนท้ายของการบูตโดยไม่คำนึงถึงการเข้าสู่ระบบ?
Malabarba

มันขึ้นอยู่กับว่าใครเป็นผู้สร้าง cronjob - มันจะทำงานในฐานะผู้ใช้รายนั้น แต่มันไม่ได้ขึ้นอยู่กับพวกเขาที่จะเข้าสู่ระบบ
Kees Cook

โปรดทราบว่าการดำเนินการนี้จะเรียกใช้สคริปต์เมื่อ cron daemon เริ่มทำงานดังนั้นจึงเป็นไปได้ที่ระบบอื่น ๆ ที่คุณอาจต้องการยังไม่พร้อม
PhoneixS

4

ความเป็นไปได้อย่างหนึ่งคือการใช้พุ่งพรวด สิ่งนี้ช่วยให้คุณระบุเมื่อคุณต้องการเรียกใช้สคริปต์ของคุณในแง่ของการพึ่งพาเช่น“ เมื่อระบบไฟล์ถูกเมาท์และอินเทอร์เฟซเครือข่ายeth0ขึ้นและทำงาน” สร้างไฟล์/etc/init/bruce_script.conf(คุณต้องสร้างไฟล์เป็นรูท) ที่มีสิ่งนี้:

description "Bruce's boot script"
start on filesystem and net-device-up IFACE=eth0
task
exec su -c '/home/bruce/script' bruce

ศึกษาเอกสารประกอบพุ่งพรวดสำหรับข้อมูลเพิ่มเติมโดยเฉพาะหน้าinit(5)คู่มือสำหรับรายการสิ่งที่คุณสามารถใส่ในไฟล์กำหนดค่านั้น


มีรายการของเหตุการณ์ที่พุ่งพรวดที่สามารถใช้ได้หรือไม่?
ซันไซด์

@ Markus: ไม่ใช่ที่ฉันรู้ เหตุการณ์มาตรฐานมีหน้าคู่มือในมาตรา 7 (เพื่อdpkg -L upstart |grep /man7/) /etc/initและคุณสามารถดูเหตุการณ์ที่เกิดขึ้นและปล่อยออกมาโดยใช้เป็นทริกเกอร์ในสคริปต์ที่มีอยู่ใน
Gilles 'หยุดชั่วร้าย'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.