linux面试题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了linux面试题相关的知识,希望对你有一定的参考价值。

1、Linux挂载Winodws共享文件夹:

  1)在windows下建立一个共享文件夹。
  2)确认你的linux安装了samba软件包及其客户端程序(smbclient),因为samba就是提供linux与windows互访的程序。
  3)开始查看windows下的共享文件目录:smbclient –L //192.168.1.1,如果连接正常,就可以看到windows下的共享目录了(字符形式)。
  4)挂载共享目录:mount –t cifs –ousername=“”,passwd=“”//192.168.1.1/共享文件夹/ /mnt/

2、查看http的并发请求数及其TCP连接状态:

  netstat -n | awk ‘/^tcp/ {++S[$NF]} END {for(a in S) print a,S[a]}‘

3、用tcpdump嗅探80端口的访问看看谁最高:

tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." ‘{print$1"."$2"."$3"."$4}‘ | sort | uniq -c | sort -nr|head -20
1)tcpdump -i eth0 -tnn dst port 80 -c 1000:统计本机中目标端口为80的数据包,-tnn:直接以IP及port number显示,而非主机名与服务名称,并且不显示时间戳。-c 1000:统计1000个数据包。
2)awk -F"." ‘{print$1"."$2"."$3"."$4}‘:对tcpdump的输出一行一行得进行处理,以.作为分隔域,将远程主机IP依次打印出来。
3)sort:对输出的访问端IP进行排序。
4)uniq –c:将相同行合并,并统计相同行的数量。
5)sort –nr:以相同行数量进行排序,反向排序,最大的放在最前面。
6)head -20:提取前20行。

4、统计指定目录的文件个数:

  find / -type f | wc –l
  1)find / -type f:找出根目录下,一般文件。
  2)wc –l:统计行数。

5、查看IP连接数(访问本机的远程主机数量):

netstat -n | awk ‘/^tcp/ {print $5}‘| awk -F: ‘{print $1}‘ |sort | uniq -c | sort –rn
1)netstat –n:列出本机的所有网络连接,包括TCP/UDP和Unix socket两部分。
2)awk ‘/^tcp/ {print $5}‘:/^tcp/:条件是以tcp开头的行,^:在此处代表行首的意思。{print $5:将第5个字段打印出来,代表远程主机的IP和port,默认是以tab作为分隔域。
3)awk -F: ‘{print $1}‘:“-F:”:以:作为分隔域;打印第一个字段,将port去掉,只显示IP。
4)sort:将IP进行排序。
5)uniq –c:将相同行合并,并统计相同行的数量。
6)sort –nr:以相同行数量进行排序,反向排序,最大的放在最前面。

6、shell下32位随机密码生成(数字加字母):

方法1:(有点问题)
cat /dev/urandom | sed –e ‘s/[^a-zA-Z0-9]//g’|strings –n 32|head –n 1
1)/dev/urandom:产生随机数的文件。
2)sed –e ‘s/[^a-zA-Z0-9]//g’:将产生的数据,一行一行进行处理,非字母数字内容删除掉。
3)string –n 32:设置字符串的位数为32位,也是对每一行进行处理。
4)head –n 1:提取第一行的内容。

方法2:
cat /proc/sys/kernel/random/uuid| md5sum| cut –c 1 -32
1)cat /proc/sys/kernel/random/uuid:读取UUID码文件,每次获得的数据都会不同,为8-4-4-4-12形式数字加字母的字符串。
2)md5sum :将UUID码转换为MD5码(有问题?);
3)cut –c 1-32:选取每行中的1-32字符的内容。

7、统计出apache的access.log中访问量最多的5个IP:

  cat access_log_2011_06_26.log |awk ‘{print $1}‘|uniq -c|sort -rn|head -n 5
  1)查看日志文件即可

8、如何查看二进制文件的内容:

  hexdump -C [filename]:使用hexdump命令即可。

9、ps aux 中VSZ代表什么意思 ,RSS代表什么:

1)ps aux:查看系统正在运行的所有进程。
[1]a:显示所有与终端相关的进程,由终端发起的.
[2]x:显示所有与终端无关的进程.
[3]u:显示用户导向的用户列表.
1)VSZ:虚拟内存集,进程占用的虚拟内存空间
2)RSS :物理内存集,进程占用实际物理内存空间.
3)S:可中断的睡眠态
4)R:运行态
5)D:不可中断的睡眠态
6)T:停止态
7)Z:僵死态

10、检测并修复/dev/hda5:

  umount /dev/hda5 ; e2fsck -p /dev/hda5;mount /dev/hda5:卸载/dev/hda5;-p:不询问使用者意见,便自动修复文件系统;检测并修复完毕后,记得再重新挂载/dev/hda5。

11、Linux开机启动顺序:

开机顺序:
1)Bios程序读取CMOS上的信息到内存中,取得各项硬件的参数,对硬件进行检测和初始化(POST,Power-on self-test,加电自检),并决定启动设备次序。
2)BIOS读取MBR中的引导装载程序(boot loader)到内存中。
3)引导装载程序将内核文件读入内存,内核加载后,重新检测硬件并加载各硬件的驱动程序,使硬件准备就绪!
4)运行第一个进程initrd,并逐步启动各种服务。
5)此外,如果是多系统主机,还包括引导加载程序和grub的内容。每个分区也会有引导扇区(boot sector),用于完成多重引导功能。

12、符号链接和硬链接的区别:

  1)硬连接(实际连接):在目录的block中将多个文件名对应一个inode,可以理解为文件的别名,不需要占有额外的inode和block,只需要在目录的block下添加点数据。只能对文件使用硬连接,对目录不行。使用命令 ln filename1 filename2,将文件filename1产生一个硬连接(别名)filename2.
  2)符号连接(快捷方式):创建一个文件(inode+block),block记载需连接文件的目录的inode及该文件的文件名,变形成了符号链接,可以理解为快捷方式。符号连接可以针对目录。ln –s filename1 filename2

13、保存当前磁盘分区的分区表:

  sfdisk -d /dev/sdb >/etc/sdbpar.bak :保存分区表
  1)sfdisk –d /dev/sdb:查看整块硬盘sdb的分区表。

14、检测并自动修复文件系统:

  e2fsck - check [a Linux ext2/ext3 file system]
  -B 指定块大小
  -f 强制检测.
  -p 自动修复文件系统
  1)与第10题一样

15、手动安装grub:

  手动安装grub
  1.grub-install --boot-directory=[指定boot目录]
  DEVICE(文件系统)
  2.grub
  grub>root (hd0,0):第一个硬盘的第一个分区
  grub>setup (hd0):
  1)grub为开机后系统的引导程序,提供开机时选择进入哪个系统(多系统环境)。

16、改内核参数:

  # sysctl
  -p 不用重启系统,让内核重读/etc/sysctl.conf文件
  -a 显示所有内核参数及其正在使用的值.
  -w 临时设置/etc/sysctl.conf参数sysctl -w net.ipv4.ip_froward=0

17、在指定范围内取随机数:
  echo $[$RANDOM%39]:对39进行取余,余数肯定是39以内的数字.

18、限定apache的HTTP服务器:每秒钟连接数为1,峰值为3:

iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -m limit--limit 1/second --limit-burst 3 -j ACCEPT
1)–A INPUT:新增加一条INPUT表格规则。
2)–d 172.16.100.1:目标主机的IP即本机。此处也可换乘-i
eth0:eth0为HTTP的对外网卡,表示想要进入此网卡的数据包。
3)–p tcp --dport 80:tcp协议,目标端口为80。
4)–m limit --limit 1/second –limit-burst 3:限制每秒钟连接数为1,峰值为3。
5)–j ACCEPT:操作为接受。

19、FTP主动与被动模式:

1.主动模式
1)客户端随机启动一个大于1024的端口A,和FTP服务器端的命令端口21,经过三次握手后,建立命令传送通道。
2)客户端再启动一个端口(端口号为:A+1),并通过命令传送通道,告知服务器端。
3)服务器端接受到端口后(A+1),就主动通过20端口和客户端A+1端口进行三次握手连接,建立数据传送通道。
4)但是由于客户端可能存在防火墙的原因,使得服务器端无法连接到客户端的A+1端口,这就产生了被动连接模式了。
2.
被动模式
1)客户端随机启动一个大于1024的端口A,和FTP服务器端的端口21,经过三次握手后,建立命令传送通道。
2)服务器端随机启动一个端口B,并通过命令传送通道告知客户端。
3)客户端接受到端口后(B),就启动端口(A+1),和服务器端的B端口经过三次握手连接,建立数据传送通道

20、显示/etc/inittab中以#开头,且后面跟一个或多个空白字符,而后又跟了任意非空白字符的行:

  grep "^\#[[:space:]]\{1,\}.\{1,\}"/etc/inittab
  1)^:行首;\#:转义字符;[[:space:]]\{1,\}:代表一个或多个空白字符。
  2).\{1,\}:.:代表一定有一个任意字符。

21、显示/etc/inittab中包含了:一个数字:(即两个冒号中间一个数字)的行:

  grep "\:[0-9]\:" /etc/inittab
  1)\:转义字符
  2)[0-9]:代表一定有0-9中的一个数字,

22、怎么把自己写的脚本添加到服务里面,即可以使用service命令来调用:

1)编写测试脚本test#!/bin/bash
chkconfig: - 90 10
description: just a test
echo "Hello,$1"
2)使脚本能够被service命令调用
[1]mv test /etc/init.d/:将脚本放置到stand alone目录下。
[2]chmod +x /etc/init.d/test:对文件添加x权限,代表可执行。
[3]chkconfig --add test:增加所指定的系统服务,让chkconfig指令得以管理它,并同时在系统启动的叙述文件内增加相关数据。
[4]service test start
:开机系统服务“test”。

23、写一个脚本,实现批量添加20个用户,用户名为user1-20,密码为user后面跟5个随机字符:

#!/bin/bash
for i in {1..20};
do
pass=$( cat /proc/sys/kernel/random/uuid| md5sum | cut –c 1 -32):读取uuid文件,生成一个包含5个数字或字母的随机数,${cmd}为取得命令的结果。
useradd user${i}:添加用户user1-user20
echo $pass | passwd user${i} –stdin:给用户设置密码,--stdin:通过前一个管道输出,来作为密码输入。
echo "user${i} <=============> $pass">> ./userlist.out:将用户和密码以累加的方式写入到userlist.out文件中。
done
echo ‘Sucess,passwd is in userlist.out‘:添加成功。

24、写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线:

1)方法1,使用ping命令:
#!/bin/bash
ips="192.168.1."
for i in {1..254}; do
ping -W 1 -c 1 ${ips}${i} &>/dev/null && echo"${ips}${i} is up" | tee -a uplog.txt || echo "${ips}${i} isdown"
[1]ping -W 1 -c 1 ${ips}${i}:向指定IP发送ICMP数据包,-W 1:等待1秒钟;-c 1:ping一次。
[2]&>/dev/null: &>等同2>1&:将错误信息和正确信息分开,输入到/dev/null,此处只有错误信息,因此也可使用2>/dev/null。
[3]&& echo "${ips}${i} is up":如果能够ping通过,输出IP在线的信息。
[4]|tee -a uplog:以累加方式将在线IP记录到文件uplog.txt。
[5]|| echo "${ips}${i} is down":如果通过ping不通过,输出IP不在线的信息。
done
echo "Please read uplog to know which host is online. ":在线用户在文件uplog中。
2)方法2,使用nmap命令
nmap –sp 192.168.1.0/24:通过数据包检测,分析局域网内有几台主机是启动的。

 












































































































以上是关于linux面试题的主要内容,如果未能解决你的问题,请参考以下文章

Linux面试题汇总答案

linux认证面试题及答案(5)

[Linux]经典面试题

Linux面试题

2018--Linux面试题

Linux面试题