4-13 Linux中的计划作业 --- crontab(一、crontab 命令操作)

  • crontab:通过指令制定计划任务。让系统自动进行预设的任务。
  • 4-12 内容:
    学习 crontab 命令创建计划任务。

1、 cron:是一个线程,它可以让 linux 周期性的执行某一命令。

2、linux 指定计划任务有两种方式。一种是通过 crontab 命令、另一种是通过 /etc/crontab 配置文件。下面先操作 crontab 命令,后操作 /etc/crontab 文件。

3、 crontab:是一个命令,可以设置 linux 周期性执行某一命令。
crontab 参数选项:
-u:设置某一用户的周期性工作(只有 root 权限可以设置)。
-e:编辑 crontab 的工作内容。
-l:查阅 crontab 的工作内容。
-r:移除 crontab 的所有工作内容,如需移除单项或非全部,可用 -e 编辑。

4、 crontab 的格式概括:

  • crontab 命令的格式:* * * * * command。

  • crontab 由 6 项参数组成,它们是:minute、hour、day、month、week、command。前面 5 个 * 星号分别代表 minute、hour、day、month、week,command 为执行的命令。

  • minute:表示分钟,0 到 59 之间的任何整数。

  • hour:表示小时,0 到 23 之间的任何整数。

  • day:表示日期,1 到 31 之间的任何整数。

  • month:表示月份,1 到 12 之间的任何整数。

  • week:表示星期几,0 到 7 之间的任何整数,0 和 7代表星期日。

  • command:需要执行的命令,可以是系统命令,也可以是脚本文件。

特殊符号(* 星号、,逗号,- 减号,/ 斜杠),特定的符号可以组合参数的格式、表示范围 和 时间周期。符号格式是表达式的一种,5 个 * 号对标参数格式图解如下:


符号区间对标的参数图解

5、特殊符号解析:

  • *:星号,代表每个时刻。如 5 个星号就是每 1 分钟,每 1 个小时,每 1 天,每 1 个月,每 1 周。简单理解就是每时每刻,每1分钟执行一次命令。


    * 号图解
  • ,:逗号,代表分隔字段。例如:15,20,45 * * * * command 代表每小时的第 15分、20分、45分执行命令。


    ,逗号图解
  • -:减号,代表一段时间的范围。例如:10 7-10 * * * command 代表每天的 7点 到 10点这个时间范围,逢第 10 分钟执行命令。也就是 7点10分、8点10分、9点10分、10点10分执行命令。


    ,逗号 - 减号图解
  • /n:/ 代表间隔,n 代表数字,也就是每隔 n 个单位间隔的意思。例如:*/5 * * * * command 代表每隔 5 分钟执行命令一次。


    / 斜杠图解

6、crontab 命令案例实操:

  • 1)、root 用户对普通用户进行计划作业操作。
  • 虚拟机登录两个用户,一个是 root 用户,一个是 torres 普通用户。root 用户可以自身制定 crontab 计划作业,也可对普通用户制定 crontab 计划作业。普通用户只能对自身制定 crontab 计划作业。不能对自身以外的用户制定 crontab。
用户界面
  • ①、torres 用户 home 目录下现在没有文件。


    torres 用户
  • ②、root 用户执行 crontab -eu torres ,对 torres 用户制定计划。

[root@localhost ~]# crontab -eu torres    ## 对 torres 用户制定计划
no crontab for torres - using an empty one

* * * * * date >> mydate.txt    ## 每分钟输出 date 到 mydate.txt 文件                                                                           
~                                                                                      
~                                                                                      
~                                                                                      
:wq

  • ③、root 用户可用 -lu 参数查看指定用户的 crontab 计划任务,普通用户 torres 也可以用 -l 参数查看自身正在执行的 crontab 计划任务(-l -u 查看指定用户计划任务,-l 查看自身计划任务)。如 root 对 torres 用户制定了计划,root 可以查看,torres 也可以查看 。


    root 通过 -lu 查看 torres 用户的 crontab 计划作业
torres 用户查看自身运行的 crontab 计划任务
  • ④、root 对 torres 指定的 crontab 任务开始后,只要到了指令预设的时间,mydate.txt 文件就会生成在 torres 家目录下,并一直存储数据。如,root 指定的 crontab 指令是 * * * * * date >> mydate.txt,每分钟输出 date 到 mydate.txt 文件。开始执行后 1 分钟就会生成 mydate.txt 文件在 torres 的家目录下,并且一直存储每一分钟 date 输出的数据。
torres 用户下的 mydate.txt 文件及内容
  • ⑤、root 可以修改普通用户的 crontab,torres 也可以修改自身的 crontab。
## root 修改普通用户的 crontab
[root@localhost ~]# 
[root@localhost ~]# crontab -lu torres    ## root 通过 -lu 查看 torres 用户的 crontab
* * * * * date >> mydate.txt
[root@localhost ~]# 
[root@localhost ~]# crontab -eu torres    root 通过 -eu 编辑 torres 用户的 crontab

* * * * * date >> mydate.txt
## 新增一条每 2 分钟输出 i am root 到 root_echo.txt
*/2 * * * * echo "i am root" >> root_echo.txt                                                                                         
~                                                                                                 
~                                                                                                 
~                                                                                                 
:wq    ## 保存并退出

crontab: installing new crontab    ## 完成对 torres 的 crontab 设置 
[root@localhost ~]# 
[root@localhost ~]# crontab -lu torres    ## 现在 torres 用户的 crontab 有两条
* * * * * date >> mydate.txt
*/2 * * * * echo "i am root" >> root_echo.txt
[root@localhost ~]# 

  • crontab 指令预设的时间一到就会生成 root_echo.txt 文件在 torres 家目录下。
[torres@localhost ~]$ 
[torres@localhost ~]$ ll
total 8
-rw-r--r--. 1 torres torres 812 Sep 28 21:45 mydate.txt
-rw-r--r--. 1 torres torres  50 Sep 28 21:44 root_echo.txt
[torres@localhost ~]$ 
[torres@localhost ~]$ cat root_echo.txt    ## 查看 root_echo.txt 文件内容
i am root
i am root
i am root
i am root
i am root
[torres@localhost ~]$ 

  • ⑥、普通用户 torres 也可以编辑自身正在运行的 crontab
[torres@localhost ~]$ 
[torres@localhost ~]$ crontab -e    ## torres 编辑自身运行的 crontab 只需 -e 

* * * * * date >> mydate.txt
*/2 * * * * echo "i am root" >> root_echo.txt
## 新增一条每 2 分钟输出 i am torres 到 torres_echo.txt
*/2 * * * * echo "i am torres" >> torres_echo.txt                                                                                                                
~                                                                                                                       
~                                                                                                                       
~                                                                                                                       
:wq    ## 保存并退出

  • crontab 指令预设的时间一到就会生成 torres_echo.txt 文件在 torres 家目录下。
crontab: installing new crontab
[torres@localhost ~]$ 
[torres@localhost ~]$ ll
total 12
-rw-r--r--. 1 torres torres 1131 Sep 28 21:56 mydate.txt
-rw-r--r--. 1 torres torres  110 Sep 28 21:56 root_echo.txt
-rw-r--r--. 1 torres torres   36 Sep 28 21:56 torres_echo.txt
[torres@localhost ~]$ 
[torres@localhost ~]$ cat torres_echo.txt     ## 查看 torres_echo.txt 文件内容 
i am torres
i am torres
i am torres
[torres@localhost ~]$ 

  • ⑦、注意,root 对普通用户执行 crontab 时,指定用户的 -u 参数一定要放在最后,如:编辑时 -eu、查看时 -lu、删除时 -ru。如果位置互换了,则会报错。


    root 编辑指定用户的 crontab 时,-u 参数应放最后,否则会报错
  • ⑧、普通用户只能对自身制定 crontab 计划作业。不能对自身以外的用户制定crontab。
    由 root 创建的用户除了 torres,还有 user1 和 x 用户。
[root@localhost ~]# 
[root@localhost ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:997:User for polkitd:/:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
torres:x:1000:1007::/home/torres:/bin/bash      ## <------------普通用户        
user1:x:1001:1008::/home/user1:/bin/bash       ## <------------普通用户
x:x:1002:1009::/home/x:/bin/bash       ## <------------普通用户
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
geoclue:x:997:995:User for geoclue:/var/lib/geoclue:/sbin/nologin
[root@localhost ~]# 

  • 用 torres 用户为 user1 用户创建计划作业,会提示没有 -u 的特权。
[torres@localhost ~]$ 
[torres@localhost ~]$ crontab -eu user1
must be privileged to use -u    ## 必须有使用-u的特权
[torres@localhost ~]$ 

  • 总结:
    每个用户都可以通过 crontab -e 的命令制定计划任务。root 用户权限大,除了用 -e、-l、-r 为自身可以进行创建(编辑)、查看、删除计划任务外,还可以通过 -eu、-lu、-ru 来为指定的普通用户创建(编辑)、查看、删除计划任务。而普通用户只能通过 -e、-l、-r 为自身可以进行创建(编辑)、查看、删除计划任务,没有权限通过 -eu、-lu、-ru 对自身以外的用户进行创建(编辑)、查看、删除计划任务的操作。

  • 以上是 root 用户为普通用户创建、修改 crontab 任务。下面用 root 用户做一些 crontab 命令实操,了解不同时间的输出情况:

  • 2)、每 1 分钟输出一次 date 系统时间,保存到当前目录 date.txt 文件中,如果当前目录没有 date.txt 文件会自动创建一个。

## 当前用户创建 crontab 任务,-e 编辑模式,vim 界面。
[root@localhost ~]# crontab -e

## 按 I 进入插入模式进行编辑
## 输入指令,五个 * 代表每 1分钟执行一次指令。                                        
* * * * * date  >> date.txt         
~                                                                                                             
~                                                                                                             
~                                                                                                             
~                                                                                                             
:wq    ## wq 保存退出

[root@localhost ~]# 
[root@localhost ~]# ll    ## 此时,ll 查看当前目录已经有 date.txt 文件了,大小为 58 字节
total 4
-rw-r--r--. 1 root root 58 Sep 26 00:08 date.txt
drwxr-xr-x. 4 root root 36 Sep 19 10:31 test
[root@localhost ~]# 
[root@localhost ~]# date    ## 再过了一会,查看当前时间。
Sun Sep 26 00:11:54 CST 2021
[root@localhost ~]# 
[root@localhost ~]# ll    ## 此时,date.txt 文件大小为 145 字节
total 4
-rw-r--r--. 1 root root 145 Sep 26 00:11 date.txt
drwxr-xr-x. 4 root root  36 Sep 19 10:31 test
[root@localhost ~]# 
[root@localhost ~]# cat date.txt    ## cat 查看 date.txt 目录的内容。从输出的时间看出是每 1 分钟输出一次     
Sun Sep 26 00:07:01 CST 2021
Sun Sep 26 00:08:01 CST 2021
Sun Sep 26 00:09:01 CST 2021
Sun Sep 26 00:10:01 CST 2021
Sun Sep 26 00:11:02 CST 2021
[root@localhost ~]# 
[root@localhost ~]# crontab -l    ## -l 列出当前 crontab 的任务内容
* * * * * date  >> date.txt  
[root@localhost ~]# 
[root@localhost ~]# crontab -r    ## -r 删除当前 crontab 的任务内容
[root@localhost ~]# 
[root@localhost ~]# crontab -l    ## 当 -r 删除了任务内容后,再用 -l 列出内容,会提示 root 用户没有 crontab 任务了。
no crontab for root
[root@localhost ~]# 


  • 3)、* * * * * date >> date.txt 是每 1 一分钟执行一次命令,还有第二种写法是 */1 * * * * date >> date.txt。/ 代表 “每” 的意思。在第一个 * 号区间用 /n 的写法,代表每 n 分钟执行一次命令。同理,在其他 * 号区间用 /n 的写法,代表每 n 小时、每 n 天、每 n 月、每 n 周执行一次命令。

  • 假设,现在需要每 5 分钟输出一次 date 系统时间,保存到 tmp 目录 5minute-date.txt 文件中(如果 tmp 目录没有 5minute-date.txt 文件会自动创建一个)。这时可以用 /5 的写法完成。

## 当前用户创建 crontab 任务,-e 编辑模式,vim 界面。
[root@localhost ~]# crontab -e    
no crontab for root - using an empty one

## 按 I 进入插入模式进行编辑
## 输入指令,*/5 * * * *代表每 5 分钟执行一次指令。                                         
*/5 * * * * date >> /tmp/5minute-date.txt                                                 
~                                                                                                             
~                                                                                                             
~                                                                                                             
:wq     ## wq 保存退出

[root@localhost ~]# 
[root@localhost ~]# ll /tmp/    ## 已经有 5minute-date.txt , 最后修改时间 00:50,大小 87 字节
total 8
-rw-r--r--. 1 root root  87 Sep 26 00:50 5minute-date.txt    ## crontab 产生的文件

[root@localhost ~]# 
[root@localhost ~]# cat /tmp/5minute-date.txt    ## cat 查看文件内容 
Sun Sep 26 00:40:01 CST 2021
Sun Sep 26 00:45:01 CST 2021
Sun Sep 26 00:50:01 CST 2021
[root@localhost ~]# 
[root@localhost ~]# crontab -r    ## 删除当前用户(root)所有的 crontab 任务
[root@localhost ~]# 
[root@localhost ~]# crontab -l    ## 当前用户(root)没有 crontab 任务
no crontab for root
[root@localhost ~]# 

  • 综上测试, / 斜杠是 “每” 的意思,每多少分钟,每多少小时,每多少天,每多少月,每多少周,都是通过 / 后面跟的合法数值来表示。

  • 另外,通过测试可以看出,crontab 执行任务的时间是到点后 1 秒开始执行命令。如:00:40:01、00:45:01、 00:50:01。


  • 4)、以上的写法是通过执行 crontab 命令,然后进入编辑模式进行命令的编辑。简单的指令可以这样做,对于复杂或者比较多命令时会显得不太好管理。另一种方法,通过编写脚本,crontab 读取脚本的形式执行计划作业。

  • 例:现在需要用脚本的写法完成每 2 分钟输出一次 date 系统时间,保存到 tmp 目录 2minute.txt 文件中,如果 tmp 目录没有 2minute.txt 文件会自动创建一个。

[root@localhost ~]# pwd    ## 由于是在当前目录下创建脚本文件,所以养成习惯查看一下当前路径
/root
[root@localhost ~]# 
[root@localhost ~]# vim mydate.sh    ## vim 编辑脚本文件,名为 mydate.sh
##  脚本的编写是执行的内容
date >> /tmp/2minute.txt    ## 内容是 date 输出时间到 /tmp/2minute.txt 文件                                                                      
~                                                                                                             
~                                                                                                             
~                                                                                                             
:wq    ## 保存并退出

[root@localhost ~]# ll
total 8
-rw-r--r--. 1 root root 174 Sep 26 00:12 date.txt
-rw-r--r--. 1 root root  25 Sep 26 01:52 mydate.sh    ## 脚本文件
drwxr-xr-x. 4 root root  36 Sep 19 10:31 test
[root@localhost ~]# chmod u+x mydate.sh    ## 赋予脚本文件拥有者具有 x 执行权限 
[root@localhost ~]# 
[root@localhost ~]# ll
total 8
-rw-r--r--. 1 root root 174 Sep 26 00:12 date.txt
-rwxr--r--. 1 root root  25 Sep 26 01:52 mydate.sh    ## 赋有 x 执行权限的脚本文件
drwxr-xr-x. 4 root root  36 Sep 19 10:31 test

[root@localhost ~]# crontab -e    ## 当前用户创建 crontab 任务
no crontab for root - using an empty one

*/2 * * * * /root/mydate.sh    ## crontab 任务的编写是控制时间 和 对象                                                                               
~                                                                                                             
~                                                                                                             
~                                                                                                             
~                                                                                                             
:wq    ## 保存并退出

[root@localhost ~]# 
[root@localhost ~]# date    ## 查看当前时间,距离执行计划作业已有一段时间
Sun Sep 26 02:03:59 CST 2021
[root@localhost ~]# 
[root@localhost ~]# ll /tmp/    ## 查看 tmp 目录,已有 2minute.txt 的文件,116 字节,最后修改时间 02:04
total 8
-rw-r--r--. 1 root root 116 Sep 26 02:04 2minute.txt
[root@localhost ~]# 
[root@localhost ~]# cat /tmp/2minute.txt    ## 查看  2minute.txt 文件,已有记录
Sun Sep 26 01:58:01 CST 2021
Sun Sep 26 02:00:01 CST 2021
Sun Sep 26 02:02:01 CST 2021
Sun Sep 26 02:04:01 CST 2021
[root@localhost ~]# 

  • 5)、格式错误及相关注意事项:
    需要注意的是用 / 斜杠 的区间前面的 * 号不能去除。如果去除 * 号会提示命令格式错误,要求重新编辑。
[root@localhost ~]# crontab -e
no crontab for root - using an empty one

/3 * * * * date >> 3minute.txt    ## 当 /3 前没有 * 号时,保存文档                                                                                                                                                                                      
~                                                                                                      
~                                                                                                      
~                                                                                                      
:wq    ## 保存并退出

crontab: installing new crontab
"/tmp/crontab.vzxojY":1: bad minute
errors in crontab file, can't install.
Do you want to retry the same edit?    ## 系统会提示出错,并问是否进行修改 

Do you want to retry the same edit? y    ## 输入 y,进行修改。n 退出 crontab 编辑

*/3 * * * * date >> 3minute.txt    ## 输入 y,/3 前加上 * 号可正常保存退出                                                              
~                                                                                                      
~                                                                                                      
~                                                                                                      
:wq    ## 保存并退出

crontab: installing new crontab    ## 新的 crontab 计划创建成功
[root@localhost ~]# 
[root@localhost ~]# ll    ## 等待一段时间,已经有 3minute.txt 的文档,大小 87 字节,最后修改时间 08:51
total 4
-rw-r--r--. 1 root root 87 Sep 26 08:51 3minute.txt
drwxr-xr-x. 4 root root 36 Sep 11 08:53 test
[root@localhost ~]# 
[root@localhost ~]# cat 3minute.txt    ## 列出 3minute.txt 文件内容,已有数据
Sun Sep 26 08:45:01 CST 2021
Sun Sep 26 08:48:01 CST 2021
Sun Sep 26 08:51:01 CST 2021
[root@localhost ~]# 

  • 其他格式错误也会提示是否重新编辑,当提示是否重新编辑的时候,输入 n 退出 crontab 的创建。如需创建 crontab 要重新 crontab -e。输入 y 则进入原来编辑的基础上进行修改。下面的例子是输少了一个 * 号而提示格式错误需要重新修改。
[root@localhost ~]# crontab -e    ## 创建 crontab 计划作业
no crontab for root - using an empty one

*/2 * * * date >> 2minute.txt    ## 内容输少一个 * 号                                                                                                  
~                                                                                                      
~                                                                                                      
~                                                                                                      
:wq    ## 保存并退出

"/tmp/crontab.eYnQoX":1: bad day-of-week
errors in crontab file, can't install.
Do you want to retry the same edit?    ## 格式错误,系统会提示出错,并问是否进行修改  

Do you want to retry the same edit? n    ## 当输入 n 的时候,退出 crontab 编辑 
crontab: edits left in /tmp/crontab.eYnQoX
[root@localhost ~]# 
[root@localhost ~]# crontab -l    ## 查询当前的 crontab 也是没有任务
no crontab for root
[root@localhost ~]# 

Do you want to retry the same edit? y    ## 输入 y,则进入原来的编辑基础进行修改

*/2 * * * * date >> 2minute.txt    ## 加上 1 个 * 号                                                                                    
~                                                                                                      
~                                                                                                      
~                                                                                                      
:wq    ## 保存并退出

crontab: installing new crontab    ## crontab 创建成功
[root@localhost ~]# 
[root@localhost ~]# ll    ## 等待一段时间,已经有 2minute.txt 这个文件,大小 87 字节,最后修改时间 09:02
total 4
-rw-r--r--. 1 root root 87 Sep 26 09:02 2minute.txt
drwxr-xr-x. 4 root root 36 Sep 11 08:53 test
[root@localhost ~]# 
[root@localhost ~]# cat 2minute.txt    ## 查看文件内容 
Sun Sep 26 08:58:01 CST 2021
Sun Sep 26 09:00:01 CST 2021
Sun Sep 26 09:02:01 CST 2021
[root@localhost ~]# 

  • 同理,调用脚本的方式也是这样,只要 crontab 的格式错误也会提示重新编辑,输入 n 退出 crontab,输入 y 进入编辑。下面的例子是 / 斜杠没有 * 号 和 输少了两个 * 号而提示格式错误需要重新修改。

  • 新建的脚本文件一定要有 x 可执行权限。 chmod u+x 增加用户的可执行权限后再 crontab -e 编辑计划作业,编辑 crontab 的时候要写清楚脚本的路径,如 /root/mydate.sh 。如没有写明路径会因路径不明而导致执行计划任务没有结果输出。

[root@localhost ~]# vim mydate.sh    ## 当前目录下创建 mydate.sh 脚本  

date >> 2minute.txt    ## 内容:输出 date 到  2minute.txt 文件                                                                                                     
~                                                                                                      
~                                                                                                      
~                                                                                                      
~                                                                                                      
:wq    ## 保存并退出


[root@localhost ~]# 
[root@localhost ~]# chmod u+x mydate.sh    ## 赋予 x 执行权限 
[root@localhost ~]# ll
total 4
-rwxr--r--. 1 root root 20 Sep 26 09:09 mydate.sh    ## 已有 x 权限的脚本
drwxr-xr-x. 4 root root 36 Sep 11 08:53 test
[root@localhost ~]# 

[root@localhost ~]# pwd    ## 查看当前路径
/root      

[root@localhost ~]# crontab -e    ## 创建 crontab 计划作业
no crontab for root - using an empty one

/2 * * /root/mydate.sh    ## 输入错误的格式,/2 前没有 * 号,而且后面也缺少两个 * 号                                                                                      
~                                                                                                      
~                                                                                                      
~                                                                                                      
~                                                                                                      
:wq    ## 保存并退出
 
"/tmp/crontab.OAqHeq":1: bad minute
errors in crontab file, can't install.
Do you want to retry the same edit?     ## 提示错误,是否进行修改

Do you want to retry the same edit? y    ## 输入 y 进行修改

*/2 * * * *  /root/mydate.sh    ## 输入正确的格式                                                                                         
~                                                                                                      
~                                                                                                      
~                                                                                                      
:wq    ## 保存并退出
                
crontab: installing new crontab    ## crontab创建成功
[root@localhost ~]# 
[root@localhost ~]# ll    ## 等待一段时间查看目录
total 8
-rw-r--r--. 1 root root 116 Sep 26 09:42 2minute.txt    ## 已有 2minute.txt 文件,大小 116 字节,最后修改时间 09:42
-rwxr--r--. 1 root root  20 Sep 26 09:09 mydate.sh
drwxr-xr-x. 4 root root  36 Sep 11 08:53 test
[root@localhost ~]# cat 2minute.txt    ## 查看  cat 2minute.txt 内容
Sun Sep 26 09:36:02 CST 2021
Sun Sep 26 09:38:01 CST 2021
Sun Sep 26 09:40:01 CST 2021
Sun Sep 26 09:42:01 CST 2021
[root@localhost ~]# 

6)、指定时间输出 date 。
例:每小时的 0分钟(整点),15分钟、30分钟、45分钟 输出 date 时间到当前目录 date.txt 文件,如果没有 date.txt 文件则会自动创建一个。指定时间的输出,不要分钟区间的 * 号,直接写上时间。单个时间参数直接取代 * 号的位置,多个时间参数用 ,逗号隔开。

[root@localhost ~]# crontab -e    ## 创建 crontab 计划作业
no crontab for root - using an empty one

0,15,30,45 * * * * date >> date.txt    ## 多个时间参数写到分钟的区间,用逗号隔开。不用写 * 号                                                                                      
~                                                                                                      
~                                                                                                      
~                                                                                                      
:wq    ## 保存并退出

[root@localhost ~]# ll    ## 等待一段时间,已经有 date.txt 文件,大小 290 字节,最后修改时间 12:30 分
total 4
-rw-r--r--. 1 root root 290 Sep 26 12:30 date.txt
drwxr-xr-x. 4 root root  36 Sep 11 08:53 test
[root@localhost ~]# 
[root@localhost ~]# cat date.txt    ## 列出 date.txt 文件内容
Sun Sep 26 10:15:01 CST 2021
Sun Sep 26 10:30:01 CST 2021
Sun Sep 26 10:45:01 CST 2021
Sun Sep 26 11:00:01 CST 2021
Sun Sep 26 11:15:01 CST 2021
Sun Sep 26 11:30:01 CST 2021
Sun Sep 26 11:45:01 CST 2021
Sun Sep 26 12:00:01 CST 2021
Sun Sep 26 12:15:01 CST 2021
Sun Sep 26 12:30:01 CST 2021
[root@localhost ~]# 


  • 用脚本形式指定时间输出 date 。
    例:每小时的 0分钟(整点),10分钟、20分钟、30分钟、40分钟、50分钟 输出 date 时间到 当前目录 date.txt 文件,如果没有 date.txt 文件则会自动创建一个。
[root@localhost ~]# vim output_date.sh    ## 当前目录下编辑 output_date.sh 脚本

date >> date.txt    ## 内容:输入出 date 到 date.txt 文件                                                                                          
~                                                                                                      
~                                                                                                      
~                                                                                                      
:wq    ## 保存并退出    

[root@localhost ~]# 
[root@localhost ~]# chmod u+x output_date.sh    ##  赋予 output_date.sh 脚本 x 可执行权限
[root@localhost ~]# 
[root@localhost ~]# ll
total 4
-rwxr--r--. 1 root root 17 Sep 26 12:41 output_date.sh    ## output_date.sh 已有 x 可执行权限
drwxr-xr-x. 4 root root 36 Sep 11 08:53 test               
[root@localhost ~]# 
[root@localhost ~]# crontab -e    ## 创建 crontab 计划作业

0,10,20,30,40,50 * * * *  /root/output_date.sh    ## 内容:每小时的0分,10分,20分,30分,40分,50分 调用 output_date.sh 脚本                                                                                                                                                                                                                                                                                        
~                                                                                                      
~                                                                                                      
~                                                                                                      
:wq    ## 保存并退出

[root@localhost ~]# 
[root@localhost ~]# ll    ## 等待一段时间,已有 date.txt 文件,大小 145 字节,最后修改时间 13:30
total 8
-rw-r--r--. 1 root root 145 Sep 26 13:30 date.txt
-rwxr--r--. 1 root root  17 Sep 26 12:41 output_date.sh
drwxr-xr-x. 4 root root  36 Sep 11 08:53 test
[root@localhost ~]# 
[root@localhost ~]# 
[root@localhost ~]# cat date.txt    ## 查看  date.txt 文件内容
Sun Sep 26 12:50:01 CST 2021
Sun Sep 26 13:00:01 CST 2021
Sun Sep 26 13:10:01 CST 2021
Sun Sep 26 13:20:01 CST 2021
Sun Sep 26 13:30:01 CST 2021
[root@localhost ~]# 

7)、例:每天晚上 22:23、22:24、22:25 输出 date 到 mydate.txt 文件。

[root@localhost ~]# crontab -e    ## 创建 crontab 计划作业

23 22 * * * date >> mydate.txt    ## 22:23分输出 date 到 mydate.txt 文件
24 22 * * * date >> mydate.txt    ## 22:24分输出 date 到 mydate.txt 文件
25 22 * * * date >> mydate.txt    ## 22:25分输出 date 到 mydate.txt 文件                                                                                              
~                                                                                                             
~                                                                                                             
~                                                                                                             
:wq    ## 保存并退出

crontab: installing new crontab    ## crontab 创建成功
[root@localhost ~]# 
[root@localhost ~]# ll    ## 等待 22:25分后查看当前目录,就会有 mydate.txt 文件生成
total 4
-rw-r--r--. 1 root root 87 Sep 26 22:25 mydate.txt    ## 生成的 mydate.txt 文件
drwxr-xr-x. 4 root root 36 Sep 19 10:31 test
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 查看文件内容,就是 crontab 输出的 date
Sun Sep 26 22:23:01 CST 2021
Sun Sep 26 22:24:01 CST 2021
Sun Sep 26 22:25:01 CST 2021
[root@localhost ~]# 


  • 用脚本形式完成:每天晚上 22:40、22:42、22:44 输出 date 到 mydate.txt 文件。
[root@localhost ~]# vim date.sh    ## 编辑 date.sh 脚本文件

date >> mydate.txt    ## 脚本只记录执行内容,date 输出到  mydate.txt 文件                                                                                
~                                                                                                             
~                                                                                                             
~                                                                                                             
:wq    ## 保存并退出                                  

[root@localhost ~]# 
[root@localhost ~]# chmod u+x date.sh    ## 赋予脚本文件的拥有者 x 执行权限 
[root@localhost ~]# 
[root@localhost ~]# ll
total 4
-rwxr--r--. 1 root root 93 Sep 26 22:35 date.sh    ## 拥有者有 x 执行权限
drwxr-xr-x. 4 root root 36 Sep 19 10:31 test
[root@localhost ~]# 
[root@localhost ~]# crontab -e    ## 创建 crontab 计划

40 22 * * * /root/date.sh    ## 22:40 分调用 /root/date.sh 脚本
42 22 * * * /root/date.sh    ## 22:42 分调用 /root/date.sh 脚本
44 22 * * * /root/date.sh    ## 22:44 分调用 /root/date.sh 脚本                                                                                                                                                                                                          
~                                                                                                             
~                                                                                                             
~                                                                                                             
:wq    ## 保存并退出   
 
crontab: installing new crontab    ## crontab 计划创建成功
[root@localhost ~]# 
[root@localhost ~]# ll    ## 等待执行时间过去后查看目录内容,已有 mydate.txt 文件
total 8
-rwxr--r--. 1 root root 19 Sep 26 22:38 date.sh      ## 脚本    
-rw-r--r--. 1 root root 87 Sep 26 22:44 mydate.txt    ## 脚本输出的文件
drwxr-xr-x. 4 root root 36 Sep 19 10:31 test
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt   ## 查看文件内容 
Sun Sep 26 22:40:01 CST 2021
Sun Sep 26 22:42:01 CST 2021
Sun Sep 26 22:44:01 CST 2021
[root@localhost ~]# 
         

8)、例:每天 1 点到 3 点的第 10 分钟 和第 50 分钟把 date 输出到 1-3date.txt 文件。

[root@localhost ~]# crontab -e    ## 创建 crontab 计划

## 1点 到 3 点的 10 分、50 分执行 date 输出到 1-3date.txt 文件
10,50 1-3 * * * date >> 1-3date.txt                                                                                              
~                                                                                                             
~                                                                                                             
~                                                                                                             
:wq    ## 保存并推出

crontab: installing new crontab
[root@localhost ~]#
  • 例:每天 4 点到 6 点的第 20 分钟 和第 40 分钟用脚本形式把 date 输出到 4-6date.txt 文件。
[root@localhost ~]# vim 4-6date.sh    ## 编辑脚本并保存为 4-6date.sh

date >> 4-6date.txt    ## 脚本内容:date 输出到 4-6date.txt 文件                                                                                                       
~                                                                                                             
~                                                                                                             
~                                                                                                             
:wq    ## 保存并退出 

[root@localhost ~]# 
[root@localhost ~]# chmod u+x 4-6date.sh    ## 赋予脚本拥有者 x 执行权限 
[root@localhost ~]# 
[root@localhost ~]# ll
total 4
-rwxr--r--. 1 root root 20 Sep 27 00:55 4-6date.sh    ## 拥有者 x 权限
drwxr-xr-x. 4 root root 36 Sep 19 10:31 test
[root@localhost ~]# 
[root@localhost ~]# crontab -e    ## 编辑 crontab 计划
## 一个用户可拥有多个计划作业
10,50 1-3 * * * date >> 1-3date.txt
20,40 4-6 * * * /root/4-6date.sh    ## 每天 4 点到 6 点的第 20 分钟 和第 40 分钟调用脚本                                                                                     
~                                                                                                             
~                                                                                                             
~                                                                                                             
:wq    ## 保存并退出

[root@localhost ~]# ll    ## 等待执行时间过去后查看目录内容,已有 1-3date.txt、 4-6date.txt 文件
total 12
-rw-r--r--. 1 root root 174 Sep 27 03:50 1-3date.txt    ## 1点-3点 date 输出的文件
-rwxr--r--. 1 root root  20 Sep 27 00:55 4-6date.sh    ## 脚本
-rw-r--r--. 1 root root 174 Sep 27 06:40 4-6date.txt    ## 4点-6点 date 输出的文件
drwxr-xr-x. 4 root root  36 Sep 19 10:31 test
[root@localhost ~]# 
[root@localhost ~]# cat 1-3date.txt    ## 查看 1-3date.txt 内容
Mon Sep 27 01:10:01 CST 2021
Mon Sep 27 01:50:01 CST 2021
Mon Sep 27 02:10:01 CST 2021
Mon Sep 27 02:50:01 CST 2021
Mon Sep 27 03:10:01 CST 2021
Mon Sep 27 03:50:01 CST 2021
[root@localhost ~]# cat 4-6date.txt    ## 查看 4-6date.txt 内容 
Mon Sep 27 04:20:01 CST 2021
Mon Sep 27 04:40:01 CST 2021
Mon Sep 27 05:20:01 CST 2021
Mon Sep 27 05:40:01 CST 2021
Mon Sep 27 06:20:01 CST 2021
Mon Sep 27 06:40:01 CST 2021
[root@localhost ~]# 
            

9)、例:每逢周 六、日的 1:00 输出 date 到 mydate.txt。

[root@localhost ~]# crontab -e    ## 创建 crontab 计划

0 1 * * 6,7  date >> mydate.txt     ## 每逢周六、日的 1:00 输出 date 到 mydate.txt                                                                                        
~                                                                                                      
~                                                                                                      
~                                                                                                      
:wq    ## 保存并退出

crontab: installing new crontab    ## crontab 创建成功
[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-25 0:59:00"    ## 更改时间为周六 0:59
Sat Sep 25 00:59:00 CST 2021    ## 更改的时间 
[root@localhost ~]# 
[root@localhost ~]# date    ## 等待一会,查看时间
Sat Sep 25 01:00:22 CST 2021    ## 已过 crontab 设定的 1点整执行时间
[root@localhost ~]# 
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 root root 29 Sep 25 01:00 mydate.txt    ## 已产生 mydate.txt 文件
drwxr-xr-x. 4 root root 36 Sep 11 08:53 test
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 查看文件内容,符合 crontab 设置的条件,周六晚 1 点整输出
Sat Sep 25 01:00:01 CST 2021
[root@localhost ~]# 

[root@localhost ~]# date -s "2021-9-26 0:59:00"    ## 更改时间为周日 0:59
Sun Sep 26 00:59:00 CST 2021    ## 更改后的时间
[root@localhost ~]# 
[root@localhost ~]# date
Sun Sep 26 01:01:09 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 周日同样符合要求的输出结果 
Sat Sep 25 01:00:01 CST 2021
Sun Sep 26 01:00:02 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-27 0:59:00"    ## 更改时间为周一 0:59
Mon Sep 27 00:59:00 CST 2021    ## 更改后的时间
[root@localhost ~]# 
[root@localhost ~]# date
Mon Sep 27 01:00:24 CST 2021    ## 已过预设的执行时间
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 由于周一不符合 crontab 预设的要求,所以没有输出 date 
Sat Sep 25 01:00:01 CST 2021
Sun Sep 26 01:00:02 CST 2021
[root@localhost ~]# 

[root@localhost ~]# date -s "2021-9-28 0:59:00"    ## 更改时间为周二 0:59
Tue Sep 28 00:59:00 CST 2021    ## 更改后的时间    
[root@localhost ~]# 
[root@localhost ~]# date     ## 已过预设的执行时间
Tue Sep 28 01:00:31 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt     ## 由于周二不符合 crontab 预设的要求,所以没有输出 date  
Sat Sep 25 01:00:01 CST 2021
Sun Sep 26 01:00:02 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-10-2 0:59:00"    ## 更改时间为10月2号 周六 0:59
Sat Oct  2 00:59:00 CST 2021     ## 更改后的时间      
[root@localhost ~]# 
[root@localhost ~]# date    ## 已过预设的执行时间
Sat Oct  2 01:00:39 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt     ## 周六符合 crontab 预设要求,所以有 date 输出
Sat Sep 25 01:00:01 CST 2021
Sun Sep 26 01:00:02 CST 2021
Sat Oct  2 01:00:02 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-10-3 0:59:00"     ## 更改时间为10月3号 周日 0:59
Sun Oct  3 00:59:00 CST 2021     ## 更改后的时间  
[root@localhost ~]# 
[root@localhost ~]# date    ## 已过预设的执行时间
Sun Oct  3 01:00:14 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 周日符合 crontab 预设要求,所以有 date 输出 
Sat Sep 25 01:00:01 CST 2021
Sun Sep 26 01:00:02 CST 2021
Sat Oct  2 01:00:02 CST 2021
Sun Oct  3 01:00:01 CST 2021
[root@localhost ~]# 

10)、例:每周日的 00:00 输出 date 到 mydate.txt。

[root@localhost ~]# crontab -e     ## 创建 crontab 计划

0 0 * * 7  date >> mydate.txt    ## 周日的 00:00 输出 date 到 mydate.txt                                                                                                                                                                                            
~                                                                                                      
~                                                                                                      
~                                                                                                      
:wq

crontab: installing new crontab
[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-4 23:59:00"  ## 更改时间,9月4日周六 23:59分
Sat Sep  4 23:59:00 CST 2021    ## 已更改的时间
[root@localhost ~]# 
[root@localhost ~]# date
Sun Sep  5 00:00:24 CST 2021    ## 0 点后是周日,执行 crontab 的时间
[root@localhost ~]# 
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 root root 29 Sep  5 00:00 mydate.txt    ## 已生成 mydate.txt 文件
drwxr-xr-x. 4 root root 36 Sep 11  2021 test
[root@localhost ~]# cat mydate.txt    ## 查看文件内容,已有 5 号周日输出的 date 记录     
Sun Sep  5 00:00:01 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-11 23:59:00"    ## 再把时间更改到 9 月 11 号 周六 23:59
Sat Sep 11 23:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Sun Sep 12 00:00:08 CST 2021     ## 0 点后是周日,执行 crontab 的时间
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 查看文件内容,已新增 12 号周日输出的 date 记录     
Sun Sep  5 00:00:01 CST 2021
Sun Sep 12 00:00:01 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-18 23:59:00"    ## 再把时间更改到 9 月 18 号 周六 23:59
Sat Sep 18 23:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date    ## 0 点后是周日,执行 crontab 的时间
Sun Sep 19 00:00:58 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 查看文件内容,已新增 19 号周日输出的 date 记录      
Sun Sep  5 00:00:01 CST 2021
Sun Sep 12 00:00:01 CST 2021
Sun Sep 19 00:00:01 CST 2021
[root@localhost ~]# 

## -------- 已下是更改一些非周日的时间。
## -------- 通过测试 ,非周日即使过了 0 点,也不会输出 date 到 mydate.txt 文件
[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-22 23:59:00"    ## 把时间更改到 9 月 22 号 周三 23:59
Wed Sep 22 23:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Thu Sep 23 00:00:54 CST 2021    ## 9月23日 0点,周四不符合 crontab 预设要求,所以不会输出 date
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt 
Sun Sep  5 00:00:01 CST 2021
Sun Sep 12 00:00:01 CST 2021
Sun Sep 19 00:00:01 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-27 23:59:00"    把时间更改到 9 月 27 号 周一 23:59
Mon Sep 27 23:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Tue Sep 28 00:00:48 CST 2021     ## 9月28日 0点,周二不符合 crontab 预设要求,所以不会输出 date
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt 
Sun Sep  5 00:00:01 CST 2021
Sun Sep 12 00:00:01 CST 2021
Sun Sep 19 00:00:01 CST 2021
[root@localhost ~]# 

11)、例:每月的 1号、10号、20号、30号的 3 点 输出 date 到 mydate.txt。

[root@localhost ~]# crontab -e    ## 编辑 crontab 计划

0 3 1,10,20,30 * * date >> mydate.txt    ## 每月的 1号、10号、20号、30号的 3 点 输出 date 到 mydate.txt                                                                      
~                                                                                                      
~                                                                                                      
~                                                                                                      
:wq

crontab: installing new crontab
[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-1 2:59:00"    ## 把时间更改到 9 月 1 号 周三 2:59
Wed Sep  1 02:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date    
Wed Sep  1 03:00:31 CST 2021
[root@localhost ~]# 
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 root root 29 Sep  1 03:00 mydate.txt    ## 3点整,生成 mydate.txt 文件
drwxr-xr-x. 4 root root 36 Sep 11  2021 test
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 查看文件内容 
Wed Sep  1 03:00:01 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-10 2:59:00"    ## 把时间更改到 9 月 10 号 周五 2:59
Fri Sep 10 02:59:00 CST 2021
[root@localhost ~]# date
Fri Sep 10 03:03:39 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 3点整生成第二条数据 
Wed Sep  1 03:00:01 CST 2021
Fri Sep 10 03:00:01 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-20 2:59:00"    ## 把时间更改到 9 月 20 号 周一 2:59
Mon Sep 20 02:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Mon Sep 20 03:00:21 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 3点整生成第三条数据     
Wed Sep  1 03:00:01 CST 2021
Fri Sep 10 03:00:01 CST 2021
Mon Sep 20 03:00:01 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-30 2:59:00"     ## 把时间更改到 9 月 30 号 周四 2:59
Thu Sep 30 02:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Thu Sep 30 03:00:31 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 3点整生成第三条数据 
Wed Sep  1 03:00:01 CST 2021
Fri Sep 10 03:00:01 CST 2021
Mon Sep 20 03:00:01 CST 2021
Thu Sep 30 03:00:01 CST 2021
[root@localhost ~]# 

## -------- 已下是更改一些非1号、10号、20号、30号的时间。
## -------- 通过测试 ,非1号、10号、20号、30号即使过了 3 点,也不会输出 date 到 mydate.txt 文件
[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-13 2:59:00"    ## 时间设置为 9月13日 2:59:00 
Mon Sep 13 02:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Mon Sep 13 03:00:08 CST 2021    ## 过了预设的时间 3 点
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 由于不是预设的 1号、10号、20号、30号,所以没有 date 输出
Wed Sep  1 03:00:01 CST 2021
Fri Sep 10 03:00:01 CST 2021
Mon Sep 20 03:00:01 CST 2021
Thu Sep 30 03:00:01 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-28 2:59:00"     ## 时间设置为 9月28日 2:59:00 
Tue Sep 28 02:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Tue Sep 28 03:00:55 CST 2021    ## 过了预设的时间 3 点
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt     ## 由于不是预设的 1号、10号、20号、30号,所以没有 date 输出
Wed Sep  1 03:00:01 CST 2021 
Wed Sep  1 03:00:01 CST 2021
Fri Sep 10 03:00:01 CST 2021
Mon Sep 20 03:00:01 CST 2021
Thu Sep 30 03:00:01 CST 2021
[root@localhost ~]# 

12)、例:3月、6月、9月、12月的第 30 日 00:00 输出 date 到 mydate.txt 文件。

[root@localhost ~]# crontab -e     ## 编辑 crontab 计划

0 0 30 3,6,9,12 * date >> mydate.txt    ## 3月、6月、9月、12月的第 30 日 00:00 输出 date 到 mydate.txt 文件                                                                                            
~                                                                                                      
~                                                                                                      
~                                                                                                      
:wq    ## 保存并退出

crontab: installing new crontab
[root@localhost ~]# 
[root@localhost ~]# date -s "2021-3-29 23:59:00"    ## 把时间更改到 3 月 29 号 周一 23:59
Mon Mar 29 23:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date    ## 3月30日 0 点以后
Tue Mar 30 00:00:18 CST 2021
[root@localhost ~]# 
[root@localhost ~]# ll    ## 0点过去后生成 mydate.txt 文件
total 4
-rw-r--r--. 1 root root 29 Mar 30 00:00 mydate.txt
drwxr-xr-x. 4 root root 36 Sep 11  2021 test
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 查看 mydate.txt 文件已有 3月30 的数据 
Tue Mar 30 00:00:01 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-6-29 23:59:00"    ## 把时间更改到 6 月 29 号 周二 23:59
Tue Jun 29 23:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Wed Jun 30 00:00:30 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 0点过去后, 查看 mydate.txt 文件已新增 6月30 的数据
Tue Mar 30 00:00:01 CST 2021
Wed Jun 30 00:00:01 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-29 23:59:00"    ## 把时间更改到 9 月 29 号 周三 23:59
Wed Sep 29 23:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Thu Sep 30 00:00:48 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 0点过去后, 查看 mydate.txt 文件已新增 9月30 的数据 
Tue Mar 30 00:00:01 CST 2021
Wed Jun 30 00:00:01 CST 2021
Thu Sep 30 00:00:01 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-12-29 23:59:00"    ## 把时间更改到 12 月 29 号 周三 23:59
Wed Dec 29 23:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Thu Dec 30 00:01:01 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt     ## 0点过去后, 查看 mydate.txt 文件已新增 12月30 的数据  
Tue Mar 30 00:00:01 CST 2021
Wed Jun 30 00:00:01 CST 2021
Thu Sep 30 00:00:01 CST 2021
Thu Dec 30 00:00:01 CST 2021
[root@localhost ~]# 

## -------- 已下是更改一些非3月、6月、9月、12月的29号时间。
## -------- 通过测试 ,非3月、6月、9月、12月的29号时间即使过了 0 点进入30号,也不会输出 date 到 mydate.txt 文件
[root@localhost ~]# 
[root@localhost ~]# date -s "2021-5-29 23:59:00"     ## 把时间更改到 5 月 29 号 周六 23:59
Sat May 29 23:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Sun May 30 00:02:40 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 0 点过后没有输出 5月30 的数据 
Tue Mar 30 00:00:01 CST 2021
Wed Jun 30 00:00:01 CST 2021
Thu Sep 30 00:00:01 CST 2021
Thu Dec 30 00:00:01 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date -s "2021-11-29 23:59:00"    ## 把时间更改到 11 月 29 号 周一 23:59
Mon Nov 29 23:59:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Tue Nov 30 00:00:32 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 0 点过后没有输出 11月30 的数据  
Tue Mar 30 00:00:01 CST 2021
Wed Jun 30 00:00:01 CST 2021
Thu Sep 30 00:00:01 CST 2021
Thu Dec 30 00:00:01 CST 2021
[root@localhost ~]# 

13)、每隔 1 天 2:30 输出 date 到 mydate.txt 文件。

[root@localhost ~]# crontab -e     ## 编辑 crontab 计划

30 2 */2 * * date >> mydate.txt     ## 每隔 1 天 2:30 输出 date 到 mydate.txt 文件                                                                                       
~                                                                                                             
~                                                                                                             
~                                                                                                             
:wq    ## 保存并退出

[root@localhost ~]# date -s "2:29:00"     ## 把时间更改为 2:29
Mon Sep 27 02:29:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Mon Sep 27 02:30:46 CST 2021
[root@localhost ~]# 
[root@localhost ~]# ll
total 4
-rw-r--r--. 1 root root 29 Sep 27 02:30 mydate.txt    ## 2:30 生成 mydate.txt
drwxr-xr-x. 4 root root 36 Sep 19 10:31 test
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt 
Mon Sep 27 02:30:01 CST 2021    ## 27号 2:30 的数据
[root@localhost ~]# 
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-28 2:29:00"    ## 把时间改为 9月28日 2:29
Tue Sep 28 02:29:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Tue Sep 28 02:30:37 CST 2021
[root@localhost ~]# cat mydate.txt    ## 28号属于第二天,不会输出数据 
Mon Sep 27 02:30:01 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-29 2:29:00"    ## 把时间改为 9月29日 2:29
Wed Sep 29 02:29:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Wed Sep 29 02:30:52 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 29号属于第三天,中间隔开了 28号,所以输出 29号的数据 
Mon Sep 27 02:30:01 CST 2021
Wed Sep 29 02:30:01 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-9-30 2:29:00"    ## 把时间改为 9月30日 2:29
Thu Sep 30 02:29:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Thu Sep 30 02:30:58 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 29号输出了数据,30号不会输出数据 
Mon Sep 27 02:30:01 CST 2021
Wed Sep 29 02:30:01 CST 2021
[root@localhost ~]# 

[root@localhost ~]# 
[root@localhost ~]# date -s "2021-10-1 2:29:00"     ## 把时间改为 10月1日 2:29
Fri Oct  1 02:29:00 CST 2021
[root@localhost ~]# 
[root@localhost ~]# date
Fri Oct  1 02:30:25 CST 2021
[root@localhost ~]# 
[root@localhost ~]# cat mydate.txt    ## 30号没有生成数据,1号可以输出数据 
Mon Sep 27 02:30:01 CST 2021
Wed Sep 29 02:30:01 CST 2021
Fri Oct  1 02:30:01 CST 2021
[root@localhost ~]# 

  • 以上是记录了 crontab 命令进行的计划任务测试,有直接通过 crontab -e 进行编辑。也有先编辑脚本后通过 crontab -e 调用脚本的两种方式。
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 229,460评论 6 538
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 99,067评论 3 423
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 177,467评论 0 382
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 63,468评论 1 316
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 72,184评论 6 410
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 55,582评论 1 325
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 43,616评论 3 444
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 42,794评论 0 289
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 49,343评论 1 335
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 41,096评论 3 356
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 43,291评论 1 371
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 38,863评论 5 362
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 44,513评论 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 34,941评论 0 28
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 36,190评论 1 291
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 52,026评论 3 396
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 48,253评论 2 375

推荐阅读更多精彩内容