很多时候我们会遇见这种情况,我们千辛万苦写了一个脚本,经过测试,一切正常,然后放到了crontab里面执行,结果,不管怎么配置,就是执行不正常. 结果发现环境问题,居然是这个异常的元凶. 我们先在我们的服务器上执行env命令,出现如下: XDG_VTNR= XDG_SESSION_ID= HOSTNAME=bogon IMSETTINGS_INTEGRATE_DESKTOP=yes GPG_AGENT_INFO=/run/user//keyring/gpg:: VTE_VERSION= TERM…
crontab执行脚本中文乱码,手动执行没有问题 产生原因:       这是因为Unix/Linux下使用crontab时的运行环境已经不是用户环境了,因此原本用户下的一些环境变量的设置就失效了.例如原来用户环境变量设置的是GB2312,但是使用crontab运行时的环境变量就可能是ISO8859-1.   解决方法:       首先执行命令echo $LANG,假设输出是en_US.UTF-8       然后在脚本中增加一行export LANG=en_US.UTF-8…
今天在写服务器的perl脚本的时候,在完成一版脚本打算通过crontab来测试一下呢,因为直接执行脚本文件是没有问题的,但是当配置到crontab定期执行时就会出现问题,到了指定的时间了,但是脚本文件没有被执行. 后来通过goole搜索到了原因,因为我在测试的时候是直接修改了linux的系统时间,例如:date -s "2016-05-09 01:29:30“ ,因为我的脚本设置在了凌晨1点30分执行,(30  1  *  *  *  /usr/bin/perl  /www/bin/123.pl…
背景:huskiesir最近用公司给分配的账户写了脚本去检测某应用状态并发送到企业邮箱,写完脚本之后去执行了一下,发现效果还不错,在邮箱显示效果如下: 10.11.116.6  检查结果OK,检查时间:2018-11-16_15:26:04 但是呢,经过crontab自动执行以后才发现,显示效果是这样的: 检查结果OK,检查时间:2018-11-16_13:17:05 咦,我的ip地址呢,这个问题搞得huskiesir一脸懵逼,为嘛经过crontab自动执行就出问题了?ok,接下来看看我写的脚本…
如果脚本在终端执行正常,而在crontab里执行失败, 一般跟root用户无关,而是和系统变量有关,一般加上绝对路径执行java命令即可: /usr/java/jdk/bin/java xxx.jar…
 报错现象:在shell下执行node没有任何问题,但crontab自动运行就会报错. 原因:node的安装路径:/root/.nvm/versions/node/v6.7.0/bin/node Shell环境PATH变量中已配置,因此在shell下可以执行. 但要知道,我们这是在crontab下定时运行,因此需要检查crontab的环境变量. [root@WEB4 node]# vim /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin…
办法: 1.sh脚本加入 source /etc/profile 2.非系统命令,要写绝对路径…
反正网上说是环境变量问题,我就直接在脚本第二行加入以下代码: source /etc/profile source ~/.bashrc 问题是解决了!…
crontab不能成功执行shell脚本的可能原因 crond进程不存在,该进程是crontab的守护进程,它必须存在才能让crontab正常使用: 系统时间不对: 环境变量的问题:crontab执行脚本的时候不会读取用户的环境变量等配置,所以可能很多命令不能使用导致脚本执行失败: 脚本本身的问题. 针对以上几点,在使用crontab之前,我们应该: 检查crond进程是否正在正常运行: 这个很少见,毕竟大多数情况我们的时间都很标准,不过要是用不熟悉的机器,最好还是date一下: 这个应该是最容…
实例一 test.sh文件 echo `date`>test.log 配置crontab 设置 */1 * * * * sh /data/test.sh 在/data/目录下,未找到test.log文件,重启了crontab服务,service cronb restart,发现还是不行. 在网上找资料,怀疑是相对路径的问题,然后,在home目录下,cd ~,发现了test.log. 转摘资料: crontab执行java程序的问题: 一 crontab使用注意: crontab -l查看该用户的…