学员8月份去公司面试原题:
## 笔试题:
### 1. Linux如何挂在Windows下的共享目录
```bash
[root@itlaoxin-17 ~]# mount.cifs //192.168.1.17/server /mnt/server -o
user =administrator,pass=123456
```
### 2. 查看http的并发请求数与其TCP链接状态
```bash
[root@itlaoxin-17 ~]# netstat -n |awk '/^tcp/ {++b[$NF] END {for(a in b) print a,b[a]}}'
```
备注: 服务器上的一些统计数据的命令
1) 统计80端口连接数
netstat -nat|grep -i "80"|wc -l
2) 统计httpd协议连接数
ps -ef|grep httpd|wc -l
3)统计已连接上的,状态为“established
netstat -na|grep ESTABLISHED|wc -l
4)查出哪个IP地址连接最多,将其封了.
netstat -na|grep ESTABLISHED|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n
netstat -na|grep SYN|awk {print $5}|awk -F: {print $1}|sort|uniq -c|sort -r +0n
### 3. 用tcpdump嗅探80端口的访问看看谁最高
```bash
tcpdump -i eth0 -tnn dst port 80 -c 1000 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr |head -5
```
### 4. 查看/var/log目录下文件数
```bash
ls /var/log/ -lR| grep "^-" |wc -l
```
### 5. 查看当前系统每个IP的连接数
```bash
netstat -n | awk '/^tcp/ {print $5}'| awk -F: '{print $1}' | sort | uniq -c | sort -rn
```
### 6. shell下32位随机密码生成
```bash
cat /dev/urandom | head -1 | md5sum | head -c 32 >> /pass
将生成的32位随机数 保存到/pass文件里了
```
### 7. 统计出apache的access.log中访问量最多的5个IP
```bash
cat access_log | awk '{print $1}' | sort | uniq -c | sort -n -r | head -5
```
### 8. 如何查看二进制文件的内容
```bash
我们一般通过hexdump命令 来查看二进制文件的内容。
hexdump -C XXX(文件名) -C是参数 不同的参数有不同的意义
-C 是比较规范的 十六进制和ASCII码显示
-c 是单字节字符显示
-b 单字节八进制显示
-o 是双字节八进制显示
-d 是双字节十进制显示
-x 是双字节十六进制显示
```
### 9. ps aux 中的VSZ代表什么意思,RSS代表什么意思
```bash
VSZ:虚拟内存集,进程占用的虚拟内存空间
RSS:物理内存集,进程战用实际物理内存空间
```
### 10. 检测并修复/dev/hda5
```bash
fsck用来检查和维护不一致的文件系统。若系统掉电或磁盘发生问题,可利用fsck命令对文件系统进行检查,用法
```
### 11. 保存当前磁盘分区的分区表
```bash
dd 命令是以个强大的命令,在复制的同时进行转换
dd if=/dev/sda of=./mbr.txt bs=1 count=512
```
### 12. 手动安装grub
```bash
grub-install /dev/sda
```
### 13. 修改内核参数
```bash
vi /etc/sysctl.conf 这里修改参数
sysctl -p 刷新后可用
```
### 14. 在1-39内取随机数
```bash
expr $[$RANDOM%39] + 1
RANDOM 随机数
%39 取余数 范围 0-38
```
### 15. 限制apache每秒新建连接数为1,峰值为3
```bash
每秒新建连接数 一般都是由防火墙来做,apache本身好像无法设置每秒新建连接数,只能设置最大连接:
iptables -A INPUT -d 172.16.100.1 -p tcp --dport 80 -m limit --limit 1/second -j ACCEPT
硬件防火墙设置更简单,有界面化,可以直接填写数字。。。
最大连接 apache本身可以设置
MaxClients 3 ,修改apache最大连接 前提还是要修改系统默认tcp连接数
```
## 脚本题
### 1. 写一个脚本,实现批量添加20个用户,用户名为user01-20,密码为user后面跟5个随机字符
```bash
#!/bin/bash
#description: useradd
for i in `seq -f"%02g" 1 20`;do
useradd user$i
echo "user$i:`echo $RANDOM|md5sum|cut -c 1-5`"|passwd –stdinuser$i >/dev/null 2>&1
done
```
### 2. 写一个脚本,实现判断192.168.1.0/24网络里,当前在线的IP有哪些,能ping通则认为在线
```bash
#!/bin/bash
for ip in `seq 1 255`
do
{
ping -c 1 192.168.1.$ip > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo 192.168.1.$ip UP
else
echo 192.168.1.$ip DOWN
fi
}&
done
wait
```
### 3. 写一个脚本,判断一个指定的脚本是否是语法错误;如果有错误,则提醒用户键入Q或者q无视错误并退出其它任何键可以通过vim打开这个指定的脚本
```bash
root@localhost tmp]# cat checksh.sh
#!/bin/bash
read -p "please input check script-> " file
if [ -f $file ]; then
sh -n $file > /dev/null 2>&1
if [ $? -ne 0 ]; then
read -p "You input $file syntax error,[Type q to exit or Type vim to edit]" answer
case $answer in
q | Q)
exit 0
;;
vim )
vim $file
;;
*)
exit 0
;;
esac
fi
else
echo "$file not exist"
exit 1
fi
```



