Linux定时任务服务(如备份数据库、重启服务等)可以通过crontab命令进行设置。crontab配置文件位于/etc目录下,每个用户可以有自己的crontab文件。Shell为crontab命令提供了执行环境,PATH包含系统中可...
‖ 系统学习--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
一、取值范围
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
我们写入定时任务后,会自动记录到一个文件中,文件路径在/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
喜欢就分享点赞一下吧
原文来源:https://mp.weixin.qq.com/s/-vim9hns81O4FoMnBL2Scw
来源:本文内容搜集或转自各大网络平台,并已注明来源、出处,如果转载侵犯您的版权或非授权发布,请联系小编,我们会及时审核处理。
声明:江苏教育黄页对文中观点保持中立,对所包含内容的准确性、可靠性或者完整性不提供任何明示或暗示的保证,不对文章观点负责,仅作分享之用,文章版权及插图属于原作者。
Copyright©2013-2024 JSedu114 All Rights Reserved. 江苏教育信息综合发布查询平台保留所有权利
苏公网安备32010402000125 苏ICP备14051488号-3技术支持:南京博盛蓝睿网络科技有限公司
南京思必达教育科技有限公司版权所有 百度统计