Linux常用命令–时间与任务

  • A+
所属分类:linux技术
摘要

日期格式字符串列表上述格式不必全都记住,只需要掌握几个常用的即可。例如%Y表示年,%m表示月,%d表示日,%H表示小时,%M表示分钟,%S表示秒,%s表示从 1970 年 1 月 1 日 :00:00 UTC 到目前为止的秒数,相当于time函数,%w表示一周中的第几天。

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

任务调度:指定系统在某个时间执行的特定的命令或程序
任务调度分类:

  1. 系统工作:重要工作需要周而复始
  2. 个别用户工作:某用户希望执行的程序
命令 说明 备注
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 <文件> 使用指定文件读入任务  

指定时间

  1. hh:mm 小时:分钟,如:06:00
  2. 12小时制,如:12pm
  3. 具体时间,格式:月 日、月 日 年、日.月.年,指定时间必须在指定日期后面。如:06:00 2020-12-3
  4. 相对时法,格式Now+time-units,time-units是时间单位,有minutes hours days weeks,如now + minutes (五分钟后)
  5. 直接用today tomorrow
  6. 用midnight noon teatime(teatime是下午四点左右)

at命令的使用

  1. at 时间:at 5pm + 2days (两天后的下午5点执行)
  2. 输入要执行的命令或shell脚本:/bin/ls /home
  3. 连续两次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

我的github
我的博客
我的笔记