前言:
希望系统每天都跟我说一句:喂喂姐最棒!
一、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 "棒!" xxx@163.com
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 from=xxx@163.com #发件邮箱地址
set smtp=smtp.163.com #smtp服务器地址
set smtp-auth-user=xxx@163.com #smtp服务器认证的用户名
set smtp-auth-password=xxx #smtp服务器授权码
set smtp-auth=login #邮件认证的方式
③ 发送邮件
#通过命令行发送
[apps@localhost ~]$ mail -s "喂喂姐最棒!" xxx@163.com
命令行发邮件~
EOT
输入命令后回车,会进入邮件正文的编写,可以输入任何文字,当邮件正文输入完成后,需要按 Ctrl+D
结束输入,回车完成邮件的发送。
#通过管道符发送
[apps@localhost ~]$ echo "喂喂姐最棒!"|mail -s "棒!" xxx@163.com
使用管道符输入命令即可完成邮件的发送,其中 echo 后是邮件正文。
#使用文件进行邮件发送
[apps@localhost ~]$ mail -s "棒!" xxx@163.com < /home/apps/best.txt
输入上述命令后,我们就可以把 /home/apps/best.txt
文件的内容作为邮件的内容发送给 xxx@163.com 了。
④ 查收邮件
四、取消定时任务
① 每天早上都会收到邮件,感觉有点烦了......
② 手把手教你取消定时任务
[apps@localhost ~]$ crontab -l
0 7 * * * /home/apps/best.sh
[apps@localhost ~]$ crontab -r
[apps@localhost ~]$ crontab -l
no crontab for apps
③ done~