systemd - หน่วยจับเวลาที่เลียนแบบพฤติกรรมของ anacron


13

ฉันต้องเขียนหน่วยจับเวลาสำหรับเครื่องที่เปลี่ยนบ่อย (เช่นการตั้งค่าเดสก์ท็อปแบบดั้งเดิม) หน่วยตัวจับเวลานี้ต้องเปิดใช้งานเป็นประจำ แต่ไม่บ่อยนัก (เช่นรายสัปดาห์รายเดือน)

ฉันหาวิธีบางอย่าง แต่พวกเขาทั้งหมดไม่พอดี:

  • ตามหน้า man เท่านั้นOnBootSecและOnStartupSecสั่งจะเปิดใช้งานหากจุดเวลาที่กำหนดไว้ในอดีต ฉันพบตัวอย่างด้วยการใช้การรวมกันของเหล่านี้ด้วยOnActiveSecเพื่อกำหนดเหตุการณ์ปกติ ปัญหาคือ: ทุกครั้งที่มีการบูตเครื่องตัวจับเวลาจะเปิดใช้งานหน่วยที่กำหนดค่าไว้ หากคุณมีตัวจับเวลาซึ่งควรจะใช้ครั้งเดียวต่อสัปดาห์ / เดือนซึ่งบ่อยเกินไป ตัวอย่างเช่น: ฉันไม่ต้องการหมุนบันทึกของฉันสามครั้งต่อวัน ...

  • การแก้ปัญหาด้วยOnCalendarคำสั่ง หากเครื่องปิดที่จุดเวลาที่กำหนด (ส่วนใหญ่เที่ยงคืนเพราะถ้าคุณข้ามชั่วโมงในการกำหนดเวลามันเริ่มต้นที่ 00:00:00) จับเวลาจะไม่เปิดใช้งานหลังจากการบูตครั้งต่อไป อย่างน้อยฉันก็เข้าใจ นั่นถูกต้องใช่ไหม ?

ดังนั้นที่นี่มาคำถาม:
มีการจับเวลากับกิจกรรมปฏิทินเปิดใช้งานหลังจากการเริ่มต้นต่อไปถ้าเวลาที่กำหนดไว้ในอดีต?
ถ้าไม่: มีวิธีแก้ปัญหาเพื่อรับพฤติกรรมดังกล่าวหรือไม่?


ตกลงฉันรู้นี้ มันยังเป็นทางไปหรือเปล่า? หรือมีวิธีแก้ปัญหาที่สง่างามมากขึ้น? มีอะไรวางแผนที่จะปรับปรุงสถานการณ์ปัจจุบันหรือไม่?
mmh

คำตอบ:


15

คุณลักษณะนี้มีการนำไปใช้แล้วใน systemd (ver> = 212) โดยใช้Persistent=คำสั่งดังนั้นคุณเพียงแค่ต้องแทรกPersistent=trueในไฟล์หน่วยในขณะที่ใช้OnCalendar=คำสั่งเพื่อกำหนดวันที่ / เวลาเพื่อเรียกใช้งาน

ถาวร =

รับอาร์กิวเมนต์บูลีน หากเป็นจริงเวลาที่เรียกใช้หน่วยบริการล่าสุดจะถูกเก็บไว้ในดิสก์ เมื่อเปิดใช้งานตัวจับเวลาหน่วยบริการจะถูกเรียกใช้ทันทีหากมีการเรียกใช้งานอย่างน้อยหนึ่งครั้งในช่วงเวลาที่ตัวจับเวลาไม่ทำงาน สิ่งนี้มีประโยชน์ในการติดตามการเรียกใช้บริการที่ไม่ได้รับเมื่อปิดเครื่อง โปรดทราบว่าการตั้งค่านี้มีผลกับตัวจับเวลาที่กำหนดค่าด้วย OnCalendar =


มันตรงกันข้ามหรือไม่? OP ถามเกี่ยวกับการขจัดวิ่งพิเศษที่เกิดจากการมีทั้งและOnBootSec จะรันครั้งเดียวเมื่อบู๊ตหรือไม่ถ้ามีอย่างน้อยหนึ่งการวิ่งที่พลาด OnActiveSecPersistent
x-yuri

คุณอาจหมายถึงวิธีนี้
x-yuri

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