Linux-定时任务:喂喂姐每天都很棒!

前言:

希望系统每天都跟我说一句:喂喂姐最棒!


一、Shell 脚本

1、创建一个 Shell 文件 best.sh
[apps@localhost ~]$ touch best.sh
2、编写 Shell 脚本。
#!/bin/bash
echo `date "+%Y-%m-%d %H:%M:%S"` "喂喂姐最棒!"

#执行成功后加入邮箱地址
#!/bin/bash
echo `date "+%Y-%m-%d %H:%M:%S"` "喂喂姐最棒!" | mail -s "棒!" [email protected]
3、执行脚本看看是否成功?
[apps@localhost ~]$ ./best.sh
2019-04-18 14:11:57 喂喂姐最棒!

#加入邮箱地址后再次执行看看是否成功收到邮件
4、赋予该脚本执行权限
[apps@localhost ~]$ sudo chmod +x ./best.sh 
[apps@localhost ~]$ ll best.sh
-rwxr-xr-x. 1 root root 39 Apr 16 16:29 best.sh

二、定时任务

1、安装 crontab
[apps@localhost ~]$ sudo yum install vixie-cron
[apps@localhost ~]$ sudo yum install crontabs
2、开启 crond.service 服务
[apps@localhost ~]$ sudo systemctl start crond.service
[apps@localhost /]$ sudo systemctl enabled crond.service
[apps@localhost /]$ sudo systemctl is-enabled crond.service
enabled

常用指令
systemctl start crond.service #开启服务
systemctl restart crond.service #重启服务
systemctl stop crond.service #关闭服务
systemctl enable crond.service #开启自启动
systemctl disable crond.service #关闭自启动
systemctl status crond.service #查看 crond.service 的状态

3、编辑需要执行的脚本
[apps@localhost ~]$ crontab -e
crontab: installing new crontab

  0   7   *   *   *   home/apps/best.sh
# 分  时  日  月  周  |<----命令行---->|
意义
范围 0~59 0~23 1~31 1~12 0~6

注意:“周”的数字为 0 时,代表的是“星期天”。

特殊字符
星号( * ):代表每的意思,例如 month 字段如果是星号,则表示每月都执行该命令操作。
逗号( , ):表示分隔时段的意思,例如:“1,3,5,7,9”。
横杠( - ):表示一个时间范围,例如:“2-6”表示“2,3,4,5,6”。
斜杠( / ):可以用正斜线指定时间的间隔频率,例如:“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如:*/10,如果用在 minute 字段,表示每十分钟执行一次。

4、查看编辑好的任务
[apps@localhost ~]$ crontab -l
0 7 * * * home/apps/best.sh

crontab [-u username] [-l|-e|-r]
参数:
-u: 只有 root 才能进行这个任务,也即帮其他用户新建/删除 crontab 工作调度;
-e:编辑 crontab 的工作内容;
-l:查阅 crontab 的工作内容;
-r:删除所有的 crontab 的工作内容,若仅要删除一项,请用 -e 去编辑。

5、查看日志是否定时执行脚本
[apps@localhost ~]$ sudo tail /var/log/cron
......
Apr 19 07:00:01 localhost CROND[31938]: (apps) CMD (/home/apps/best.sh)
Apr 19 07:00:01 localhost CROND[31936]: (apps) CMDOUT (2019-04-19 07:00:01 喂喂姐最棒!)

三、发送邮箱

1、安装 Sendmail
[apps@localhost ~]$ sudo yum -y install sendmail
[apps@localhost ~]$ rpm -q sendmail
sendmail-8.14.7-5.el7.x86_64
[apps@localhost ~]$ sudo systemctl start sendmail
[apps@localhost ~]$ sudo systemctl status sendmail
● sendmail.service - Sendmail Mail Transport Agent
   Loaded: loaded (/usr/lib/systemd/system/sendmail.service; enabled; vendor preset: disabled)
   Active: active (running) since Fri 2019-04-19 15:12:24 CST; 6 days ago
 Main PID: 1488 (sendmail)
2、设置 SMTP 服务

① 开启并授权 SMTP 服务,举例使用网易邮箱


② 配置 mai.rc 文件

[apps@localhost ~]$ sudo vim /etc/mail.rc

set [email protected] #发件邮箱地址
set smtp=smtp.163.com #smtp服务器地址
set [email protected] #smtp服务器认证的用户名
set smtp-auth-password=xxx #smtp服务器授权码
set smtp-auth=login #邮件认证的方式

③ 发送邮件

#通过命令行发送
[apps@localhost ~]$ mail -s "喂喂姐最棒!" [email protected]
命令行发邮件~
EOT

输入命令后回车,会进入邮件正文的编写,可以输入任何文字,当邮件正文输入完成后,需要按 Ctrl+D 结束输入,回车完成邮件的发送。

#通过管道符发送
[apps@localhost ~]$ echo "喂喂姐最棒!"|mail -s "棒!" [email protected]

使用管道符输入命令即可完成邮件的发送,其中 echo 后是邮件正文。


#使用文件进行邮件发送
[apps@localhost ~]$ mail -s "棒!" [email protected] < /home/apps/best.txt

输入上述命令后,我们就可以把 /home/apps/best.txt 文件的内容作为邮件的内容发送给 [email protected] 了。


④ 查收邮件
准时收到执行邮件

四、取消定时任务

① 每天早上都会收到邮件,感觉有点烦了......


每天一封邮件

② 手把手教你取消定时任务

[apps@localhost ~]$ crontab -l
0 7 * * * /home/apps/best.sh
[apps@localhost ~]$ crontab -r
[apps@localhost ~]$ crontab -l
no crontab for apps

③ done~

你可能感兴趣的:(Linux-定时任务:喂喂姐每天都很棒!)