麒麟操作系统基础知识保姆级教程(十六)定时任务

如果你想拥有你从未拥有过的东西,那么你必须去做你从未做过的事情

做运维经常会遇到数据备份,重要代码备份,配置文件备份,日志备份,执行备份的时候会占用资源,提高系统负载,那么就遇到了一个问题,在什么时候备份呢?总不能在用户访问量最高点备份吧,一般会选择在服务器负载的低谷期进行备份,这就看公司的业务决定了,外卖平台什么时候负载高呢?饭点上午10点到下午2点,下午5点到晚上2点负载最高;短视频平台什么时候负载最高呢,晚上8点到凌晨2点(上班困,下班该睡不着了),问题来了,运维人员总不能等到半夜做完备份再下班吧,都知道做运维费命,但是也不是这么费的,这时候就需要今天这篇文章了——定时任务~~~~

目录

一、定时任务配置

1、系统的配置文件

2、用户的定时任务

二、定时任务的写法

三、定时任务案例

四、定时任务注意事项

五、定时任务小结


💬欢迎交流:在学习过程中如果你有任何疑问或想法,欢迎在评论区留言,我们可以共同探讨学习的内容。你的支持是我持续创作的动力!

👍点赞、收藏与推荐:如果你觉得这篇文章对你有所帮助,请不要忘记点赞、收藏,并分享给更多的小伙伴!你们的鼓励是我不断进步的源泉!

🚀推广给更多人:如果你认为这篇文章对你有帮助,欢迎分享给更多对Linux感兴趣的朋友,让我们一起进步,共同提升!

一、定时任务配置

1、系统的配置文件

系统定时任务的位置是:/etc/crontab
1.配置定时任务:
vim编辑crontab即可
2.查看定时任务
cat /etc/crontab

2、用户的定时任务

/var/spool/cron/root    # root定时任务配置文件
/var/spool/cron/yunzhongzi  # yunzhongzi用户定时任务配置文件   普通用户很少用!
​
1.配置定时任务:
使用命令:crontab -e 编辑用户的定时任务的配置文件(常用)
查看当前登录用户root:crontab -e(有语法检测功能)====vim /var/spool/cron/root
​
2.查看定时任务
crontab -l
cat /var/spool/cron/root
​
3.排查定时任务问题时,查看两个文件
1).定时任务的日志
/var/log/cron
2).系统邮件,更加详细
[root@yunzhongziedu ~]# cat /var/spool/mail/root

二、定时任务的写法

语法格式:
* * * * * +用户 +命令
​
五颗星分别代表含义:
* * * * * root 可执行的命令
第一颗星:分钟 0-59    每分钟
第二颗星:小时 0-23    每小时
第三颗星:日   1-31    
第四颗星:月   1-12   
第五颗星:周   0-6     星期天可以用0或者7表示
​
*   表示每的意思      * * * * * 表示每分钟都执行
*/n 表示间隔n分钟     */5 * * * *  每隔5分钟执行一次
-   表示区间范围      * 0-8 * * *表示0-8点的每分钟执行
                    00 1-8 * * *表示凌晨1点到8点整点执行
,   表示间隔        * 1-8,14,17* * * 表示凌晨1点到8点 下午14点和17点每分钟执行
​
​
每小时的05分都执行一次表方法:    5 * * * *
凌晨12点表示方法:               0 0 * * *
​
用户语法格式:crontab -e ==== vim /var/spool/cron/root
* * * * *可执行的命令

三、定时任务案例

系统定时任务案例:
​
1.每天的上午8点30分,去上班(echo go to work)
30  08 * * *  echo go to work
​
2.每天晚上12点准时,回家(go home)
00 00 * * *  echo go home
​
案例3.每分钟把名字追加到yunzhongzi.txt #默认在家目录
[root@yunzhongziedu ~]# vim /etc/crontab
* * * * * root echo 于小屁 >> yunzhongzi.txt
* * * * * root echo yunzhongziedu >> yunzhongzi.txt
[root@yunzhongziedu ~]# cat yunzhongzi.txt
于小屁
yunzhongziedu
​
案例4.每隔5分钟执行一次时间同步的定时任务
*/5 * * * *每隔五分钟
05 * * * *每小时的5分钟
[root@yunzhongziedu ~]# vim /etc/crontab
 */5 * * * * root ntpdate ntp1.aliyun.com
 #注意:两条命令写入脚本中定时执行脚本
[root@db01 ~]# which ntpdate
 /usr/sbin/ntpdate
[root@db01 ~]# crontab -l
 * * * * * ntpdate ntp1.aliyun.com
重新配置用户的PATH变量:
[root@db01 ~]# crontab -l
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/.local/bin:/root/bin
* * * * * ntpdate ntp1.aliyun.com
使用绝对路径:
[root@db01 ~]# crontab -l
* * * * * /usr/sbin/ntpdate ntp1.aliyun.com

四、定时任务注意事项

定时任务不识别百分号(%)如何处理?
1、很简单,对正则表达式有没有印象 %前加个反斜杠/即可
​
2、%在脚本中没有问题,可以被识别,将shell语句写进脚本,通过定时执行脚本的方式即可,当然执行脚本可能会遇到继承变量之类的问题,这个咱们下回分解。
​
案例:
1.创建一个当前时间命名的文件
[root@yunzhongziedu ~]# touch `date +%F`.txt
[root@yunzhongziedu ~]# ll
total 12
-rw-r--r-- 1 root root    0 Mar 25 19:58 2024-03-25.txt
-rw-r--r-- 1 root root   44 Mar 25 19:43 yunzhongzi.txt
-rw-r--r-- 1 root root 1017 Mar 23 17:41 passwd.txt
-rw-r--r-- 1 root root  385 Mar 23 17:07 test.txt
2.创建一个以IP地址和时间的目录
[root@yunzhongziedu ~]# echo `hostname -I|sed 's# ##g'`_`date +%F`
10.0.0.200_2024-03-25
[root@yunzhongziedu ~]# echo `ifconfig eth0|awk 'NR==2{print $2}'`_`date +%F`
10.0.0.200_2024-03-25
3.创建主机名称+IP地址的目录
[root@yunzhongziedu ~]# mkdir `hostname`_`hostname -I`
[root@yunzhongziedu ~]# ll
total 12
-rw-r--r-- 1 root root    0 Mar 25 19:58 2024-03-25.txt
drwxr-xr-x 2 root root    6 Mar 25 20:01 yunzhongziedu_10.0.0.200
在定时任务中需要加\,或者写入脚本
[root@db01 ~]# crontab -l
 #* * * * * /usr/sbin/ntpdate ntp1.aliyun.com
 * * * * * mkdir /root/`hostname`_`date +\%F-\%M`
使用脚本:
 * * * * *  sh /root/1.sh
 [root@db01 ~]# cat 1.sh
 mkdir /root/`hostname`_`date +%F-%M`
​
注意事项:
没有开启邮件服务器的情况下:
定时任务的结果如果不定向到空或者文件中,生成大量的小文件堆积到系统中,从而导致inode号码被沾满,最终导致磁盘无法写入数据
产生临时小文件位置:
[root@yunzhongziedu ~]#  ll /var/spool/postfix/maildrop/
total 0
如果邮件服务开启了,则不会产生临时小文件。
服务优化: 邮件服务关闭,耗费服务器性能
解决方法: 
1.将结果定向到空
2.开启邮件服务
3.通过定时任务清空目录下所有的小文件
​
什么情况系统的inode号会变满  大量小文件
1.定时任务没有开启邮件服务器情况会产生临时小文件
2.服务运行过程中,开发问题产生临时小文件
3.误操作脚本问题
如何查找大量的小文件 大部分都在同一个目录下
find / -type d -size +1M
如果查找大文件  find / -size +100M

五、定时任务小结

重点:
1.配置方法
系统配置中:
vim /etc/crontab
用户配置文件:
crontab -e ==== vim /var/spool/cron/root
两点写法:
1)crontab
 * * * * * root 命令
2)用户定时任务
* * * * * 命令
3)PATH变量不同
2.语法格式
* * * * * 
分时日月周
常用: 分钟 小时
* 每
* * * * * 每分钟执行..
 */5 每5分钟 从整点开始计算 1.03创建定时任务 下次执行时间是: 1.05 1.10
 00 7-12 * * * 区间范围 执行6次
, 间隔 00  7,10,12 * * * 执行3次
笔试题: 每天凌晨执行一个命令 echo yunzhongzi 到yunzhongzi.txt文件中
00 00 * * * root echo yunzhongzi > yunzhongzi.txt
注意事项:
1./var/spool/mail/root  # 排查的时候用
2.定时任务中不认识% 需要加\
3.多条命令使用脚本
4.用户定时任务需要重新定时PATH变量
5.关闭邮件会产生临时小文件,解决方案
定时任务的结果定向到空或者文件中
通过定时任务定时清理目录

权限管理的分享到此结束,明日预告,磁盘管理~~~~~


想成为大佬,就要从小白开始,从0开始,一点一点的积累,慢慢成长,明天你就是大佬!!想学习更多麒麟操作系统的知识,关注小屁,让你成为运维老鸟~~~~~

### 如何在 Linux 银河麒麟 OS 中配置自动关机或计划关机任务 #### 使用 `kshutdown` 实现定时关机功能 对于需要无人值守的任务完成后的自动关机需求,在银河麒麟操作系统中可以利用 kshutdown 这款图形化工具来达成目的。这款应用程序提供了友好的界面用于设定具体的关闭时间以及其他选项,比如重启、注销或是让计算机进入睡眠模式等[^1]。 ```bash sudo apt install kshutdown ``` 安装完毕之后可以通过菜单启动它,并按照界面上提示输入期望的时间间隔或者指定时刻来进行相应的安排。 #### 利用命令行方式创建一次性定时关机任务 如果偏好于使用终端指令,则可以直接采用如下方法之一: - **基于 at 命令** 可以借助 `at` 来调度一次性的未来执行动作。先确保已安装此服务(`apt-get install at`),接着定义具体要触发的时间点以及希望采取的动作——即 shutdown 或 halt 指令。 ```bash echo "shutdown -h now" | at HH:MM ``` 将其中的 `HH:MM` 替换成实际想要停机的确切小时数和分钟数即可。 - **通过 sleep 加 shell 脚本组合** 对于简单的延时处理也可以考虑编写小型脚本来达到效果: ```bash #!/bin/bash SLEEP_TIME=3600 # 单位秒,这里表示一小时后 sleep $SLEEP_TIME && sudo shutdown -h now & ``` 上述例子会在后台运行一个小时计时器到期便发出硬件断电请求。 #### 修改电源按键的行为 (可选) 当遇到按下物理开关却不想立刻终止系统的状况下,调整 `/etc/systemd/logind.conf` 文件内的参数不失为一种解决方案。例如设置 `HandlePowerKey=ignore` 后再重新加载守护进程就能改变默认响应逻辑[^2]。 ```ini [Login] HandlePowerKey=ignore ``` 最后记得执行下面这条语句使更改生效: ```bash systemctl restart systemd-logind ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值