Shell后台执行命令
Crontab命令(周期性计划任务)
用于创建、修改、删除和查看定时计划任务
功能:可以在固定的间隔时间执行指定的系统指令或 shell script脚本。
时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合;适合周期性的日志分析或数据备份等工作。
选项 | 说明 |
---|---|
-u | 查看指定用户的定时计划任务 |
-e | 创建或修改当前用户的定时计划任务 |
-l | 列出当前用户的所有定时计划任务 |
-r | 将没有确定信息的完全移除当前用户的定时计划任务 |
-i | 与-r结合使用可以在删除用户的crontab文件时给确认提示 |
计划任务文件格式:
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共 分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下:
* * * * * command path
字段名称 | 说明 |
---|---|
分钟 | 从0到59之间的任何整数 |
小时 | 从0到23之间的任何整数 |
日期 | 从1到31之间的任何整数 |
月份 | 从1到12之间的任何整数 |
星期 | 从0到7之间的任何整数,这里的0或7代表星期日 |
除了上述字段还有:
特殊字符 | |
---|---|
* | 匹配任意可能值 |
- | 定义一个范围 |
/ | 表示每间隔多少时间 |
, | 表示“或”的含义 |
At命令(一次性任务)
一次性定时计划任务,执行完就不在执行此任务。
语法:at [-f file] [ -q queue] [OPTION] TIME [DATE]
Ctrl + D 结束at命令时输入
OPTION | 说明 |
---|---|
-f | 可以从指定的文件中读取命令内容,然后在指定时间运行 |
-l | 列出当前用户(非root)所有使用at命令创建的还未运行或当前正在运行的任务,若是root用户,则列出所有用户的任务 |
时间定义
● 能够接受在当天的hh:mm(小时:分钟)式的时间指定;假如该时间已过去,那么就放在第二天执行。 例如:04:00
● 能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
● 能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 例如:12pm
● 能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如:04:00 2009-03-1
● 能够使用相对计时法。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。 例如:now + 5 minutes 04pm + 3 days
● 能够直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
其他相关命令
命令 | 说明 |
---|---|
atq | 与“at -l”功能相同 |
atrm | 可以删除现有任务,参数是任务编号 |
batch | 在系统负荷允许的情况下执行at任务,就是在系统空闲。的情况下才执行at任务 |