手动操作执行,crontab定时任务执行出错,K哥

最近给一台机器搞自动巡检发邮件

之前其他机器用的都是sendmail

直接执行下面的命令是没有问题的

这台由于有别的业务所以装的是postfix

下面是我的定时任务

0 8 * * * /opt/xunjian/xunjian.sh > /opt/xunjian/xunjian;mail -s ‘22.44.55.66‘ [email protected] < /opt/xunjian/xunjian

手动执行效果理想,邮件中可以直接显示结果

/opt/xunjian/xunjian.sh > /opt/xunjian/xunjian

前面的命令没有任何问题,可以通过结果查看出来

我是K哥

mail -s ‘22.44.55.66‘ [email protected] < /opt/xunjian/xunjian

后面的命令手动单独操作也没有问题

如果把这段命令加入crontab中

那么邮件中看到的结果会是一个附件,附件名如下

tcmime.1205.1205.16703.bin

那么问题来了,为什么会是这样呢?

我们来细想一下,如果mail配置有问题,那么邮件根本不会收到

邮件可以收到但是显示成为附件

查看了百度谷歌,很多一样的问题

终于找到个靠谱的回答:crontab环境变量

如何解决呢,很简单就是加入引用全局变量

source /etc/profile

我是K哥

我把命令改成如下就可以正常显示邮件了

0 8 * * * /opt/xunjian/xunjian.sh > /opt/xunjian/xunjian;source /etc/profile;mail -s ‘133.22.123.22‘ [email protected] < /opt/xunjian/xunjian

或者你也可以执行文件

0 8 * * * /opt/mail.sh

vi /opt/mail.sh

#!/bin/bash

source /etc/profile

/opt/xunjian/xunjian.sh > /opt/xunjian/xunjian

mail -s ‘133.22.123.22‘ [email protected] < /opt/xunjian/xunjian

希望可以帮到大家,谢谢

时间: 2024-11-05 17:00:56

手动操作执行,crontab定时任务执行出错,K哥的相关文章

Linux crontab定时任务执行php文件

简单介绍一下什么是crontab crond是Linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务 第一步:安装crontab 检测是否已安装 # crontab -bash: crontab: command not found   (未安装) #  yum install cront

关于crontab定时任务执行失败发送报错邮件的问题

前几天,发现一个在服务器通过crontab执行的一个java程序,突然不执行了.后来经过排查,是由于运维在其他项目上线的时候,不知道什么原因,导致crontab中jar文件的执行,通过java -jar执行不了了,必须修改为java的全路径/usr/java/jdk1.7.0_79/bin/java -jar才可以执行.原因因该是java的一些什么路径问题,这个没有具体去了解. 就打算在程序中添加一个监控,不然程序挂了也不知道,必须数据出现问题了,才有可能发现问题. 首先,在程序中添加监控是没有

linux crontab 定时任务执行

cron机制        cron可以让系统在指定的时间,去执行某个指定的工作,我们可以使用crontab指令来管理cron机制 crontab参数        -u:这个参数可以让我们去编辑其他人的crontab,如果没有加上这个参数的话就会开启自己的crontab /etc/crontab文件和crontab -e命令区别 1.格式不同 前者 # For details see man 4 crontabs # Example of job definition:# .---------

crontab定时任务居然不执行

前言 最近在工作中遇到了一些问题,crontab定时任务居然不执行,后来我在网上找的时候发现网上主要说了这5个原因: 1 crond服务未启动 crontab不是Linux内核的功能,而是依赖一个crond服务,这个服务可以启动当然也可以停止.如果停止了就无法执行任何定时任务了,解决的方法是打开它: ? 1 crond 或 ? 1 service crond start 如果提示crond命令不存在,可能被误删除了,CentOS下可以通过这个命令重新安装: ? 1 yum -y install

nginx平滑升级,K哥

2016年9月29日 nginx版本为1.6.0,需要升级下,但由于是生成环境就需要平滑升级了. 登录nginx官网查看最新版本 http://nginx.org/en/download.html 发现1.6大版本下,最新版为1.6.3 那么就升级到1.6.3 在服务器下载软件包 wget http://nginx.org/download/nginx-1.6.3.tar.gz 解压 tar -zxvf nginx-1.6.3.tar.gz 进入 cd nginx-1.6.3 编译 ./conf

对于crontab定时任务不能自动执行的总结

最近遇到了一些sh不能在crontab定时任务中自动执行的问题 期间由于不太了解,故走了一点弯路,现在总结下来可能第一次 进行设置遇到的问题.以绝后患!我所用过的操作系统为HP-unix&linux&sco-unix,均测试通过 1,首先确保sh脚本具有可执行属性 即chmod +x  ***.sh 或chmod +777 ***.sh 2,确保sh脚本手工执行正常 即在当前系统内手工执行sh脚本以后能收到自己期望得到的结果 3,加载环境变量 这个问题是经常容易被忽略的问题,通常我们在第二

crontab查看执行结果,删除指定定时任务

写完crontab定时任务,并不知道他的执行结果,我们可以通过grep "脚本名" /var/log/cron命令,查看执行的结果 [[email protected] default]# grep "index.php" /var/log/cron Jun 14 21:14:01 bogon CROND[4542]: (han) CMD (/home/wwwroot/index.php) Jun 14 21:14:01 bogon CROND[4541]: (ha

小记---------手动执行脚本正常执行,使用crontab定时执行时 不执行

可能出现的原因就是因为crontab不会从用户的/etc/profile文件中读取环境变量,所以就出现 使用定时crontab执行时 无法执行 抛错 所以在使用crontab 定时执行脚本时  在脚本中尽量使用绝对路径,除去全局变量以外 解决方法: 1. 直接把/etc/profile文件中配置的spark的环境变量写到脚本的开头,使它在执行脚本之前先加载spark的环境变量即可 2.直接在脚本中添加即可 #!/bin/bash #此处添加如下 ./etc/profile num_executo

Python实例---接入笑话API+发送邮件+云主机crontab定期执行

本例的思路来源于网上,但网上执行步骤讲解的不够清楚,尤其实现这一系列的步骤中,会有很多坑,今天就详细说一下,给想玩一下的朋友作个参考. 首先,第一步是如何从免费笑话api接口下载到笑话的文本,api大家都知道是应用程序接口,即我们可以发送请求.获得数据.我选择iteys,有请求方法示例, 用Python实现如下:需要载入包, import sys, urllib, urllib2, json import random 用urllib2发送请求和获得数据,因为从接口取出的数据默认是josn格式(