ฉันจะเรียกใช้งานวันละครั้งด้วย launchd โดยไม่คำนึงว่าเมื่อใดที่คอมพิวเตอร์เปิดอยู่


7

ฉันต้องการรันเชลล์สคริปต์ทุกวัน แต่ไม่จำเป็นต้องเป็นไปตามเวลาที่กำหนด คอมพิวเตอร์ที่สคริปต์ทำงานนั้นเปิดอยู่ในเวลาที่ผิดปกติและไม่มีข้อสมมติฐานใด ๆ ที่จะเกิดขึ้น

สำหรับสิ่งนั้นฉันต้องการให้ launchd ทำงานเล็กน้อยเช่น anacron: มันต้องทำงานเท่านั้น วันละครั้ง ที่ เวลาที่สะดวกใด ๆ .

โพสต์ส่วนใหญ่ที่ฉันเคยเห็นที่นี่หรือในเว็บไซต์อื่น ๆ อธิบายสิ่งต่าง ๆ เช่น "ทำงานทุกวันเวลา 05:00" ซึ่งไม่เป็นประโยชน์สำหรับฉันหากเครื่องปิดในเวลานั้น ...

ฉันจะเขียนตัวเรียกใช้งานด่วนที่ระบุพฤติกรรมนั้นได้อย่างไร

คำตอบ:


6

Launchd จะเรียกใช้งานของคุณในครั้งต่อไปที่ mac กลับมาทำงานจากโหมดสลีป ดังนั้นหากคุณปิดเครื่อง mac สิ่งนี้จะไม่ทำงาน คุณจะต้องทำให้เครื่อง mac ของคุณเข้าสู่โหมดสลีปเพื่อเรียกใช้สคริปต์รายวันของคุณให้ทำงานเมื่อ mac ตื่นขึ้นมาหากครั้งสุดท้ายที่ควรรันในช่วงเวลาพัก

คน launchd.plist:

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

หรือในคำอื่น ๆ : คุณไม่ต้องทำอะไรเฉพาะเจาะจงมันเป็นพฤติกรรมเริ่มต้นอยู่แล้ว

หากคุณต้องการรันคำสั่งหนึ่งครั้งหลังจากรีบูตให้เพิ่ม

<Key>RunAtLoad</Key>
<true/>

ให้กับ launchd plist ของคุณ


ขอบคุณสำหรับการตอบกลับ แต่ฉันต้องการวิธีการที่จะใช้งานได้หากปิดเครื่อง
jstarek

ใช้ตัวเลือก RunAtLaunch ดูคำตอบ
nohillside

2
อ๊ะขอโทษความผิดของฉัน อย่างไรก็ตามอย่างน้อยใน Snow Leopard ก็คือ RunAtLoad ไม่ใช่ RunAtLaunch - หรือฉันกำลังทำผิดพลาดต่อไปที่นี่ :-)
jstarek

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