linux系统是通过crond服务来控制计划任务的(crond是linux下用来周期性的执行某种任务或者等待处理某些事件的守护进程)。在安装完操作系统之后,会默认启动crond服务(crond进程每分钟会定期检查是否有要执行的任务,如果有则自动执行)。
而我们定制设置计划任务,也提供有对应的命令 crontab
crontab配置文件在/etc/crontab
权限文件:/etc/cron.deny
crontab文件存放目录:/var/spool/cron/
crontab命令:
crontab [-u user] file
crontab [-u user] [ -e | -l | -r ]
命令参数说明:
-u user:用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
file:file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件。
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r:从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。
-i:在删除用户的crontab文件时给确认提示。
以下举个例子:
添加执行shell脚本, 如创建clean_log.sh定期删除文件:
#!/bin/bash
echo "del log start ...."
find /filepath1/log -mtime +5 -name "*.log" -exec rm -rf {} \;
find /filepath2/log -mtime +5 -name "*.log" -exec rm -rf {} \;
find /filepath3/log -mtime +5 -name "*.log" -exec rm -rf {} \;
echo "del log end ...."
将此执行脚本添加到定时任务中:
执行 crontab -e进行编辑
添加执行周期和执行脚本 :0 2 * * * /xxx/.../clean_log.sh
此时可以在存放路径下看到:
[root@xxx.xx.xx.xxx cron]# cat root
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
0 2 * * * /home/test_user/clean_log.sh
注意事项:
新创建的 cron 任务,不会马上执行,至少要过 2 分钟后才可以,重启 cron 可以实现立刻执行。