Linux相关知识的第十一回合
显示统计占用系统内存最多的进程,并排序
[hooper@magedu-demo ~] $ ps aux --sort=-%mem |head -6
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 3450 0.0 0.4 574028 17272 ? Ssl 5月11 1:24 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 1698 0.0 0.3 47272 14544 ? Ss 5月11 0:03 /usr/lib/systemd/systemd-journald
polkitd 3171 0.0 0.3 612240 13160 ? Ssl 5月11 0:03 /usr/lib/polkit-1/polkitd --no-debug
root 3453 0.0 0.2 296484 11132 ? Ssl 5月11 0:38 /usr/sbin/rsyslogd -n
root 3174 0.0 0.2 473756 10468 ? Ssl 5月11 0:15 /usr/sbin/NetworkManager --no-daemon
[hooper@magedu-demo ~] $ ps aux --sort=-rss |head -6
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 3450 0.0 0.4 574028 17272 ? Ssl 5月11 1:24 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
root 1698 0.0 0.3 47272 14544 ? Ss 5月11 0:03 /usr/lib/systemd/systemd-journald
polkitd 3171 0.0 0.3 612240 13160 ? Ssl 5月11 0:03 /usr/lib/polkit-1/polkitd --no-debug
root 3453 0.0 0.2 296484 11132 ? Ssl 5月11 0:38 /usr/sbin/rsyslogd -n
root 3174 0.0 0.2 473756 10468 ? Ssl 5月11 0:15 /usr/sbin/NetworkManager --no-daemon
[hooper@magedu-demo ~] $ ps aux | sort -k4nr|head -5
root 3450 0.0 0.4 574028 17272 ? Ssl 5月11 1:24 /usr/bin/python2 -Es /usr/sbin/tuned -l -P
polkitd 3171 0.0 0.3 612240 13160 ? Ssl 5月11 0:03 /usr/lib/polkit-1/polkitd --no-debug
root 1698 0.0 0.3 47272 14544 ? Ss 5月11 0:03 /usr/lib/systemd/systemd-journald
root 3174 0.0 0.2 473756 10468 ? Ssl 5月11 0:15 /usr/sbin/NetworkManager --no-daemon
root 3453 0.0 0.2 296484 11132 ? Ssl 5月11 0:38 /usr/sbin/rsyslogd -n# ps aux 表头的含义
# USER 进程属于哪个使用者
# PID 进程的PID
# %CPU 进程使用CPU资源的百分比
# %MEM 进程使用物理内存的百分比
# VSZ 进程使用虚拟内存的情况(Kbytes)
# RSS 进程使用物理内存的情况(Kbytes)
# TTY 进程在哪个终端上运行的
# STAT 进程目前的状态
# START 开始运行改进程的时间
# TIME 进程实际使用CPU运行的时间
# COMMAND 进程实际运行的命令
编写脚本,使用for
和while
分别实现192.168.0.0/24网段内,地址是否能够ping通,若ping通则输出"success!"
,若ping不通则输出"fail!"
for循环的脚本
###################################################################
[hooper@magedu-demo sh] $vim ping_for_ip.sh
###################################################
# File Name: ping_for_ip.sh
# Author: hooper
# Mail: hujing0228@gmail.com
# Created Time: 2021-05-24 16:21
#==================================================
#!/bin/bash### 设置变量
net_id=192.168.168.### 脚本开始
for ip_id in {1..254};do
{if /bin/ping -c1 -W1 ${net_id}${ip_id} >/dev/null ;thenecho -e "\033[32m ${net_id}${ip_id} is success! \033[0m"elseecho -e "\033[31m ${net_id}${ip_id} is fail! \033[0m"fi
} & ###并发执行
done
wait
###################################################################
[hooper@magedu-demo sh] $ chmod +x ping_for_ip.sh
[hooper@magedu-demo sh] $ /bin/sh ping_for_ip.sh192.168.168.2 is success!192.168.168.5 is success!192.168.168.13 is success!192.168.168.20 is success!192.168.168.15 is success!192.168.168.18 is success!192.168.168.10 is success!192.168.168.23 is success!..............192.168.168.1 is fail!192.168.168.6 is fail!192.168.168.9 is fail!192.168.168.35 is fail!192.168.168.38 is fail!192.168.168.43 is fail!192.168.168.49 is fail!192.168.168.31 is fail!192.168.168.50 is fail!192.168.168.25 is fail!192.168.168.53 is fail!192.168.168.4 is fail!192.168.168.7 is fail!192.168.168.8 is fail!
while循环的脚本
[hooper@magedu-demo sh] $ vim ping_while_ip.sh
###################################################################
###################################################
# File Name: ping_while_ip.sh
# Author: hooper
# Mail: hujing0228@gmail.com
# Created Time: 2021-05-24 16:37
#==================================================
#!/bin/bash### 设置变量
net_id=192.168.168.### 脚本开始ip_id=1while [[ ${ip_id} -le 254 ]]; do/bin/ping -c1 -W1 ${net_id}${ip_id} >/dev/nullif [[ $? -eq 0 ]]; thenecho -e "\033[32m ${net_id}${ip_id} is success! \033[0m"elseecho -e "\033[31m ${net_id}${ip_id} is fail! \033[0m"filet ip_id++
done
###################################################################
[hooper@magedu-demo sh] $ chmod +x ping_while_ip.sh
[hooper@magedu-demo sh] $ /bin/sh ping_while_ip.sh192.168.168.1 is fail!192.168.168.2 is success!192.168.168.3 is success!192.168.168.4 is fail!192.168.168.5 is success!192.168.168.6 is fail!192.168.168.7 is fail!192.168.168.8 is fail!192.168.168.9 is fail!192.168.168.10 is success!192.168.168.11 is success!192.168.168.12 is success!
每周的工作日1:30,将/etc备份至/backup目录中,保存的文件名称格式 为“etcbak-yyyy-mm-dd-HH.tar.xz”,其中日期是前一天的时间
[root@magedu-demo ~] # crontab -l
0 */5 * * * /usr/sbin/ntpdate ch.pool.ntp.org >/dev/null 2>&1
30 1 * * 1-5 /usr/bin/tar -cPf /backup/etcbak-$(date -d yesterday +\%F-\%H).tar /etc > /dev/null && /usr/bin/xz -z /backup/etcbak-$(date -d yesterday +\%F-\%H).tar >/dev/null 2>&1
# ⚠️注意
# crontab命令中的%会被当成回车来看待,而且%后的内容会作为该命令的标准输入
# 所以如果在crontab命令中如果有%需要使用反斜杠(\)进行转移
工作日时间,每10分钟执行一次磁盘空间检查,一旦发现任何分区利用率高于80%,就发送邮件报警
[hooper@magedu-demo sh] $ vim check_disk.sh
###################################################################
###################################################
# File Name: check_disk.sh
# Author: hooper
# Mail: hujing0228@gmail.com
# Created Time: 2021-05-24 17:42
#==================================================
#!/bin/bashused_rate_than80=$(df -h|awk -F '[ %]+' '{print $5,$6}'|awk '$1>80'|tail -n +2 >/tmp/disk.log)
counts=$(cat /tmp/disk.log|wc -l)if [[ ${counts} -ne 0 ]]; thencat /tmp/disk.log| mutt -s "磁盘使用率大于80%" no-replay@kefuxing.com.cn
fi
###################################################################
[hooper@magedu-demo sh] $ chmod +r check_disk.sh
[hooper@magedu-demo sh] $ /bin/sh -x check_disk.sh
++ df -h
++ awk '$1>80'
++ tail -n +2
++ awk -F '[ %]+' '{print $5,$6}'
+ used_rate_than80=
++ cat /tmp/disk.log
++ wc -l
+ counts=0
+ [[ 0 -ne 0 ]][hooper@magedu-demo sh] $ crontab -l
*/10 * * * 1-5 /bin/sh /home/hooper/sh/check_disk.sh >/dev/null 2>&1