文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

linux中crontab的脚本不执行如何解决

2023-06-05 19:55

关注

本篇文章为大家展示了linux中crontab的脚本不执行如何解决,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。

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

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

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

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

如果是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" 

检查crond进程是否正常

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

/etc/init.d/crond start

service rsyslog status

ps -elf|grep crond

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

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

. /etc/profile

. ~/.bash_profile

如果是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

遇到/etc/rc.local这个开机自启动,但是在里面写命令确不执行怎么办

注意:

ll /etc/rc.local

[root@test ~]# ll /etc/rc.local 

lrwxrwxrwx. 1 root root 13 Oct 23  2014 /etc/rc.local -> rc.d/rc.local

发现这是一个链接文件

[root@test ~]# ll /etc/rc.d/rc.local 

-rw-r--r-- 1 root root 696 Oct  8 11:16 /etc/rc.d/rc.local

在查看发现权限是644,并没有执行权限,原因就在这里了

赋予权限即可

chmod 755 /etc/rc.d/rc.local

上述内容就是linux中crontab的脚本不执行如何解决,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-人工智能
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯