crontab的不执行bash脚本(Crontab not executing bash scrip

2019-09-01 03:49发布

我很很少使用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脚本设置 - 也许他们需要设置为可执行?

任何意见赞赏。

Answer 1:

注意:这些评论是指/ 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)表示,设置环境变量。



Answer 2:

卸下脚本.sh扩展名/etc/cron.d ,它会被调用。

run-parts忽略名称中的一段文件,因此.sh扩展名被阻止脚本的运行。

man cron -

13759运行零件(8)文件必须符合相同的命名约定:他们必须只包括大写和小写字母,数字,下划线和连字符。



Answer 3:

 */15 * * * * root /etc/cron.d/clear-mixtape-dir.sh >/dev/null 2>&1

新增用户root ,因为您的许可,似乎只为根。



文章来源: Crontab not executing bash script