利用Linux的计划任务(cron)定时执行一个shell监控脚本

实验目的

使用cron定时执行一个简单的shell的监控脚本,将结果重定向到一个文本文件中。


cron

用途:按照设置的时间间隔为用户反复执行某一项固定的系统任务

使用 crontab 命令
–编辑计划任务:crontab -e [-u 用户名]
–查看计划任务:crontab -l [-u 用户名]
–清除计划任务:crontab -r [-u 用户名]

周期性计划任务书写格式
分 时 日 月 周 任务命令行(绝对路径)

例如:
* * * * * 每分钟执行一次
30 23 * * * 每天晚上11点30分执行一次
30 23 * * 5 每周的周五晚上11点30分执行一次
30 23 * * 1-5 周一至周五晚上11点30分执行一次
30 23 * * 1,5 周一和周五晚上11点30分执行一次
30 23 1 * 1 每月一号或者每周的周一,晚上11点30分执行一次

*/5 * * * * 每隔5分钟执行一次
1 */2 * * * 每隔两个小时执行一次

*:匹配范围内任意时间
,:分隔多个不连续的时间点
-:指定连续时间范围
/n:指定时间频率,每n …

实验内容

制定一个计划任务每分钟执行一次

[root@openstack ~]# crontab -e

[root@openstack ~]# crontab  -l
* * * * * bash /root/test.sh > /root/test.txt


监控脚本的内容

[root@openstack ~]# cat test.sh 
#!/bin/bash
uptime | awk '{print "cpu的15分钟平均负载是"$NF}'
ifconfig eth0 | awk '/RX p/{print "eth0网卡的接收流量是"$5"字节"}'
free -h | awk '/^Mem/{print "剩余内存是"$4}'
df -h | awk '/\/$/{print "磁盘根分区剩余容量是"$4}'
awk 'END{print "账户总数是"NR"个"}' /etc/passwd
echo "当前开启的进程数量是$(ps aux | wc -l)个"
echo "当前登录的用户数量是$(who | wc -l)个"
echo "总共安装的软件包数量是$(rpm -qa | wc -l)个"

实验结果

[root@openstack ~]# cat test.txt 
cpu的15分钟平均负载是0.14
剩余内存是4.8G
磁盘根分区剩余容量是38G
账户总数是40个
当前开启的进程数量是206个
当前登录的用户数量是1个
总共安装的软件包数量是813

验证

添加一个用户

[root@openstack ~]# useradd  test 

过一分钟查看用户总数增加一个

[root@openstack ~]# cat test.txt 
cpu的15分钟平均负载是0.13
剩余内存是4.8G
磁盘根分区剩余容量是38G
账户总数是41个
当前开启的进程数量是205个
当前登录的用户数量是1个
总共安装的软件包数量是813

清除计划任务

[root@openstack ~]# crontab  -r
[root@openstack ~]# crontab  -l
no crontab for root

你可能感兴趣的:(linux,linux,shell,cron)