linux定时任务crond生产Java服务手动可执行,脚本不可执行案例

linux定时任务crond export变量问题群友案例

来自网友兄弟 北京@Grady(254553457) 的总结。

1)我写了一个重启resin的脚本,由于业务原因,需要定时在某一个时间重启下resin服务器,于是就在
crontab里配置了如下内容:
50 17 * * 1-5 root /usr/local/bin/resin_restart.sh
其中,resin_restart.sh内容如下:
#!/bin/sh
/usr/local/bin/xxresin_stop.sh
/usr/local/bin/xxresin_start.sh

2)有问题的时刻到来了,服务器虽然定时起来了,但是却报了如下错误:
Resin can‘t load com.sun.tools.javac.Main.  Usually this means that the JDK tools.jar is missing from the classpath, 
possibly because of using a JRE instead of the JDK.  
You can either add tools.jar to the classpath or change the compiler to an external one with <java compiler=‘javac‘/> or jikes.
但是,明明已经在profile里配置了环境变量,为啥还找不到呢。折腾了需求没有搞定。

3)后来在QQ交流群114580181,找到了热心下老男孩老师,并请教,得到的回答是:
由于export变量问题导致:具体为,crontab执行shell时只能识别为数不多的系统环境变量,
普通环境变量一般是无法识别的,如果在编写的脚本中需要使用变量,最好使用export重新声明下该变量,
以确保脚本正确执行。以后作为一个开发基本规范写上。
------------------------
4)然后我在resin重启脚本里重新定义了下环境变量,脚本如下:
#!/bin/sh
#下面就是环境变量定义
JAVA_HOME="/opt/jdk1.6.0_18"
CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:/opt/nginx-0.7.61/sbin:/opt/jdk1.6.0_18/bin:/opt/resin-3.0.25/bin:$PATH
export JAVA_HOME PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC CLASSPATH
/usr/local/bin/xxresin_stop.sh
/usr/local/bin/xxresin_start.sh

5)经过测试,定时任务此时顺利重启,在这里非常感谢老男孩老师给与的支持。

时间: 2024-12-24 16:34:47

linux定时任务crond生产Java服务手动可执行,脚本不可执行案例的相关文章

linux 定时任务 crond 服务应用指南

linux定时任务crond服务应用指南 Linux的定时任务crond(crontab)服务 1.crond是什么? crond是linux系统中用来定期执行命令或者指定程序的程序(软件) 2.秒级任务 (1)crond需要方式实现 (2)自己写守护进程shell循环 (3)Quartz也可实现妙计任务 3.定时任务的作用 服务器:7*24小时开机提供服务是网站的基本特征 有重要数据:提高备份周期和备份数量 Linux的定时任务分类 linux系统中定时任务调度的工作可以分为一下两种 (1)系

linux定时任务crond那些事!

来自老男孩教育的运维班面授课程内容,17期依良同学作业整理而得! 1.定时任务crond介绍 1.1 crond是什么 crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件. 特殊需求:(秒级别)crond服务就无法搞定了,一般工作中写脚本守护进程执行. 1.2 为什么要使用crond定时任务 linux系统的定时任务crond,相当于我们平时生活中的闹钟的功能.可以满足周期性执行任务的需求. 1.3 不同系统的定时任务和种类 1.3.1 windows 7 系统的定时任务

Linux定时任务—crond,crontab

1.Linux 工作排程的种类: at, crontab 种类 依赖服务 描述 at atd 是个处理仅执行一次就结束排程的命令,不过要执行 at 时,必须要启动 atd 这个服务 crontab crond 这个指令所设定的工作将会循环的一直进行下去,必须要启动 crond 这个服务. 2.使用者的设定:可以限制使用 crontab 的使用者账号: /etc/cron.deny 将不可使用crontab的账号写入其中,一个账号一行 /etc/cron.allow 将允许的账号写入其中 3. /

小记---------手动执行脚本正常执行,使用crontab定时执行时 不执行

可能出现的原因就是因为crontab不会从用户的/etc/profile文件中读取环境变量,所以就出现 使用定时crontab执行时 无法执行 抛错 所以在使用crontab 定时执行脚本时  在脚本中尽量使用绝对路径,除去全局变量以外 解决方法: 1. 直接把/etc/profile文件中配置的spark的环境变量写到脚本的开头,使它在执行脚本之前先加载spark的环境变量即可 2.直接在脚本中添加即可 #!/bin/bash #此处添加如下 ./etc/profile num_executo

Linux系统定时任务Crond

Crond是什么 Crond是Linux系统中用来定期执行命令或指定程序任务的一种服务或软件. 特殊需求:(秒级别)crond服务就无法搞定,一般工作中邪脚本守护进程执行(一般用不上) 为什么要使用crond定时任务 Linux系统的定时任务crond,相当于我们平时生活中得闹钟功能.可以满足周期性执行任务的需求. Linux系统的定时任务 Linux系统中定时任务调度的工作可以分为以下两种情况 1.Linux系统自身定期执行的任务工作:系统周期性执行的任务工作,如轮询系统日志,备份系统数据,清

定时任务crond服务

Linux下crontab定时任务详解 crontab命令是被用来提交和管理用户的需要周期性执行的任务,与Windows下的计划任务类似,系统安装完成后,默认安装此服务,并且会自启动crond进程,每分钟定期检查要执行的任务. 一.语法 crontab  选项   参数(指要执行任务的crontab文件) -e 编辑该用户的计时器设置 -l 列出该用户的计时器设置 -r 删除该用户的计时器设置 -u 用户名称  指定要设定计时器的用户名称 crontab文件含义(六段):分 时 日 月 周 [要

Linux系统定时任务crond那些事

1 Linux系统定时任务 1.1 定时任务介绍 1.1.1 Crond是什么? Crond是linux系统中用来定期执行命令或指定程序任务的一种服务或软件.Centos5/6 linux系统安装完操作系统默认会启动crond任务调度服务,系统开机启动优化保留crond服务开机自启动.Crond服务定期(默认是每分钟检查一次)检查系统中是否有要执行的任务工作.这个crond定时任务服务就相当于我们平时使用的闹钟一样.特殊需求:(秒级别)crond服务搞不定了,工作中一般写脚本守护程序执行. 1.

Linux下crond服务的简单实现

crond是Linux用来定期执行程序的命令.crond命令每分钟会检查是否有要执行的工作, 如果有要执行的工作便会自动执行该工作.cron服务是一个定时执行的服务,可以通过crontab命令添加或者编辑需要定时执行的任务: crontab -u:设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数: crontab -l :列出某个用户的cron服务: crontab -r:删除某个用户的cron服务: crontab -e:编辑某个用户的cron服务: crontab 

Linux中crond服务与crontab用法

需要写个在Linux下定时更新系统的脚本,man crondtab 不甚详细,现将网络上的介绍列举如下: crontab是一个很方便的在unix/linux系统上定时(循环)执行某个任务的程序使用cron服务,用 service crond status 查看 cron服务状态,如果没有启动则 service crond start启动它,cron服务是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务: crontab -u //设定某个用户的cron服务,一般ro