带有crontab的bash脚本



我正在尝试设置一个crontab,我在当前用户中我的工作中有这是我登录到

的当前用户
* * * * * /CS/day/get_info.sh

get_info.sh应该每分钟输出文本文件,我怀疑它会输出与脚本的同一目录中的文件,但没有输出。

我还检查了Syslogs,看看是否可以解决这个问题。

(user) CMD (/CS/day/get_info.sh)
(user) MAIL (mailed 46 bytes of output but got status  0x0001#012)

有人可以向我解释为什么会发生这种情况吗?

谢谢

man cron告诉你:

  When executing commands, any output is  mailed  to  the  owner  of  the
  crontab (or to the user named in the MAILTO environment variable in the
  crontab, if such exists).  The children copies of  cron  running  these
  processes  have their name coerced to uppercase, as will be seen in the
  syslog and ps output.

所以你必须

  • cd自己进入适当的目录(Cron将使用$HOME
  • 重定向任何输出到您选择的文件

您可以在crontab中完成这两个事情。但是我建议在脚本本身的第一行中进行操作:

#!/bin/bash
cd WHEREEVER_YOU_WANT
exec > YOUR_LOG_FILE 2&>1

脚本在用户的主目录中运行,文件也应在那里。如果您希望它与脚本相同的目录,则在脚本中执行cd或修改crontab条目:

*/1 19-20 * * * cd /CS/day; /CS/day/get_info.sh

crontab条目的另一个常见问题是环境。如果脚本在您的终端中正常工作,请尝试调试它,当它从Cron运行时:

40 11 * * * bash -x /CS/day/get_info.sh >/tmp/get_info.sh.log 2>&1

仅在当前时间运行一次,因为否则您将每分钟覆盖日志文件。

在我的情况下,我只需要安装和配置SMTP客户端。

相关内容

  • 没有找到相关文章

最新更新