Linux基础实践(一)第一部分答案
1. 系统基本状态、信息查询题组
(1)用cat /proc/cpuinfo、lspci等命令来查看各项组件的型号。
参考答案:
查看物理CPU个数:
cat /proc/cpuinfo|grep “physical id”|sort |uniq|wc -l
查看每个物理CPU中core(核)的个数:
cat /proc/cpuinfo|grep “cpu cores”| uniq
查看逻辑CPU的个数:
cat /proc/cpuinfo|grep “processor”|wc -l
查看CPU信息(型号):
cat /proc/cpuinfo|grep name|cut -f2 -d:|uniq -c
查询系统CPU是否启用超线程:
cat /proc/cpuinfo|grep -e “cpu cores” -e “siblings” |sort |uniq。如果cpu cores数量和siblings数量一致,则没有启动超线程,否则超线程被启用。
uniq 从输入文件或者标准输入中筛选相邻的匹配行并写入到输出文件或标准输出。
总核数=物理CPU个数*每颗物理CPU的核数
总逻辑CPU数=物理CPU个数*每颗物理CPU的核数*超线程数
以树的形式显示pci设备信息
lspci -t
显示详细的pci设备信息,v越多,越详细,上限三个
lspci -v/-vv/-vvv
显示设备的厂商号、设备号、class号
lspci -D
(2)查看操作系统版本,查看主机名
参考答案:
查看操作系统版本有多种方法:
显示电脑以及操作系统的相关信息:uname -a
显示正在运行的内核版本: cat/proc/version
显示所有linux发行版本信息:cat /etc/issue
除了Debian 外可以适用于所有linux的查看系统版本:lsb_release -a
适用于Redhat系列的linux:cat /etc/redhat-release
查看主机名:
cat /etc/hosts
cat /etc/sysconfig/network
cat /proc/sys/kernel/hostname
hostname/hostnamectl
(3)查看查看当前系统环境变量
参考答案:
cat /etc/profile
(4)查看2010年5月2日是星期几
参考答案:
date -d 2010-5-2
(5)如何用命令查看一个文件的文件类型
参考答案:
先介绍一下文件有哪些类型:
普通文件类型(第一个属性为[-]):包括纯文本文件(ASCII),二进制文件(binary);数据格式文件(data);各种压缩文件。
目录文件(第一个属性为[d]):能用cd命令进入的文件。
块设备文件(第一个属性为[b]):存储数据以供系统存取的接口设备,简单而言就是硬盘。例如一号硬盘的代码是/dev/hda1
字符设备文件(第一个属性为[c]):即串行端口的接口设备,例如键盘、鼠标等等。
套接字文件(第一个属性为[s]):这类文件通常用在网络数据连接。可以启动一个程序来监听客户端的要求,客户端就可以通过套接字来进行数据通信。最常在/var/run目录中看到这种文件类型。
管道文件(第一个属性为[p]):FIFO也是一种特殊的文件类型,它主要的目的是,解决多个程序同时存取一个文件所造成的错误。
链接文件第一个属性为[l]:类似于Windows下面的快捷方式。
查看文件类型的三种方法:
分别是:ls-l/ll+文件名;file+文件名;stat+文件名(查看文件的详细属性包括文件的时间属性)
(6)从/proc/meminfo中过滤出内存的使用情况,并保存到/root/mem.txt中
参考答案:
过滤内存使用情况并保存:cat /proc/meminfo |grep MemAvailable >/root/mem.txt
(7)通过df命令过滤出/分区的使用情况,并保存到/root/df.txt
参考答案:
过滤分区并保存:df -h >/root/df.txt
(8)统计当前本机运行的进程数,并按从大到小排序
参考答案:
按内存从大到小排列ps -e -o "%C : %p : %z : %a"|sort -k5 -nr按cpu利用率从大到小排列 ps -e -o "%C : %p : %z : %a"|sort -nr
(9)查出分区空间使率的最大百分比值
参考答案:
df | tr -s ' ' % | cut -d ' ' -f 5 | sort -nr | head -1
先用tr压缩空行,再用cut分段提取对应的段,采用sort逆序排序再有head -1显示第一行
(10)请用命令查出ifconfig命令程序的绝对路径
参考答案:
which ifconfig
(11)查看系统中每个ip的连接数
参考答案:
netstat -n | awk ‘/^tcp/ {print $5}’| awk -F: ‘{print $1}’ | sort | uniq -c | sort -rn
1.netstat 列出连接信息
2.找到tcp开头的信息,并打印第5列
3.再以”:”为分隔符,打印第一列
4.排序去重
5.按数值的倒序排列
(12)查看系统中启动了哪些端口
参考答案:
netstat -tlnp
(13)查看是否开启80端口,及查看sshd进程是否存在
参考答案:
netstat -ntulp |grep 80
ps -ef | grep ssh
netstat命令各个参数说明如下:
-a:列出所有网络状态,包括 Socket 程序
-c秒数:指定每隔几秒刷新一次网络状态
-p:显示 PID 和程序名
-t:显示使用 TCP 协议端口的连接状况
-u:显示使用 UDP 协议端口的连接状况
-l:仅显示监听状态的连接
-r:显示路由表
(14)列出所有处于监听状态的tcp端口
参考答案:
netstat -lntp
(15)查看所有的端口信息, 包括 PID 和进程名称
参考答案:
netstat -ap
参考答案:
ifconfig ens33 | sed -n '/inet /s#\(.*inet \)\(.*\)\( n.*\)#\2#gp'
(17)制造一个CPU负载高的场景,检验以下命令:top、htop、
Iftop、iostat、iotop、mpstat的效果。
2. 批量创建目录、文件,查询、复制、改名文件操作组题
(1)在/abc下一次创建1000个目录,随后一次删除/abc下一次创建的1000个目录。请在/abc下用touch再创建20个以stu开头的普通可读文档,文档后缀为.txt
参考答案:
mkdir /abc/chenchen{1..1000}
rm -rf /abc/chenchen{1..1000}
touch stu{1..20}.txt
(2)在/boot下查找文件名以vmlinuz开头的文件?
参考答案:
find /boot/vmlinuz*
(3)在/boot下查找文件大小大于3M 小于 20M 的文件
参考答案:
find /boot -size +3M -a -size -20M
(4)请用cp命令将/boot/目录下以vmlinuz开头的文件拷贝到/abc下,并以查看他们占磁盘的空间大小。
参考答案:
cp /boot/vmlinuz* /abc
du -s /boot/vmlinuz*
(5)将其中一个vmlinuz开头的文件改名为kgc,另外一个剪切到/tmp目录下。查看/tmp/目录下以vmlinuz开头文件的详细状态信息。
参考答案:
mv vmlinuzA kgc
mv /abc/vmlinuzB /tmp
stat /tmp/vmlinuz*
(6)用find命令查找/tmp目录下以vmlinuz开头及大小超过1M的文件
参考答案:
find /tmp -name "vmlinuz*" -a -size +1M
(7)将/etc/中的所有目录(仅目录)复制到/tmp下,目录结构不变
参考答案:
find /etc -type d -exec mkdir -p /tmp/{} \;
find /etc/ -type d | xargs -I {} mkdir -p /tmp/ {} \;
(8)将/etc目录复制到/var/tmp/,/var/tmp/etc的所有目录权限777/var/tmp/etc目录中所有文件权限666
参考答案:
cp -a /etc /var/tmp
find /var/tmp/etc -type d -exes chmod 777 {} \;
find /var/tmp/etc -type f -exec chmod 666 {} \;
(9)请用一个命令统计/etc/hosts文件包含有多少行?多少字节?多少单词数?
参考答案:
wc /etc/hosts
3.list和正则表达式题组
(1)显示/var目录下所有以1开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
参考答案:
ls -d /var/l*[0-9]*[[:lower:]] 或
ls -d /var/l*[[:digit:]]*[[:lower:]]
(2)显示/etc目录下以任意一位数字开头,且以非数字结尾的文件或目录
参考答案:
ls /etc/[0-9]*[^0-9] 或
ls -d /etc/[[:digit:]]*[^[:digit:]]
(3)显示/etc目录下以非字母开头,后面跟了一个字母及其它任意长度任意字符的文件或目录
参考答案:
ls /etc/[^[:alpha:]][[:alpha:]]*
(4)显示/etc目录下所有以rc开头,并后面是0-6之间的数字,其它为任意字符的文件或目录
参考答案:
ls /etc/rc[:0-6:]*
(5)显示/etc目录下,所有以.d结尾的文件或目录
参考答案:
ls -d /etc/*.d
(6)显示/etc目录下,所有.conf结尾,且以m,n,r,p开头的文件或目录
参考答案:
ls -d /etc/[:m,n,r,p:]*.conf
(7)只显示/root下的隐藏文件和目录
参考答案:
ll -ad .*
ll:以长格式显示
-a:显示当前目录或路径下的所有文件包含隐藏文件
-d:仅显当前目录本身的内容
(8)只显示/etc下的非隐藏目录
参考答案:
ll /etc/ | grep ^d
ls -d /etc/*/
(9)显示/etc目录下所有以k开头,以一个小写字母结尾,且中间出现至少一位数字的文件或目录
参考答案:
ls -d /etc/k*[[:digit:]]*[[:lower:]]
(10)显示/proc目录下名字由任意三位数字组成的文件或目录
参考答案:
ls -d /proc/[0-9][0-9][0-9]
(11)显示/var/log目录下文件名包含符号及数字的文件或目录
参考答案:
ls -d /var/log/*[[:punct:]]*[0-9]
(12)显示/usr/share/man目录下所有以m开头,以一个数字和x结尾的文件或目录
参考答案:
ls -d /usr/share/man/m*[0-9]x
(13)显示/etc目录下,所有以一个大写字母开头,以两个数字结尾的文件或目录
参考答案:
ls -d /etc/[[:upper:]]*[0-9][0-9]
(14)显示/etc目录下,文件名至少包含一个小写字母和一个数字并以.conf结尾的文件或目录
参考答案:
ls -d /etc/*[[:lower:]]*[0-9]*.conf
(15)只显示用户家目录下的非隐藏目录
参考答案:
ls -d /home/*
(16)找出/etc下面,文件大小介于50KB到60KB之间的文件,并且将权限完整地列出(ls-l)
参考答案:
find -size +50k -size -60k -exec ls -ld {} \;
在{}和\之间必须要有空格,否则会报错。
4.grep、egrep题组
(1)通过grep管道工具过滤出ifconfig命令显示信息中的IP字段?
参考答案:
ifconfig | grep inet
(2)将/etc/passwd文件中的前20行重定向保存到/root下名称为pass?
参考答案:
head -20 /etc/passwd >/root/pass
(3)过滤/etc/passwd文件中含有/sbin/nologin 的行并统计行数?
参考答案:
grep 'sbin' /etc/passwd|grep 'nologin' |wc -l
(4)过滤/etc/passwd文件中以sh结尾的行,及以 root开头的行,不显示包含login的行?
参考答案:
grep '^root' /etc/passwd |grep 'sh$' |grep -v 'login'
(5)分别用grep和egrep过滤出/etc/ssh/sshd_config文件中不包含“#”开头和空白的行?
参考答案:
grep -v '^#' /etc/ssh/sshd_config |grep -v '^$'
egrep -v '^#' /etc/ssh/sshd_config |egrep -v '^$'
^ #匹配行的开始 如:'^grep'匹配所有以grep开头的行。
$ #匹配行的结束 如:'grep$'匹配所有以grep结尾的行。
^$ #匹配空白行
(6)用grep命令查询一个文件里面空行的所在行号?
参考答案:
grep -n '^$' /etc/ssh/sshd_config