Chạy với tư cách là một người dùng cụ thể, tôi có phải thêm vị trí tập lệnh vào PATH không?
Bạn thường không cần sửa đổi biến môi trường PATH khi bạn đang sử dụng các đường dẫn tuyệt đối như bạn đang làm với /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
Với tư cách là quản trị viên hệ thống, bạn có một số tùy chọn để tạo các công việc hàng loạt đã lên lịch chạy dưới một ID người dùng khác:
Như đã giải thích trong câu trả lời này: thiết lập một crontab cá nhân cho người dùng đó. Các công việc trong crontab cá nhân sẽ luôn chạy dưới ID người dùng của chủ sở hữu của họ.
Lưu ý rằng khi bạn với tư cách là quản trị viên thiết lập crontab cá nhân cho người dùng khác, người dùng đó sẽ có thể sửa đổi và xóa đặc tả công việc định kỳ đó, hoàn tác công việc của bạn.
Ngoài ra, bạn có thể lên lịch một công việc hệ thống từ crontab hệ thống. crontab hệ thống (thường /etc/crontab
và/hoặc các tệp thả vào trong /etc/cron.d/
) được sở hữu bởi root và người dùng không có đặc quyền không thể sửa đổi. Đặc tả công việc trong crontab hệ thống hỗ trợ một trường bổ sung không có trong các tệp crontab cá nhân: trường #6 cần tên người dùng, chẳng hạn như xfeautomation
của ID người dùng sẽ được sử dụng để thực hiện công việc.
Cú pháp bạn đã đăng là chính xác cho một mục trong /etc/crontab
hoặc một tệp thả vào như /etc/cron.d/wf_api_linux
0 * * * * xfeautomation /opt/scripts/wf_venv/bin/python /opt/scripts/wf_api_linux.py 2>&l /opt/scripts/log.txt
Vì bạn đang ghi nhật ký tất cả đầu ra và lỗi không phải là vấn đề đáng lo ngại, nhưng thông thường, cron sẽ gửi email đầu ra tiêu chuẩn và lỗi tới root khi bạn thiết lập crontab hệ thống và trực tiếp cho người dùng khi sử dụng crontab cá nhân.
Theo như tôi biết một cách hiệu quả, cả hai phương pháp đều dẫn đến các điều kiện giống nhau cho công việc và ngoài những lo ngại về quyền sở hữu thông số công việc và email, chúng là tương đương nhau.