[草稿]crontab踩坑记录
[TOC]
场景1:crontab 任务不执行
故障上报
- 2016.08.16.手动执行crontab脚本ok,但是crontab死活不执行
43 13 * * * nohup java -jar -Dfile.encoding=utf-8 -Xms4096M -Xmx4096M api-gateway > /dev/null 2>&1 &
分析过程
- 重新配置crontab,主要是将日志输出到指定文件
nohup java -jar -Dfile.encoding=utf-8 -Xms4096M -Xmx4096M api-gateway >> /temp/start.log 2>&1 &
- 结果输出了一行日志:
nohup: failed to run command 'java': No such file or directory
解决方案
出现这个问题的根本原因是 crontab 不会读取用户 profile 文件中,使用相对路径未获取到 JAVA_HOME 环境变量。
- 方案1. 执行
echo $JAVA_HOME
查看JDK的安装,然后使用绝对路径,比如/usr/local/java/bin/java
43 13 * * * nohup /usr/local/java/bin/java -jar -Dfile.encoding=utf-8 -Xms4096M -Xmx4096M api-gateway > /dev/null 2>&1 &
- 方案2. 在crontab中读取profile以解决环境变量的问题
43 13 * * * source /etc/profile; nohup java -jar -Dfile.encoding=utf-8 -Xms4096M -Xmx4096M api-gateway > /dev/null 2>&1 &
场景2:crontab: command not found
- 故障上报:执行
crontab -l
报错-bash: crontab: command not found
- 解决方案:yum安装
yum install -y vixie-cron
场景3:crontab -e 无法编辑
- 故障上报:编辑
crontab -e
出现无法编辑 - 解决方案:使用
Ctrl + X
退出,然后执行select-editor
,重新选择 4.
在Select an editor...下面有几个选项,请选 4.
1. /bin/ed
2. /bin/nano
3. /usr/bin/vim.basic
4. /usr/bin/vim.tiny