เรียกใช้สคริปต์ Linux ในเวลา 'n' ในวันแรก 'n + 15 นาที' ในวันถัดไปเป็นต้น


5

ฉันพยายามถ่ายภาพตามเวลาที่กำหนดโดยใช้เว็บแคมของฉัน สิ่งที่ฉันต้องการทำคือเรียกใช้สคริปต์ตอนเที่ยงคืนของวันที่ 1 มกราคมจากนั้น 00:15 ในวันที่ 2 มกราคม 00:30, วันที่ 3 มกราคมเป็นต้นไป สิ่งนี้สามารถทำงานต่อไปได้ตลอดไปฉันจะปิดเมื่อฉันทำเสร็จแล้ว

ฉันไม่สามารถทำสิ่งนี้กับ Cron ได้ฉันสามารถทำได้โดยไม่ต้องกรอก crontab กับชุดค่าผสมที่เป็นไปได้ทั้งหมดหรือไม่ ฉันไม่รู้จะทำยังไง


นั่นจะทำให้ช่วงเวลาที่น่าสนใจสิ้นสุดลง คุณสามารถโพสต์ลิงค์เมื่อเสร็จแล้วได้หรือไม่
marcusw

ถ้าฉันทำให้มันใช้งานได้และฉันก็จำได้ใช่
Piku

คำตอบ:


7

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

ดังนั้นคุณสามารถมีสคริปต์ของคุณให้เรียกมันว่า "capture_from_webcam.sh" ดูเหมือนว่า:

#!/bin/bash

#schedule next capture for tomorrow + 15 minutes
echo "/path/to/capture_from_webcam.sh" | at tomorrow + 15 minutes

# capture from webcam
/path/to/capture_from_webcam.sh

และหากมีการดำเนินการเป็นครั้งที่ 1 เวลาเที่ยงคืนของวันที่ 1 มกราคม:

echo "/path/to/capture_from_webcam.sh" | at 00:00 01/01/2010

สำหรับข้อมูลเพิ่มเติมโปรดดูที่หน้าคน


นั่นเป็นสิ่งที่ดี :-) จะเกิดอะไรขึ้นถ้าเซิร์ฟเวอร์รีบูทใหม่
ℝaphink

1
@ เครื่องดื่มที่งานได้รับการจัดการโดย cron deamon พวกเขาเก็บไว้ภายใน / var / spool / cron / atjobs ดังนั้นหากไม่มีสิ่งใดที่จะลบไดเรกทอรีนั้นเมื่อรีบูตระบบจะยังคงดำเนินการต่อไป
Laurent Parenteau

3

คุณสามารถสร้างงาน cron เป็นส่วนหนึ่งของสคริปต์ที่คุณวางแผนที่จะทำงาน ดังนั้นให้ทำงาน cron ครั้งเดียวจากนั้นสคริปต์ทุบตีจะสร้างอีกหนึ่งนาทีต่อมา 15 นาทีเป็นต้น

นี่คือคำถามก่อนหน้าที่อาจช่วยได้: วิธีสร้างงาน cron โดยใช้ bash


ไหวพริบฉันชอบที่ :)
Piku

เพียงระมัดระวังเพื่อให้แน่ใจว่าสคริปต์ลบงานที่ได้เพียงแค่เรียกใช้หรือคุณจะจบลงด้วยหลายร้อยงาน cron ซึ่งจะถูกเรียกใช้อีกครั้งในปีถัดไป ...
marcusw

1

คุณสามารถทำได้ผ่าน cron

คุณเรียกสคริปต์ cron เดียวกันทุกวันในเวลาเดียวกัน แต่คุณเพิ่มคำสั่ง sleep ไปที่จุดเริ่มต้นของสคริปต์ที่หลับเป็นเวลา 15m * date +'%j'วันนี้ของปี [001 ... 366]


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