博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
linux crontab下的脚本不执行怎么办
阅读量:2434 次
发布时间:2019-05-10

本文共 2366 字,大约阅读时间需要 7 分钟。

在工作中经常会遇到一些状况,比如写好的  shell  脚本手工运行很正常,但一旦把其配置在  crontab  上调度就会出现这样或那样的问题。本人就遇到到如下几种情况。

、在调用  oracle  的  sqlplus  、  sqlldr  等命令工具时必须写出其全路径才能在  crontab  中执行成功,否则,虽然手动运行很正常,但一配到  crontab  上就出现异常。

、手动运行  shell  脚本时,可以用  sh  命令;但在  cron  中一定不能用  sh  执行命令,而要用直接的列出  shell  脚本文件的方式顺序执行。

、在  crontab  调用时,如果有用到数据库,最好把数据库的相关环境变量等列写出来。

、要在  crontab  里调度,  shell  脚本中引用到的文件最好都写绝对路径。

5、如果是ORACLE数据库的脚本,一定要注意环境变量,例如 

PATH=$PATH:$HOME/bin 
export PATH 
export TMP=/tmp 
export TMPDIR=/tmp 
export ORACLE_BASE=/oracle/app 
export ORACLE_HOME=$ORACLE_BASE/product/11.2.0/dbhome_1 
export ORACLE_SID=racdb1 
export PATH=$ORACLE_HOME/bin:/usr/sbin:$PATH 
export NLS_LANG="SIMPLIFIED CHINESE_CHINA.ZHS16GBK" 

6、 检查crond进程是否正常

/etc/init.d/crond status  (貌似centos7版本没有这个命令)

/etc/init.d/crond start

service rsyslog status

ps -elf|grep crond

7、如何判断crontab是否执行,可以看这个日志 /var/log/cron

8、如果是root用户下执行,环境变量可以设置加上这两行

. /etc/profile

. ~/.bash_profile

9、如果是grails进程的启动

nohup grails prod run-app -Dserver.port=xxxx --non-interactive 2>&1 > nohup.out &

为了这个脚本能成功执行,添加了N多的环境变量,

这里关于 grails就添加了java相关的环境变量。

#!/bin/bash

#设置环境变量

#root用户环境变量

. /etc/profile

. ~/.bash_profile

#java环境变量

JAVA_HOME=/home/app/jdk1.7.0_71

JAVA_OPTS="-Xmx1024m -XX:MaxPermSize=512M"

GRAILS_HOME=/home/app/grails-2.3.11

MAVEN_HOME=/home/app/apache-maven-3.0.5

export JAVA_HOME JAVA_OPTS GRAILS_HOME MAVEN_HOME

PATH=$PATH:$HOME/bin:$JAVA_HOME/bin:$GRAILS_HOME/bin:$MAVEN_HOME/bin

export PATH

#查找9898的进程ID

process_id1=$(echo $(ps -ef | grep server.port=9898 | grep -v grep | awk '{print $2}'))

process_id2=`ps -ef | grep rule-service-api1 | grep -v grep |grep -v '/home/app/rule-service-api1/restart_9898.sh'| awk '{print $2}'`

count=$(echo $(ps -ef | grep server.port=9898 | grep -v grep | awk '{print $2}'|wc -l))

#判断进程是否存在,重启该进程

if [ $count -eq 0 ];

then

cd /home/app/rule-service-api1/

sh /home/app/rule-service-api1/startup-rule.sh > /opt/restart9898_1.log 2>&1

sleep 10

echo 'start successful' >> /opt/restart9898_1.log

date >> /opt/restart9898_1.log

else

kill -9 $process_id1 $process_id2

sleep 10

cd /home/app/rule-service-api1/

sh /home/app/rule-service-api1/startup-rule.sh > /opt/restart9898_1.log 2>&1

sleep 10

echo 'kill and restart successful' >> /opt/restart9898_1.log

date >> /opt/restart9898_1.log

fi

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/28371090/viewspace-2654131/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/28371090/viewspace-2654131/

你可能感兴趣的文章
json相关学习
查看>>
linux下access函数的应用
查看>>
linux系统调用之文件:递归删除非空目录
查看>>
linux下获取系统时间的方法
查看>>
ubuntu12.04安装openCV2.4.6.1
查看>>
jsp与servlet的作用以及区别--为什么说JSP底层就是一个Servlet
查看>>
看HashMap源码前的必备冷知识,白话文式教学,适合刚开始了解源码的新手观看
查看>>
Oracle安装指南
查看>>
Redis面试必备(一)
查看>>
Cookie对象入门详解
查看>>
HashMap的remove()方法详解
查看>>
单例模式-分解步骤,逐步解析
查看>>
通过Form表单一次性拿到json格式数据,及后台接收
查看>>
## EL表达式与JSTL标签用法解读
查看>>
Mybatis异常:The content of elements must consist of well-formed.......(一般出现在写分页/带大于小于号的SQL)
查看>>
Mybatis光速入门(配置文件模块)
查看>>
关于Oracle的主键自增如何设置
查看>>
手撕HashMap的resize()方法源码渗透解析+图解
查看>>
Mybatis常见异常类型Could not set parameters for mapping离不开这个原因!
查看>>
Thymeleaf中一个页面怎么嵌套另一个页面,关于页面嵌套,标签告诉你应该知道的
查看>>