`at` รันคำสั่งในภายหลังหรือไม่หากคอมพิวเตอร์ปิดในเวลาที่กำหนด


20

ฉันต้องการกำหนดเวลางานด้วยatแต่ฉันไม่แน่ใจว่าจะเกิดอะไรขึ้นหากคอมพิวเตอร์ถูกระงับในเวลาที่กำหนด: คำสั่งจะถูกดำเนินการทันทีที่คอมพิวเตอร์ตื่นขึ้นมาอีกครั้ง (เช่นเดียวกับanacron) หรือจะไม่ถูกดำเนินการเลย (เช่นเดียวกับcron)

หากคุณระบุงานที่จะเรียกใช้ในเวลาและวันที่ที่ระบุอย่างแน่นอนในอดีตงานจะทำงานโดยเร็วที่สุด

นั่นคือสิ่งที่ manpage พูดเกี่ยวกับเรื่องนี้ แต่มันไม่ตรงกับกรณีของฉัน: ฉันไม่ต้องการระบุงานที่จะทำงานในอดีตฉันต้องการเรียกใช้งานในอนาคตและถามว่าatจะจัดการอย่างไรถ้าคอมพิวเตอร์ กำลังนอนหลับอยู่

นี่ไม่ใช่คำสั่ง Run at ที่ซ้ำกันเมื่อคอมพิวเตอร์หลับเพราะคำถามนี้ถามว่าatจะปลุกคอมพิวเตอร์ให้เรียกใช้งานคำสั่งหรือไม่และเป็นวิธีการป้องกัน atd ไม่ให้ทำงานในอดีตหรือไม่ เพราะนี่เป็นเรื่องเกี่ยวกับวิธีการป้องกันไม่ให้เรียกatใช้งาน "เก่า" เหล่านั้น (โดยมีคำตอบที่ดีมาก!)

คำตอบ:


20

atดำเนินการคำสั่งใด ๆ ที่ควรได้รับการดำเนินการก่อนเมื่อคุณปลุกคอมพิวเตอร์ แต่อาจใช้เวลาสักครู่ในการทำเช่นนั้น ไม่สำคัญว่าคุณจะระบุวันที่หรือไม่เพราะคุณสามารถทดสอบได้อย่างง่ายดาย:

$ sudo date -s "2017-12-15 23:57:00"
$ at 23:59 17-12-15 <<<'echo executed >at_test'
job 1 at Fri Dec 15 23:59:00 2017
# suspend, wake after four minutes
$ date
Sat Dec 16 00:01:17 CET 2017
$  cat <at_test || atq
bash: /home/dessert/at_test: No such file or directory
1       Fri Dec 15 23:59:00 2017 a dessert
# wait a few minutes
$  cat <at_test || atq
executed

ดังนั้นงานที่คุณเพิ่มโดยใช้at 20:00 todayสามารถถูกเรียกใช้งานได้ในสามวันต่อมาเมื่อคุณเปิดคอมพิวเตอร์อีกครั้ง หากคุณต้องการป้องกันสิ่งนี้คุณสามารถตรวจสอบเวลาในงานของตัวเองได้ตามที่เสนอไว้ที่นี่: วิธีป้องกัน atd ไม่ให้ทำงานในอดีต?

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