‖ 系统学习--Liunx定时任务服务
Liunx定时任务服务
在我们的日常运维中,我们需要经常备份一些数据。比如隔一断时间备份一下mysql数据库,或者半夜2点重启一下我们的网站nginx服务等等这些需要定时备份或重启的事情。
但我们不可能半夜起来备份数据或重启服务,这个时候我们就需要自动执行任务
命令:
crontab
-l 列出当前用户有哪些计划任务
-e 编辑当前用户的计划任务
-r 删除当前用户的计划任务crontab命令源自Unix系统,它是cron table(cron表)的简写。cron是一个自动执行任务的服务,而crontab则是这个服务的配置文件,通过这个文件我们可以设置何时以及如何执行特定的命令或脚本。每个用户都可以有自己的crontab文件,而系统管理员则可以控制这些文件的访问权限。
我们先来看一下crontab的配置文件语法内容
crontab配置文件目录在etc目录下有一个叫crontab的配置文件
cat /etc/crontab
[root@localhost etc]# cat /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
# For details see man 4 crontabs
# Example of job definition:
# .---------------- minute (0 - 59)
# | .------------- hour (0 - 23)
# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * user-name command to be executed
qbq1fvwhhsi64021939654.png
一、取值范围
1、分:0~59
2、时:0~23
3、日:1~31
4、月:1~12
5、周:0~7,0和7表示是星期到现在为止
注意日期和星期几不能同时写
二、四个符号:
*:表示取值范围的每一个数据
-:做连续区间表达式的,比如想表达1到7可以写成1-7
/:表示每多少个。比如想表达每10分钟一次可以写成*/10
,:表示多少个取值,比如想在1点,2点,6点执行定时,则可以写成1,2,6牛刀小试
比如我想每分钟往/home/lu/Desktop/test.txt写一句话我们可以这们写
第一步
输入crontab -e 编辑当前用户计划任务
第二步
写入用户计划
* * * * * /usr/bin/echo '这是每分钟写入内容' >> /home/Desktop/test.txt
第三步
我们查看一下有没有定时任务
crontab -l
vvc3e32eunh64021939754.png
i4qwjggrbag64021939854.png
我们写入定时任务后,会自动记录到一个文件中,文件路径在/var/spool/cron/中
ls /var/spool/cron/这时里面记录了当前用户的所有定时任务。
我们来练习一下以下题目
问题1:每月1、10、22 日的4:45 重启network 服务
* * * * *
分 时 日 月 周 命令的绝对路径
从左 向右,依次去写,不要跳级
45 2 1,10,22 * * /usr/bin/systemctl restart network
问题2:每周六、周日的下午1:10 重启network 服务
* * * * *
分 时 日 月 周 命令的绝对路径
从左 向右,依次去写,不要跳级
10 13 * * 6,7 /usr/bin/systemctl restart network问题3:每天18:00 至23:00 之间每隔30 分钟重启network 服务
* * * * *
分 时 日 月 周 命令的绝对路径
从左 向右,依次去写,不要跳级
*/30 18-23 * * * /usr/bin/systemctl restart network
问题4:每隔两天的上午8点到11点的第3和第15分钟执行一次重启
* * * * *
分 时 日 月 周 命令的绝对路径
从左 向右,依次去写,不要跳级
3,15 8-11 */2 * * /usr/sbin/reboot
问题5 :每天凌晨整点重启nginx服务。
* * * * *
分 时 日 月 周 命令的绝对路径
从左 向右,依次去写,不要跳级
0 0 * * * /usr/bin/systemctl restart nginx
问题6:每周4的凌晨2点15分执行命令
* * * * *
分 时 日 月 周 命令的绝对路径
从左 向右,依次去写,不要跳级
15 2 * * 4 /usr/sbin/reboot
问题7:工作日的工作时间内的每小时整点执行脚本。工作日 1-5工时 9-18
* * * * *
分 时 日 月 周 命令的绝对路径
从左 向右,依次去写,不要跳级
0 9-18 * * 1-5 /usr/sbin/reboot
问题8:每天凌晨2点30,执行ntpdate命令同步ntp.aliyun.com,且不输出任何信息,把命令结果,重定向到黑洞文件
/dev/null黑洞文件
备注:定时任务的命令执行,会产生日志
30 2 * * * /usr/sbin/ntpdate -u ntp.aliyun.com &> /dev/null禁止哪些用户创建定时任务/etc/cron.deny 黑名单文件 (将系统中,所有uid大于1000的用户,全部写入黑名单)
/etc/cron.allow 白名单 ,优先级高于黑名单最后,定时任务,crontab会在系统中,生成大量的邮件日志,会占用磁盘,因此我们都会关闭邮件服务即可
找到文件
[root@localhost etc]# find / -type f -name 'post*service'
find: ‘/run/user/1000/gvfs’: Permission denied
/usr/lib/systemd/system/postfix.service
查看状态
systemctl status postfix
停止服务
systemctl stop postfix
禁止开机自启
systemctl disable postfix喜欢就分享点赞一下吧
gqn2zaameog64021939954.png
更多内容在晓煜大发现公共号点击菜单课程学习
更多精彩内容微信公共号关注:晓煜大发现
opdwifupe4f64021940054.png
END最后:小伙伴还记得么,右下角 “在看” 点一下,防止获取不到,你们的支持就是我前进的动力!
喜欢就分享点赞一下吧!您的点赞是我前进的动力!
|