วิธีง่ายๆในการใช้คำสั่งพูด 8 ชั่วโมงจากนี้คืออะไร? ฉันสามารถคิดแบบนี้:
nohup bash -c "sleep 28800 ; ./mycommand.sh" &
มีวิธีที่ "เหมาะสม" มากกว่านี้ไหม?
วิธีง่ายๆในการใช้คำสั่งพูด 8 ชั่วโมงจากนี้คืออะไร? ฉันสามารถคิดแบบนี้:
nohup bash -c "sleep 28800 ; ./mycommand.sh" &
มีวิธีที่ "เหมาะสม" มากกว่านี้ไหม?
คำตอบ:
คุณสามารถใช้at
คำสั่ง at
รันคำสั่งในเวลาต่อมา at
ยูทิลิตี้จะอ่านคำสั่งจากอินพุตมาตรฐานและกลุ่มพวกเขาร่วมกันเป็นที่งานที่จะดำเนินการในเวลาต่อมา
โดยปกติat
จะติดตั้งตามค่าเริ่มต้นใน Ubuntu แต่ถ้ารุ่นของคุณไม่รวมให้ติดตั้งผ่าน:
sudo apt-get install at
สำหรับข้อมูลเพิ่มเติมตัวเลือกตัวอย่างและอื่น ๆ ดูที่Ubuntu Manpage Repository
ตัวอย่าง:
at now +8 hours -f ~/myscript.sh
นอกจากนี้คุณยังสามารถใช้ชวเลขอย่างสะดวกเช่นtomorrow
หรือnoon
เหมือนใน
echo "tweet fore" | at teatime
คำเตือน:สิ่งนี้จะเรียกใช้คำสั่งทางด้านซ้ายของไพพ์ทันทีแต่จะแสดงเอาต์พุตในภายหลังเท่านั้น ตัวอย่างยังสาธิตวิธีที่คุณสามารถไพพ์แอ็คชันเข้าat
มา at -c
เป็นวิธีที่คุณสามารถตรวจสอบการกระทำที่กำหนดเวลาไว้ซึ่งคุณสามารถแสดงรายการตามหมายเลขได้อย่างสะดวกสบายเช่นเดียวกับ:
at -c 3
at now +8 hours -f ~/myscript.sh
at 8:00
การเรียกใช้คำสั่งในเวลาที่แน่นอนและbatch
สำหรับ "เมื่อดูเหมือนว่าคอมพิวเตอร์ไม่ได้ใช้งาน"
teatime
อยู่ที่ 16:00 ด้วยเหตุผลบางอย่างมันไม่ได้กล่าวถึงในmanpages.ubuntu.com/manpages/raring/man1/at.1posix.htmlแต่มันอยู่ในman at
และนี่manpages.ubuntu.com/manpages/raring/en/man1/at.1.html
gpio write 8 1
แต่ดำเนินการทันที
ใช่คุณสามารถตั้งค่างาน cron
ตัวอย่างเช่นถ้าตอนนี้เวลา 14:39:00 และวันนี้คือวันศุกร์, 30 สิงหาคม, คุณสามารถเพิ่มงาน cron ต่อไปนี้ (จะถูกเรียกใช้หลังจาก 8 ชั่วโมง) ในไฟล์ crontab ของคุณโดยใช้crontab -e
คำสั่ง:
39 22 30 8 5 /path/to/mycommand.sh
เพิ่มเติมเกี่ยวกับ:
crontab
จนกว่าคุณจะลบออก อีกหนึ่งปีต่อมาเมื่อคุณลืมที่วางไว้ที่นั่นและทำไมคุณจะถูกเกาหัวสงสัยว่าจะทำอย่างไรกับคำสั่ง
ใช้ GUI คำพังเพยที่ใช้สำหรับcron
, at
และไม่ชอบ:
การแนะนำของCronHowtoแนะนำให้ใช้gnome-schedule
gui ซึ่งดีกว่าการพิมพ์ขยะทั้งหมดลงในเทอร์มินัล (โดยเฉพาะสำหรับผู้ใช้ Ubuntu โดยเฉลี่ยที่ไม่ใช่ "กำลัง" * ผู้ใช้ nix / bsd)
เรียกใช้งานโดยใช้ Unity Dash (หรือเมนูแอปพลิเคชันอื่น ๆ ) เพื่อค้นหางานที่กำหนดเวลาหรือทำงานgnome-schedule
อยู่
บนระบบ Ubuntu ที่ใช้ Gnome เครื่องมือ Gnome Scheduled (จากแพ็คเกจ gnome-schedule) ใน Applications -> System Tools มีส่วนต่อประสานกราฟิกพร้อมให้ใช้ Cron เว็บไซต์โครงการอยู่ที่http://gnome-schedule.sourceforge.net/ ; ซอฟต์แวร์สามารถติดตั้งได้จากศูนย์ซอฟต์แวร์หรือโดยการพิมพ์
sudo apt-get install gnome-schedule
ในอาคารผู้โดยสาร
การใช้gnome-schedule
สคริปต์ในโฮมไดเรกทอรีของคุณคำสั่ง "at" ใหม่จะถูกตั้งค่าโดยใช้หน้าต่างประเภทนี้:
ฉันคิดหาวิธีที่รวดเร็วและสกปรกในการทำสิ่งนี้ก่อนที่ฉันจะค้นพบว่าat
เป็นเรื่อง
สมมติว่าคุณต้องการให้สคริปต์ทำงานตอนเที่ยง:
until [[ "$(date)" =~ "12:00:" ]]; do
sleep 10
done
./mycommand.sh
สมมติว่าคุณต้องการให้มันทำงานในวันพรุ่งนี้ตอนเที่ยง (วันนี้คือ 24 พฤศจิกายนสำหรับฉัน):
until [[ "$(date)" =~ "25 12:00:" ]]; do
sleep 30
done
./mycommand.sh
อัปเดต : วิธีที่ดีกว่าเล็กน้อย: ทดสอบเฉพาะตัวเลขที่คุณสนใจโดยใช้date +FORMAT
:
until [[ $(date +%H:%M) == 21:06 ]]; do
...
at
, cron
หรือโปรแกรมจัดตารางเวลาจริงอื่น ๆ การกำหนดตารางงานทำได้ยากไม่ใช่ล้อที่คุณควรบูรณาการ
at
แต่มีข้อดีที่ไม่เกิน
at
เพราะงานของมันจะอยู่รอดได้ในการรีบูต
nohup
+sleep
หรือไม่ ทำไม "ไม่เหมาะสม"?