Я работаю на Debian. Я пытаюсь сделать cron job для youtube-dl. Он состоит из ежедневного скрипта, запускаемого в полночь. Когда я запускаю скрипт вручную, все работает отлично. Однако, когда я использую cron job, я получаю такую ошибку:
ERROR: unable to open for writing: [Errno 13] Permission denied: '/media/Video/...
Крон выглядит следующим образом:
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
@daily /usr/local/bin/youtube-dl-script.sh >> /var/mail/nextcloud 2>&1
Я понимаю, что где-то есть проблема с разрешениями, но я не знаю, как ее решить.
Довожу до вашего сведения :
- владелец/группа целевой папки (
/media/Video/
):www-data
(владелец),wwww-data
(группа) - владелец/группа скрипта:
nextcloud
(владелец),root
(группа) nextcloud
иroot
принадлежат к группеwww-data
- и разрешение целевой папки (
/media/Video/
) равно770
(владелец/группа могут читать/писать/выполнять, остальные не могут ничего делать).
Пожалуйста, не могли бы вы мне помочь? Я видел похожую тему, но решение не было успешным, так как проблема была не совсем такой. Большое спасибо.
EDIT (старый статус):до сих пор я пытался скопировать свой скрипт ( youtube-dl-script.sh
) в /etc/crontab.daily
папку, соблюдая правила (удалив .sh
расширение и скрипт, принадлежащий root
/ group root
). И проверка с cat /etc/crontab
дает мне такой вывод:
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
Итак, по идее, это должно было сработать сегодня в 6:25 утра, но этого не произошло!
Я обнаружил, что в других сценариях есть -x
финальная часть, поэтому я создал chmod +x youtube-dl-script
.
До этого сценарий был
-rwxr-x--- 1 root root 1682 juin 16 02:24 /etc/cron.daily/youtube-dl-script
.Теперь есть
-rwxr-x--x 1 root root 1682 juin 16 02:24 /etc/cron.daily/youtube-dl-script
.
Теперь мне придется ждать до завтрашнего утра 6:25, чтобы посмотреть, сработает ли это.
EDIT 2 (текущий статус): так что это не работает. Я даже сделал chmod 755
так, чтобы у него были такие же разрешения, как у всех остальных скриптов, и перезагрузил сервер, но это не работает.
Что очень странно, так это то, что если я это сделаю run-parts --test /etc/cron.daily
, мой скрипт будет указан, поэтому его следует запуститьcron.daily
Пожалуйста, если у вас есть какие-либо идеи, не стесняйтесь сообщить мне. Спасибо.
решение1
Хорошо, я нашел решение:
Во-первых, я переместил скрипт в /etc/cron.hourly
, потому что там не было anacron
установлено, и потому что я хотел бы использовать его каждый час. Но это не сработало.
Затем я запустил sudo service cron status
только для проверки, активна ли служба cron. Она была активна, но я также нашел интересное предупреждение, что-то вроде your token was expired, renew your token
. Поэтому я поискал это сообщение об ошибке в Интернете и обнаружил, что мой пароль root необходимо обновить, иначе cron не будет работать правильно. Чтобы проверить это, мне пришлось использовать , sudo chage -l root
который показал, что мой пароль root был expired
.
Поэтому я обновил свой пароль root с помощью sudo passwd root
и снова проверил с помощью, sudo chage -l root
что показало, что пароль теперь в порядке. Теперь все работает нормально, и cron работает как и ожидалось!