Linux面试题总结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux面试题总结相关的知识,希望对你有一定的参考价值。
1、/var/log/messages日志中找到相关信息:kernel: nf_conntrack: table full, dropping packet。出现这些信息会导致什么后果?该如何解决?(此试题为网上他人总结,自己拿来学习)
解答:这个报错意思是,连接跟踪表已满,开始丢包。
出现上述结果会导致业务访问很慢。解决方法如下:
方案1:进行相关的系统参数的可以调优。
sysctl -a | grep nf_conntrack(在/etc/sysctl.conf文件中 ):
net.netfilter.nf_conntrack_max = 1048576 net.netfilter.ip_conntrack_tcp_timeout_established = 3600 net.netfilter.nf_conntrack_tcp_timeout_close_wait = 60 net.netfilter.nf_conntrack_tcp_timeout_fin_wait = 120 net.netfilter.nf_conntrack_tcp_timeout_time_wait = 12 方案2:使用祼表,添加“不跟踪”标识。如下示例更适合桌面系统或随意性强的服务器。因为它开启了连接的状态机制,方便和外部通信。修改 /etc/sysconfig/iptables 文件: *raw # 对TCP连接不启用追踪,解决ip_contrack满导致无法连接的问题 -A PREROUTING -p tcp -m tcp --dport 80 -j NOTRACK -A PREROUTING -p tcp -m tcp --dport 22 -j NOTRACK -A PREROUTING -p tcp -m tcp --dport 21 -j NOTRACK -A PREROUTING -p tcp -m tcp --dport 11211 -j NOTRACK -A PREROUTING -p tcp -m tcp --dport 60000:60100 -j NOTRACK -A PREROUTING -p tcp -s 192.168.10.1 -j NOTRACK -A OUTPUT -p tcp -m tcp --sport 80 -j NOTRACK -A OUTPUT -p tcp -m tcp --sport 22 -j NOTRACK -A OUTPUT -p tcp -m tcp --sport 21 -j NOTRACK -A OUTPUT -p tcp -m tcp --sport 11211 -j NOTRACK -A OUTPUT -p tcp -m tcp --sport 60000:60100 -j NOTRACK -A OUTPUT -p tcp -s 192.168.10.1 -j NOTRACK COMMIT *filter # 允许ping -A INPUT -p icmp -j ACCEPT # 对本地回路、第5张网卡放行 -A INPUT -i lo -j ACCEPT -A INPUT -i eth4 -j ACCEPT # 连接状态跟踪,已建立的连接允许传输数据 -A INPUT -m state --state ESTABLISHED,RELATED,INVALID,UNTRACKED -j ACCEPT # filter表里存在但在raw里不存在的,默认会进行连接状态跟踪 -A INPUT -s 192.168.10.31 -p tcp --dport 2669 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT 方案3:如果对安全没有要求,比如在内网。这种情况下,可以使用下面的方法进行解决 关闭防火墙,并设置不自动开启 chkconfig iptables off chkconfig ip6tables off service iptables stop service ip6tables stop 切记:在防火墙关闭状态下,不要通过iptables指令(比如 iptables -nL)来查看当前状态!因为这样会导致防火墙被启动,而且规则为空。虽然不会有任何拦截效果,但所有连接状态都会被记录,浪费资源且影响性能并可能导致防火墙主动丢包! 方案4:加大防火墙跟踪表的大小,优化对应的系统参数 1、状态跟踪表的最大行数的设定,理论最大值 CONNTRACK_MAX = RAMSIZE (in bytes) / 16384 / (ARCH / 32) 以64G的64位操作系统为例,CONNTRACK_MAX = 64*1024*1024*1024/16384/2 = 2097152 即时生效请执行: sysctl –w net.netfilter.nf_conntrack_max = 2097152 2、其哈希表大小通常为总表的1/8,最大为1/2。CONNTRACK_BUCKETS = CONNTRACK_MAX / 8 同样64G的64位操作系统,哈希最佳范围是 262144 ~ 1048576 。 运行状态中通过 sysctl net.netfilter.nf_conntrack_buckets 进行查看,通过文件 /sys/module/nf_conntrack/parameters/hashsize 进行设置 或者新建 /etc/modprobe.d/iptables.conf ,重新加载模块才生效: options nf_conntrack hashsize = 262144
2、请执行命令取出linux中eth0的IP地址(请用cut,有能力者也可分别用awk,sed命令答)
ifconfig bond0 | sed -n 2p | cut -d : -f2 |cut -c 1-13 ifconfig bond0 | sed -n 2p | awk -F ‘[ :]+‘ ‘{print $4}‘ ifconfig bond0 | awk -F ‘[ :]+‘ ‘NR==2 {print $4}‘ ifconfig bond0 | grep "inet addr:*" | awk -F ‘[ :]+‘ ‘{print $4}‘ ifconfig bond0 | sed -n 2p | sed ‘s#^.*addr:##g‘|sed ‘s#B.*$##g‘
解释:处理需要的目标(获取的字符串如上题的IP地址)前的字符串一般用以..开头(^.*)来匹配开头,匹配的结尾协商实际的字符,如:"^.*addr:"表达式匹配,结尾同开头匹配方式一致
取出Bcast
ifconfig bond0 |sed -n 2p | sed ‘s#^.*75[[:space:]]##g‘ | sed ‘s#:.*$##g‘ ifconfig bond0 |sed -n 2p | sed ‘s#^.*75 ##g‘ | sed ‘s#:.*$##g‘
用分组的方法来匹配
sed ‘s#(ddd)(fff)\1\2##g‘ ifconfig bond0 | sed -n ‘s#^.*addr:\(.*\) B.*$#\1#gp‘
3、查找当前目录下所有文件,并把文件中的www.a.org字符串替换成www.b.cc
find . -type f -name "*.txt" | xargs sed -i ‘s#www.a.org#www.b.cc#g‘ find . -type f -name "*.txt" -exec sed -i ‘s#www.a.org#www.b.cc#g‘ {} \;
4、请给出如下格式的date命令 例:11-02-26
date +%F date +%y-%m-%d 显示时分秒 date +%Y-%m-%d\ %T date +%F\ %T cp space.sh space.sh$(date +%F) 以时间结尾来备份 或者cp space.sh space.sh`date +%F` (反引号) 结果为:space.sh2017-05-04 打印三天前的日期:date +%F --date "-3 day" 打印三天后的日期:date +%F -d "3 day" date +%F -d "+3 day"
5、
编写个 shell 脚本将/root/script 目录下大于 20K 的文件转移到/root/file 目录下
法1: #!/bin/bash for file in `ls -l /root/script` do if [ -f $file ]; then if [ `ls -l $file|awk ‘{print $5}‘` -gt 10000 ]; then mv $file /root/file fi fi done
法2: #/bin/bash #=========bk file great 20K to other dirctory cd /root/script file=`ls -lk` dir=/root/file if [ -d $dir ] then echo "directory is exsit" find . -size +10k | xargs -I ‘{}‘ mv {} $dir else mkdir -p /root/file find . -size +10k | xargs -I ‘{}‘ mv {} $dir fi
本文出自 “linux学习总结” 博客,请务必保留此出处http://myybaby.blog.51cto.com/1555499/1951727
以上是关于Linux面试题总结的主要内容,如果未能解决你的问题,请参考以下文章