- A+
Linux常用命令--时间与任务
时间日期
命令 | 说明 | 备注 |
---|---|---|
cal | 查看日历(默认本月) | -3 近三个月的;-m 星期一作为第一天; -y 当前年的日历; 指定年份的日历:cal 2020 |
date | 显示当前日期 | 以一定格式输出 date "+%Y/%m/%d" 。-d 显示字符串时间 date -d "2020/11/30 19:11:40" 。-s 设置时间date -s "2020/11/30 19:11:40" |
日期格式字符串列表
符号 | 说明 | 符号 | 说明 |
---|---|---|---|
%n | 下一行 | %t | 跳格 |
%H | 小时(00-23) | %k | 小时(0-23) |
%I(大写i) | 小时(01-12) | %l (小写L) | 小时(1-12) |
%M | 分钟(00-59) | %p | 显示本地 AM 或 PM |
%r | 直接显示时间 (12 小时制,格式为 hh:mm:ss [AP]M) | %T | 直接显示时间 (24 小时制) |
%s | 从 1970 年 1 月 1 日 00:00:00 UTC 到目前为止的秒数 | %S | 秒(00-60) |
%X | 相当于 %H:%M:%S | %Z | 显示时区 |
%a | 星期几 (Sun-Sat) | %A | 星期几 (Sunday-Saturday) |
%b | 月份 (Jan-Dec) | %h | 同 %b |
%c | 直接显示日期与时间 | %D | 直接显示日期 (mm/dd/yy) |
%j | 一年中的第几天 (001-366) | %w | 一周中的第几天 (0-6) |
%m | 月份 (01-12) | %B | 月份 (January-December) |
%U | 一年中的第几周 (00-53) (以 Sunday 为一周的第一天的情形) | %W | : 一年中的第几周 (00-53) (以 Monday 为一周的第一天的情形) |
%x | 直接显示日期 (mm/dd/yy) | %d | 日 (01-31) |
%y | 年份的最后两位数字 (00.99) | %Y | 完整年份 (0000-9999) |
上述格式不必全都记住,只需要掌握几个常用的即可。例如%Y表示年,%m表示月,%d表示日,%H表示小时,%M表示分钟,%S表示秒,%s表示从 1970 年 1 月 1 日 :00:00 UTC 到目前为止的秒数,相当于time函数,%w表示一周中的第几天。
定时任务
1 任务调度crond
任务调度:指定系统在某个时间执行的特定的命令或程序
任务调度分类:
- 系统工作:重要工作需要周而复始
- 个别用户工作:某用户希望执行的程序
命令 | 说明 | 备注 |
---|---|---|
crontab -e | 编辑定时任务 | -l 查询定时任务; -r 删除当前用户的所有定时任务 |
service crond restart | 重启任务调度 |
crond中以五个占位符表示时间(以空格隔开的),其含义:
占位符 | 说明 | 范围 |
---|---|---|
第一个 | 一小时中的第几分钟 | 0-59 |
第二个 | 一天中的第几小时 | 0-23 |
第三个 | 一月中的第几天 | 1-31 |
第四个 | 一年中的第几个月 | 1-12 |
第五个 | 一周中的星期几 | 0-7(0和7代表星期日) |
特殊字符的说明
字符 | 说明 |
---|---|
* | 任意时间 |
, | 不连续的时间 |
- | 连续时间 |
*/ | 每隔多长时间 |
占位符与上述字符结合,可以表示很多时间,比如这些例子:
45 22 * * *
每天22:45
0 17 * * 1
每周一的17:00
0 4 1,15 * *
1号或15号的4:00
40 4 * * 1-5
周一到周五的4:40
*/10 4 * * *
四点的每10分钟(4:10、4:20......)
crond的使用方式
方式一:
1. 输入crontab -e
命令
2. 输入任务(用的是vim):*/1 * * * * ls -l /etc/ > /tmp/to.txt
==>表示每隔一分钟将ls -l /etc/
这个命令的结果重定向到/temp/to.txt
3. :wq
保存退出
方式二:
1. 创建一个shell脚本文件, 路径为/home/lczmx/task.sh,内容如下:
bash date >> mycal cal >> mycal
2. 为脚本添加执行权限:chmod u+x /home/lczmx/task.sh
3. 输入crontab -e
命令
4. 输入任务:*/1 * * * * /home/lczmx/task.sh
5. :wq
保存退出
2 at定时任务
at命令:用于指定一次性的定时命令。
注意:at的守护进程atd会以后台模式运行,每隔一段时间(60秒)检查作业队列来运行,所以使用at命令时,一定要保证atd进程的启动。使用命令:ps -ef | grep atd
查看(ps -ef
: 检测所有当前运行的进程)。
at命令的选项
命令 | 说明 | 备注 |
---|---|---|
-m | 任务完成后给用户发送邮件 | |
-I | 列出任务队列 | 可以使用别名atq |
-d <编号> | 删除队列中的任务 | 可以使用别名 可以使用别名atrm |
-v | 显示任务将被执行的时间 | |
-q <队列> | 使用指定队列 | |
-f <文件> | 使用指定文件读入任务 |
指定时间
- hh:mm 小时:分钟,如:06:00
- 12小时制,如:12pm
- 具体时间,格式:月 日、月 日 年、日.月.年,指定时间必须在指定日期后面。如:06:00 2020-12-3
- 相对时法,格式Now+time-units,time-units是时间单位,有minutes hours days weeks,如now + minutes (五分钟后)
- 直接用today tomorrow
- 用midnight noon teatime(teatime是下午四点左右)
at命令的使用
- at 时间:
at 5pm + 2days
(两天后的下午5点执行) - 输入要执行的命令或shell脚本:
/bin/ls /home
- 连续两次ctrl + D退出编辑界面
[lczmx@rH7-1 ~]$ at 5pm + 2days at> /bin/ls /home at> <EOT> job 4 at Sat Dec 5 17:00:00 2020 [lczmx@rH7-1 ~]$
可以使用atq
查看任务队列,可以看到任务的编号、执行时间、创建人是谁。
[lczmx@rH7-1 ~]$ atq 4 Sat Dec 5 17:00:00 2020 a lczmx