目录

  • 1.计划任务基本概述

    • 什么是crond?
    • 为什么要用crond?
  • 2.计划任务时间管理
    • crontab配置文件解析
    • crontab的时间编写规则
    • crontab命令选项
  • 3.计划任务编写实践
    • 使用root用户每5分钟执行一次时间同步
    • 每天 的下午3,5点,每隔半小时执行一次sync命令
    • 每凌晨3点做一次备份
    • 方法步骤:
    • crond注意的事项
    • crond如何备份呢?
    • crond如何拒绝某个用户使用
  • 计划任务如何调试
  • 使用定时任务,发邮件,追小姐姐

1.计划任务基本概述

什么是crond?

crond就是计划任务,类似于我们平时生活中的闹钟,定点执行。


为什么要用crond?

计划任务主要是做一些周期性的任务,比如: 凌晨3点定时备份数据。或11点开启网站抢购接口,12点关闭抢占接口。计划任务主要分为以下两种使用情况:

1.系统级别的定时任务

临时文件清理
系统信息采集
日志文件切割

2.用户级别的定时任务

定时向互联网同步时间
定时备份系统配置文件
定时备份数据库的数据

2.计划任务时间管理

crontab配置文件解析

[root@gjy ~]# vim /etc/crontab
SHELL=/bin/bash                     #执行命令的解释器
PATH=/sbin:/bin:/usr/sbin:/usr/bin  #环境变量
MAILTO=root                         #邮件发给谁
# 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# *  表示任意的(分、时、日、月、周)时间都执行
# -  表示一个时间范围段, 如5-7点
# ,  表示分隔时段, 如6,0,4表示周六、日、四
# /1 表示每隔n单位时间, 如*/10 每10分钟

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点执行
00 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分钟执行
00 23-7/1 * * * ls       #晚上11点到早上7点之间,每隔一个小时执行
15 21 * * 1-5 ls        #周一到周五每天晚上21:15执行

crontab命令选项

参数 含义
-e 编辑定时任务
-l 查看定时任务
-r 删除定时任务
-u 指定其他用户

3.计划任务编写实践

使用root用户每5分钟执行一次时间同步

#-u 可指定用户
#如何同步时间
[root@gjy ~]# date -s '20190729'       #如果修改当前时间为'20190729'
Mon Jul 29 00:00:00 CST 2019
[root@gjy ~]# ntpdate time.windows.com &>/dev/null   #更新同步到当前windows时间
[root@gjy ~]# date                              #查看时间
Fri Jul 26 15:40:09 CST 2019#更新同步到阿里云时间(绝对路径相对路径都可以)
[root@gjy ~]# /usr/sbin/ntpdate update time1.aliyun.com &>/dev/null   #配置定时任务
[root@zls ~]# crontab -e -u root
#查看配置的定时任务(每隔五分钟执行一次定时任务)
[root@zls ~]# crontab -l -u root
*/5 * * * * ntpdate time.windows.com &>/dev/null

每天 的下午3,5点,每隔半小时执行一次sync命令

[root@zls ~]# crontab -l
*/30 15,17 * * * sync &>/dev/null

每凌晨3点做一次备份

需求:将备份命令写入一个脚本中

任务:
1.每天备份文件名要求格式:2018-02-20_hostname_etc.tar.gz
2.存放备份内容的目录要求只保留3天的数据
3.在执行计划任务时,不要输出任务信息

方法步骤:

1.编辑脚本

[root@gjy ~]# vim backup_etc.sh
#!/bin/bash riqi=`date +%F`   #定义日期
zhuji=`hostname`   #定义主机名
shijian=`date +%F-%T`   #定义时间戳mkdir -p /backup         #创建目录#把/etc解压到/backup目录下,重命名为当前时间_当前主机名_etc.tar.gz  ,并且执行成功的话,把结果以当前时间戳备份成功的格式输入到/tmp/bak_cg.txt 中
cd / && tar zcf  /backup/${riqi}_${zhuji}_etc.tar.gz etc && echo "$shijian  备份成功" &>/tmp/bak_cg.txt
#只保留当前三天的备份,其他删除
find /backup -mtime +3 -delete

2.配置定时任务

#编辑定时任务
[root@gjy ~]# crontab  -e
#定时备份
1 * * * * /usr/bin/sh /root/backup_etc.sh &> /dev/null#查看定时任务
[root@gjy ~]# crontab  -l
#定时备份
1 * * * * /usr/bin/sh /root/backup_etc.sh &> /dev/null    

3.执行脚本

[root@gjy ~]# sh backup_etc.sh

4.查看更新的同步结果

[root@gjy ~]# cat /var/log/cron
Jul 24 17:35:02 localhost crond[4745]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 98% if used.)
Jul 24 17:35:04 localhost crond[4745]: (CRON) INFO (running with inotify support)
···

5.查看文件反馈结果

[root@gjy ~]# cat /tmp/bak_cg.txt
2019-07-26-15:51:56  备份成功

crond注意的事项

1) 给定时任务注释
2) 将需要定期执行的任务写入Shell脚本中,避免直接使用命令无法执行的情况tar date
3) 定时任务的结尾一定要有&>/dev/null或者将结果追加重定向>>/tmp/date.log文件
4) 注意有些命令是无法成功执行的 echo "123" >>/tmp/test.log &>/dev/null
5.如果一定要是用命令,命令必须使用绝对路径


crond如何备份呢?

1) 通过查找/var/log/cron中执行的记录,去推算任务执行的时间
2) 定时的备份/var/spool/cron/{usernmae}


crond如何拒绝某个用户使用

#1.使用root将需要拒绝的用户加入/etc/cron.deny
[root@zls ~]# echo "oldboy" >> /etc/cron.deny#2.登陆该普通用户,测试是否能编写定时任务
[oldboy@zls ~]$ crontab -e
You (zls) are not allowed to use this program (crontab)
See crontab(1) for more information

计划任务如何调试

1.crond调试

1) 调整任务每分钟执行的频率, 以便做后续的调试。

2) 如果使用cron运行脚本,请将脚本执行的结果写入指定日志文件, 观察日志内容是否正常。

3) 命令使用绝对路径, 防止无法找到命令导致定时任务执行产生故障。

4) 通过查看/var/log/cron日志,以便检查我们执行的结果,方便进行调试。

2.crond编写思路

  • 1.手动执行命令,然后保留执行成功的结果。
  • 2.编写脚本
    • 脚本需要统一路径/scripts
    • 脚本内容复制执行成功的命令(减少每个环节出错几率)
    • 脚本内容尽可能的优化, 使用一些变量或使用简单的判断语句
    • 脚本执行的输出信息可以重定向至其他位置保留或写入/dev/null
  • 3.执行脚本
    • 使用bash命令执行, 防止脚本没有增加执行权限(/usr/bin/bash)
    • 执行脚本成功后,复制该执行的命令,以便写入cron
  • 4.编写计划任务
    • 加上必要的注释信息, 人、时间、任务
    • 设定计划任务执行的周期
    • 粘贴执行脚本的命令(不要手敲)
  • 5.调试计划任务
    • 增加任务频率测试
    • 检查环境变量问题
    • 检查crond服务日志

使用定时任务,发邮件,追小姐姐

先配置邮箱发邮件

#编辑邮件配置文件
[root@zls ~]# vim /etc/mail.rc
#发件人
set from=861962063@qq.com
#邮件服务器
set smtp=smtp.qq.com
#发件人用户名
set smtp-auth-user=861962063@qq.com
#发件人密码(QQ邮箱不可以使用密码,只能使用授权码)
set smtp-auth-password=(授权码)
#登录方式
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

1.登录QQ邮箱

2.账户设置

3.开启POP3/SMTP服务

4.生成授权码

配备好之后

5.在网上找几篇情书...

#我都是网上搜的,可能很low,见谅[root@gjy qingshu]# vim qingshu1.txt
我们都很擅长口是心非,又都很希望对方能有所察觉[root@gjy qingshu]# vim qingshu2.txt
两个人因为开心在一起叫喜欢,如果不开心还想要在一起那就是爱了[root@gjy qingshu]# vim qingshu3.txt
两个人因为开心在一起叫喜欢,如果不开心还想要在一起那就是爱了[root@gjy qingshu]# vim qingshu4.txt
我不想做你的插曲,我只想做你生命中最完美的结局[root@gjy qingshu]# vim qingshu5.txt
真爱不是随便说说,而是看你付出多少。爱情不是一张嘴,而是一辈子[root@gjy qingshu]# vim qingshu6.txt
喜欢一个人,是看到了他的优点;爱一个人,是包容了他的缺点。喜欢,是一种心情;爱,是一种感情[root@gjy qingshu]# vim qingshu7.txt
有一种爱,明明是深爱,却说不出来。有一种爱,明明想放手,却无法离弃。有一种爱,明知是煎熬,却又躲不开。有一种爱,明知无前路,心却早已收不回来

6.发送邮件测试

[root@zls ~]# cat qingshu1.txt |mail -s '致我最爱的小姐姐' 861962063@qq.com

7.接下来就可以写脚本,放入定时任务啦

1.创建目录及文件

#创建一个情书的目录
[root@gjy ~]# mkdir qingshu#将所有情书,移动到该目录下
[root@zls ~]# mv qingshu* qingshu/#编写脚本
[root@zls ~]# vim send_mail.sh
#!/bin/bashqs_name=`ls -1 /root/qingshu_dir/|head -1`cat /root/qingshu_dir/${qs_name} |mail -s '致我最爱的小姐姐' 133411023@qq.comif [ $? -eq 0 ];thenrm -f /root/qingshu_dir/$qs_name
fi#编辑crontab
[root@zls ~]# crontab -e
#send qingshu to xiaojiejie by:zls
* * * * * /bin/bash /root/send_mail.sh &>/dev/null

2.编写脚本

#!/bin/bashqs_name=`ls -1 qingshu/|head -1`
mail1=xxxxxxxx@qq.com
mail2=861962063@qq.com
shijian=`date +%F-%T`cat /root/qingshu/${qs_name} |mail -s '致我最爱的小哥哥' ${mail1}
cat /root/qingshu/${qs_name} |mail -s '致我最爱的小姐姐' ${mail2}if [ $? -eq 0 ];thenecho "$shijian 邮件发送成功">> /tmp/a.txt    #发送结果到/tmp/a.txt文件rm -f qingshu/$qs_name                      #删除情书目录首行情书,即发送出去的情书
fi

3.配置任务

#编辑任务
[root@gjy ~]# crontab  -e
#查看任务
[root@gjy ~]# crontab -l
#定时发情书
00 00  * * * /usr/bin/sh /root/send_mail.sh &> /dev/null

4.执行脚本

[root@gjy ~]# sh /root/send_mail.sh 

5.查看结果

[root@gjy ~]# cat /tmp/a.txt
1
2019-07-26-16:22:44 邮件发送成功

转载于:https://www.cnblogs.com/gongjingyun123--/p/11252856.html

linux 定时任务---给心爱的小姐姐发情书相关推荐

  1. Linux服务情书,Linux定时任务给心爱的小姐姐发情书

    原标题:Linux定时任务给心爱的小姐姐发情书 计划任务基本概述 什么是crond? crond就是计划任务,类似于我们平时生活中的闹钟,定点执行. 为什么要用crond? 计划任务主要是做一些周期性 ...

  2. linux scrapy 定时任务_Linux定时任务给心爱的小姐姐发情书

    计划任务基本概述 什么是crond? crond就是计划任务,类似于我们平时生活中的闹钟,定点执行. 为什么要用crond? 计划任务主要是做一些周期性的任务,比如: 凌晨3点定时备份数据.或11点开 ...

  3. 教你撩妹,每天给小姐姐发一封暖心邮件

    写在前面 自从用邮箱注册了很多账号后,便会收到诸如以下类似的邮件,刚开始还以为是一张图片,后来仔细一看不是图片呀,好像还是 HTML 呀,于是好奇宝宝我 Google 一下,查阅多篇资料后总结出怎么用 ...

  4. python用turtle画小人-画一个心送给心爱的小姐姐,Python绘图库Turtle

    import turtle turtle.setup(1200, 600) #窗口大小 #画心 turtle.color("black", "red") tur ...

  5. 红头文件rgb红色值_拿下抖音小姐姐,我写了个口红色号识别器

    对于广大"钢铁直男"的程序员来说,送什么礼物给女朋友一直是个世纪难题. 其实哄女朋友开心最深的套路就是花式送口红,就问谁抵挡得住啊啊啊啊...... "没有什么问题是一支 ...

  6. 打破校史!这位参与发表学校首篇Science的博士小姐姐,近日一作再发Nature

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要13分钟 Follow小博主,每天更新前沿干货 本文来源:科研大匠综合自西南交大新闻网.官微.扬华研究生新闻中心 转载自:募格学术 导读: 1 ...

  7. linux定时任务小程序,linux定时任务

    〆mè村姑 回答时间:2019-12-05 向TA提问 linux定时任务使用crontab命令 crontab命令说明 crontab命令被用来提交和管理用户的需要周期性执行的任务,与windows ...

  8. 【CentOS后遗症】刚毕业的运维小姐姐 Linux用不了!你的也用不了了~

    目录 事情是这样的 给小姐姐排查问题 系统版本 查看错误 问题分析 停止维护详细时间表 问题解决 1.使用本地镜像源 2.网络镜像源 推荐阅读 python及安全系列 pygame系列文章 事情是这样 ...

  9. 良许被百万大V安排得服服帖帖,还跟美女小姐姐合影了……

    大家好,我是良许. 很多人问我说,良许,你在工作之余还花这么多时间精力去写公众号运营自媒体,到底是为了什么? 其实原因很简单,就是想做个副业,万一到了 35 岁真的失业了,我至少还有另外一份收入,不至 ...

最新文章

  1. thinkphp5.1 中间件是什么有什么用
  2. Doctype作用? 严格模式与混杂模式如何区分?它们有何意义
  3. 自己动手写一个印钞机 第四章
  4. 似水流年,美丽清华园
  5. 第三章 C#程序结构 (3.3 循环结构)
  6. P1083 [NOIP 2012]借教室
  7. 【CF 应用开发大赛】JEECG 基于代码生成器J2EE智能开发框架
  8. set_union()和set_intersection()的用法
  9. idea如何导出war文件
  10. javafx中的tree_JavaFX中的塔防(5)
  11. 大数据开发者应该知道的分布式系统 CAP 理论
  12. java抽象机制_Java很好学:接口+抽象类+事件监听机制
  13. 【数字信号调制】基于matlab二进制数字相位调制(2PSK)【含Matlab源码 1000期】
  14. 利用beego开发网站(一)
  15. exchange协议发送邮件
  16. 要重复多少次变成潜意识_量变到质变,首先要做的是不断重复
  17. java收割者模式,烧饼丶收割者的动态
  18. 《财富的未来》——佐藤航阳读书笔记
  19. js一键复制并调起微信客户端
  20. torch.repeat()

热门文章

  1. CST STUDIO Vivaldi天线仿真 (零)
  2. Java静态内部类的作用
  3. android 涨潮动画加载_2018工作记:潮汐 App
  4. 学车手记之二 练习倒桩(zt)
  5. 数据分析技能点-双变量的相关分析
  6. mysql using btree_mysql 索引中的USING BTREE有什么用
  7. Android 官方架构组件 Navigation 使用详解
  8. 软件项目管理 7.4.2.进度计划编排-关键路径法
  9. php 模板替换,thinkphp模板赋值与替换实例简述
  10. 删除数据(DELETE、TRUNCATE TABLE)