Có một vấn đề đặc trưng khác có thể ảnh hưởng đến các chương trình chạy bởi cron
so với dòng lệnh (ngoài cách diễn giải '%
' dấu hiệu được mô tả bởi Robert Gamble).
Sự khác biệt đó nằm trong môi trường. Nếu chương trình chạy dựa trên các biến môi trường đặc biệt, thì nó sẽ hoạt động khi bạn chạy nó từ dòng lệnh, với môi trường bạn thường sử dụng, và nó có khả năng hoạt động nếu bạn chạy nó với at
vì nó nắm bắt môi trường khi bạn tạo việc làm. Nhưng cron
không có cài đặt môi trường đặc biệt.
Do đó, theo thói quen, hãy định cấu hình cron
để chạy tập lệnh theo tên đường dẫn tuyệt đối và tập lệnh đó thực hiện cài đặt môi trường mà tôi cần (ví dụ: thêm thư mục $HOME/bin
vào PATH). Tôi thậm chí còn có một cơ sở hạ tầng tiêu chuẩn hóa cho điều này - một kịch bản trình bao đặt môi trường và chạy các chương trình khác.
# @(#)$Id: crontab,v 4.2 2007/09/17 02:41:00 jleffler Exp $
# Crontab file for Home Directory for Jonathan Leffler (JL)
#-----------------------------------------------------------------------------
#Min Hour Day Month Weekday Command
#-----------------------------------------------------------------------------
0 * * * * /usr/bin/ksh /work1/jleffler/bin/Cron/hourly
1 1 * * * /usr/bin/ksh /work1/jleffler/bin/Cron/daily
23 1 * * 1-5 /usr/bin/ksh /work1/jleffler/bin/Cron/weekday
2 3 * * 0 /usr/bin/ksh /work1/jleffler/bin/Cron/weekly
21 3 1 * * /usr/bin/ksh /work1/jleffler/bin/Cron/monthly
Các kịch bản trong /work1/jleffler/bin/Cron
đặt môi trường và sau đó chạy kịch bản cùng tên trong /work1/jleffler/bin
để làm công việc thực sự. Các tên trong thư mục con Cron
thực sự là tất cả các liên kết đến cùng một tập lệnh.
Nguồn
2008-12-12 15:51:35
Đúng vậy. Tôi đã nhìn vào trang người đàn ông sai (chỉ cần người đàn ông crontab thay vì người đàn ông 5 crontab). –