- crontab的用法
相对与 at,crontab 的优点就是能够周期性的执行某个命令,at 却只能执行一次。
crontab 的后台进程名字是 crond ,cron 也是系统服务。我们先简单介绍下 cron 的使用命 令,然后来在结合实例讲解
制定个人计划任务
#crontab -e 编辑当前用户的 cron 表
#crontab -l 查看当前用户的 cron 表
#crontab -r 删除当前用户的 cron 进程
#crontab -u 用户名 以某用户的身份来控制 cron 表
还有个重要的知识点,就是当用户的计划任务建立后是存放在 var/spool/cron 这个目录。
1、编辑用户的计划任务列表
当使用 crontab -e 编辑当前用户的 cron 表后,会出现一个类似 vi 界面,cron 的格式
是这样的。分成两列,左边是时间,右边是运行的命令。时间是由 5 个部分组成。
例:* * * * * wall hello everyone
5 个星号分别代表:minute hour day-of-month month-of-year day-of-week ,而 wall hello
everyone 这是命令内容。上面的意识是每分每小时每天每月每周广播 hello everyone。
记法口诀:分时天月周1
分钟 小时 日 月 周 [用户名] 命令
这里的 5 个星号就代表的时间和日期:
第一个*星号代表个小时的第几分钟:minute 范围是从 0-59
第二个*星号代表每天的第几个小时:hour 范围是从 0-23
第三个*星号代表每月的第几个日:day-of-month 范围从 1-31
第四个*星号代表没年的第几个月:month-of-year 范围从 1-12
第五个*星号代表每周的星期几:day-of-week 范围从 0-6,其中 0 表示星期日
用户名:也就是执行程序要通过哪个用户来执行,这个一般可以省略;
命令:执行的命令和参数。
除了“*”以外,还可以用“-”、“,”、“/”与数字构成表达式来表示复杂的时间关系。
– :可以表示一个连续的时间范围,如 1-4。
,:可以表示间隔不连续的时间范围,如 3,5,7。
/:可以指定间隔的频率,如分钟字段中的 */4 ,表示每隔 4 分钟。
例如:
请写出下列任务时间是什么? 请写出下列要求的时间
0 23 * * * 每天的 23 点整 周一到周五每天 17:00 0 17 * * 1-5
30 12,0 * * * 每天的 12:30 和 00:30 每周一、三、五的 8 点 30 分 30 8 * * 1,3,5
0 22 1 1-12 * 1-12 月每月 1 号 22 点整 8 点到 18 点之间每隔 2 小时 * 8-18/2 * * *
*/5 * * * * 每 5 分钟 每隔 3 天 * * */3 * *

- 举列说明
下面举例来学习用户计划任务的编辑。
例:由 root 用户设置一份 crontab 计划任务列表,完成以下任务
每天早上 7:50 自动开启 sshd 服务,22:50 关闭 sshd 服务。
每隔 5 天清空一次 FTP 服务器的公共目录/var/ftp/pub 中的数据。
每周六的 7:30 重启 httpd 服务。
每周一、三、五的下午 17:30,使用 tar 命令自动备份 /etc/httpd 目录。
# crontab –e
50 7 * * * /usr/bin/systemctl start sshd
50 22 * * * /usr/bin/systemctl stop sshd
0 * */5 * * /usr/bin/rm –rf /var/ftp/pub/*
30 7 * * 6 /usr/bin/systemctl restart httpd
30 17 * * 1,3,5 /usr/bin/tar jcvf httpd.tar.bz2 /etc/httpd
例:为用户 zxuser 设置计任务,每周日周晚上 23:55 将/etc/passwd 文件内容复制到宿主
目录中,保存为 pwd.txt。
# crontab –e – U zxuser
55 23 * * 7 /usr/bin/cp /etc/passwd /home/zxuser/pwd.txt
2、查看用户的计划任务列表
例:查看 root 用户的计划任务列表的内容。
# crontab -l
例:查看用户 zxuser 的计划任列表的内容。
# crontab –l -U zxuser
3、删除用户的计划任务列表
例:删除 root 用户的计划任务列表的内容。
# crontab -r
4、如何使要限制某个用户,不能用 cron 计划任务,如何办到?
vim /etc/cron.deny
写入用户即可。
例:配置 cron access。liweijie 不能使用 cron。这个限制不能影响其他任何用户
vim /etc/cron.deny
liweijie #添加该用户
su – liweijie
crontab –e #验证,是否可以做任务计划
在设置用户的 crontab 计划任务的过程中,由于每一条记录只能运行一行命令,难以完成更复杂的系统管理任务,因此在实际工作中,通常是先编写脚本文件,再用计划任务配置中加载脚本文件执行.
EX:
0 0 * * 1 cp -Rpf /var/www/* /root/wpbak/db_name #每周一的零点复制文件到指定文件夹
0 0 * * 1 mysqldump -u root db_name > /root/wpbak/export.sql #每周一的零点备份Mysql数据库
- 查询Crontab的日志 (针对于Ubuntu 22.04)
journalctl -u cron.service 查询所有的日志
journalctl -u cron.service | grep cp 筛选查询日志
journalctl -u cron.service | grep mysqldump
EX:
