Tôi có một kịch bản hoạt động khi tôi chạy nó từ dòng lệnh, nhưng khi tôi lên lịch với nó, cron
tôi gặp lỗi mà nó không thể tìm thấy tệp hoặc lệnh. Câu hỏi của tôi có hai mặt:
Khi tôi lên lịch cho một công việc định kỳ bằng cách sử dụng
crontab -e
, nó có sử dụng ID người dùng của tôi làm cơ sở cho các quyền của nó không? Hoặc nó sử dụng ID người dùng cron của một số loại và các quyền liên quan của nó?Khi một công việc định kỳ được khởi chạy, thư mục làm việc là gì? Đây có phải là thư mục nơi tôi chỉ định tập lệnh để chạy hoặc một thư mục khác không?
Đây là công việc định kỳ của tôi:
15 7 * * * /home/xxxx/Documents/Scripts/email_ip_script.sh
Đây là kịch bản thực tế:
vIP_ADDR="`curl automation.whatismyip.com/n09230945.asp`"
echo "$vIP_ADDR"
sed "s/IPADDR/$vIP_ADDR/g" template.txt > emailmsg.txt
ssmtp XXXXX@gmail.com < emailmsg.txt
Dưới đây là các lỗi tôi gặp phải khi xem mail
thông báo được tạo bởi cron
:
sed: can't read template.txt: No such file or directory
/home/xxxx/Documents/Scripts/email_ip_script.sh: line 15: ssmtp: command not found
Nó không thể tìm thấy template.txt
nhưng nó nằm trong cùng thư mục với tập lệnh. Nó cũng không thể chạy ssmtp
, nhưng tôi có thể là người dùng của mình. Tôi còn thiếu gì để làm việc này đúng cách?
cron
sở hữu nóPATH
hay tôi có thể kiểm tra người dùng của mìnhPATH
không? Tôi thiết lập ssmtp để sở hữu nóuser
vàwheel
cho phép nó nghĩ rằng nó sẽ cho phép bất cứ ai sử dụng nó (bao gồm cả cron). Nếu nó giúp Im trên CENTOS 6.2