Linux系统管理-定时任务
2021/8/4 7:07:00
本文主要是介绍Linux系统管理-定时任务,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
Linux系统管理-定时任务
文章目录
- Linux系统管理-定时任务
- 时间同步
- 定时任务的配置文件
- 时间同步定时任务
- 定时任务编写
- 定时任务如何调试
- 服务器发邮件
定时任务的服务名:crond
1.系统级别的定时任务
- 临时文件清理
- 系统信息采集
- 日志文件切割
2.用户级别的定时任务
- 定时向互联网同步时间
- 定时备份系统配置文件
- 定时备份数据库的数据
时间同步
# 安装时间同步的命令 yum install -y ntpdate ntpdate(时间同步服务器) [root@oldboy /tmp]# ntpdate time1.aliyun.com 1 Jul 18:09:20 ntpdate[3141]: adjust time server 203.107.6.88 offset 0.001328 sec
定时任务的配置文件
命令的环境变量
[root@oldboy ~]# echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
配置文件
[root@oldboy /tmp]# vim /etc/crontab # 定时任务中,指定bash shell SHELL=/bin/bash # 在PATH路径中的命令可以直接写不用加绝对路径 PATH=/sbin:/bin:/usr/sbin:/usr/bin # 将定时任务输出的结果,发送邮件给root 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 分 时 日 月 周
注意事项
- 每个定时任务请写上注释
- 在写定时任务的时候,所有命令一律使用绝对路径
- 注意有些命令是无法成功执行的 echo “123” >>/tmp/test.log &>/dev/null
- 定时任务的结尾一定要有&>/dev/null或者将结果追加重定向>>/tmp/date.log文件
- 将需要定期执行的任务写入Shell脚本中,避免直接使用命令无法执行的情况tar date
crond如何备份呢
- 通过查找/var/log/cron中执行的记录,去推算任务执行的时间
- 定时的备份/var/spool/cron/{username}
crond如何拒绝某个用户使用
# 1.使用root将需要拒绝的用户加入/etc/cron.deny [root@zls ~]# echo "oldboy" >> /etc/cron.deny #2.登陆该普通用户,测试是否能编写定时任务 [oldboy@oldboy ~]$ crontab -e You (oldboy) are not allowed to use this program (crontab) See crontab(1) for more information
时间同步定时任务
## 定时任务的相关命令 crontab -e:edit 编辑 -l:list 查看 -r:删除所有的定时任务 -u:指定用户创建定时任务或者查看定时任务,或者删除定时任务 ## 编辑定时任务 [root@oldboy /tmp]# crontab -e # Create By:lidi Time:2021-07-01 Name: 3 mins ntp time */3 * * * * /usr/sbin/ntpdate time1.aliyun.com &>/dev/null ## crontab日志文件 [root@oldboy /tmp]# tail -f /var/log/cron ## 定时任务文件所在位置 [root@oldboy /tmp]# cat /var/spool/cron/root # Create By:lidi Time:2021-07-01 Name: 3 mins ntp time */3 * * * * /usr/sbin/ntpdate time1.aliyun.com &>/dev/null
定时任务编写
crontab的时间编写规则 00 02 * * * ls #每天的凌晨2点整执行 00 02 1 * * ls #每月的1日的凌晨2点整执行 00 02 14 2 * ls #每年的2月14日凌晨2点执行 00 02 * * 7 ls #每周天的凌晨2点整执行 00 02 * 6 5 ls #每年的6月周五凌晨2点执行 00 02 14 * 7 ls #每月14日或每周日的凌晨2点都执行 00 02 14 2 7 ls #每年的2月14日或每年2月的周天的凌晨2点执行 */10 02 * * * ls #每天凌晨2点,每隔10分钟执行一次 * * * * * ls #每分钟都执行 00 00 14 2 * ls #每年2月14日的凌晨执行命令 */5 * * * * ls #每隔5分钟执行一次 00 02 * 1,5,8 * ls #每年的1月5月8月凌晨2点执行 00 02 1-8 * * ls #每月1号到8号凌晨2点执行 0 21 * * * ls #每天晚上21:00执行 45 4 1,10,22 * * ls #每月的1,10,22号的4:45执行 45 4 1-10 * * ls #每月的1到10号的4:45执行 3,15 8-11 */2 * * ls #每隔两天的上午8点到11点的第3和第15分钟执行 0 23-7/1 * * * ls #晚上11点到早上7点之间,每隔一个小时执行 15 21 * * 1-5 ls #周一到周五每天晚上21:15执行
定时任务如何调试
1.crond调试
- 调整任务每分钟执行的频率, 以便做后续的调试。
- 如果使用cron运行脚本,请将脚本执行的结果写入指定日志文件, 观察日志内容是否正常。
- 命令使用绝对路径, 防止无法找到命令导致定时任务执行产生故障。
- 通过查看/var/log/cron日志,以便检查我们执行的结果,方便进行调试。
2.crond编写思路
- 1.手动执行命令,然后保留执行成功的结果。
- 2.编写脚本
- 脚本需要统一路径/scripts
- 脚本内容复制执行成功的命令(减少每个环节出错几率)
- 脚本内容尽可能的优化, 使用一些变量或使用简单的判断语句
- 脚本执行的输出信息可以重定向至其他位置保留或写入/dev/null
- 3.执行脚本
- 使用bash命令执行, 防止脚本没有增加执行权限(/usr/bin/bash)
- 执行脚本成功后,复制该执行的命令,以便写入cron
- 4.编写计划任务
- 加上必要的注释信息, 人、时间、任务
- 设定计划任务执行的周期
- 粘贴执行脚本的命令(不要手敲)
- 5.调试计划任务
- 增加任务频率测试
- 检查环境变量问题
- 检查crond服务日志
服务器发邮件
yum install -y mailx # 编辑右键的配置文件 [root@oldboy /tmp]# vim /etc/mail.rc
配置邮箱发邮件
#编辑邮件配置文件 [root@oldboys ~]# vim /etc/mail.rc #发件人 set from=295770347@qq.com #邮件服务器 set smtp=smtp.qq.com #发件人用户名 set smtp-auth-user=295770347@qq.com #发件人密码(QQ邮箱不可以使用密码,只能使用授权码) set smtp-auth-password=xxx #登录方式 set smtp-auth=login #邮件服务器协议及端口 set smtp=smtps://smtp.qq.com:465 #忽略证书 set ssl-verify=ignore #指定证书位置 set nss-config-dir=/root/.certs #创建证书目录 mkdir -p /root/.certs #进入证书目录 cd /root/.certs #获取证书 echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt certutil -L -d /root/.certs certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ~/.certs -i ~/.certs/qq.crt
echo '这是一封测试邮件' |mail -s 标题 295770347@qq.com ## 创建存放情书的目录 [root@oldboy /tmp]# mkdir /opt/loveletter ## 写发情书的脚本 [root@oldboy /tmp]# vim qingshu.sh #!/bin/bash letter=`ls -1 /opt/loveletter/|head -1` for qq in `cat /opt/qq.txt`;do cat /opt/loveletter/$letter|mail -s 'this is a love letter' $qq done rm -f /opt/loveletter/$letter ## 写定时任务 [root@oldboy /tmp]# crontab -e # send love letter * * * * * /bin/sh /tmp/qingshu.sh &>/dev/null
这篇关于Linux系统管理-定时任务的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-18git仓库有更新,jenkins 自动触发拉代码怎么配置的?-icode9专业技术文章分享
- 2024-12-18Jenkins webhook 方式怎么配置指定的分支?-icode9专业技术文章分享
- 2024-12-13Linux C++项目实战入门教程
- 2024-12-13Linux C++编程项目实战入门教程
- 2024-12-11Linux部署Scrapy教程:新手入门指南
- 2024-12-11怎么将在本地创建的 Maven 仓库迁移到 Linux 服务器上?-icode9专业技术文章分享
- 2024-12-10Linux常用命令
- 2024-12-06谁看谁服! Linux 创始人对于进程和线程的理解是…
- 2024-12-04操作系统教程:新手入门及初级技巧详解
- 2024-12-04操作系统入门:新手必学指南