ฉันจะรันคำสั่งหลังการบู๊ตได้อย่างไร?


27

ฉันต้องการเรียกใช้คำสั่ง shell แบบง่าย ๆecho 1 > /proc/sys/kernel/sysrqในการบู๊ตแต่ละครั้งเพื่อเปิดใช้งานคีย์ sysrq สิ่งนี้ควรทำเมื่อเริ่มต้นระบบและควรวางสคริปต์ไว้ที่ใด


การแจกแจง Linux ทั้งหมดตั้งเวลาไว้แล้ว บางทีแบตเตอรีของคุณไปที่ RTC บนเมนบอร์ดอาจต่ำ
โปรแกรมเมอร์บางคนเพื่อน

@JoachimPileborg จริง ๆ แล้วไม่มี RTC ในเมนบอร์ดของฉัน :) มันเป็นบอร์ดระบบฝังตัวโดยไม่ต้อง RTC

นอกจากนี้superuser.com/questions/183921/…
davidgo

2
ฉันขอแตกต่าง @davidgo การอ้างอิงที่คุณอ้างถึงนั้นเป็นเรื่องล้าสมัยในขณะที่ crontab ทำงานได้ /etc/rc.local ไม่ได้อยู่บนsystemddistros เช่น Arch Linux โดยการอ้างอิงถึงพวกเราอาจส่ง Demetri ไปตามล่าห่านป่า บางครั้งต้องมีการอัพเดต
MariusMatutiae

คำตอบ:


37

ขึ้นอยู่กับ distros

หากคุณอยู่ใน Distros ที่ได้จาก Debian มีอย่างน้อยสองแห่งคือ /etc/rc.local และ crontab คุณอาจเรียกใช้ crontab เป็น root ได้

   crontab -e

แล้วแทรกบรรทัดนี้

   @reboot /home/my_name/bin/my_command

โดยที่my_commandเป็นไฟล์เรียกทำงาน ( chmod 755 my_command)

หรือคุณอาจวางบรรทัดแบบนี้

   /home/my_name/bin/my_command

ใน /etc/rc.local และจะดำเนินการครั้งสุดท้าย ไม่ว่าในกรณีใดก็ตามโปรดจำไว้ว่าคุณกำลังใช้สภาพแวดล้อมของรูท ด้วยเหตุผลนี้จึงเป็นการดีที่สุดที่จะใช้พา ธ สัมบูรณ์

หากคุณอยู่ในsystemd distro (Arch Linux, Fedora 19, ... ) ตัวเลือกแรก (crontab) ยังคงใช้ได้ในขณะที่ตัวที่สอง (/etc/rc.local) ไม่มีอยู่อีกต่อไป ในกรณีนี้คุณควรเรียนรู้วิธีเริ่มบริการเพื่อให้ทำงานได้systemctlแต่อาจจะมากกว่าที่คุณต่อรองกับคำถามง่ายๆของคุณ


1
คุณยืนยันเรื่องนี้กับ Fedora ได้ไหม การค้นหาของฉันบอกว่า rc.local จะยังคงทำงานหากมีอยู่และสามารถใช้งานได้ แต่ไม่ได้ตั้งค่าตามค่าเริ่มต้น ฉันรับรู้การแยกปัญหาหาก rc.local ไม่ทำงาน! (ฉันหาได้เฉพาะการอ้างอิงสำหรับสิ่งนี้สำหรับ Fedora 18 - forums.fedoraforum.org/showthread.php?t=291889 )
davidgo

คุณพูดถูกใน Fedora 19 คุณอาจยังมีอยู่หากคุณต้องการจริงๆ แต่มันจะไม่ได้รับการบรรจุอีกต่อไปdocs.fedoraproject.org/en-US/Fedora/16/html/Release_Notes/… bullet 3.2.4 นอกจากนี้ยังไม่มีอยู่ใน Arch Linux เลยดังนั้นฉันคิดว่ามันปลอดภัยที่จะรวมคำเตือนเกี่ยวกับสิ่งนั้น
MariusMatutiae

2
บางทีนี่อาจเป็นนามแฝงที่ไม่รู้จักสำหรับฉัน แต่@bootไม่มีอยู่แค่ @reboot debianhelp.co.uk/crontab.htm
Zarathustra

19

หากระบบของคุณใช้รุ่นcronที่รองรับ (เฉพาะ Vixie cron) คุณสามารถใช้@rebootในงาน cron ได้

นี่เป็นหนึ่งใน 8 สายอักขระพิเศษที่รองรับ

การอ้างถึงcrontab(5)หน้า man (จากระบบ Ubuntu 12.04 ของฉัน):

แทนที่จะเป็นห้าฟิลด์แรกหนึ่งในแปดสตริงพิเศษอาจปรากฏขึ้น:

string         meaning
------         -------
@reboot        Run once, at startup.
@yearly        Run once a year, "0 0 1 1 *".
@annually      (same as @yearly)
@monthly       Run once a month, "0 0 1 * *".
@weekly        Run once a week, "0 0 * * 0".
@daily         Run once a day, "0 0 * * *".
@midnight      (same as @daily)
@hourly        Run once an hour, "0 * * * *".

โปรดทราบว่าการเริ่มต้นตามที่@rebootเกี่ยวข้องคือเวลาที่cron (8) daemon เริ่มทำงาน โดยเฉพาะอย่างยิ่งอาจเป็นก่อนที่ daemons ของระบบหรือระบบอำนวยความสะดวกอื่น ๆ นี่เป็นเพราะลำดับการบู๊ตของเครื่อง

นี่ไม่ใช่วิธีเดียวที่จะเรียกใช้บางอย่างในเวลาบูต แต่ก็เป็นทางเลือก


2
คำตอบนี้เขียนได้นานกว่าหนึ่งปีก่อนหน้าคำถามเดิมอย่างไร
MariusMatutiae


+1 สำหรับการระบุที่ต้องใช้ Vixie cron
Javier Arias

10

ลินุกซ์ทุกรุ่น (กลับไปเป็นเวลานานมาก) มีไฟล์ /etc/rc.local ซึ่งทำงานเมื่อเริ่มต้น - คุณสามารถเพิ่มคำสั่งลงไปได้

ที่กล่าวว่าคุณไม่จำเป็นต้องทำเช่นนั้น วิธี "ที่ถูกต้อง" จะเป็นการแก้ไข / เพิ่มบรรทัด kernel.sysrq = 1 ใน /etc/sysctl.conf

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