linux crontab 执行shell 打印不出结果

场景:

* * * * * sh /usr/shell/demo.sh

demo.sh


#!/bin/sh

source /etc/profile

echo "say Hi"

执行的log

(root) CMD (sh /usr/shell/demo.sh)
MAIL (mailed 7 bytes of output but got status 0x004b#012)

这是咋回事?? 为啥不执行???

阅读 3.9k
2 个回答

脚本进程只是继承了运行它的TTY。当手动运行它时,它会继承运行shell命令的TTY(终端)

对cron来说, 甚至没有 TTY。所以,没有TTY被继承。也就没有标准输入输出供使用, 一般是重定向到文件来实现日志输出.

在/var/log/cron 打印的是 crontab的进程日志,真正想要看到shell脚本打印的结果,需要重定向到日志目录进行查看

* * * * * cd  /usr/shell/ && sh demo.sh >> /usr/shell/logs/error.log 2>&1
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题