Linux crontab 定时任务
crontab命令选项:
-u指定一个用户
-l列出某个用户的任务计划
-r删除某个用户的任务
-e编辑某个用户的任务
新增:
crontab -e 然后添加相应的任务,wq存盘退出。
查看:
crontab -l //列出当前的所有调度任务
crontab有个问题,就是它总是不会缺省的从用户profile文件中读取环境变量参数,经常导致在手工执行某个脚本时是成功的,但是到crontab中试图让它定期执行时就是会出错.
有时候会出现,定时任务在执行脚本时,识别不了环境变量的问题,例如:JAVA、SVN、MVN等
这就要求在脚本开头部分加入如下内容:
#!/bin/sh
. /etc/profile
. ~/.bash_profile
~表示当前用户的家目录,可能有些环境做了修改,找不到.bash_profile,根据实际情况处理吧,不行就注释掉
参考文章:
http://www.blogjava.net/freeman1984/archive/2010/09/23/332715.html
注意:执行时报的环境变量可能会与当前环境不一样!
手动执行脚本没问题,但是使用crontab执行时,会出现环境变量引发的问题
主要解决办法是:
1、在自己写的脚本中,开头部分添加
#!/bin/sh
. /etc/profile
#. ~/.bash_profile
2、对于使用到的相关环境变量写入到/etc/profile文件中
也就是说crontab执行前先配置好相关环境变量再执行
或者:
拷贝文件(以todos命令为例)
将安装目录下的todos文件(/mydir/re/tofrodos/src)拷贝到/bin目录下,并赋于相关权限
cp /mydir/re/tofrodos/src/todos /bin/
chmod 777 /bin/todos
有的定时任务在/etc/crontab中: cat /etc/crontab