linux 自动任务crontab不执行

时间:2022-05-21 08:01:11
今天遇上比较怪的问题了,系统是IBM的AIX系统,用户是自己创建的用户,crontab的使用权限加上了,路径中所有的文件夹和最后调用的脚本都给了775的高权限,脚本手动执行可以
自动任务设置形如:
15 16 * * * /opt/laxis/autosync/run
我使用crontab -e 编辑的自动任务。
run脚本中的样子:
#!/bin/sh
export JAVA_HOME=/usr/java5_64
$JAVA_HOME/bin/java  -jar /opt/laxis/autosync/autoSync.jar /opt/laxis/autosync/config.xml

到了16点15分的时候,程序没有被执行,而且mail里没有邮件可查。
我将自动任务改成:
15 0-23 * * * /opt/laxis/autosync/run
就可以执行了。但是这样是每小时的15分钟都执行,不符合我的要求,我要每天的几点几分执行,一天一次。

请高手帮我看看第一种写法为什么会不执行 

16 个解决方案

#1


15 0-23 * * * /opt/laxis/autosync/run 这个都好用
15 16 * * * /opt/laxis/autosync/run 没有理由不好用啊
建议你再试一次 

#2


在 run 脚本中加载运行必须的环境变量

#3


顶一楼!

#4


 - -!我都试了两天了,所以说问题比较怪,环境变量相关的无非就是java_home path什么的,我都加上了也还是这样。
       这种奇怪的问题真愁人,没执行又不给我发邮件,想知道是什么问题都没法知道。同样都是crontab的自动任务,一个能用,一个不能用…………

#5


刚才我又试了一种方法,现在写成 :
15 16-16 * * * /opt/laxis/autosync/run 
可以执行,而写成
15 16 * * * /opt/laxis/autosync/run 
就不行。

虽然按照上面的写法可以运行而且符合一天一次的要求,但是,哪有这么写定时任务的啊,以后别人来维护不被搞糊涂才怪呢。


继续求各位大大们指点= =!

#6


引用 5 楼 laxis 的回复:
刚才我又试了一种方法,现在写成 :
15 16-16 * * * /opt/laxis/autosync/run
可以执行,而写成
15 16 * * * /opt/laxis/autosync/run
就不行。

虽然按照上面的写法可以运行而且符合一天一次的要求,但是,哪有这么写定时任务的啊,以后别人来维护不被搞糊涂才怪呢。


继续求各位大大们指点= =!

确实是个奇怪的问题  正常的写法反而不执行

#7


1. restart crond service
2. 查看/var/log/cron, 看看具体出的什么问题

#8


请问,后来你这个,是什么问题,怎么解决的。??

#9


先做个试验,把你的任务改为一个简单的小脚本,然后看能否执行。
15 16 * * * /tmp/1.sh

/tmp/1.sh中简单的创建一个文件/tmp/1.file。

#10


crontab -u root /var/spool/cron/root


执行下这个试下

#11


1 使用root 检查crontab 对你使用的 用户而言是否有限制;
2 脚本中加入用户的环境变量;

#12


写到文件,看看有没有执行咯

#13


使用root

#14


该回复于2011-02-17 14:33:30被版主删除

#15


等着答案```crontab除了权限上的限制,不晓得还有没有其它问题``

#16


环境变量,cron进程执行任务时,并不加载计划书所属用户的环境变量,只加载几个最 基本的环境变量,比如执行任务的sh,$HOME,$MAILTO等。这几个环境变量的定义是在 /etc/crontab文件中。其中$MAILTO是指定计划执行过程中发生错误或者有数据输出时发 送邮件到哪个用户。 JAVA程序必须在脚本中加载环境变量,如:
export LANG="zh_CN.GB18030"
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH:.
export CLASSPATH=$JAVA_HOME/lib:.
export CLASSPATH=$CLASSPATH:XXX.jar等

#1


15 0-23 * * * /opt/laxis/autosync/run 这个都好用
15 16 * * * /opt/laxis/autosync/run 没有理由不好用啊
建议你再试一次 

#2


在 run 脚本中加载运行必须的环境变量

#3


顶一楼!

#4


 - -!我都试了两天了,所以说问题比较怪,环境变量相关的无非就是java_home path什么的,我都加上了也还是这样。
       这种奇怪的问题真愁人,没执行又不给我发邮件,想知道是什么问题都没法知道。同样都是crontab的自动任务,一个能用,一个不能用…………

#5


刚才我又试了一种方法,现在写成 :
15 16-16 * * * /opt/laxis/autosync/run 
可以执行,而写成
15 16 * * * /opt/laxis/autosync/run 
就不行。

虽然按照上面的写法可以运行而且符合一天一次的要求,但是,哪有这么写定时任务的啊,以后别人来维护不被搞糊涂才怪呢。


继续求各位大大们指点= =!

#6


引用 5 楼 laxis 的回复:
刚才我又试了一种方法,现在写成 :
15 16-16 * * * /opt/laxis/autosync/run
可以执行,而写成
15 16 * * * /opt/laxis/autosync/run
就不行。

虽然按照上面的写法可以运行而且符合一天一次的要求,但是,哪有这么写定时任务的啊,以后别人来维护不被搞糊涂才怪呢。


继续求各位大大们指点= =!

确实是个奇怪的问题  正常的写法反而不执行

#7


1. restart crond service
2. 查看/var/log/cron, 看看具体出的什么问题

#8


请问,后来你这个,是什么问题,怎么解决的。??

#9


先做个试验,把你的任务改为一个简单的小脚本,然后看能否执行。
15 16 * * * /tmp/1.sh

/tmp/1.sh中简单的创建一个文件/tmp/1.file。

#10


crontab -u root /var/spool/cron/root


执行下这个试下

#11


1 使用root 检查crontab 对你使用的 用户而言是否有限制;
2 脚本中加入用户的环境变量;

#12


写到文件,看看有没有执行咯

#13


使用root

#14


该回复于2011-02-17 14:33:30被版主删除

#15


等着答案```crontab除了权限上的限制,不晓得还有没有其它问题``

#16


环境变量,cron进程执行任务时,并不加载计划书所属用户的环境变量,只加载几个最 基本的环境变量,比如执行任务的sh,$HOME,$MAILTO等。这几个环境变量的定义是在 /etc/crontab文件中。其中$MAILTO是指定计划执行过程中发生错误或者有数据输出时发 送邮件到哪个用户。 JAVA程序必须在脚本中加载环境变量,如:
export LANG="zh_CN.GB18030"
export JAVA_HOME=/usr/local/jdk
export PATH=$JAVA_HOME/bin:$PATH:.
export CLASSPATH=$JAVA_HOME/lib:.
export CLASSPATH=$CLASSPATH:XXX.jar等