1、统计出/etc/passwd文件中其默认shell类型为非/sbin/nologin的用户个数,并将用户都显示出来。
答:cut -d: -f1,7 /etc/passwd | grep -v ‘/sbin/nologin‘ | wc -l:
① 以冒号为分隔符,抽取/etc/passwd文件的第1、7列的内容。
② 通过管道技术,把cut命令的内容标准输入重定向到grep命令,然后查看不匹配/sbin/nologin的行。
③ 通过管道技术,把grep命令的内容标准输入重定向到wc命令,然后只统计行总数。
如图所示,在/etc/passwd文件中,默认shell类型为非/sbin/nologin的用户有16个。
[root@centos8 ~]#cut -d: -f1,7 /etc/passwd | grep -v ‘/sbin/nologin‘ | wc -l
16
[root@centos8 ~]#
cut -d: -f1,7 /etc/passwd | grep -v ‘/sbin/nologin‘ | cut -d: -f1:
① 以冒号为分隔符,抽取/etc/passwd文件的第1、7列的内容。
② 通过管道技术,把cut命令的内容标准输入重定向到grep命令,然后查看不匹配/sbin/nologin的行。
③ 通过管道技术,把grep命令的内容标准输入重定向到cut命令,然后以冒号为分隔符,抽取第1列的内容。
[root@centos8 ~]#cut -d: -f1,7 /etc/passwd | grep -v ‘/sbin/nologin‘ | cut -d: -f1
root
sync
shutdown
halt
qian
test
qc
user
gentoo
tomcat
git
mysql
mageia
user1
user2
user3
[root@centos8 ~]#
2、查出用户UID最大值的用户名、UID及shell类型。
答:cut -d: -f1,3,7 /etc/passwd | sort -t: -k2 -nr | head -n1
① 以冒号为分隔符,抽取/etc/passwd文件的第1、3、7列的内容。
② 通过管道技术,把cut命令的内容标准输入重定向到sort命令,然后按照使用冒号分隔的第2列,再按照数字(UID)从大到小顺序(倒序)排列。
③ 通过管道技术,把sort命令的内容标准输入重定向到head命令,然后查看第1行内容。
[root@centos8 ~]#cut -d: -f1,3,7 /etc/passwd | sort -t: -k2 -nr | head -n1
nobody:65534:/sbin/nologin
[root@centos8 ~]#
3、统计当前连接本机的每个远程主机IP的连接数,并按从大到小排序。
答:ss -nt | tail -n +2 | tr -s ‘ ‘ ‘:‘ | cut -d: -f6 | sort | uniq -c | sort -nr
① 查看目前有哪些主机(含端口)正在连接本服务器。
② 通过管道技术,把ss命令的内容标准输入重定向到tail命令,然后查看第2行到最后一行的内容。这样,可以查看ss命令的去掉首行,显示其余行的内容。
③ 通过管道技术,把tail命令的内容标准输入重定向到tr命令,然后相邻重复的空格符只保留一个(去重),再把空格符替换成冒号。
④ 通过管道技术,把tr命令的内容标准输入重定向到cut命令,然后以冒号为分隔符,抽取第6列的内容。
⑤ 通过管道技术,把cut命令的内容标准输入重定向到sort命令,然后按照默认顺序排列。
⑥ 通过管道技术,把sort命令的内容标准输入重定向到uniq命令,然后显示每行重复出现的次数。
⑦ 通过管道技术,把uniq命令的内容标准输入重定向到sort命令,然后按照数字(每行重复出现的次数)从大到小顺序(倒序)排列。
[root@centos8 ~]#ss -nt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
ESTAB 0 0 10.0.0.201:22 10.0.0.202:43242
ESTAB 0 52 10.0.0.201:22 10.0.0.1:50201
ESTAB 0 0 10.0.0.201:22 10.0.0.203:49918
ESTAB 0 0 10.0.0.201:22 10.0.0.202:43240
ESTAB 0 0 10.0.0.201:22 10.0.0.1:55162
ESTAB 0 0 10.0.0.201:22 10.0.0.1:55166
[root@centos8 ~]#ss -nt | tail -n +2 | tr -s ‘ ‘ ‘:‘ | cut -d: -f6 | sort | uniq -c | sort -nr
3 10.0.0.1
2 10.0.0.202
1 10.0.0.203
[root@centos8 ~]#
4、编写脚本disk.sh,显示当前硬盘分区中空间利用率最大的值。
答:方法一:
[root@centos8 data]#vim /data/disk.sh
[root@centos8 data]#cat /data/disk.sh
#!/bin/bash
#
#************************************************************
#Author: qc
#QQ 285076228
#Date: 2021-06-29
#FileName disk.sh
#URL:
#Description:
#Copyright (C): 2021 All rights reserved
#************************************************************
df | tail -n +2 | tr -s ‘ ‘ % | cut -d% -f5 | sort -nr | head -n1
[root@centos8 data]#
[root@centos8 data]#bash /data/disk.sh
21
[root@centos8 data]#bash ./disk.sh
21
[root@centos8 data]#
方法二:
[root@centos8 data]#vim /data/disk2.sh
[root@centos8 data]#cat /data/disk2.sh
#!/bin/bash
#
#************************************************************
#Author: qc
#QQ 285076228
#Date: 2021-06-29
#FileName /data/disk2.sh
#URL:
#Description:
#Copyright (C): 2021 All rights reserved
#************************************************************
df | grep -o ‘[0-9]*%‘ | tr -dc ‘[0-9]\n‘ | sort -nr | head -n1
[root@centos8 data]#
[root@centos8 data]#ll /data/disk2.sh
-rw-r--r--. 1 root root 367 Jun 29 16:19 /data/disk2.sh
[root@centos8 data]#chmod a+x /data/disk2.sh
[root@centos8 data]#ll /data/disk2.sh
-rwxr-xr-x. 1 root root 367 Jun 29 16:19 /data/disk2.sh
[root@centos8 data]#
[root@centos8 data]#/data/disk2.sh
21
[root@centos8 data]#./disk2.sh
21
[root@centos8 data]#
5、编写脚本 systeminfo.sh,显示当前主机系统信息,包括:主机名,IPv4地址,操作系统版本,内核版本,CPU型号,内存大小,硬盘大小。
答:
[root@centos8 data]#vim /data/systeminfo.sh
[root@centos8 data]#cat /data/systeminfo.sh
#!/bin/bash
#
#************************************************************
#Author: qc
#QQ 285076228
#Date: 2021-06-29
#FileName /data/systeminfo.sh
#URL:
#Description:
#Copyright (C): 2021 All rights reserved
#************************************************************
echo "查看当前主机系统信息:"
echo -e "\n1、主机名:"
hostname
echo -e "\n2、IPv4地址:"
hostname -I | cut -d‘ ‘ -f1
echo -e "\n3、操作系统版本:"
cat /etc/redhat-release
echo
cat /etc/os-release
echo -e "\n4、内核版本:"
uname -r
echo -e "\n5、CPU型号:"
lscpu
echo -e "\n6、内存大小:"
free -h
echo -e "\n7、硬盘大小:"
lsblk
[root@centos8 data]#bash /data/systeminfo.sh
查看当前主机系统信息:
1、主机名:
centos8
2、IPv4地址:
10.0.0.201
3、操作系统版本:
CentOS Linux release 8.2.2004 (Core)
NAME="CentOS Linux"
VERSION="8 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="8"
PLATFORM_ID="platform:el8"
PRETTY_NAME="CentOS Linux 8 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:8"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"
CENTOS_MANTISBT_PROJECT="CentOS-8"
CENTOS_MANTISBT_PROJECT_VERSION="8"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="8"
4、内核版本:
4.18.0-193.el8.x86_64
5、CPU型号:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 1
On-line CPU(s) list: 0
Thread(s) per core: 1
Core(s) per socket: 1
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 42
Model name: Intel(R) Core(TM) i3-2350M CPU @ 2.30GHz
Stepping: 7
CPU MHz: 2294.829
BogoMIPS: 4589.65
Hypervisor vendor: VMware
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 3072K
NUMA node0 CPU(s): 0
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx rdtscp lm constant_tsc arch_perfmon nopl xtopology tsc_reliable nonstop_tsc cpuid pni pclmulqdq ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer xsave avx hypervisor lahf_lm pti tsc_adjust arat
6、内存大小:
total used free shared buff/cache available
Mem: 1.8Gi 327Mi 950Mi 9.0Mi 523Mi 1.3Gi
Swap: 2.0Gi 0B 2.0Gi
7、硬盘大小:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 200G 0 disk
├─sda1 8:1 0 1G 0 part /boot
├─sda2 8:2 0 100G 0 part /
├─sda3 8:3 0 50G 0 part /data
├─sda4 8:4 0 1K 0 part
└─sda5 8:5 0 2G 0 part [SWAP]
sr0 11:0 1 7.7G 0 rom
[root@centos8 data]#