# linux任务
在linux中定时任务大都是指crontab来处理
# 添加任务
网上大多数说法都是直接修改vi /etc/crontab
来进行处理,但添加完后,通过crontab -l
来查看结果啥都没有。
可以用命令crontab -e
就可以
vi /etc/crontab
是系统级别的,而crontab -e
是用户级别的,我们只用修改当前用户级别的即可。
可能会显示以下内容
Select an editor. To change later, run 'select-editor'.
1. /bin/ed
2. /bin/nano <---- easiest
3. /usr/bin/vim.basic
4. /usr/bin/vim.tiny
这里是让我们给crontab 选择默认的编辑器,选择3就可以,如果这里选错了,可以输入命令select-editor
进行重新选择,否则没法好好的编辑crontab了
# 编写任务
编写任务就比较简单了,这个大家搜搜crontab
的就非常多的文章了
写几个简单的吧
1999 年的最后一天的最后一分钟印出 the end of world !
at 23:59 12/31/1999 echo the end of world !
每小时的1分执行用户目录下的bin/account这个指令:
1 * * * * bin/account
每小时的10分,40分执行用户目录下的innd/bbslin这个指令:
10,40 * * * * innd/bbslink
每天的下午4点、5点、6点的5 min、15 min、25 min、35 min、45 min、55 min时执行命令。
5,15,25,35,45,55 16,17,18 * * * command
基本规则就是分 时 天 月 年
这样子了
# ubuntu
查看服务状态:service cron status
启动服务:service cron start
重启服务:service cron restart
# centeros
安装crond服务:
yum install vixie-cron
yum install crontabs
查看服务状态:service crond status
启动服务:service crond start
重启服务:service crond restart
# 如果定时任务不执行?
如果定时任务不执行,执向的sh脚本中有依赖于系统外的命令,比如java,这时候要考虑环境变量的问题导致不执行,因为在crontab中,可能没法读取到环境变量,不知道java命令,所以在shell脚本前面加一句:source /etc/profile
即可。(指向环境变量配置的文件即可)
# 测试执行情况
测试crontab
是否执行
* * * * * echo testCrontab >> /home/bakspace/dbbak/backup/test.txt
执行shell文件
# 每天9.40执行
40 9 * * * bash /home/bakspace/shell/backup-mysql.sh
# sendmail: fatal: parameter inet_interfaces: no...::1
解决方法
在 /etc/postfix
目录下,找到 main.cf
文件 。
vim main.cf
找到
inet_interfaces = localhost
inet_protocols = all
改为
inet_interfaces = all
inet_protocols = all