2021-04-19 第十一周

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

[23:01:07  root@client scripts]#ps axo pid,cmd,%mem k -%mem
   PID CMD                         %MEM
   907 /usr/bin/python -Es /usr/sb  1.7
   655 /usr/lib/polkit-1/polkitd -  1.2
   649 /usr/sbin/NetworkManager --  0.9
   908 /usr/sbin/rsyslogd -n        0.6
   659 /usr/bin/vmtoolsd            0.6
   657 /usr/bin/VGAuthService -s    0.6
  2681 sshd: root@pts/0             0.6
  2884 sshd: root@pts/1             0.6
   906 /usr/sbin/sshd -D            0.4
     1 /usr/lib/systemd/systemd --  0.3
   472 /usr/lib/systemd/systemd-jo  0.3
  2887 -bash                        0.2
  2683 -bash                        0.2
   647 /usr/bin/dbus-daemon --syst  0.2
   504 /usr/lib/systemd/systemd-ud  0.2
   653 /usr/lib/systemd/systemd-lo  0.1
  3010 ps axo pid,cmd,%mem k -%mem  0.1
   661 /usr/sbin/chronyd            0.1
   679 /usr/sbin/crond -n           0.1
   495 /usr/sbin/lvmetad -f         0.1
   665 /usr/sbin/gssproxy -D        0.1
   648 /sbin/rpcbind -w             0.1
   685 /sbin/agetty --noclear tty1  0.0

进程管理工具的相关总结:
1、ps命令介绍:
     全称:process state 
     作用:查看当前进程状态的快照,默认显示当前终端的进程。
命令格式:
       ps [option] ...
选项格式(支持三种):
        UNIX选项:-A、-e
        BSD选项:a
        GNU选项:--help
命令常用选项介绍:
  a  包括所有终端的进程
  x  包括不链接终端的进程
  u  显示进程所有者的信息
  f  显示进程树,相当于  --forest  
  k|--sort 属性,对属性排序,属性前面加‘-’表示倒序排序
  o  属性..显示定制的信息 pid、cmd、%cpu、%mem
  L  显示支持的属性列表 
  -c cmdlist 指定命令,多个命令用‘,’分割
  -L 显示线程
  -e 显示所有进程,相当于-A
  -f  显示完整格式程序信息
  -F 显示更完整格式的进程信息
  -H 以进程层级格式显示进程相关信息
  -u userlist 指定有效的用户ID或名称
  -U userlist 指定真正用户的ID或名称
  -g gid或groupname 指定有效的gid或组名称
  -G gid或groupname 指定真正的gid或组名称
  -p pid 显示指pid的进程
  -ppid pid 显示属于pid的子进程
  -t ttylist 指定tty,相当于 t
  -M 显示SELinux信息,相当于Z

2、ps 输出属性的介绍
[00:01:52  root@client scripts]#ps -ef 
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 Apr17 ?        00:00:02 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0 Apr17 ?        00:00:00 [kthreadd]
root          3      2  0 Apr17 ?        00:00:01 [ksoftirqd/0]
root          5      2  0 Apr17 ?        00:00:00 [kworker/0:0H]
root          7      2  0 Apr17 ?        00:00:00 [migration/0]
root          8      2  0 Apr17 ?        00:00:00 [rcu_bh]
root          9      2  0 Apr17 ?        00:00:01 [rcu_sched]
root         10      2  0 Apr17 ?        00:00:00 [lru-add-drain]
[00:02:06  root@client scripts]#ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.3 125500  3940 ?        Ss   Apr17   0:02 /usr/lib/systemd/systemd --switched-root --system --des
root          2  0.0  0.0      0     0 ?        S    Apr17   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    Apr17   0:01 [ksoftirqd/0]
root          5  0.0  0.0      0     0 ?        S<   Apr17   0:00 [kworker/0:0H]
root          7  0.0  0.0      0     0 ?        S    Apr17   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    Apr17   0:00 [rcu_bh]
root          9  0.0  0.0      0     0 ?        R    Apr17   0:01 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S<   Apr17   0:00 [lru-add-drain]
root         11  0.0  0.0      0     0 ?        S    Apr17   0:00 [watchdog/0]
root         13  0.0  0.0      0     0 ?        S    Apr17   0:00 [kdevtmpfs]

ps输出各属性的介绍:
  C:ps -ef 显示列为C,代表cpu利用率
  VSZ:Virtual memory Size,虚拟内存集,线性内存
  RSS:ReSident size,常驻内存集
  STAT:进程状态
        R:running
        S:可中断的睡眠进程
        D:不可中断的睡眠进程
        T:stopped
        Z:僵尸态进程
        +:前台进程
        l:多线程进程
        L:内存分页并带锁
        N:低优先级进程
        <:高优先级进程
        s:session leader,会话(子进程)发起者
        I:Idle kernel thread 新特性(centos8)
        ni:nice值
        pri:priority优先级
        rtprio:实时优先级
        psr:processor   cpu编号
3、常用组合:
      aux
      -ef
      -eFH
      -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm
      axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu

2、编写脚本,使用for和while分别实现192.168.10.0/24网段内,地址是否能够ping通,若ping通则输出"success!",若ping不通则输出"fail!"
1、for循环实现测试主机是否在线

[01:24:48  root@client scripts]#cat color.sh 
RED='echo -e \e[2;31m'
GREEN='echo -e \e[2;32m'
END='\e[0m
[01:24:44  root@client scripts]#cat ping_for.sh 
#!/bin/bash
. color.sh
NET=192.168.10.
for ip in $*
do
{
  ping -w1 -c1 ${NET}${ip} &> /dev/null && ${GREEN}"${NET}${ip}此主机存在:"${END} || ${RED}"${NET}${ip}:此主机不存在"${END} 
}&
done
wait

[01:27:28  root@client scripts]#./ping_for.sh 10 30 20
192.168.10.30:此主机存在
192.168.10.20:此主机不存在
192.168.10.10:此主机不存在

2、while循环实现测试主机是否在线
[01:24:48  root@client scripts]#cat color.sh 
RED='echo -e \e[2;31m'
GREEN='echo -e \e[2;32m'
END='\e[0m

[02:13:27  root@client scripts]#cat ping_while.sh 
#!/bin/bash
. color.sh
NET=192.168.10.
echo $* |tr ' ' '\n' | while read ip
do
{
  ping -w1 -c1 ${NET}${ip} &> /dev/null && ${GREEN}"${NET}${ip}:此主机存在"${END} || ${RED}"${NET}${ip}:此主机不存在"${END} 
}&
wait
done 

[02:12:44  root@client scripts]#./ping_while_read.sh 1 2 10 38
192.168.10.1:此主机存在
192.168.10.2:此主机不存在
192.168.10.10:此主机不存在
192.168.10.38:此主机存在

3、每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
[02:46:28  root@client etc]#tar -cJf /data/backup/etcbak-`date -d '-1 day' +%F-%H`.tar.xz /etc
tar: Removing leading `/' from member names     
P选项  don't strip leading `/'s from file names (可去除上述提示)
[02:46:56  root@client etc]#tar -cJPf /data/backup/etcbak-`date -d '-1 day' +%F-%H`.tar.xz /etc
[02:47:52  root@client etc]#ls /data/backup/
etcbak-2021-04-18-02.tar.xz

[02:56:01  root@client yum.repos.d]#crontab -e     //创建定时任务
30 13 1-5 * *    /usr/bin/tar -cJPf /data/backup/etcbak-`date -d '-1 day' +%F-%H`.tar.xz /etc 
[03:01:08  root@client yum.repos.d]#crontab -l   //查看定时任务
30 13 1-5 * *    /usr/bin/tar -cJPf /data/backup/etcbak-`date -d '-1 day' +%F-%H`.tar.xz /etc

4、工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高 于80%,就发送邮件报警
[04:20:08  root@client scripts]#cat check_disk.sh 
#!/bin/bash
. /data/scripts/color.sh
WARNING=80
df -h | sed -nr 's/(^[^ ]+).* ([0-9]{,3})% (.*)$/\1\t\2/p' | while read DISK USE
do
[ "${USE}" -gt "${WARNING}" ] && ${RED}"${DISK}超出预警空间,请及时处理!使用空间为:${USE}"${END} | mail -s ${RED}"DISK WARNING"${END} root 
done
[04:20:45  root@client scripts]#chmod +x check_disk.sh
[04:20:45  root@client scripts]#crontab -e
[04:23:32  root@client scripts]#crontab -l
*/10 * * * *     /data/scripts/check_disk.sh

你可能感兴趣的:(2021-04-19 第十一周)