9、进程与计划任务、SHELL进阶

1、显示统计占用系统内存最多的进程,并排序。

ps aux k -%mem|head -10

[root@centos7 ~]# ps aux k -%mem|head -10
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
gdm        1634  0.5  7.0 3218084 130596 ?      Sl   20:53   0:07 /usr/bin/gnome-shell
root       1572  0.1  1.3 296128 24336 tty1     Ssl+ 20:53   0:01 /usr/bin/X :0 -background none -noreset -audit 4 -verbose -auth /run/gdm/auth-for-gdm-iaT34a/database -seat seat0 -nolisten tcp vt1
root       1057  0.0  1.0 574308 19520 ?        Ssl  20:53   0:00 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
gdm        1749  0.0  0.8 639952 16628 ?        Sl   20:53   0:00 /usr/libexec/gsd-power
gdm        1740  0.0  0.8 1012036 15548 ?       Sl   20:53   0:00 /usr/libexec/gsd-media-keys
gdm        1716  0.0  0.7 615204 14820 ?        Sl   20:53   0:00 /usr/libexec/gsd-xsettings
gdm        1728  0.0  0.7 714064 14524 ?        Sl   20:53   0:00 /usr/libexec/gsd-color
gdm        1782  0.0  0.7 623032 14076 ?        Sl   20:53   0:00 /usr/libexec/gsd-wacom
polkitd     625  0.0  0.7 616356 13804 ?        Ssl  20:53   0:01 /usr/lib/polkit-1/polkitd --no-debug

2、编写脚本,使用for和while分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"

192.168.0.0/24
表示网络码占24位,就是说该网络上可以有254个主机(2^8-2)
IP范围:192.168.0.1~192.168.0.254 192.168.0.255是广播地址,不能被主机使用。
设置IP地址的时候:192.168.0.x 子网掩码:255.255.255.0
(1)for循环

#!/bin/bash

for HOSTID in {1..254};do
{
ping -c1 -w1 192.168.0.$HOSTID &>/dev/null
if [ $? -eq 0 ];then
  echo "192.168.0.$HOSTID success!"
else
  echo "192.168.0.$HOSTID fail!"
fi
}
done

运行结果:
for循环运行结果

(2)while循环

#!/bin/bash

declare -i HOSTID=1
while [ $HOSTID -lt 255 ] ;do
{
ping -c1 -w1 192.168.0.$HOSTID &>/dev/null
if [ $? -eq 0 ];then
  echo "192.168.0.$HOSTID success!"
else
  echo "192.168.0.$HOSTID fail!"
fi
}
let HOSTID++
done

运行结果:
while循环运行结果

3、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间

第一步:创建/backup文件夹
mkdir /backup
第二步:在/etc/crontab中设定计划任务
30 1 * * 1-5 root /usr/bin/tar -Jcvf /backup/etcbak-`date -d -1day "+\%F-\%H"`.tar.xz /etc

vim /etc/crontab
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
30 1 * * 1-5 root /usr/bin/tar -Jcvf /backup/etcbak-`date -d -1day "+\%F-\%H"`.tar.xz /etc

4、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高 于80%,就发送邮件报警

第一步:编写脚本
vim checkdisk.sh

#!/bin/bash

useRate=`df|grep '^/dev'|sed -E 's/(.*)( )([0-9]+)%( .*)/\3/g'|sort -nr|head -1`
if [ $useRate -gt 80 ];then
mail root << EOF
the use% of disk is more than 80
EOF
fi

第二步:给脚本增加执行权限
chmod +x checkdisk.sh
第三步:设置计划任务
vim /etc/crontab

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed
*/10 * * * 1-5 root /bin/bash /data/checkdisk.sh

查看结果:
监控磁盘使用率结果

你可能感兴趣的:(9、进程与计划任务、SHELL进阶)