- 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 计划作业
- ④、root 对 torres 指定的 crontab 任务开始后,只要到了指令预设的时间,mydate.txt 文件就会生成在 torres 家目录下,并一直存储数据。如,root 指定的 crontab 指令是 * * * * * date >> mydate.txt,每分钟输出 date 到 mydate.txt 文件。开始执行后 1 分钟就会生成 mydate.txt 文件在 torres 的家目录下,并且一直存储每一分钟 date 输出的数据。
- ⑤、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 调用脚本的两种方式。