0

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

* * * * * /CS/day/get_info.sh

get_info.sh 应该每分钟输出一个文本文件,我怀疑它会在脚本所在的同一目录中输出一个文件,但事实并非如此。

我还检查了系统日志,看看我是否能解决这个问题。

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

有人可以向我解释为什么会这样吗?

谢谢

4

3 回答 3

1

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
于 2012-11-04T11:25:39.823 回答
0

就我而言,我只需要安装和配置一个 smtp 客户端。

于 2014-07-20T09:19:55.283 回答
0

该脚本在用户的主目录中运行,并且该文件也应该在那里。如果您希望它与脚本位于同一目录中,请在脚本中执行 acd或修改您的 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

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

于 2012-11-04T00:06:05.637 回答