On this page
1.如何显示已加载的内核模块?
lsmod
2. 如何查看linux kernel版本号?
[root@wordpress-187 /]#uname -a
Linux wordpress-187 4.18.0-193.14.2.el8_2.x86_64 #1 SMP Sun Jul 26 03:54:29 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
3.如何查看一个文件依赖的动态链接库?
objdump命令:
[root@wordpress-187 /]#objdump -x /usr/lib64/libc-2.28.so | grep NEEDED
NEEDED ld-linux-x86-64.so.2
readelf命令:
[root@wordpress-187 /]#readelf -a /usr/lib64/libc-2.28.so | grep Shared
Type: DYN (Shared object file)
0x0000000000000001 (NEEDED) Shared library: [ld-linux-x86-64.so.2]
ldd命令:
[root@wordpress-187 ~]#ldd /usr/lib64/libc-2.28.so
/lib64/ld-linux-x86-64.so.2 (0x00007f9464be7000)
linux-vdso.so.1 (0x00007ffde4f73000)
4.linux中在哪里可以配置dns
- /etc/hosts:利用hosts自动解析域名到ip
- /etc/resolv.conf:配置dns解析服务器地址
- /etc/sysconfig/network-scripts/网卡名:网卡配置文件
5. 如何查看logfile最后100行内容
tail -100 ./access.log
6. 如何查看占用80端口的进程
netstat -tunlp | grep 80
7. linux中如何开启ip转发?
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
8. 如何查看一个目录占用磁盘空间大小?
du -h --max-depth=1
9. 如何设置系统最大文件打开数量限制为55555?
echo "fs.file-max = 55555" >> /etc/sysctl.conf
sysctl -p /etc/sysctl.conf
10. 说明下列Raid技术至少需要几块磁盘:
Raid0:两块,基于条带化技术将数据轮流写入两块磁盘
Raid1:两块,两块写入相同的数据,其中一块作为数据备份
Raid5:三块,每块数据都写入数据本身和奇偶校验值
Raid10:四块,先做成一组Raid1(两块存储,两块备份),再做Raid0
11. 简述raid0、1、5、10各自的优缺点
Raid 0
优点:读写性能高,磁盘利用率高
缺点:没有数据备份,安全性低
Raid 1
优点:一份数据一份备份,安全性高
缺点:写性能低(写两份)
Raid 5
优点:数据条带化存储在磁盘,读写性能好,磁盘利用率为(n-1)/n
缺点:只能允许坏掉一块盘。
Raid 10
优点:读写性能高,安全性高
缺点:磁盘利用率低,成本高
12.简述虚拟机硬盘扩容的步骤?
- 为虚拟机添加硬盘
- 重启或重新扫描SCSI总线发现新设备
- 根据磁盘大小将其转为MBR或GPT类型
- 进行分区操作(fdisk或gdisk)
- 格式化文件系统
- 配置挂载
13. linux中使用u盘与windows系统交换数据有什么注意点
- 需要注意将U盘格式化为能够同时让Windows和Linux识别的文件系统,比如FAT32,exFAT。
- Linux需要将U盘挂载后才能读取文件,和Windows不同。
14.简述磁盘无法写入可能得原因?
排除故障的话,可能是
- 挂载时使用了只读参数
- 磁盘被挂载在某个目录下,而当前操作的用户没有对这个目录的相关权限。
15.如何停止 PID 为 3836 的进程?停止不掉怎么办?再停不掉怎么办?
先kill 3836,默认使用-15信号正常终止进程。如果停不掉可以使用kill -9强制终止。
kill 9也杀不掉要考虑进程可能是僵尸进程,其本身占用的资源已经被释放,但父进程还存在,所以如果可以的话通过终止父进程来杀死这个僵尸进程;
最后一种情况则是进程运行在内核态,内核态忽略一切信号因此无法终止,只能通过重启服务器终止进程。
16.如何使用sed将文件file中所有///替换成aaa?
sed -i 's/\/\/\//aaa/g'
17. 如何添加一个环境变量,立即生效,且重启后生效。
在/etc/profile文件中添加
export PATH="/usr/local/nginx/sbin/:$PATH"
然后source /etc/profile。
如果是只为某个用户添加,可以加载.bashrc或者.bash_profile中。
18. 目录下有文件名为file1,file2,file3,...file10000的10000个文件,如何删除file1001到file2000这1000个文件?
for i in {1001..2000}
do
rm -f file${i}
done
19. 有一个备份程序mybackup,需要在周一至周五下午1点和晚上8点各运行一次
0 13,16 1,5 * * mybackup
20. 分别写出命令:启动运行docker容器,停止容器,删除一个nginx容器,删除nginx镜像
docker run -d image_name
docker stop container_id
docker rm container_id
docker rmi nginx:1.14
21. 如何在已经运行的容器里运行bash?
docker exec -it container_id bash
22. 使用vim编辑器将文件中AAA替换为BBB
:进入末行模式
:%s/AAA/BBB/g
23. 永久修改网卡地址
编辑网卡配置文件 /etc/sysconfig/network-scripts/ifcfg-eth0
24. 通过命令行给linux机器添加默认网关10.0.0.254
route add default gw 10.0.0.254
25. 在不unmount的情况下重新设置mount参数
在/etc/fstab写入挂载配置
mount -a
重新读取配置
26. 用iptables写一条放行80端口的防火墙规则
iptables -t filter -I INPUT -p tcp --dport 80 -j ACCEPT
27. 磁盘容量方面 inode怎么查看
查看inode使用情况
df -i
28. inode满了什么影响
磁盘分区Inode使用率达到100%会造成应用无法继续新建目录或者文件,但是一般此时通常系统内对应的磁盘空间还未用满。可以通过清除Inode占用高的文件或者目录、或者增加Inode数量来解决磁盘分区Inode使用率达到100%的问题。
可以通过df命令查看一些主要目录的inode占用百分比
df -i
解决方法
- 清除Inode占用高的文件或者目录
执行以下命令,分析根目录下的每个二级目录下有多少个文件。
for i in /*; do echo $i; find $i | wc -l; done
逐层进入Inode占用最高的目录,继续执行上述命令,逐步定位占用过高空间的文件或目录,最后进行相应清理。
2. 增加Inode数量
如果不允许清理磁盘中的文件,或者清理完可清理的文件后Inode使用率仍然较高,则可以需要通过备份数据、重新格式化磁盘增加Inode数、拷回数据等步骤,完成数据的保留并增加文件系统Inode数量。
卸载文件系统
umount /占用inode数量多的目录
格式化文件系统
mkfs.xfs /dev/sdb -N 1638400
# 一般根据1:16kb的比例
查看新的inode数量
dumpe2fs -h /dev/xvdb | grep node
29. 怎么查看服务器网络连接情况
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
30. time_wait连接状态多,什么原因,怎么解决
原因
- 在高并发的场景下,会出现大量的 TIME_WAIT 连接。
- 大量的短连接存在
我方主动调用close()断开连接,收到对方确认后状态变为TIME_WAIT。TCP协议规定TIME_WAIT状态会一直持续2MSL(即两倍的分段最大生存期),以此来确保旧的连接状态不会对新连接产生影响。处于TIME_WAIT状态的连接占用的资源不会被内核释放,所以作为服务器,在可能的情况下,尽量不要主动断开连接,以减少TIME_WAIT状态造成的资源浪费。
解决
- 客户端,调整短链接为长链接,HTTP 请求的头部,connection 设置为 keep-alive,保持存活一段时间
- 服务器端允许 time_wait 状态的 socket 被重用缩减 time_wait 时间,设置为 1 MSL(即,2 mins)
34. 客户端向服务端发送syn包尝试建立连接,服务端发现该端口连接已经存在,回复客户端什么包
处于 establish 状态的服务端如果收到了客户端的 SYN 报文(注意此时的 SYN 报文其实是乱序的,因为 SYN 报文的初始化序列号其实是一个随机数),会回复一个携带了正确序列号和确认号的 ACK 报文,这个 ACK 被称之为 Challenge ACK。
接着,客户端收到这个 Challenge ACK,发现序列号并不是自己期望收到的,于是就会回 RST 报文,服务端收到后,就会释放掉该连接。
31. docker容器挂了怎么查看问题
可以通过docker inspect查看container状态,然后通过docker logs查看报错日志。
32. docker运行的服务器磁盘占用满了。怎么解决
Docker在不重建容器的情况下,日志文件默认会一直追加,时间一长会逐渐占满服务器的硬盘的空间,内存消耗也会一直增加。
docker logs -f container_name噼里啪啦一大堆很占用空间,致使磁盘空间被占满。
docker system df #查看Docker占用分布
docker stats #可以查看docker容器的内存占用
定时清理日志
logs=`find /var/lib/docker/containers/ -name *-json.log`
cat /dev/null > $log
控制日志的数量和文件大小
- 命令行启动的容器
#docker run时添加--log-opt max-size=500m --log-opt max-file=3参数,如创建并运行
docker run -name xxx -p 80:80 --log-opt max-size=500m --log-opt max-file=3 xxx:v1
- 通过docker-compose配置的容器
通过配置容器docker-compose的max-size选项来实现
logging:
driver: "json-file"
options:
max-size: "500m" # 日志文件大小
max-file: "6" # 日志的数量
33. Dockerfile的ADD和COPY有何不同?
ADD命令:将本地文件添加到镜像,支持自动解压tar文件,支持通过URL将网络内容添加到镜像。
COPY命令:只支持将文件和目录从主机文件系统复制到镜像中的指定位置,不能自动解压也不支持网络文件。