cron จัดคิวสคริปต์ bash และ python

Sep 29 2020

ตอนนี้ฉันต้องการทำความเข้าใจและทำความคุ้นเคยกับคิว crontab บน macbook pro ฉันเพิ่งแก้ไขปัญหาที่สคริปต์ทุบตีธรรมดาของฉันไม่ทำงาน ปรากฎว่าฉันต้องย้ายสคริปต์ทุบตีและผลลัพธ์ของมันใน/Users/myusername/เส้นทาง ก่อนที่ฉันจะมีมันใน/Users/myusername/Desktop/. โพสต์นี้สามารถพบได้ที่นี่ -https://stackoverflow.com/questions/64110897/simple-bash-script-doesnt-cron-properly?noredirect=1#comment113370465_64110897

คำถามของฉัน: สคริปต์ bash และ python ทั้งหมดของฉันจำเป็นต้องอยู่ใน/Users/myusernameเส้นทางเสมอหรือไม่? ไม่มีวิธีแก้ปัญหาหรือไม่?

คำตอบ

3 Seamus Sep 30 2020 at 13:36

คำถาม:

คำถามของฉัน: สคริปต์ bash และ python ทั้งหมดของฉันจำเป็นต้องอยู่ใน/Users/myusernameเส้นทางเสมอหรือไม่? ไม่มีวิธีแก้ปัญหาหรือไม่?

ตอบ:

ไม่ได้คุณสามารถค้นหาสคริปต์ bash และ python ได้ทุกที่ที่คุณต้องการ อย่างไรก็ตามมีข้อกำหนดเพิ่มเติม :

  1. cronงานของคุณทำงานด้วยสภาพแวดล้อมที่แตกต่างจากเมื่อคุณทำงาน เช่น$PATH. ดังนั้นคุณควรใช้ข้อกำหนดเส้นทางแบบเต็มสำหรับการระบุสคริปต์ของคุณในcrontab; ตัวอย่างการใช้:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py
  1. บน Mac ของฉัน (Catalina) ฉันได้พบมันจำเป็นที่จะต้องให้สิทธิ์ "เต็มรูปแบบการเข้าถึงดิสก์" cronเพื่อ YMMV ใน OS เวอร์ชันอื่น วิธีการมีดังนี้

System Preferences -> Security & Privacy -> Privacyแท็บ:

  1. อย่างน้อยในขณะที่แก้ไขข้อบกพร่องcronงานของคุณคุณควรพิจารณาเปลี่ยนเส้นทางข้อความแสดงข้อผิดพลาด ( stderr) ไปยังไฟล์มิฉะนั้นจะจบลงใน/dev/nullสิ่งที่ไม่เป็นประโยชน์! ดำเนินการต่อด้วยตัวอย่างด้านบน:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py >> /Home/<username>/MyCronLog.txt 2>&1
2 bmike Sep 29 2020 at 07:24

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

นี่คือเคล็ดลับการแก้ไขข้อบกพร่องขั้นสูงสำหรับคำถามล่าสุด

  • cron และ "ไม่พบคำสั่ง"
  • cronjobs ไม่ทำงาน
  • ได้รับข้อผิดพลาดของคำสั่งที่ไม่รู้จักเมื่อพยายามเรียกใช้สคริปต์ผ่าน cron