1.用过哪些操作系统?有没有独立安装过?
2.Linux 常用命令有哪些?
3.chmod 755 是什么意思?如何给文件加执行权限?
4.su 加不加横杠的区别?分别用在什么场景?
5.如何查看 80 端口是否被占用?
6.如何查看系统日志?SSH 登录日志在哪里看?Ubuntu 和 CentOS 有什么区别?
7.crontab 怎么配置?五个字段代表什么?每 5 分钟怎么写?每 30 秒怎么实现?
8.find 常用参数有哪些?如何删除 7 天前的日志?date 如何输出 7 天前日期?
9.rsync 和 scp 有什么区别?
10.如何统计日志里包含 error 的行数?
11.du 和 df 有什么区别?为什么数值可能不一致?
12.磁盘还有剩余空间却提示空间不足,是什么原因?
13.CPU负载高、但是使用率不高的情况是为什么?
面试开场基本都是 Linux 基础题,这部分答得顺,后面才有信心。下面每题都给你一段「现场能直接说出口」的答法,先看思路,再照着说两遍,就是你的了。
1、用过哪些操作系统?有没有独立安装过?
回答:用过 CentOS、Rocky、Ubuntu 和麒麟系统,都是我自己从装系统开始搭的,包括分区、网卡配置、换 yum 源、SSH 加固这些,装完还会做一遍基线检查。平时生产主要用 Rocky 和 CentOS,国产化项目里用过麒麟。重点是让面试官知道你「动手装过」,不是只会用现成的。
2、Linux 常用命令有哪些?
回答:我会按用途说:文件操作 ls、cd、cp、mv、rm;看资源 top、free、df、du、iostat、vmstat;网络 ss、netstat、curl、ping;文本处理 grep、sed、awk;查日志 tail、less、journalctl;系统管理 systemctl、useradd;找文件 find。排障的时候我会按「资源→网络→日志→进程」这个顺序去用,而不是零散地报命令名。
3、chmod 755 是什么意思?如何给文件加执行权限?
回答:755 三个数字分别是属主、属组、其他人:属主 7 是 rwx 全部权限,属组和其他人 5 是 r-x 读和执行。要加执行权限直接 chmod +x 文件名,也可以写成 chmod 755。顺带说一句:脚本跑不起来先看权限,这是很常见的送分陷阱。
4、su 加不加横杠的区别?
回答:su root 只是切换用户身份,当前的工作目录和环境变量都不变;su - root 是完整登录,会重新加载 root 的环境变量、PATH 和家目录。所以需要完整环境、执行定时任务或系统管理时用 su -;只是临时提个权用 su 就行。
5、如何查看 80 端口是否被占用?
回答:ss -tlnp | grep :80,或者 netstat -tlnp | grep :80,能看到监听状态和对应的 PID、进程名;想确认具体是哪个进程再补一句 lsof -i:80。现在推荐优先用 ss,命令更轻,信息也全。ss直接从内核空间(通过 netlink 接口)获取更纯净的原始数据,而netstat 通过遍历 /proc 文件系统来获取网络信息,当服务器上有成千上万个网络连接时(比如高并发Web服务器),执行 netstat 会非常慢,甚至会因为占用大量CPU而影响业务。
6、如何查看系统日志?SSH 日志在哪里看?
回答:CentOS/Rocky 上用 journalctl -xe 看最近系统日志,或者看 /var/log/messages;SSH 登录日志在 /var/log/secure,查失败登录就 grep -i fail /var/log/secure。Ubuntu 上是 /var/log/auth.log。面试可以补一句:我一般先看有没有暴力破解和异常登录,再看系统级报错。
7、crontab 怎么配置?五个字段代表什么?
回答:五个字段是:分、时、日、月、周。每 5 分钟执行就写 */5 * * * * 命令。注意 crontab 最小粒度是分钟,要每 30 秒执行,一般用脚本里 while 循环加 sleep 30 实现,或者用 systemd timer,我会先说明这一点,显得真的踩过坑。某个固定的时间点只执行一次的命令用at
8、find 常用参数?如何删除 7 天前的日志?
回答:常用的是 -name 按名字、-type f 按类型、-size 按大小、-mtime 按修改时间。删除 7 天前日志:find /var/log -name '*.log' -mtime +7 -exec rm -f {} \;。关键习惯:先去掉 rm 只打印结果(把 -exec rm 换成 -exec ls 或先加 -ok),确认没问题再真删,避免误删业务日志。date 输出 7 天前日期用 date -d '7 days ago'。
9、rsync 和 scp 有什么区别?
回答:scp 是全量拷贝,简单,但每次都是整份传;rsync 是增量同步,只传变化的部分,支持断点续传、压缩,还能保留权限和时间戳,适合做备份和定期同步。所以备份我优先用 rsync,一次性传文件用 scp 更省事。
10、如何统计日志里包含 error 的行数?
回答:grep -c error app.log,或者 grep error app.log | wc -l,两种都行。要同时统计 error 和 warning,用 grep -cE 'error|warning' app.log。面试可以补一句:日志量大我会先确认日志轮转有没有开,别把整个盘撑爆。
11、du 和 df 有什么区别?为什么数值可能不一致?
回答:df 看的是文件系统分区的整体使用量和剩余空间;du 是统计某个目录实际占用的空间。两者不一致最常见的情况是:文件被删除了,但还有进程占着文件句柄,空间没释放,这时候 df 还是满的,du 看不出来。用 lsof +L1 就能找到这些被占用但已删除的文件。
12、磁盘还有剩余空间却提示空间不足?
回答:先 df -h 看容量是不是真满了,再 df -i 看 inode:inode 满了就会出现「有空间但写不进去」。inode 满一般是小文件太多,比如 /tmp、缓存目录、日志目录里几十万个碎文件。用 find 目录 -type f | wc -l 数一下,清理无用的小文件就行。
13.CPU负载高、但是使用率不高的情况是为什么?
回答:CPU 负载高但使用率不高,绝大多数情况是因为有大量进程在“等待”某个资源(主要是磁盘 I/O等待),导致它们被挂起在运行队列里,从而拉高了负载,但 CPU 本身却因为无事可做而处于空闲状态。