今天我们来聊聊老生常谈的问题:Linux命令。
可能有人会想:现在AI这么好用,直接问AI就行了,哪还需要自己去记这些基础命令。
但面试的时候,面试官问你“端口被占用了怎么办”,你总不能跟他说“等我先问问AI”吧?
现在有了AI,复杂的知识确实可以现查,但基础的东西还是得长在自己脑子里。至少面试时能让面试官知道,你是真用过、真懂的,不是虚有其表。
一、端口被占了,怎么一招制敌
这是测试生涯里逃不掉的问题。你在本地起个服务,啪地一下报错:Address already in use,或者部署到测试环境发现服务怎么都拉不起来,十有八九是端口冲突。
这个时候你需要做两件事:找出谁占了端口,然后决定要不要干掉它。
最常用的命令就这一个,给我背下来:
来拆解一下,省的你们死记硬背还不懂意思:
-t:只看TCP协议,你起的大多数服务都是TCP的。
-l:只看正在监听中的端口,也就是处于LISTEN状态的。
-n:端口和IP都用数字显示,不要域名解析,不然会慢到你怀疑人生。
-p:最关键,显示是哪个进程占用的。
比如你8080端口起不来,直接敲:
netstat -tlnp | grep 8080
输出会清清楚楚告诉你,PID(进程号)是多少,进程名是什么。比如看到是java占用了,PID是12345。查到 PID 之后,用 kill PID 让它正常关闭。【如果普通 kill 没反应,再用 kill -9,但用之前一定确认进程身份】还有一个更快的查端口命令:lsof -i:8080,会直接列出端口、进程名、PID。这个更轻量,有的精简系统没装netstat,你就可以用这个顶上去。
测试环境一出问题,开发最爱说:“你看下日志,肯定是环境有问题。” 这个时候你要是打开方式不对,能把服务器卡死。
新手最喜欢干的事儿:cat app.log,或者 vim app.log,直接打开整个日志文件。好家伙,生产上的日志动辄几个G,你这么一搞,终端直接卡成PPT
看日志的正确姿势,先记住三个命令:tail、grep、less。服务在跑,日志在刷,你就能实时看到最新的报错。想看最后200行然后退出,用 tail -n 200 app.log。在日志里大海捞针找错误,用grep,但别傻傻地 grep 整个文件,要配合tail或者直接用grep加行号。比如你想找最近的ERROR,还希望看到报错附近的上下文:grep -n -A 10 -B 5 "ERROR" app.log | tail -100
如果你需要一边看实时日志,一边只抓ERROR级别的行,可以这样:tail -f app.log | grep --line-buffered "ERROR"
--line-buffered 是为了让管道里的grep实时输出还有一个神级命令less,用来浏览大文件。敲 less app.log,你可以上下翻页,按 / 搜关键字,按 n 跳到下一个匹配项,按 q 退出,完全不卡。要查历史日志,用这个准没错。
三、权限问题
测试环境里经常要传脚本、替换jar包、执行自动化用例,动不动就给你弹个 Permission denied。你必须知道几个最基础的权限常识。敲 ls -l,会看到类似这样的东西:-rwxr-xr-x 1 testuser testgroup 1234 Jan 1 10:00 run.sh
第一位的 - 表示普通文件,后面九个字符分三组,每三个一组,分别代表:文件所有者权限、所属组权限、其他人权限。r是读,w是写,x是执行。如果你想让权限更严谨一些,通常用 chmod 755 run.sh,意思是:所有者可读可写可执行(7),组用户和其他人只读和执行(5)。这样别人不能乱改你的脚本,安全性高一点。日常用熟了以后,直接 chmod 755 会是个更常见的习惯。
这个场景也特别常见。测试环境跑了几个月没清理,突然有一天服务异常,你查半天发现日志不滚动了,一敲 df -h,发现某个分区使用率100%。df -h 是你必须随时会用的命令,它能让你看一眼就知道所有磁盘分区的使用情况。一般出问题的是 / 根分区或者 /var 日志分区。
知道满了之后,就要找谁占的空间。这时候用 du,但别直接敲 du -sh /*,那样会扫到一堆虚拟文件系统疯狂报错。加个错误重定向就清爽了:不过这个命令遍历还是有点慢。通常我习惯先怀疑日志目录,直接:然后一层层往下找。哪个目录大得离谱,就进去 ls -lhS(按大小排序),揪出罪魁祸首。
找到几个G的日志文件后,如果服务还在运行,千万不能直接 rm 删除,因为服务还抓着文件句柄,删了空间也不会释放。最稳妥的方式是清空内容:
或者用 truncate -s 0 app.log。这样文件还在,进程可以继续写,磁盘空间也腾出来了。
这四条场景串联下来的命令,全都是测试环境里天天打交道的。下次面试,当面试官问‘端口被占用了怎么查’或‘日志报错怎么看’时,你能直接了当的回答他,而不是半路卡壳...
如果对你有帮助,就分享给你的好伙伴吧~
更多【XX方向】内容,点底部菜单【学测试】→【XX测试】