Linux基础知识~计划任务和调度命令at/cron

一、计划任务

进程是由程序执行后才产生的。程序的执行可以通过两种方法之一可以实现
1/手动执行
2/利用调度任务,依据一定的条件自动执行。就像windows中的计划任务

如果打算让程序自动执行,您可以使用下面的命令来得已实现:
1/at
2/cron

二、命令{at}介绍

由atd服务负责并管理的。属于at的守护进程。可通过如下指令查看、启动、关闭atd。
#systemctl stop atd
#systemctl start atd
#systemctl restart atd
#systemctl status atd

at,这是一个一次性的计划任务。at的执行主要依靠系统服务atd。系统中有2个文件
/etc/at.allow
/etc/at.deny
这2个文件规定了系统谁可以使用at,谁不可以使用。超级用户随时可以使用at。其他用户则要受到以上2个文件的限制。

总结如下:
如果2个文件都存在,只检查/etc/at.allow,只有在/etc/at.allow中规定的用户才可以使用。
如果只有/etc/at.deny存在,每个在该文件中不
存在的用户都可以使用。
如果2个文件都不存在,只有超级用户可以使用。

三、命令语法及功能 :at

语法 :at [ 选项 ] [time]
功能 : 依据预先定义好的时间 , 执行指定进程

1)at可接受的时间格式
1/日期
MM/DD/YY
MMDDYY
DD.MM.YY

2/时间
HH:MM
HH:MMam
HH:MMpm

3/特殊日期
midnight(0am)
noon(0pm)
teatime(4pm)
now( 现在 )
now + N(minutes,hours,days,weeks)
eg1:
at 23:00
at>reboot
at><EOT> ← 按 ^D 得到此符号 , 意味结束
eg2:
at now
at>ls
at><EOT>

2)时间输入规范 :
1/只输入时间.不输入日期,会被认为是在今天的某个时刻。
2/如果只输入日期,不输入时间,被认为是被输入日期的现在这个时刻。
3/支持输入一个完整的时间。

at时间格式
eg:
#at 23:00
#at 12/31/13
#at 23:00 12/31/13
#at noon
#at 0:00pm 12/31/13
#at teatime + 30 minutes(下午四点后的30分钟)
#at 4:00pm + 4 days(从下午4点的4天)
#at now + 4 weeks(从现在起的4周)

3)at 队列管理
at在编辑后,将进入队列中。由atd服务扫描任务并等待任务的执行

1/查看at队列可使用下面命令
命令:atq
功能:查看at队列
结构语法:atq [ 选项 ]
at在编辑后,如打算查看某个任务队列的信息及准备执行的命令,可按如下命令执行:
#at -c at队列ID

2/at编辑后,队列等待执行。如取消预定的at任务,可以使用 atrm完成取消动作。
命令:atrm
功能:删除at队列中的指定任务
结构语法:atrm [ 选项 ] [ 队列 ID]

四、命令{cron}介绍

cron与at最大区别,在于cron属于依据指定周期执行预定任务。cron的守护进程为crond。
#systemctl stop crond
#systemctl start crond
#systemctl restart crond
#systemctl status crond

五、cron语法及功能

命令:crontab
功能:实现周期性计划任务的执行
语法格式:crontab [ 选项 ]
选项:
-l 查看cron计划任务列表。
-e 以默认文本编辑器,编辑cron计划任务列表。
-r 删除cron计划任务列表。
-u 指定用户。如果不指定用户,-l,-e,-r都认为是对当前用户操作。

(1)cron编辑的格式:
1)shell及mail格式定义
SHELL=/bin/bash
SHELL 指定以哪个shell来处理计划任务的命令。
MAILTO=root
MAILTO 指定运行完计划任务或者是运行是遇到障碍,都会发邮件给某个用户,给以提示。
2)时间格式定义
分钟 0-59
小时 0-23
每月中的第几天 1-31
月 1-12
星期 0-7
//* 星期中0,7同样表示周日

“*” 在第一列,能够代表每一分钟。
“*” 在第二列,能够代表每一小时。
“*” 在第三列,能够代表一个月中的每一天。
“*” 在第四列,能够代表一年中的每个月。
“*” 在第五列,能够代表一个星期中的每一天。
3) 特殊时间格式定义
连续的情况,以小时举例
1,2,3,4,5,8,9,10 可以这样写 1-5,8-10 。
周期间隔
如每隔5分钟可在第一列写成:
*/5
4)cron格式
* * * * * 所需要执行的命令及路径
eg:
0 0 1 1 * echo “Happy New Year”

示例
0 */2 13 * 5 /usr/bin/wall be careful,dark
friday!
代表黑色星期五,每隔2小时,向用户发出提示。
0 20 * * 1-5 /sbin/shutdown -h now
从周1到周5,每天晚上8点,自动关机。

(2)cron编写任务
1. 以当前账户创建cron计划任务
#crontab -e
2. 以指定用户创建其cron计划任务(仅root)
#crontab -e -u snow
3. 以指定文件作为计划任务的要求
#vim newcron
*/5 * * * * wall hello
#crontab newcron

#crontab -u snow newcron

(3)查看cron任务队列
1) 查看当前使用账户的cron队列
#crontab -l
2) 查看其他账户的cron队列(仅root可以查看其他用户的cron队列)
#crontab -l -u snow

(4)清除cron任务队列
1)清除当前使用账户的cron队列
#crontab -r
2清除其他账户的cron队列(仅root可以查看其他用户的cron队列)
#crontab -r -u snow

(5)相关配置文件
/etc/crontab
系统计划任务表及说明。
/etc/cron.d
特定的系统计划任务表
/etc/cron.hourly 
系统每小时要运行的计划任务。
/etc/cron.daily
系统每天要运行的计划任务。
/etc/cron.weekly 
系统每个星期要运行的计划任务。
/etc/cron.monthly 
系统每个月要运行的计划任务。

虽然/etc/cron.hourly等目录中全部是shell脚本,但在/etc/cron.d/0hourly文件中,规定了使用run-parts命令来执行指定的目录脚本文件。这就使得这些上述shell脚本目录的任务得以执行。

使用run-parts脚本来执行 
/etc/cron.hourly
/etc/cron.daily
/etc/cron.weekly
/etc/cron.monthly
以上目录中的脚本,这些脚本被相应地每小时、每日、每周、或每月执行。这些目录中的文件应该是shell脚本。 

run-parts是一个脚本,在/usr/bin/run-parts,作用是执行一个目录下的所有脚本/程序。 

六、anacron

cron的计划任务执行必须保持计算机处于开启状态。如果关机或在指定的时间没有执行,将只能等待下一个周期。而anacron不同,如果在指定的时间没有成功执行,则会在一段时间之内于所指定的重试时间再次执行

anacron配置文件

#vim /etc/anacrontab
格式
时间间隔(默认为天,@monthly为1个月内执行)
等待间隔(默认为分钟)
任务标识
命令

说明:
时间间隔:执行任务的时间间隔
等待间隔:时间间隔到期后,任务没有执行,则使用此处设置时间再次尝试执行
任务标识:任务说明
命令:实际所执行的任务

period(频率.天数) 
delay(延迟,分钟)
job-identifier command 

第一行的意思是:每天开机5分钟后就检查cron.daily文件是否被执行了,如果今天没有被执行就执行他 
第二行的意思是:每隔7天开机后25分钟检查cron.weekly文件是否被执行了,如果一周内没有被执行就执行他
第三行的意思是:每月开机45分钟后就检查cron.monthly文件是否被执行了,如果今天没有被执行就执行他 

欢迎关注交流:

  • 22
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

runqu

你的鼓励是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值