ต้องการสคริปต์ที่ดำเนินการในการรีบูตในเวลา +1 นาที ฉันบันทึกไว้@reboot
แต่มันเร็วเกินไปสำหรับสคริปต์ของฉัน วิธีดำเนินการบางครั้งหลังจากรีบูต?
ต้องการสคริปต์ที่ดำเนินการในการรีบูตในเวลา +1 นาที ฉันบันทึกไว้@reboot
แต่มันเร็วเกินไปสำหรับสคริปต์ของฉัน วิธีดำเนินการบางครั้งหลังจากรีบูต?
คำตอบ:
สคริปต์ตั้งใจจะรันเพียงหนึ่งนาทีหลังจากบูตเครื่องหรือไม่หรือจะใช้ในเวลาอื่นด้วยเช่นกัน ในกรณีแรกคุณสามารถเพิ่มsleep 60
ไปยังจุดเริ่มต้นของสคริปต์ของคุณหรือในกรณีหลังเพิ่มลงในไฟล์ crontab:
@reboot sleep 60 && my_script.sh
ดังที่มีการชี้ให้เห็นโดย sr_ แม้ว่าบางทีคุณอาจจะแก้ปัญหานี้ในทางที่ผิดและสคริปต์ init.d หรือ rc.d ที่เหมาะสมจะเป็นโซลูชันที่มีประสิทธิภาพมากขึ้น
script -s X
ที่จะแปลsleep X
ภายในสคริปต์)
taskrunner
และสำหรับเรื่องนั้น/etc/init.d
หากคุณจำเป็นต้องดำเนินการบางอย่างหลังจากรีบูตเมื่อเครือข่ายพร้อมใช้งานตัวอย่างเช่นคุณสามารถเขียน systemd หน่วยที่จะถูกดำเนินการในเวลาที่ต้องการ (แน่นอนว่าสิ่งนี้จะใช้ได้กับระบบที่มี systemd เท่านั้น)
โดยสร้างไฟล์/etc/systemd/system/my_script.service
ด้วยเนื้อหาดังต่อไปนี้:
[Unit]
Description=My script that requires network
After=network.target
[Service]
Type=oneshot
ExecStart=/full/path/to/my_script.sh
[Install]
WantedBy=multi-user.target
จากนั้นดำเนินการ:
sudo systemctl daemon-reload
sudo systemctl enable my_script
คุณทำเสร็จแล้ว!
at
ผมจะใช้ ในขณะที่:
@reboot echo /root/bin/do_the_stuff | at now + 2 minutes
# at assigns it an execution time truncated to whole minutes,
# so this means it will execute in 1--2 minutes.
... ด้วยข้อแม้ที่เพิ่มเข้ามาซึ่งหากสิ่งที่คุณต้องการจริงๆคือเรียกใช้หลังจากสิ่งอื่น ๆ ทั้งหมดคุณควรตรวจสอบวิธีการทำใน init ที่ระบบปฏิบัติการของคุณใช้อยู่