我使用的是 Debian。我尝试为 youtube-dl 创建一个 cron 作业。它由一个每日脚本组成,从午夜开始。当我手动执行脚本时,一切都运行正常。但是,当我使用 cron 作业时,我收到如下错误:
ERROR: unable to open for writing: [Errno 13] Permission denied: '/media/Video/...
cron 如下:
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
(所有者/组组可以读/写/执行,其他人不能执行任何操作)。
你能帮帮我吗?我看过类似的主题,但解决方案没有成功,因为问题并不完全相同。非常感谢。
编辑(旧状态):到目前为止,我已尝试按照规则(删除/ 组所拥有的扩展名和脚本)将脚本 ( 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
。所以我在互联网上搜索了这个错误消息,发现我的 root 密码需要更新,否则 cron 将无法正常工作。为了检查这一点,我不得不使用,sudo chage -l root
它显示我的 root 密码是expired
。
因此,我使用 更新了我的 root 密码,sudo passwd root
并再次使用 检查,sudo chage -l root
结果显示密码现在正确。现在,一切运行正常,cron 也按预期工作!