场景:
* * * * * 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)
这是咋回事?? 为啥不执行???
场景:
* * * * * 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)
这是咋回事?? 为啥不执行???
在/var/log/cron 打印的是 crontab的进程日志,真正想要看到shell脚本打印的结果,需要重定向到日志目录进行查看
* * * * * cd /usr/shell/ && sh demo.sh >> /usr/shell/logs/error.log 2>&1
13 回答12.6k 阅读
8 回答6.8k 阅读
2 回答4.9k 阅读✓ 已解决
7 回答1.7k 阅读
2 回答1k 阅读✓ 已解决
4 回答1k 阅读✓ 已解决
3 回答2.5k 阅读✓ 已解决
脚本进程只是继承了运行它的TTY。当手动运行它时,它会继承运行shell命令的TTY(终端)
对cron来说, 甚至没有 TTY。所以,没有TTY被继承。也就没有标准输入输出供使用, 一般是重定向到文件来实现日志输出.