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 –o username=“”,passwd=“” /192.168.1.1/共享文件夹/ /mnt/

 

2、查看http的并发请求数及其TCP连接状态:
netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'

  1. 这句代码暂时还没弄清楚,还在找资料,弄清楚后,会再上传。

 

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 –an:列出本机的所有网络连接,包括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 –r:以相同行数量进行排序,反向排序,最大的放在最前面。

 


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

  1. 方法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:提取第一行的内容。
  5. 参考资料:http://blog.csdn.net/taiyang1987912/article/details/39997303
  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 -r |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

  1. 此题我也不懂…^_^

 

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,这就产生了被动连接模式了。
  1. 被动模式
  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"

  1. 使脚本能够被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 -5
):读取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} is down"

  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.txt:以累加方式将在线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:通过数据包检测,分析局域网内有几台主机是启动的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值