cron จัดคิวสคริปต์ bash และ python
ตอนนี้ฉันต้องการทำความเข้าใจและทำความคุ้นเคยกับคิว 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เส้นทางเสมอหรือไม่? ไม่มีวิธีแก้ปัญหาหรือไม่?
คำตอบ
คำถาม:
คำถามของฉัน: สคริปต์ bash และ python ทั้งหมดของฉันจำเป็นต้องอยู่ใน
/Users/myusernameเส้นทางเสมอหรือไม่? ไม่มีวิธีแก้ปัญหาหรือไม่?
ตอบ:
ไม่ได้คุณสามารถค้นหาสคริปต์ bash และ python ได้ทุกที่ที่คุณต้องการ อย่างไรก็ตามมีข้อกำหนดเพิ่มเติม :
cronงานของคุณทำงานด้วยสภาพแวดล้อมที่แตกต่างจากเมื่อคุณทำงาน เช่น$PATH. ดังนั้นคุณควรใช้ข้อกำหนดเส้นทางแบบเต็มสำหรับการระบุสคริปต์ของคุณในcrontab; ตัวอย่างการใช้:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py
- บน Mac ของฉัน (Catalina) ฉันได้พบมันจำเป็นที่จะต้องให้สิทธิ์ "เต็มรูปแบบการเข้าถึงดิสก์"
cronเพื่อ YMMV ใน OS เวอร์ชันอื่น วิธีการมีดังนี้
System Preferences -> Security & Privacy -> Privacyแท็บ:
- อย่างน้อยในขณะที่แก้ไขข้อบกพร่อง
cronงานของคุณคุณควรพิจารณาเปลี่ยนเส้นทางข้อความแสดงข้อผิดพลาด (stderr) ไปยังไฟล์มิฉะนั้นจะจบลงใน/dev/nullสิ่งที่ไม่เป็นประโยชน์! ดำเนินการต่อด้วยตัวอย่างด้านบน:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py >> /Home/<username>/MyCronLog.txt 2>&1
คุณอาจต้องแน่ใจว่าคุณให้สิทธิ์แก่องค์ประกอบและใช้เส้นทางแบบเต็มสำหรับทุกสิ่ง เพียงเพราะสคริปต์ทำงานเมื่อคุณอยู่ในเชลล์แบบโต้ตอบไม่ได้หมายความว่าสคริปต์จะถูกต้องในเชลล์ที่ จำกัด
นี่คือเคล็ดลับการแก้ไขข้อบกพร่องขั้นสูงสำหรับคำถามล่าสุด
- cron และ "ไม่พบคำสั่ง"
- cronjobs ไม่ทำงาน
- ได้รับข้อผิดพลาดของคำสั่งที่ไม่รู้จักเมื่อพยายามเรียกใช้สคริปต์ผ่าน cron