我很很少使用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
我试图执行.SH脚本每隔15分钟。
一切我已经找到了说,这应该工作,但事实并非如此。
做任何事情,如文件的权限(在文件中的/ tmp / mixtape2 /)事情在这种情况下? 或许权限实际.SH脚本设置 - 也许他们需要设置为可执行?
任何意见赞赏。
注意:这些评论是指/ etc / crontab中。
做其他事情之前,它的cron是你访问crontab -e
或
su -vim
<your-favorite-editor> /etc/crontab
如果您正在使用crontab -e命令,然后没有用户领域存在这种形式的crontab。 这可能是为什么你没有运行。
在你的榜样,您的用户字段是*。 我想使它根或具有适当权限的用户。
运行此程序之前,我会做一个虚拟的crontab条目,只是没有回声“你好”,并运行的每一分钟。 得到这在其工作过的crontab您正在编辑(crontab -e命令或者vim / etc / crontab中)。 然后使用作为模板,让你的脚本运行。
接下来,看看cron是运行:
ps -ef | grep cron
如果它没有运行,成为root并输入启动
/etc/init.d/cron start
(Ubuntu和红帽)。
你已经有一个很好的答案建议你添加root作为用户,因为权限问题。 我会建议更多的事情来帮助你调试。 我遇到了很多多年来cron的问题。
1)将电子邮件发送到已知地址,除非你将连续监测根的电子邮件
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/local/bin:/usr/bin
MAILTO=fred@somewhere.com
HOME=/
2),直到一切都正常运行,取出>/dev/null 2>&1
出你的cron项的,所以你看到脚本运行后生成的电子邮件中的输出。
3)凹凸*/15
下降到更大的间隔比它需要你的脚本运行- likr */5
,所以脚本运行更频繁。
4)我不知道确切的原因,但我跑出来的cron的脚本,必须建立自己的环境尽管被运行在cron的用户。 这可能包括像步骤cd /home/script-owner
和运行source .bashrc
和调用其它脚本(s)表示,设置环境变量。
卸下脚本.sh扩展名/etc/cron.d
,它会被调用。
run-parts
忽略名称中的一段文件,因此.sh扩展名被阻止脚本的运行。
从man cron
-
13759运行零件(8)文件必须符合相同的命名约定:他们必须只包括大写和小写字母,数字,下划线和连字符。
*/15 * * * * root /etc/cron.d/clear-mixtape-dir.sh >/dev/null 2>&1
新增用户root
,因为您的许可,似乎只为根。