zoukankan      html  css  js  c++  java
  • Linux常用命令--时间与任务

    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
    我的博客
    我的笔记

  • 相关阅读:
    初识多线程
    java开发中我们经常用到的一些名词
    gitHub提交代码
    Java-基础-HashMap
    Java-基础-LinkedList
    Java-基础-ArrayList
    Java-基础-JDK动态代理
    Java-基础-反射
    RabbitMQ-延迟队列
    RabbitMQ-TTL-死信队列_DLX
  • 原文地址:https://www.cnblogs.com/lczmx/p/14248049.html
Copyright © 2011-2022 走看看