Làm thế nào để thiết lập một công việc định kỳ để chạy một kịch bản shell?


44

Tôi đã thiết lập một công việc định kỳ:

20 * * * * /usr/bin/sh /home/lucky/myfile.sh

Vấn đề chính là tại thời điểm lịch trình, có một lỗi: "thư đã được gửi đến / var / spool / mail / lucky".

Nội dung của myfile.sh là:

mkdir jh
cd jh 

Điều này có thể giúp bạn: help.ubuntu.com/community/CronHowto
PeppeDAlterio

2
nếu myfile.sh được đặt là thực thi?
rogerdpack

Câu trả lời:


60

Điều này không ổn đối với một tập lệnh được đặt làm công việc định kỳ:

mkdir jh
cd jh 

Bạn nên cung cấp đường dẫn đầy đủ nơi jhthư mục phải được tạo. Ngoài ra, trong đường dẫn này, bạn nên có quyền tạo các tệp / thư mục mới.

Ví dụ: tập lệnh của bạn sẽ giống như:

#!/bin/sh

mkdir /home/lucky/jh
cd /home/lucky/jh

Cũng /usr/bin/shkhông phải là con đường đúng cho sh. Con đường đúng là /bin/sh. Bạn có thể kiểm tra điều này bằng whereis shlệnh. Và ngay cả như vậy, công việc định kỳ của bạn sẽ giống như:

20 * * * * /home/lucky/myfile.sh

Đừng quên làm cho tập lệnh thực thi:

chmod +x /home/lucky/myfile.sh

Awsome, cứu mạng tôi :) Của tôi hoạt động tốt như thế này. 0 7 * * * / bin / sh /root/Scripts/command.sh> / dev / null 2> & 1
Louwki

5

Đường dẫn mà điều này dường như đang tạo thư mục là /. Điều này là do crontabyêu cầu đường dẫn đầy đủ đến thư mục và tệp trong tất cả các tệp mà nó thực thi.

Vì vậy, đường dẫn trong myfile.sh phải là

mkdir <absolutePath>/jh

cd <absolutePath>/jh

20 * * * * /usr/bin/sh /home/lucky/myfile.shDòng này là chính xác mặc dù bạn nên kiểm tra đường dẫn để xem sh có tồn tại ở / usr / bin / sh hay không (sử dụng which shđể xem đường dẫn nơi sh tồn tại; của tôi là / bin / sh)

Nếu bạn đang vội bắt đầu viết crontab thì liên kết này có những ví dụ khá hay

http: //www.thegeek ware.com/2009/06/15-prreal-crontab-examples/

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.