1、Linux在指定的时间执行所需要执行的任务,无论生活与工作,平时经常遇到希望在某个时间执行某个任务,这时候就要使用到定时任务了,因为不可能人工的24小时围绕着电脑转,下面将会讲解下我对Linux定时任务的认识
2、crontab命令执行定时任务
2、1、linux下执行定时任务主要是有用户的crontab文件来执行的,root管理员可以轻松的通过配置来设定哪些用户能拥有自己的crontab文件,也就是在多用户的Linux系统中,不可能让任何用户都有该权限的。
2、2、crontab文件的格式
分-时-日-月-星期-要执行的命令 注意‘-’表示空格。
分,时,日,月,星期都是范围,分(1-60),时(1-24),月(1-12),星期(1-7)
特殊意义:‘*’该标识的任何时间,在分上写‘*’代表1-60分都执行
‘,’用该符号隔开可以指定哪些时间执行,在分上写1,2,10:意思就是1,2,10分执行任务
两个小列子
1、每隔一分钟打印当前时间
* * * * * date>>/dev/console
2、每天晚上12点执行一个脚本
59 23 * * * ./moon/test.sh
注:如果是shell脚本需要给出全路径,系统不会自动识别在某个默认路径
2、2、crontab文件的管理主要是通过crontab命令,通过该命令,可以显示、编辑、删除用户的crontab文件
添加用户crontab文件
添加之前先编辑用户.profile文件,在Linux是.base_profile文件,加入一行
‘EDITOR=vi;export EDITOR’,意思是说用VI编辑用户crontab文件
Crontab文件是新建在用户的目录下的,文件名的格式为username+’cron’
编辑、删除、显示用户crontab文件
删除:crontab –u user –r :-u user是说编辑某个用户的文件,编辑当前自己的文件可以不用该参数,系统会自动识别
编辑:crontab –e
显示:crontab –l
2、3、提交crontab文件
创建好crontab文件之后,需要提交它系统方可识别和执行它,方法是
Crontab +(crontab文件名)
2、4、crontab文件的权限
并非任何用户都可以拥有crontab文件,Linux下对crontab文件的权限管理如下,是有在etc/cron.deny,etc/cron.allow两个文件来管理的
Cron.deny文件,如果该文件为空的,则默认所有用户都可以拥有crontab文件,如果写上了用户的名字,就表示对应用户不可以拥有crontab文件
Cron.allow文件,如果该文件不存在就以cron.deny文件为准,存在就以该文件为准,也就是cron.allow文件优先级更高,该文件存在里面的内容就是允许拥有crontab文件的用户,如果是空的,就只有root用户才拥有该权限了。
如果两个文件都不存在,也代表着只有root才有拥有cronlab文件的权限
2、5、crontab文件的恢复
在提交了crontab文件之后,系统会默认在var/spool/cron/下创建一个名为username的文件,倘若不小心将crontab文件删除,如果有一个备份crontab文件,直接把该备份文件复制到/cron文件下即可,若无权限访问该目录,使用crontab filename命令即可
3、at命令执行任务
3、1、At命令不如crontab文件灵活,它只是说在将来的某个时间执行某项任务,而crontab文件可以在指定的时间中,反复的执行,所以比较灵活性的定时任务还是建议以crontab文件的方式更佳
3、2、at命令的权限和crontab类似,它是通过ect下的at.allow和at.deny文件保存
3、3、at命令形式
At [-f script] [-m –l –r ] [time] [date]
-f script:表示要执行的脚本或者命令
-l:显示at的作业
-r:删除
-m:完成后给用户发email
Time:时间
时间由分(M)和小时(H),格式可以是 H、HH、HH:MM等格式
Date:日期
每个作业都有一个作业号,可以用at –l看到作业号
删除作业时可以用at –r 作业号
也可以用atrm 作业号
4、&向后台提交要执行的命令
有时并不希望执行的命令占据终端而无法做其他的操作,这时候可以把该命令通过&提交到后台执行。
命令格式为 :命令 &
5、nohup命令提交作业
当一个用户退出登录,但你希望某个作业不会中断,那你可以用nohup命令
命令格式是:nohup command &
当想一次提交多个命令,可以写成shell脚本
总结、通过Linux的这些命令,可以灵活的完成对定时任务的配置了
2、crontab命令执行定时任务
2、1、linux下执行定时任务主要是有用户的crontab文件来执行的,root管理员可以轻松的通过配置来设定哪些用户能拥有自己的crontab文件,也就是在多用户的Linux系统中,不可能让任何用户都有该权限的。
2、2、crontab文件的格式
分-时-日-月-星期-要执行的命令 注意‘-’表示空格。
分,时,日,月,星期都是范围,分(1-60),时(1-24),月(1-12),星期(1-7)
特殊意义:‘*’该标识的任何时间,在分上写‘*’代表1-60分都执行
‘,’用该符号隔开可以指定哪些时间执行,在分上写1,2,10:意思就是1,2,10分执行任务
两个小列子
1、每隔一分钟打印当前时间
* * * * * date>>/dev/console
2、每天晚上12点执行一个脚本
59 23 * * * ./moon/test.sh
注:如果是shell脚本需要给出全路径,系统不会自动识别在某个默认路径
2、2、crontab文件的管理主要是通过crontab命令,通过该命令,可以显示、编辑、删除用户的crontab文件
添加用户crontab文件
添加之前先编辑用户.profile文件,在Linux是.base_profile文件,加入一行
‘EDITOR=vi;export EDITOR’,意思是说用VI编辑用户crontab文件
Crontab文件是新建在用户的目录下的,文件名的格式为username+’cron’
编辑、删除、显示用户crontab文件
删除:crontab –u user –r :-u user是说编辑某个用户的文件,编辑当前自己的文件可以不用该参数,系统会自动识别
编辑:crontab –e
显示:crontab –l
2、3、提交crontab文件
创建好crontab文件之后,需要提交它系统方可识别和执行它,方法是
Crontab +(crontab文件名)
2、4、crontab文件的权限
并非任何用户都可以拥有crontab文件,Linux下对crontab文件的权限管理如下,是有在etc/cron.deny,etc/cron.allow两个文件来管理的
Cron.deny文件,如果该文件为空的,则默认所有用户都可以拥有crontab文件,如果写上了用户的名字,就表示对应用户不可以拥有crontab文件
Cron.allow文件,如果该文件不存在就以cron.deny文件为准,存在就以该文件为准,也就是cron.allow文件优先级更高,该文件存在里面的内容就是允许拥有crontab文件的用户,如果是空的,就只有root用户才拥有该权限了。
如果两个文件都不存在,也代表着只有root才有拥有cronlab文件的权限
2、5、crontab文件的恢复
在提交了crontab文件之后,系统会默认在var/spool/cron/下创建一个名为username的文件,倘若不小心将crontab文件删除,如果有一个备份crontab文件,直接把该备份文件复制到/cron文件下即可,若无权限访问该目录,使用crontab filename命令即可
3、at命令执行任务
3、1、At命令不如crontab文件灵活,它只是说在将来的某个时间执行某项任务,而crontab文件可以在指定的时间中,反复的执行,所以比较灵活性的定时任务还是建议以crontab文件的方式更佳
3、2、at命令的权限和crontab类似,它是通过ect下的at.allow和at.deny文件保存
3、3、at命令形式
At [-f script] [-m –l –r ] [time] [date]
-f script:表示要执行的脚本或者命令
-l:显示at的作业
-r:删除
-m:完成后给用户发email
Time:时间
时间由分(M)和小时(H),格式可以是 H、HH、HH:MM等格式
Date:日期
每个作业都有一个作业号,可以用at –l看到作业号
删除作业时可以用at –r 作业号
也可以用atrm 作业号
4、&向后台提交要执行的命令
有时并不希望执行的命令占据终端而无法做其他的操作,这时候可以把该命令通过&提交到后台执行。
命令格式为 :命令 &
5、nohup命令提交作业
当一个用户退出登录,但你希望某个作业不会中断,那你可以用nohup命令
命令格式是:nohup command &
当想一次提交多个命令,可以写成shell脚本
总结、通过Linux的这些命令,可以灵活的完成对定时任务的配置了