나는 데비안을 사용하고 있습니다. youtube-dl에 대한 cron 작업을 만들려고 합니다. 자정부터 시작되는 일일 스크립트로 구성됩니다. 스크립트를 수동으로 실행하면 모든 것이 완벽하게 작동합니다. 그러나 cron 작업을 사용할 때 다음과 같은 오류가 발생합니다.
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
(소유자/그룹 그룹은 읽기/쓰기/실행이 가능하고, 다른 사람은 아무것도 할 수 없음)입니다.
제발 도와주실 수 있나요? 비슷한 주제를 보았지만 문제가 정확히 동일하지 않아 솔루션이 성공적이지 못했습니다. 매우 감사합니다.
편집(이전 상태):지금까지 나는 규칙을 준수하여( /group 이 소유한 확장자와 스크립트를 제거) 폴더 youtube-dl-script.sh
에 내 스크립트( )를 복사하려고 했습니다 . 그리고 확인하면 다음과 같은 결과가 나옵니다./etc/crontab.daily
.sh
root
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분까지 기다려야 합니다.
편집 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
. 그래서 인터넷에서 이 오류 메시지를 검색한 결과 루트 비밀번호를 갱신해야 한다는 사실을 발견했습니다. 그렇지 않으면 cron이 올바르게 작동하지 않습니다. 이를 확인하려면 sudo chage -l root
내 루트 비밀번호가 임을 보여주는 것을 사용해야 했습니다 expired
.
따라서 루트 비밀번호를 갱신 sudo passwd root
하고 다시 확인했는데 sudo chage -l root
이제 비밀번호가 정상인 것으로 나타났습니다. 이제 모든 것이 잘 돌아가고 cron이 예상대로 작동하고 있습니다!