linux运维面试题

Posted by phper star | Posted in LINUX | Posted on 2014-2-14 12:05

1. 请找出 /home 下所有5天前以 .log 结尾的文件列表

find /home -mtime +5 -name "*.log" -type f

2. 如何找到httpd 的进程号
ps -ef | grep "[h]ttpd"

3. 如何创建一个不能LOGIN但能ftp 的用户
useradd -G ftp username -s /sbin/nologin

4. 列出当前Linux服务器所有的监听端口及其进程号
netstat -lp

5. 如何看到某用户对系统所做的操作(比如:Test 用户) 和系统登陆记录
cat /home/Test/.bash_history; last Test

6. 如何计算当前磁盘通道的IO带宽使用
iostat

7. 如何看到一个子进程的父进程号
ps -xf -O ppid | grep Process

8. 如何将某目录打包(比如目录/home/test)
tar -cvf test.tar /home/test
tar -czvf test.tar.gz /home/test

9. 如何查看系统的内存,cpu 等使用情况
top

10. 如何显示test 文件的第100行
sed -n "100p" test
awk 'NR==100' test
head -100 test | tail -1

11. 用shell脚本写出检测/tmp/size.log文件如果存在显示它的内容,不存在则创建一个文件将创建时间写入。
[ -f "/tmp/size.log" ] || date > /tmp/size.log

12. 如何用iptables 将A 机器发送到B机器 80 端口的数据转发到 C 机器的 8080 端口 (A B C 都装有iptables 目前没有规则)
iptables -t nat -A PREROUTING -i eth0 --dport 80 -j DNAT --to C:8080

13. 写出命令:tcpdump命令截取bond0网卡上从210.97.32.0网络位23位发送到本机8088端口的包。
tcpdump -i bond0 "src net 210.97.32.0/23" and "dst port 8088"

14. 在mysql中,将数据库USERDB中的表userlist进行备份。写出备份语句
mysqldump USERDB userlist > USERDB_userlist.sql

15. 如何查看mysql是否支持innodb引擎
执行如下命令:
SHOW variables like "have_%"

显示结果中会有如下3种可能的结果:
have_innodb YES
have_innodb NO
have_innodb DISABLED

这3种结果分别对应:
已经开启InnoDB引擎
未安装InnoDB引擎
未启用InnoDB引擎

16. 如何在mysql 的test 表里随机取10条记录
select * from test order by rand() limit 10;

17. 如何查看mysql当前的查询任务,以及如何列出当前连接到mysql数据库的客户
show full processlist; 

18. 一台机器的LVM中共有20个PV每个pv(10G)归属于1个VG中,lv的创建命令为:
lvcreate –i 15 –L 100G –n test vg01
请问,如果将test的LV卷容量扩展到200G,是否需要增加新的PV?命令是什么?
不需要增加新的pv,因为创建lv的时候没用把所有的pv使用完。
lvextend -L +100G /dev/vg01/test

19. 写出TCP协议的建立过程
第一次握手:建立连接时,客户端发送syn包(syn=j)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务器收到syn包,必须确认客户的SYN(ack=j+1),同时自己也发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

完成三次握手,客户端与服务器开始传送数据。

20. 如何给mysql 创建一个对A表有访问权的用户
GRANT ALL PRIVILEGES ON A TO 'test_user'@'localhost' IDENTIFIED BY 'test_pass' WITH GRANT OPTION;

21. 查看Linux系统当前加载的库文件
lsof | grep "/lib/"

22. 查看当前系统某一硬件的驱动版本。比如网卡
ethtool -i eth0

23. nginx如何分别存储错误日志
#!/bin/sh
LOGS_PATH=/var/wwwroot/bbs/logs
TODAY=$(date -d 'today' +%Y-%m-%d)
 
# 移动日志并改名
mv ${LOGS_PATH}/error.log ${LOGS_PATH}/error_${TODAY}.log
mv ${LOGS_PATH}/access.log ${LOGS_PATH}/access_${TODAY}.log
 
# 向nginx主进程发送重新打开日志文件的信号
kill -USR1 $(cat /usr/local/nginx/logs/nginx.pid)

24. MySQL服务器如何初始化用户设置
mysqladmin -u root -p password test_pass

25. 如何监控HTTP服务程序的可用性
curl -I localhost 2>/dev/null | head -1 | grep " 200 OK"

标签: linux linux运维 linux常用命令