有时候需要对系统进行比较耗时比较占用资源的系统维护工作,为了避免这些工作对正在使用的系统性能造成影响,最理想的就是把它们安排在深夜系统没人使用的时候进行,在linux中提供了crontab和at命令,用户通过这两个命令可以对任务进行调度安排,让任务在指定的时候自动运行并完成相关工作。
crontab 可以根据分钟、小时、日期、月份、星期的组合来调度任务的自动执行。用户只要在crontab中设置好任务启动的时间,到了相应的时间后系统就会自动启动该任务。其命令格式如下所示:
crontab [-u user] file
crontab [-u user] [ -l / –r / –e / -i ]
命令的常用选项说明如下所示:
-u user: 指定更改的是哪个用户自动任务。如果不设置,则默认会更改当前运行命令用户的自动任务列表。该选项只有root 用户能使用,一般用户只能更改自己的任务列表。
-l:输出当前的自动任务列表。
-r:删除当前的自动任务列表。
-e:更改用户的自动任务列表。
-i:与-r选项相同,但在删除任务列表前会提示用户确认。
要使用crontab,首先要启动crond服务,可以通过如下命令检查和启动crond服务。
# service crond status //检查crond服务状态
# service crond start //启动crond服务
启动crond: [确定]
使用crontab -e命令可以更改当前用户的自动任务列表,运行命令后会进入VI的编辑文件界面,用户可以从该文件中设置用户的自动任务。文件使用“#”作为注释符,每一条记录都代表个自动任务,如果文件内容为空则表示没有定义任何自动任务。
文件中的每一行的格式如下所示:
分钟 小时 日期 月份 星期 命令
分钟:从0~59之间的任何整数。
小时:从0~23之间的任何整数。
日期:从1~31之间的任何整数。
月份:从1~12之间的任何整数。(如果指定了月份,则必须是该月份的有效日期)。
星期:从0~7之间的任何整数,其中0或7表示星期天。
要在每月的I~4号执行rooUbackup_约束条件后每月都执行该任务。如果需在以上的值中,星号“*”表示所有db.sh脚本,如下所示。需要设置的是一个连续的数值,可以使用“-”。例如要在每月的1~4号8点30分,执行root下某个脚本,如下所示:
30 20 1-4 * * /root/backup_db.sh
如果有多个数值,可以使用逗号分隔。例如,要在每月的1、5、10、15日8点30分,执行/root/backup_db.sh脚本,如下所示:
30 20 1,5,10,15 * * /root/ backup_db.sh
要想实现每分钟执行crontab命令,任务的运行间隔为每分钟运行一次root下的test.sh,如下所示:* * * * * /root/test.sh
注意:
1、由于使用contab命令定义的定时任务都是依赖于crond服务的,所以如果该服务没有启动,那么定时任务将无法正常运行。用户可以执行如下命令查看并启动crond服务。
# service crond status //查看服务状态
# service crond start //启动crond服务
启动crond: [确定]
2、定时任务脚本未添加执行权限
作为定时任务执行的脚本文件必须要有可执行权限,否则定时任务将无法运行。用户以执行如下命令查看并添加脚本文件的执行权限。
# ls -1 backup_db.sh //查看文件权限
# chmod u+x backup_db.sh //添加执行权限
# ls -1 backup_db.sh
<!--以上内容,部分来自网络,若侵删。经笔者整合汇总完成,如需转载,请注明出处。-->