Điểm:1

Tại sao crontab -e của tôi không thực thi tập lệnh .sh?

lá cờ cn

Trong Sudo crontab -e Tôi có cái này:

*/2 * * * * ngày >> /home/rki/test.log
*/5 * * * * sudo sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh

*/2 * * * * ngày >> /home/rki/test.log hoạt động mà không có vấn đề gì, viết cứ sau 2 phút vào kiểm tra.log tập tin.

Nó sẽ không thực hiện dự phòng.sh kịch bản có cái này:

#!/bin/bash
# Xóa các bản sao lưu trước đó
#sudo rm dokuwiki-backup*.tar.gz

# Đặt tên sao lưu
name=dokuwiki-backup_$(ngày '+%Y-%m-%d-%H%M%S')

# Công cụ sao lưu
/bin/tar -zcvf "$name.tar.gz" /var/lib/docker/volumes/dokuwiki_data

tôi có thể làm sudo sh dokuwiki_backup.sh tốt mà không có vấn đề gì. Tập lệnh bash là chmodbiên tập 0777chown rki:rki.

Tôi đang làm gì sai?

sudodus avatar
lá cờ jp
Các tác vụ cần quyền nâng cao nên được tải lên cron bằng `sudo crontab -e` và không được chứa sudo, vì vậy hãy thử với `*/5 * * * * /bin/sh /home/rki/docker-compose-stuff/dokuwiki /backups/dokuwiki_backup.sh`
lá cờ cn
1. Không đặt sudo trong crontab 2. sử dụng đường dẫn tuyệt đối.
Grumpy ol' Bear avatar
lá cờ cn
Là `/home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh ` không phải là một đường dẫn tuyệt đối?
lá cờ cn
và không bao giờ làm `chmod 0777`. không bao giờ sử dụng số 7 thứ 3. 0700 hoặc 0750 cho các tập lệnh là cách bảo mật tốt nhất khi bạn biết người dùng thực thi nó. @Grumpyol'Bear thì có nhưng `sh` không có. Tốt nhất là luôn sử dụng các đường dẫn ngay cả khi đường dẫn nằm trong mặc định cho cron. Chúng tôi không biết đường dẫn hệ thống của bạn bên trong cron là gì;)
Grumpy ol' Bear avatar
lá cờ cn
Tôi vừa thử nghiệm `*/5 * * * * /bin/sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh` không có xúc xắc. `*/2 * * * * date >> /home/rki/test.log` vẫn hoạt động, vẫn không có bản sao lưu.
sudodus avatar
lá cờ jp
@Grumpyol'Bear, 1. Thậm chí có thể cần phải đặt các đường dẫn tuyệt đối bên trong shellscript. Lý do là môi trường được sử dụng bởi `cron` có thể rất đơn giản (bạn không thể mong đợi nó giống như những gì bạn nhận được với tư cách là người dùng đã đăng nhập); 2. Bạn đã sử dụng `sudo crontab -e` chưa?
Grumpy ol' Bear avatar
lá cờ cn
Vâng, luôn luôn `Sudo crontab -e`, tôi muốn nó là root chứ không phải rki. Nếu không, tôi sẽ sử dụng `crontab -e` cho rki cronjobs.
sudodus avatar
lá cờ jp
1. Tôi đề nghị bạn cũng nên đặt đường dẫn đầy đủ vào cuộc gọi của `date`; 2. Không tương thích khi gọi tập lệnh bằng `/bin/sh` và đồng thời có shebang `#!/bin/bash` ở dòng đầu tiên. Gọi bằng chương trình shell hoặc sử dụng shebang. Trong trường hợp sau, tập lệnh cũng phải được thực thi.
Grumpy ol' Bear avatar
lá cờ cn
Chết tiệt, tôi sẽ làm điều đó bằng tay.Chết tiệt chết tiệt không làm việc ...
pLumo avatar
lá cờ in
Có thể nó hoạt động tốt, nhưng `$name.tar.gz` của bạn là tương đối và bạn không biết nó ở đâu?
Grumpy ol' Bear avatar
lá cờ cn
Ah chết tiệt... @pLumo, đúng là như vậy. Mọi thứ trong ./root/ . Chết tiệt...
sudodus avatar
lá cờ jp
Bắt tốt @pLumo :-)
Điểm:1
lá cờ in

Nếu bạn thêm cronjob của mình thông qua Sudo crontab -e, nó sẽ chạy như nguồn gốc.

  • không cần sudo, sử dụng:

    */5 * * * * /bin/sh /home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh
    
  • Thư mục làm việc mặc định phải là nguồn gốcS $HOME, vì vậy thông thường /nguồn gốc. Bạn có thể tìm $name.tar.gz ở đó. Nhưng tốt hơn là sử dụng các đường dẫn tuyệt đối, ví dụ:

    /bin/tar -zcvf "/home/rki/Backups/$name.tar.gz" /var/lib/docker/volumes/dokuwiki_data
    
Điểm:-1
lá cờ cn

Để chạy cronjobs với môi trường root đầy đủ, hãy sử dụng lệnh này

*/5 * * * * su - root -c '/home/rki/docker-compose-stuff/dokuwiki/backups/dokuwiki_backup.sh'
Grumpy ol' Bear avatar
lá cờ cn
Không có con xúc xắc. Không hoạt động.
Thomas Aichinger avatar
lá cờ cn
Tập lệnh của bạn có thể có lỗi. Hãy thử chạy nó từ dòng lệnh.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.