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