cron antrian bash dan skrip python

Sep 29 2020

Saat ini saya ingin memahami dan merasa nyaman dengan antrean crontab di macbook pro saya. Saya baru-baru ini memecahkan masalah di mana skrip bash sederhana saya tidak dapat dijalankan. Ternyata saya harus memindahkan skrip bash saya dan hasilnya di /Users/myusername/jalur. Sebelum saya memilikinya di /Users/myusername/Desktop/. Posting ini dapat ditemukan di sini -https://stackoverflow.com/questions/64110897/simple-bash-script-doesnt-cron-properly?noredirect=1#comment113370465_64110897

Pertanyaan saya: Apakah semua skrip bash dan python saya harus selalu ditempatkan di /Users/myusernamejalur? Apakah tidak ada solusi?

Jawaban

3 Seamus Sep 30 2020 at 13:36

Pertanyaan:

Pertanyaan saya: Apakah semua skrip bash dan python saya harus selalu ditempatkan di /Users/myusernamejalur? Apakah tidak ada solusi?

Menjawab:

Tidak. Anda dapat menemukan skrip bash dan python di mana pun Anda suka. Namun, ada persyaratan tambahan :

  1. cronPekerjaan Anda berjalan dengan LINGKUNGAN yang berbeda dengan saat Anda menjalankannya; mis $PATH. Akibatnya, Anda harus menggunakan spesifikasi jalur lengkap untuk menentukan skrip Anda di crontab; misalnya penggunaan:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py
  1. Di Mac (Catalina) saya, saya merasa perlu untuk memberikan hak istimewa "Akses Disk Penuh" cron. YMMV pada versi OS yang berbeda. Begini caranya:

System Preferences -> Security & Privacy -> Privacy tab:

  1. Setidaknya saat debugging Anda cronpekerjaan, Anda harus mempertimbangkan mengarahkan pesan kesalahan ( stderr) ke file - jika tidak mereka berakhir di /dev/nullmana tidak membantu! Melanjutkan contoh di atas:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py >> /Home/<username>/MyCronLog.txt 2>&1
2 bmike Sep 29 2020 at 07:24

Anda mungkin hanya perlu memastikan bahwa Anda memberikan izin ke elemen dan menggunakan jalur lengkap untuk semuanya. Hanya karena skrip berjalan saat Anda berada dalam shell interaktif, tidak berarti skrip tersebut benar dalam shell terbatas.

Berikut tips super debugging untuk pertanyaan terbaru.

  • cron dan "perintah tidak ditemukan"
  • cronjobs tidak berjalan
  • Mendapatkan kesalahan perintah yang tidak diketahui saat mencoba menjalankan skrip melalui cron