cron xếp hàng bash và tập lệnh python

Sep 29 2020

Tôi hiện đang tìm cách hiểu và cảm thấy thoải mái với hàng đợi crontab trên macbook pro của mình. Gần đây tôi đã giải quyết một sự cố trong đó tập lệnh bash đơn giản của tôi sẽ không thực thi. Hóa ra là tôi đã phải di chuyển tập lệnh bash của mình và đầu ra của nó trong /Users/myusername/đường dẫn. Trước khi tôi có nó trong /Users/myusername/Desktop/. Bài viết này có thể được tìm thấy ở đây -https://stackoverflow.com/questions/64110897/simple-bash-script-doesnt-cron-properly?noredirect=1#comment113370465_64110897

Câu hỏi của tôi: Tất cả các tập lệnh bash và python của tôi có cần phải luôn được đặt trong /Users/myusernameđường dẫn không? Không có giải pháp thay thế?

Trả lời

3 Seamus Sep 30 2020 at 13:36

Câu hỏi:

Câu hỏi của tôi: Tất cả các tập lệnh bash và python của tôi có cần phải luôn được đặt trong /Users/myusernameđường dẫn không? Không có giải pháp thay thế?

Câu trả lời:

Không. Bạn có thể định vị tập lệnh bash và python của mình ở bất kỳ đâu bạn muốn. Tuy nhiên, có các yêu cầu bổ sung :

  1. Công cronviệc của bạn chạy với một MÔI TRƯỜNG khác với khi bạn điều hành chúng; vd $PATH. Do đó, bạn nên sử dụng đặc tả đường dẫn đầy đủ để chỉ định các tập lệnh của bạn trong crontab; ví dụ sử dụng:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py
  1. Trên máy Mac (Catalina) của mình, tôi thấy cần phải cấp đặc quyền "Truy cập toàn đĩa" cron. YMMV trên phiên bản hệ điều hành khác. Đây là cách thực hiện:

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

  1. Ít nhất trong khi gỡ lỗicron công việc của bạn , bạn nên xem xét chuyển hướng bất kỳ thông báo lỗi nào ( stderr) đến một tệp - nếu không, chúng /dev/nullsẽ không hữu ích! Tiếp tục với ví dụ trên:
* * * * * /opt/local/bin/python3 /some/dir/you/choose/myscript.py >> /Home/<username>/MyCronLog.txt 2>&1
2 bmike Sep 29 2020 at 07:24

Bạn có thể chỉ cần chắc chắn rằng bạn cấp quyền cho các phần tử và sử dụng đường dẫn đầy đủ cho mọi thứ. Chỉ vì một tập lệnh chạy khi bạn ở trong một trình bao tương tác, không có nghĩa là chúng đúng trong một trình bao giới hạn.

Dưới đây là mẹo gỡ lỗi siêu cao cho một câu hỏi gần đây.

  • cron và "không tìm thấy lệnh"
  • cronjobs không chạy
  • Gặp lỗi lệnh không xác định khi cố gắng chạy tập lệnh qua cron