บางทีฉันอาจจะบ้าอย่างสมบูรณ์และถ้าเป็นเช่นนั้น - ก็ไม่เป็นไร แต่ฉันจะกำหนดเวลางานให้ส่งข้อความงี่เง่าตามกำหนดการได้fortune
อย่างไร
ชี้แจง
ใช่ - นี่คือเวิร์กสเตชันส่วนตัวของฉัน - ไม่ได้วางแผนที่จะทำสิ่งที่สกปรกบนเซิร์ฟเวอร์ที่ใช้งานจริง :)
บางทีฉันอาจจะบ้าอย่างสมบูรณ์และถ้าเป็นเช่นนั้น - ก็ไม่เป็นไร แต่ฉันจะกำหนดเวลางานให้ส่งข้อความงี่เง่าตามกำหนดการได้fortune
อย่างไร
ชี้แจง
ใช่ - นี่คือเวิร์กสเตชันส่วนตัวของฉัน - ไม่ได้วางแผนที่จะทำสิ่งที่สกปรกบนเซิร์ฟเวอร์ที่ใช้งานจริง :)
คำตอบ:
at
มีอินเทอร์เฟซที่เรียบง่ายกว่าสำหรับวัตถุประสงค์ประเภทนี้หากat
ติดตั้งแล้วเครื่องกำลังทำงานatd
และผู้ใช้ได้รับอนุญาตให้ใช้คำสั่ง
ตัวอย่างเช่น (ตรวจสอบไวยากรณ์ที่ถูกต้องโดยใช้man at
หรือinfo at
)
at -f
ไฟล์ now + 53 minutes
หรือ
at -f
ไฟล์ now + 2 hours
จะเรียกใช้คำสั่งในไฟล์ที่ระบุใน 53 นาทีหรือ 2 ชั่วโมงตามลำดับ
at
จากนั้นสามารถเรียกใช้อีกครั้งเมื่อเริ่มต้นของงานที่กำหนดเวลาด้วยการเริ่มต้นนับและหน่วยเวลาที่เหมาะสม
แก้ไข
ในขณะที่ Arjan ชี้ให้เห็นอย่างเป็นประโยชน์ด้านล่างหากคุณกำลังใช้สิ่งนี้กับสิ่งอื่นนอกเหนือจากแอปพลิเคชันของเล่นคุณต้องคิดถึงปัญหาต่าง ๆ เช่นสิ่งที่เกิดขึ้น
หากการเรียกใช้ครั้งถัดไปเริ่มต้นก่อนที่รายการก่อนหน้าจะเสร็จสิ้น
หากการเรียกใช้ล้มเหลวในการดำเนินการอย่างถูกต้องหรือ
หากการเรียกใช้ครั้งต่อไปไม่สามารถเริ่มต้นได้เลยหรือตรงเวลา (เช่นจะเกิดอะไรขึ้นหากเครื่องหยุดทำงานเมื่อการทำงานครั้งต่อไปเริ่มต้น)
เกี่ยวกับการบันทึกและรายงานการทำงานล้มเหลวหรือสำเร็จ
at
คำสั่งเป็นบรรทัดแรกและหากสคริปต์รันเป็นเวลานาน (หรือถ้าช่วงเวลาสั้น) ให้ระวังการรันหลายอินสแตนซ์พร้อมกัน แต่เมื่อat
อยู่ที่บรรทัดสุดท้ายของสคริปต์แล้วจะไม่มีการกำหนดตารางเวลาอีกครั้งหากสคริปต์ล้มเหลว นอกจากนี้การเรียกใช้สคริปต์จากบรรทัดคำสั่งจะทำให้ (อีกครั้ง) กำหนดเวลาตัวเองเช่นกัน (และ: สามารถมีหลายตารางพร้อมกันได้) และcron
รองรับการส่งข้อผิดพลาดใด ๆ (หรือ: เอาท์พุทโดยทั่วไป) ผ่านทางอีเมล; ฉันไม่รู้ว่าat
มีบางอย่างเช่นนั้นด้วยหรือไม่
ฉันมีคำสั่งมากมายใน / etc / crontab ทำสิ่งต่าง ๆ และต้องการความแม่นยำในไม่กี่วินาที ตอนนี้ cron สามารถมีความละเอียดปลีกย่อยในขณะที่ทำให้ทุกครั้งที่มองเห็นและรวมศูนย์
ตัวอย่างนี้รับและวิเคราะห์เว็บเพจระหว่าง 10 ถึง 50 วินาทีก่อนทุก 5 นาที:
4-59/5 * * * * root (sleep $(($RANDOM\%40+10))) && /etc/munin/plugins/someplugin prefetch
ไม่จำเป็นต้องมีเวลาที่แน่นอนเนื่องจากข้อมูลมีการเคลื่อนไหวช้า แต่จะช่วยให้เวลาในการประมวลผลของ munin-node ต่ำที่สุดเท่าที่จะเป็นไปได้โดยไม่ต้องรอหน้าเว็บ (ปลั๊กอินจะแคชหน้าต่อไปเป็นเวลา 30 นาทีเพื่อลดการเข้าชมที่ไม่จำเป็น แต่ต้องอัปเดตฐานข้อมูลทุก 5 นาที)
หมายเหตุ \% - cron ใช้แทน% สำหรับ "\ n" - มีประโยชน์สำหรับเก็บข้อความอีเมลไว้ในหนึ่งบรรทัด
ภายในถึงcron
ฉันไม่คิดว่าคุณสมบัติดังกล่าวมีอยู่ ฉันคิดว่าทางออกที่ดีที่สุดคือการวางคำสั่งของคุณลงในเชลล์สคริปต์และวางsleep
ช่วงเวลาแบบสุ่มที่ด้านบนสุดของสคริปต์และใช้$RANDOM
ตัวแปร จากนั้นเรียกใช้สคริปต์วันละครั้งในงาน cron ปกติ
#!/bin/bash
sleep $(($RANDOM%5))
/path/to/command -param1 -param2
มันจะขึ้นอยู่กับประเภทของช่วงเวลาที่คุณอยู่หลัง แต่ให้เราสมมติว่าคุณต้องการให้สคริปต์ทำงานแบบสุ่มโดยมีความน่าจะเป็น 1:30 (ทุกๆ 30 นาที)
สร้างสคริปต์ cron ของคุณด้วยความเร็วประมาณ 10 นาที มันจะยิง 3 ครั้งทุก ๆ 30 นาที
ภายในสคริปต์ใช้randเป็นเงื่อนไขสำหรับคำสั่งif คุณต้องการให้ rand ส่งคืนตัวเลขระหว่าง 0 ถึง 2 หากเป็น 0 ให้ดำเนินการเนื้อหาของคำสั่ง if
โดยพื้นฐานแล้วสคริปต์ของคุณจะเริ่มทำงานในช่วงเวลาที่กำหนดไว้เสมอ แต่จะรันคำสั่งที่คุณสนใจแบบสุ่มเท่านั้น ผู้ให้บริการของคุณจะขอบคุณ
file
มีการat
เรียกใช้ครั้งต่อไปถูกต้องหรือไม่