Linux 面试常考题总结大全【建议收藏】
点击上方蓝字关注我们
系统
# uname -a # 查看内核/操作系统/CPU信息
# head -n 1 /etc/issue # 查看操作系统版本
# cat /proc/cpuinfo # 查看CPU信息
# hostname # 查看计算机名
# free -m # 查看内存使用量和交换区使用量
资源
# df -h # 查看各分区使用情况
# du -sh <目录名> # 查看指定目录的大小
# grep MemTotal /proc/meminfo # 查看内存总量
# grep MemFree /proc/meminfo # 查看空闲内存量
# uptime # 查看系统运行时间、用户数、负载
# cat /proc/loadavg # 查看系统负载
网络
# ifconfig # 查看所有网络接口的属性
# iptables -L # 查看防火墙设置
# route -n # 查看路由表
# netstat -lntp # 查看所有监听端口
# netstat -antp # 查看所有已经建立的连接
# netstat -s # 查看网络统计信息
用户
# w # 查看活动用户
# id <用户名> # 查看指定用户信息
# last # 查看用户登录日志
# cut -d: -f1 /etc/passwd # 查看系统所有用户
# cut -d: -f1 /etc/group # 查看系统所有组
# crontab -l # 查看当前用户的计划任务
进程
# ps -ef # 查看所有进程
# ps -ef # 查看所有进程
# top # 实时显示进程状态
来源:公众号【码农编程进阶笔记】
stat命令一般用于查看文件的状态信息。stat命令的输出信息比ls命令的输出信息要更详 细。
wc命令一般用于统计文件的信息,比如文本的行数,文件所占的字节数。
du命令一般用于统计文件和目录所占用的空间大小。
ls 命令一般用于查看文件和目录的信息,包括文件和目录权限、拥有者、所对应的组、 文件大小、修改时间、文件对应的路径等等信息。
df命令用于显示包含每个文件名参数的文件系统上可用的磁盘空间量,默认磁盘空间以 1K块为最小单位。
netstat -ntlp | grep 端口号 查看端口被占用情况
lsof filename 查看文件被进程占用情况
3.Find grep 命令区别
grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打 印出来。
Find 从指定的起始目录开始,递归地搜索其各个子目录,查找满足寻找条件的文件并对
之采取相关的操作
简单是:grep是查找匹配条件的行,find是搜索匹配条件的文件
4.Awk 内置变量
变量
|
用法
|
$0
|
当前记录(这个变量中存放着整个行的内容)
|
$1~$n
|
当前记录的第n个字段,字段间由FS分隔
|
FS
|
输入字段分隔符 默认是空格或\t
|
NF
|
当前记录中的字段个数,就是有多少列
|
NR
|
已经读出的记录数,就是行号,从1开始,如果有多个文件话,这个值也是不断累加 中。
|
FNR
|
当前记录数,与NR不同的是,这个值会是各个文件自己的行号
|
RS
|
输入的记录分隔符, 默认为换行符
|
OFS
|
输出字段分隔符, 默认也是空格
|
ORS
|
输出的记录分隔符,默认为换行符
|
FILENAME
|
当前输入文件的名字
|
# 打印每一行的第二和第三个字段
awk '{print $2, $3}' file
# 统计文件的行数
awk ' END {print NR}' file
# 对 awk 处理的行做过滤
awk 'NR < 5' #行号小于5
awk 'NR==1,NR==4 {print}' file #行号等于1和4的打印出来
awk '/linux/' #包含linux文本的行(可以用正则表达式来指定,超级强大) awk '!/linux/' #不包含linux文本的行
# 使用 -F 来设置定界符(默认为空格)
awk -F: '{print $NF}' /etc/passwd
# awk 实现head 命令
awk 'NR<=10{print}' filename
# 实现tail命令
awk '{buffer[NR%10] = $0;} END{for(i=0;i<11;i++){print buffer[i %10]} } ' filename
# 查询访问最频繁的100个请求,主要是各种参数都包含了
grep -v ".php" access.log | awk '{print $7}' | sort |uniq -c |sort -rn | head -n 100
# 查询访问 100 次以上的 ip
awk '{print $1}' access.log | sort -n |uniq -c |awk '{if($1 >100) print $0}'|sort -rn
# 查询指定 ip 访问最多的 100 个页面
grep '112.97.250.255' access.log |awk '{print $7}'|sort |uniq -c |sort -rn |head -n 100
# 查询最近 1000 条请求访问最多的地址
tail -1000 access.log |awk '{print $7}'|sort|uniq -c|sort - nr|less
# 按每秒统计请求数,显示top 100 的时间点 cut是截取 14-21 位,分钟为 14-18 小时为 14-15
awk '{print $4}' access.log |cut -c 14-21|sort|uniq -c|sort - nr|head -n 100
来源:公众号【码农编程进阶笔记】
Ps -rf | grep "php-fpm" top | grep "php-fpm"
7. Which 和 whereis 区别
Which 是用来查找系统PATH目录下的可执行文件。说白了就是查找那些我们已经安装好
的可以直接执行的命令,which 是基于 path 目录查找的。
Whereis这个命令可以用来查找二进制(命令)、源文件、man文件。Whereis 是基于
索引数据库的,locate也是基于数据库的,find 是基于硬盘文件的