Q1 显示统计占用系统内存最多的进程,并排序。
[root@CentOS7 scripts]# ps -eo uid,pid,ppid,tty,c,time,cmd,%mem --sort=-%mem
UID PID PPID TT C TIME CMD %MEM
42 1313 1195 ? 0 00:00:15 /usr/bin/gnome-shell 5.6
42 1397 1195 ? 0 00:00:00 /usr/libexec/gnome-settings 0.9
0 982 1 ? 0 00:00:05 /usr/bin/python -Es /usr/sb 0.9
0 1025 991 tty1 0 00:00:00 /usr/bin/X :0 -background n 0.8
999 693 1 ? 0 00:00:01 /usr/lib/polkit-1/polkitd - 0.7
0 988 1 ? 0 00:00:00 /usr/sbin/libvirtd 0.7
42 1373 1 ? 0 00:00:00 /usr/libexec/ibus-x11 --kil 0.5
0 723 1 ? 0 00:00:00 /usr/sbin/NetworkManager -- 0.4
42 1195 1158 ? 0 00:00:00 /usr/libexec/gnome-session- 0.3
0 698 1 ? 0 00:00:01 /usr/sbin/rsyslogd -n 0.3
0 1158 991 ? 0 00:00:00 gdm-session-worker [pam/gdm 0.3
997 1410 1 ? 0 00:00:00 /usr/libexec/colord 0.3
0 694 1 ? 0 00:00:29 /usr/bin/vmtoolsd 0.3
0 685 1 ? 0 00:00:00 /usr/bin/VGAuthService -s 0.2
0 728 1 ? 0 00:00:00 /usr/sbin/abrtd -d -s 0.2
0 690 1 ? 0 00:00:00 /usr/sbin/ModemManager 0.2
0 8203 979 ? 0 00:00:00 sshd: root@pts/0 0.2
0 1390 1 ? 0 00:00:00 /usr/libexec/packagekitd 0.2
42 1366 1313 ? 0 00:00:00 ibus-daemon --xim --panel d 0.2
0 1330 1 ? 0 00:00:00 /usr/libexec/upowerd 0.2
42 1381 1 ? 0 00:00:00 /usr/libexec/xdg-permission 0.2
这里补充一点,也可以通过top命令 进入资源列表中,按大写的M按键,也可以按资源占用情况查看进程情况,且为实时跳动
Q2 编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
For语句:
#!/bin/bash
NET=192.168.93
for HOST in {1..254}; do
{
ping -c1 $NET.$HOST &> /dev/null ;
if [ $? -eq 0 ];then
echo $NET.$HOST is success | tee -a host_Success.txt
else
echo $NET.$HOST is fail! | tee -a host_Fail.txt
fi
}&
done
wait
[root@CentOS7 scripts]# bash scanip.sh
192.168.93.2 is success
192.168.93.17 is success
192.168.93.5 is success
192.168.93.6 is success
192.168.93.22 is success
192.168.93.12 is success
192.168.93.21 is success
192.168.93.25 is success
192.168.93.24 is success
192.168.93.20 is success
192.168.93.19 is success
192.168.93.4 is success
192.168.93.164 is success
192.168.93.33 is success
192.168.93.1 is success
192.168.93.165 is success
192.168.93.27 is success
192.168.93.114 is success
192.168.93.14 is fail!
192.168.93.29 is fail!
192.168.93.9 is fail!
这里由于0.0段目前没有,测试以我内网网段做为测试目标
while 语句:
NET=192.168.93
declare -i HOST=1
while [ $HOST -lt 255 ];do
{
ping -c1 -W1 $NET.$HOST &> /dev/null ;
if [ $? -eq 0 ];then
echo $NET.$HOST is success | tee -a host_Success.txt
else
echo $NET.$HOST is fail! | tee -a host_Fail.txt
fi
}&
let HOST++
done
wait
[root@CentOS7 scripts]# bash while_scanip.sh
192.168.93.2 is success
192.168.93.5 is success
192.168.93.6 is success
192.168.93.12 is success
192.168.93.4 is success
192.168.93.17 is success
192.168.93.20 is success
192.168.93.21 is success
192.168.93.22 is success
192.168.93.19 is success
192.168.93.25 is success
192.168.93.24 is success
192.168.93.33 is success
192.168.93.164 is success
192.168.93.114 is success
192.168.93.189 is success
192.168.93.27 is success
192.168.93.1 is fail!
192.168.93.3 is fail!
192.168.93.7 is fail!
192.168.93.8 is fail!
192.168.93.9 is fail!
192.168.93.14 is fail!
Q3 每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
[root@centos7 ~]# crontab -e
30 1 * * 1-5 /usr/bin/tar -Jcf /data/etcbak-`date -d "-1 day" +%Y-%m-%d-%H`.tar.xz /etc &> /dev/null
[root@CentOS7 data]# ll
total 7428
-rwxr-xr-x 1 root root 419 Oct 31 10:47 checkdisk.sh
-rwxr-xr-x 1 root root 426 Nov 4 09:42 chook_rabbit.sh
-rwxr-xr-x 1 root root 559 Nov 6 09:15 createuser.sh
-rw-r--r-- 1 root root 7472828 Feb 13 18:51 etcbak-2020-02-12-18.tar.xz
当然 此命令也是可以通过创建脚本的方式 并且赋予脚本执行权限后,将其调用到计划任务中也是可以,这样做的方式可以避免命令长度太长导致频繁的修改错误,这里为了方便直接,就将其命令调用在计划任务中执行也是可以的。
Q4 工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高 于80%,就发送邮件报警
[root@CentOS7 data]# cat checkdisk_sendMail.sh
#!/bin/bash
Danager=80
Used=`df |sed -nr '/^\/dev\/sd/s#.* ([0-9]+)%.*#\1#p' | sort -nr |head -1`
[ "$Used" -gt "$Danager" ] && wall disk will be full
[root@CentOS7 data]# bash checkdisk_sendMail.sh
Broadcast message from root@CentOS7 (pts/0) (Thu Feb 13 19:22:22 2020):
验证脚本的可用性后,chmod +x 赋予该脚本执行权限,并且添加到计划任务中
[root@centos7 data]#crontab -e
/10 * /data/checkdis_sendMail.sh