linux脚本出错仍执行后续脚本,crontab执行脚本出错
crontab定时调用执行shell脚本出错(mailed 165 bytes of output but got status 0x004b#012)
使用系统自带的任务调度crontab 发现手动运行脚本可以执行完成,但是自动定时就不能实现,检查shell脚本也没有错误。奇怪哪里导致的问题呢?
后来在网上查询和不断测试,得知和系统的环境变量有关系的。发现脚本中需要添加必要的环境变量才可以使脚本自动执行。
这种情况一般是由于在crontab文件中没有配置环境变量引起的。cron从用户所在的主目录中使用shell调用需要执行的命令。cron为每个shell提供了一个默认的环境,Linux下的定义如下:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=用户名
HOME=用户主目录
在crontab文件中定义多个调度任务时,需要特别注意的一个问题就是环境变量的设置,因为我们手动执行某个脚本时,是在当前shell环境下进行的,程序能找到环境变量;而系统自动执行任务调度时,除了默认的环境,是不会加载任何其他环境变量的。因此就需要在crontab文件中指定任务运行所需的所有环境变量。
不要假定cron知道所需要的特殊环境,它其实并不知道。所以用户要保证在shell脚本中提供所有必要的路径和环境变量,除了一些自动设置的全局变量。以下三点需要注意:
1. 脚本中涉及文件路径时写绝对路径;
2. 脚本执行要用到环境变量时,通过source命令显式引入,例如:
#!/bin/sh
source /etc/profile
3. 当手动执行脚本没问题,但是crontab不执行时,可以尝试在crontab中直接引入环境变量解决问题,例如:
0****./etc/profile;/bin/sh/path/to/myscript.sh
好了,这个问题就这样解决了,反正是加上环境变量没错的。
————————————————
linux脚本出错仍执行后续脚本,crontab执行脚本出错相关推荐
- Linux Shell脚本语句执行失败,后续语句继续执行的问题
Linux Shell脚本语句执行失败,后续语句继续执行的问题 问题 解决方法 问题 写了一个自动部署java后端的脚本,大致如下: A=password read -p "请输入密码:&q ...
- Linux定时任务Crontab执行PHP脚本
http://blog.chinaunix.net/uid-7552018-id-182133.html crontab执行php脚本 http://www.jb51.net/article/2913 ...
- crontab执行shell脚本日志中出现乱码
使用nutch开源的搜索引擎抓取网页信息,通过计划任务crontab执行shell脚本,并将启动信息记录进日志文件,但是每次都会出现乱码,如图所示 经过反复测试,排除了java程序问题,文件权限问题, ...
- Linux中shell运行方式,linux脚本中父shell与子shell 执行的几种方式
本文主要介绍以下几个命令的区别: shell subshell source $ (commond) `commond` Linux执行Scripts有两种方式,主要区别在于是否建立subshell ...
- crontab执行脚本发邮件中文乱码,手动执行没有问题
今天写了个脚本,定时给指定邮箱发送邮件,手动执行的时候没有问题,但添加到计划任务后发送的邮件就中文乱码,变成一个不知名的附件形式: 上网查了下原因 产生原因: 这是因为Unix/Linux下使用cro ...
- linux启动时、登录时或注销时执行脚本
init.d开机启动 在启动时执行 Linux 脚本 有两种传统的方法可以实现在启动时执行命令或脚本: 方法 #1 - 使用 cron 任务 除了常用格式(分 / 时 / 日 / 月 / 周)外,cr ...
- linux脚本简单定时,shell之定时周期性执行脚本的方法示例
示例 1.编写测试脚本脚本 time .sh $ cat time.sh #! /bin/bash echo $(date +%s) >> /home/ocean/out.txt 保存完毕 ...
- Linux JAVA执行source,linux 下source、sh、bash、./执行脚本的区别
1.source命令用法: source FileName 作用:在当前 bash环境下读取并执行FileName中的命令.该filename文件可以无"执行权限" 注:该命令通 ...
- linux java环境变量修改不生效_ansible执行带有环境变量的脚本不生效
1背景 jenkins发布时,使用ansible执行远程主机上的启动tomcat脚本发现不生效,启动tomcat的脚本中有环境变量. ansible主机为:172.16.35.8 tomcat服务器为 ...
- Linux中sh执行脚本命令没有权限也能正常执行
sh+脚本名称,可以不必事先设定shell的执行权限.因为这个是将test.sh作为参数传给sh(bash)命令来执行的.这时不是test.sh自己来执行,而是被人家调用执行,所以不要执行权限. [r ...
最新文章
- linux差分备份,完全和差分备份的自动化模型
- burn android images with fastboot
- Hadoop centos 6.5 配置
- CentOS7关于防火墙的命令
- TT和LG编程设计模式之代理
- 电脑选购:看完才明白,一体机和台式机电脑哪个好?
- 酷桌面:随身携带你的企业
- Python | 查找字符串中每个字符的频率
- linux 内存 virt,Linux 内存 virt res shr data swap 意义
- Android基础教程(六)之------- 参数的传递(Bundle)
- ConcurrentHashMap 底层原理,你真的理解了吗?
- 利用conda安装git
- 人工智能和大数据两者有什么联系
- 软件测试文档类型有哪些?
- 苹果4s忘记id密码怎么办_iPhone手机ID密码忘记了怎么办?三种方法轻松解决问题...
- 作为大数据技术面试官,我喜欢什么样的应届毕业生?
- Ubuntu 20.04.3 “have unmet dependencies“
- hdu5769Substring
- 关于nginx指向nacos遇到的坑
- STM32F103 GPIOA->CRL=0XFFF0FFFF配置端口方向