第一篇,关于linux下设置定时任务的问题

    开博客为了记录工作上学习到的技术点,和平时学习的笔记,作为积累。

    今天在工作中遇到的问题:

     在linux服务器上部署批量任务,部署成功;在项目目录下执行startup.sh脚本,执行成功,日志正常;设置定时任务:5 0 * * * /home/********/startup.sh  设置成功;等待定时任务执行,通过查看项目日志发现没有运行。

    解决思路:

                    1.查看定时任务是否启动,已启动

                    2.在服务器根目录下执行 sh /home/********/startup.sh  执行失败

                  3.确认项目目录下执行没有问题,检查脚本,发现脚本中部分变量写的是相对路径,比如JAVA_HOME,./lib ,./jar等等,修改为绝对路径,在服务器根目录下执行,没有问题。

                    4.设置定时任务,等待执行,观察日志,确认执行成功。

    解决这个批量任务定时之后,其他批量项目也移交到我手中,部署另一个批量任务,步骤如前进行了检查和修改,设置好后查看执行结果,失败。。。。。。。。。。

    崩溃中。。。。。。。

    继续检查。。。绝对路径没错;定时任务没错,状态开启;检查crontab黑名单白名单,正常;脚本执行权限,正常;设置切换root用户,依旧失败。

    查看crontab日志tail -f  /var/log/cron ,这里日志只有简单的输出,无能没有看懂。。。

    查看mail信息 tail -f /var/spool/mail/root ,终于发现端倪,这里输出了一行信息:请配置JAVA_HOME。。。。

    十分懵逼,因为环境中 profile文件已经配置有JAVA_HOME,虽然startup.sh脚本中没有配置,但是系统环境变量已经有了,不该有此问题。后在startup.sh脚本中配置JAVA_HOME后,定时任务正常执行,具体说明在下方总结。

    问题总结:

            1.执行脚本中一定要配置绝对路径

            2.学会了查看crontab各种日志和异常情况的检查

            3.crontab并不会默认的从profile文件中读取环境变量,解决方法有二,第一种,在脚本中再配置一次环境变量,但是降低了复用性;第二种, 在脚本最上方使用 #!/bin/sh ,加载环境变量。

    

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值