【发布时间】:2013-04-19 13:56:43
【问题描述】:
我很少使用 Linux,因此对 bash 脚本和 cron 作业没有任何经验。 这其实是我的第一次尝试。所以它可能很容易解决。
我有以下:
/etc/cron.d/clear-mixtape-dir.sh 权限是:644
#!/bin/bash
# Clears the /tmp/mixtape2 directory
rm -rf "/tmp/mixtape2/"*
我的 crontab 文件如下所示:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
HOME=/
*/15 * * * * /etc/cron.d/clear-mixtape-dir.sh >/dev/null 2>&1
我正在尝试每 15 分钟执行一次 .sh 脚本。
我发现的所有内容都表明这应该有效,但事实并非如此。
在这种情况下,文件权限(在 /tmp/mixtape2/ 中的文件上)是否重要? 或者可能是在实际 .sh 脚本上设置的权限 - 也许他们需要设置为可执行?
任何建议表示赞赏。
【问题讨论】:
-
尝试将权限更改为 777
-
在您的行中添加
/bin/bash:*/15 * * * * /bin/bash /etc/cron.d/clear-mixtape-dir.sh >/dev/null 2>&1 -
@Satya:权限几乎不应该设置为777。在这种情况下,脚本上的权限应该是755,并且/tmp/mixtape2/上的权限需要允许写入运行的用户cronjob。
-
更好的是,将权限设置为 700 并确保所有者是
root。除非您希望它以不同的用户身份运行 - 然后适当地更改所有权,仍然使其为 700,然后更新您的cron定义以以该用户身份运行脚本。 -
我们是在谈论我需要删除的文件的权限,还是只是“mixtape2”目录的权限?权限的问题是,每次在 mixtape2 目录中创建文件(临时文件)时,它都会创建为 644。所以我不想每次我想清除它们时都必须手动更改权限。我想我可以在我的 bash 脚本中添加一个 chmod?