Linux面试题

如今程序员生产的代码99%都部署在linux环境下,代码发现缺陷,程序员的第一反应是到 Linux 上拉日志下来看。程序员不是运维,不需要掌握非常多复杂命令。

推荐终端工具

  • SecureCRT
  • xshell

常用命令(重要)

ls/ll、cd、mkdir、rm-rf、cp、mv、ps -ef | grep xxx、kill、free-m、tar -xvf file.tar

查看进程:(例:如何查看所有xx进程)

ps -ef | grep xxx

​ ps -aux | grep xxx(-aux显示所有状态)

**编辑 vi/vim : **

vi x.log 编辑你的日志文件

i 写入

:wq 保存退出

:q! 或者 ctrl+c 退出不保存

Shift+g 跳至当前文本最后一行,看最新的日志,都在最下面

top⭐

显示系统中各个进程的资源占用状况,可以看是否有 CPU 占用过大的进程。

less 和 more

less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

tail⭐

查看日志:

tail -f *.log : 适用于实时查看日志,开发环境还行,生产就算了,日志会很多。

tail -f error.log :生产中一般用这个实时看异常日志

-f :循环读取 ,用于查阅正在改变的日志文件。

netstat⭐

用于显示网络状态。

-a (all)显示所有选项,netstat默认不显示LISTEN相关
-n 拒绝显示别名,能显示数字的全部转化成数字。(重要)
-r 显示路由信息,路由表
-e 显示扩展信息,例如uid等
-s 按各个协议进行统计 (重要)

grep 查找⭐

grep 是必备日志分析命令

grep -r ‘关键字如商品ID’ *.log (使用频率最高)

**grep ‘关键字如商品ID’ *.log | grep 免费商品(在管道符前条件结果中,在加条件筛选下) **

grep ‘关键字如商品ID’ *.log >> anan.txt 【相关日志输入到一个txt中,下载到本地慢慢看,我最喜欢】

grep “被查找的字符串” 文件名
grep -n 2019-10-24 00:01:11' *.log
可以查找 *.log文件中,查到时间内的所有信息

查找特定文件 find

find ~ -name “需要查找的文件名”

比如:find ~ -name "本机ip.txt" 就可以得到文件名所在的目录

管道操作符 |

可将指令连接起来,前一个指令的输出作为后一个指令的输入

杀僵尸进程

部分程序员,肯定喜欢下面命令

ps -ef | grep java 【先查java进程ID】

kill -9 java进程ID 【生产环境谨慎使用】

对文件内容做统计 awk ⭐

依次处理文件的每一行,并读取里面的每一个字段,可用作统计。

$ awk 动作 文件名

批量替换 sed

sed 配合正则表达式批量替换文本内容

你经常使用哪些 Linux 命令,主要用来解决什么问题?