以下是 crontab 中的条目:
MAILTO=abc@gmail.com
45 14 * * * /home/user/simple.sh
我也做过chmod +x
但是simple.sh
crontab 没有运行,它甚至没有发送电子邮件。
pgrep cron
显示一个 ID。我也试过弹跳crond。但没有运气!有人可以在这里指出错误吗
simple.sh 脚本是:
#! /bin/bash
echo hello
谢谢
由于您echo
在 cron 作业脚本中执行操作,因此您需要在某处捕获其输出。
您的shebang
和文件模式(使用chmod +x
)都可以,所以这些不是这里的问题,并且没有运行/bin/sh
应该可以正常工作。
尝试使用以下命令查看cron.log
文件中的输出(每分钟运行一次)
* * * * * /home/user/simple.sh >> /home/user/cron.log
请注意,cron 作业在单独的子进程 shell 中运行,环境减少,因此它的输出不会在您的终端上可见。
关于电子邮件的发送 - 您需要为 cron 守护进程配置一些邮件包(例如postman
,mutt
等)以发送错误邮件。
不要使用相对路径,而是使用绝对路径。另外,指出运行脚本的二进制文件,即/bin/sh
(或来自 的任何内容which sh
):
45 14 * * * /bin/sh /path/to/script/simple.sh
也许你的 .sh 脚本的第 1 行不应该有空格:
#! /bin/bash
至
#!/bin/bash
尽管我可以理解为什么在交互式 shell 中调用它时它似乎仍然有效(#只能注释掉该行的其余部分)。
尽管如此,我猜最坏的情况是它只会忽略该行并继承 cron 的/bin/sh解释器