~重启~进程、循环、计划任务案例
1、显示统计占用系统内存最多的进程,并排序。
ps aux 显示全部进程
ps axo 后接进程属性,可用于筛选
ps (-)k 后接进程属性,用于排序,负号为倒序
[root@centos7 ~]#ps axo pid,%mem,command k -%mem
PID %MEM COMMAND
1516 6.3 /usr/bin/gnome-shell
1448 1.2 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-brJNmh/database -seat seat0 -nolisten tcp vt1
1632 0.8 /usr/libexec/gsd-media-keys
……
可见最占用内存的进程为gnome-shell
2、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
1.for循环
# 脚本 for_test.sh
vim for_test.sh
NETID=192.168.0
for HOSTID in {1..254};do # ip地址最后位范围为1~254
{
if ping -c1 -W1 $NETID.$HOSTID &> /dev/null;then # -c1为ping一次,-W1用于不管有无ping通,都再1秒后断开
echo "$NETID.$HOSTID success!"
else
echo "$NETID.$HOSTID fail!"
fi
}& # 使用 **并行** 运行,否则一个一个ping 效率低下
done
wait # 确保运行循环完成后,将所有结果显示,且返回终端
2.while循环
vim while_test.sh
NETID=192.168.0
HOSTID=1
while [ $HOSTID -lt 255 ];do # 当变量HOSTID等于255时,循环终止
{
if ping -c1 -W1 $NETID.$HOSTID &> /dev/null;then
echo "$NETID.$HOSTID success"
else
echo "$NETID.$HOSTID fail"
fi
}&
let HOSTID+=1 # 令HOSTID值不断以1个单位递增,直到脱离循环条件
done
wait
3、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
tar -Jcvf 打包并压缩文件
date -d 用于设定昨天、前天、前几天,有多种语法
# 1.备份脚本backup_etc.sh
vim /data/backup_etc.sh
tar -jcvf etcbak-` date -d 'today -1 day' +'%F-%H'`.tar.xz /etc
chmod +x backup_etc.sh 加执行权限
# 2.添加计划任务 crontab -e OR vim /etc/contab(需要加username,下一题使用该方法~)
crontab -e
30 1 * * 1-5 /data/backup_etc.sh (一般建议 &> /dev/null 将STOUT丢弃,避免邮件过多)
4、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高 于80%,就发送邮件报警
# 1.筛选出分区信息并由高到低排序显示最大值,只要最大值高于80就报警
df -h | sed -nr '/\/dev\/sd/s#^.* ([0-9]+)%.*$#\1#p'| sort -nr | head -1
# 2.制作一个脚本并添加(注意!确保该脚本存储的文件夹所用用户有执行权限)
vim /data/disk_warning.sh
WARNING=80
# 注意USE变量指代命令,所以反向单引号不要忘
USE=`df | sed -nr '/\/dev\/sd/s#^.* ([0-9]+)%.*$#\1#p'| sort -nr | head -1`
[ "$USE" -gt "$WARNING" ] && wall The Usage of Disk out of control
chmod +x /data/disk_warning.sh 加执行权限
# 3.指定计划任务/etc/crontab
vim /etc/crontab
*/10 * * * 1-5 wang /data/disk_warning.sh
# 4.观察日志,可检测是否执行 (一般建议 &> /dev/null 将STOUT丢弃,避免邮件过多)
tail -f /var/log/cron
本文介绍了如何在Linux环境中,通过命令行工具监控和管理系统资源。包括使用`ps`命令显示占用内存最多的进程并排序,利用`for`和`while`循环遍历192.168.0.0/24网段进行ping测试,设置定时任务在工作日每天1:30备份`/etc`目录,以及通过`cron`定时检查磁盘空间,当利用率超过80%时发送邮件警告。
1万+

被折叠的 条评论
为什么被折叠?



