linux crontab定时任务执行Kettle或者别的sh错误解决方法

摘要

很多时候我们需要使用linux下的crontab来执行一些定时任务。平时研究linux比较少,今天把遇到的问题整理了下分享。

crontab简单介绍

1.常用命令
crontab -e 编辑添加定时信息
crontab -l 列表出当前所有的定时任务
crontab -r 删除任务
2.使用实例
Example of job definition:
.---------------- minute (0 - 59)
| .------------- hour (0 - 23)
| | .---------- day of month (1 - 31)
| | | .------- month (1 - 12) OR jan,feb,mar,apr ...
| | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
| | | | |

          • user-name command to be executed

分 时 日 月 周 命令
第1列表示分钟1~59 每分钟用*或者 */1表示
第2列表示小时1~23(0表示0点)
第3列表示日期1~31
第4列表示月份1~12
第5列标识号星期0~6(0表示星期天)
第6列要运行的命令

实例1:每1分钟执行一次myCommand

*/1  *  *  *  * user-name command to be executed  
* * * * * myCommand ---这个没实际测试过

实例2:每小时的第3和第15分钟执行

3,15 * * * * myCommand

实例3:在上午8点到11点的第3和第15分钟执行

3,15 8-11 * * * myCommand

实例4:每隔两天的上午8点到11点的第3和第15分钟执行

3,15 8-11 */2  *  * myCommand

实例5:每周一上午8点到11点的第3和第15分钟执行

3,15 8-11 * * 1 myCommand

**实例6:每晚的21:30重启
**

30 21 * * * /etc/init.d/smb restart

实例7:每月1、10、22日的4 : 45重启

45 4 1,10,22 * * /etc/init.d/smb restart

实例8:每周六、周日的1 : 10重启

10 1 * * 6,0 /etc/init.d/smb restart

实例9:每天18 : 00至23 : 00之间每隔30分钟重启

0,30 18-23 * * * /etc/init.d/smb restart

实例10:每星期六的晚上11 : 00 pm重启

0 23 * * 6 /etc/init.d/smb restart

实例11:每一小时重启

* */1 * * * /etc/init.d/smb restart

实例12:晚上11点到早上7点之间,每隔一小时重启

0 23-7 * * * /etc/init.d/smb restart

以上实例中我们很容易分析出这里包含了那些符号来分割时间。下面将是非常重要 注意环境变量问题

我们创建了一个crontab,但是这个任务却无法自动执行,而手动执行这个任务却没有问题,这种情况一般是由于在crontab文件中没有配置环境变量引起的。
crontab不属于任何用户,所以我们在脚本执行要用到java或其他环境变量,脚本中涉及文件路径时写全局路径。
test.sh,可以这样创建一个sh文件来执行。

!/bin/sh
source /etc/profile
export RUN_CONF=/home/platform/cbp/cbp_jboss.conf
/usr/local/jboss-4.0.5/bin/run.sh -c mev &

或者可尝试在crontab中直接引入环境变量解决问题

0 * * * * . /etc/profile;/bin/sh /var/www/java/audit_no_count/bin/restart_audit.sh

可以在sh脚本中加入 source /etc/profile 来配置环境变量。

你可能感兴趣的:(linux crontab定时任务执行Kettle或者别的sh错误解决方法)