开发者社区> 问答> 正文

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)

这是咋回事?? 为啥不执行???看不到日志呢??

展开
收起
我是小美女 2021-10-20 15:52:21 719 0
1 条回答
写回答
取消 提交回答
  • 网络规划设计师、敏捷专家、CISP、ITSS服务经理、ACA全科目、ACP4项、ACE、CBP、CDSP、CZTP等。拥有 PRINCE2 Foundation/Practitioner、CCSK、ITIL、ISO27001、PMP等多项国际认证。 专利5+、期刊10+、知识产权师。核心期刊审稿人。
    采纳回答

    您好,脚本进程只是继承了运行它的TTY。当手动运行它时,它会继承运行shell命令的TTY(终端)。对cron来说, 甚至没有 TTY。所以,没有TTY被继承。也就没有标准输入输出供使用, 一般是重定向到文件来实现日志输出.

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

    * * * * * cd  /usr/shell/ && sh demo.sh >> /usr/shell/logs/error.log 2>&1
    
    2021-10-20 15:55:13
    赞同 1 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Shell 脚本速查手册 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载