当前位置:   article > 正文

Ubuntu crontab 遇到的sh脚本一些问题(手动执行可以,自动执行不行)_crontab sh 不执行

crontab sh 不执行

问题一:

        问题描述:

        在写一个脚本循环时候,出现“let:not found”,这是因为在ubuntu默认是指向bin/dash解释器的,dash是阉割版的bash,其功能远没有bash强大和丰富.并且dash不支持let和i++等功能.

        解决办法:

        打开一个终端输入:

        sudo dpkg-reconfigure dash 选择 "否", 表示用bash代替dash

问题二:

        手动运行sh脚本可以,但是做定时任务总是无法执行。原因是crontab没有加载运行环境,导致sh脚本无法执行,所以需要在脚本中生效环境变量,在脚本的开头中添加以下2行:

  1. #!/bin/bash
  2. source /etc/profile

问题三:

        Ubuntu默认是不打开crontab的日志文件的,控制台输入

vim /etc/rsyslog.d/50-default.conf

        打开文件,在文件中找到cron.*,把前面的#去掉,保存退出,输入

sudo service rsyslog restart

        重启系统日志,然后稍微等下应该就能在/var/log目录下看到cron.log,vi cron.log就可以查看cron运行日志了。

问题四:

        /var/log/corn.log日志显示如下图:

        原因: cron把屏幕输出都发送到email,当前环境并未安装email server,于是系统报错。

  1. sudo apt-get install -y postfix
  2. # 选择并回车
  3. Internet Site
  4. # postfix继续安装,完毕后自动启动

        安装成功后 (内容已经发送到/var/mail/root中)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/75596
推荐阅读
相关标签
  

闽ICP备14008679号