Administrator
发布于 2026-04-08 / 16 阅读
0
0

Linux 运维工程师基础命令笔试题 100 题

一、文件与目录操作(1-20)

1. 列出 /etc 目录下所有文件(包括隐藏文件),并显示详细信息,按时间倒序排列,应使用哪个命令?

参考答案:ls -alht /etc
  -a  显示隐藏文件
  -l  长格式显示
  -h  人性化显示大小
  -t  按修改时间排序(默认最新在前)
[root@iZwz97vc0o24zut59ng2zyZ ~]# ls -alht /etc
total 1.4M
drwxr-xr-x.  3 root root   4.0K Apr  8 16:22 ssl
drwxr-xr-x   3 root root   4.0K Apr  8 15:25 nginx
dr-xr-xr-x. 20 root root   4.0K Apr  8 11:26 ..
drwxr-xr-x.  2 root root   4.0K Apr  8 10:57 alternatives
....

2. 如何递归创建多级目录 /tmp/app/logs/2026

参考答案:mkdir -p /data/app/logs/2026
  -p 选项表示若父目录不存在则自动创建
[root@iZwz97vc0o24zut59ng2zyZ tmp]# mkdir -p  /tmp/app/logs/2026
[root@iZwz97vc0o24zut59ng2zyZ tmp]# tree /tmp
/tmp
├── AliyunAssistClientSingleLock.lock
├── aliyun_assist_service.sock
├── app
│   └── logs
│       └── 2026
.....

3. 将 /var/log/yum.log 复制到 /backup/ 目录,同时保留文件的原始属性(权限、时间戳、所有者),应使用什么命令?

参考答案:cp -p /var/log/yum.log /backup/
  或:cp --preserve=all /var/log/yum.log /backup/
  -p 保留文件的模式、所有权和时间戳
[root@iZwz97vc0o24zut59ng2zyZ ~]# mkdir /backup

[root@iZwz97vc0o24zut59ng2zyZ ~]# cp -p /var/log/yum.log  /backup/

[root@iZwz97vc0o24zut59ng2zyZ ~]# ll /backup/

total 4

-rw------- 1 root root 329 Apr  8 16:36 yum.log

4. 删除目录 /tmp/test 及其下所有内容,使用什么命令?

参考答案:rm -rf /tmp/test

  -r 递归删除目录及内容

  -f 强制删除,不提示确认

  注意:生产环境请谨慎使用,建议先 ls 确认

[root@iZwz97vc0o24zut59ng2zyZ ~]# mkdir /tmp/test
[root@iZwz97vc0o24zut59ng2zyZ ~]# ll /tmp/test/
total 0
[root@iZwz97vc0o24zut59ng2zyZ ~]# touch /tmp/test/{01..10}.txt
[root@iZwz97vc0o24zut59ng2zyZ ~]# ll /tmp/test/
total 0
-rw-r--r-- 1 root root 0 Apr  8 16:48 01.txt
-rw-r--r-- 1 root root 0 Apr  8 16:48 02.txt
-rw-r--r-- 1 root root 0 Apr  8 16:48 03.txt
-rw-r--r-- 1 root root 0 Apr  8 16:48 04.txt
-rw-r--r-- 1 root root 0 Apr  8 16:48 05.txt
-rw-r--r-- 1 root root 0 Apr  8 16:48 06.txt
-rw-r--r-- 1 root root 0 Apr  8 16:48 07.txt
-rw-r--r-- 1 root root 0 Apr  8 16:48 08.txt
-rw-r--r-- 1 root root 0 Apr  8 16:48 09.txt
-rw-r--r-- 1 root root 0 Apr  8 16:48 10.txt
[root@iZwz97vc0o24zut59ng2zyZ ~]# rm -rf /tmp/test
[root@iZwz97vc0o24zut59ng2zyZ ~]# ll /tmp/test/
ls: cannot access /tmp/test/: No such file or directory

5. 如何查找 /home 目录下,7 天内被修改过的所有 .log 文件?

参考答案:find /home -name "*.log" -mtime -7
  -mtime -7 表示最近 7 天内修改过(负号表示"之内")

6. 如何查找系统中大于 100MB 的文件?

参考答案:find / -type f -size +100M &>/dev/null
  -type f  只查找普通文件
  -size +100M  大于 100MB
  &>/dev/null  忽略权限不足的报错

[root@iZwz97vc0o24zut59ng2zyZ ~]# find / -type f -size +100M
/root/jdk-17_linux-x64_bin.rpm
/root/mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz
/var/cache/yum/x86_64/7/updates/gen/primary_db.sqlite
/var/lib/rpm/Packages
/usr/lib/jvm/jdk-17-oracle-x64/lib/modules
/usr/lib/locale/locale-archive
/usr/local/mysql-8.0.36-linux-glibc2.12-x86_64/bin/mysqld-debug
/usr/local/mysql-8.0.36-linux-glibc2.12-x86_64/bin/mysqld
/proc/kcore
find: ‘/proc/7740/task/7740/fdinfo/5’: No such file or directory
find: ‘/proc/7740/fdinfo/6’: No such file or directory

[root@iZwz97vc0o24zut59ng2zyZ ~]# find / -type f -size +100M &>/dev/null
[root@iZwz97vc0o24zut59ng2zyZ ~]# 

7. ln -s /data/app app_linkln /data/app app_link 有什么区别?

参考答案:
  ln -s  创建软链接(符号链接),类似 Windows 快捷方式,可跨文件系统,指向路径
  ln     创建硬链接,与原文件共享同一 inode,只能在同一文件系统内,不能对目录创建硬链接
  删除原文件后,软链接失效(悬空链接),硬链接仍可访问文件内容

8. 如何快速查看文件的最后 100 行日志,并实时追踪新增内容?

参考答案:tail -n 100 -f /var/log/messages
  -n 100  显示最后 100 行
  -f      持续追踪文件新增内容(follow)
[root@iZwz97vc0o24zut59ng2zyZ ~]# tail -n100 -f /var/log/messages 
Apr  8 14:53:12 iZwz97vc0o24zut59ng2zyZ java: at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:601) ~[spring-beans-6.2.0-RC1.jar!/:6.2.0-RC1]
......

9. moreless 命令有什么区别?

参考答案:
  more:只能向前翻页,文件读完后自动退出,功能较少
  less:可前后翻页,支持搜索(/关键词),不会自动退出,功能更丰富
  生产环境推荐使用 less 查看大文件

10. 如何统计 /var/log/nginx/access.log 文件的总行数?

参考答案:wc -l /var/log/nginx/access.log
  wc 命令选项:-l 行数,-w 单词数,-c 字节数
[root@iZwz97vc0o24zut59ng2zyZ ~]# wc -l /var/log/nginx/access.log 
85 /var/log/nginx/access.log

11. 命令 cat /dev/null > /var/log/app.log 的作用是什么?

参考答案:清空 /var/log/app.log 文件内容,但保留文件本身(文件依然存在,大小变为 0)
  等效写法:> /var/log/app.log  或  truncate -s 0 /var/log/app.log

[root@iZwz97vc0o24zut59ng2zyZ ~]# cat /var/log/app.log 
223.104.82.79 - - [08/Apr/2026:11:12:58 +0800] "GET / HTTP/1.1" 200 615 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0" "-"
223.104.82.79 - - [08/Apr/2026:11:12:58 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "http://www.unixnc.xyz/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0" "-"
157.55.39.225 - - [08/Apr/2026:11:18:21 +0800] "GET /robots.txt HTTP/1.1" 404 555 "-" "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) Chrome/116.0.1938.76 Safari/537.36" "-"
....
[root@iZwz97vc0o24zut59ng2zyZ ~]# cat /dev/null >/var/log/app.log 
[root@iZwz97vc0o24zut59ng2zyZ ~]# cat /var/log/app.log 
[root@iZwz97vc0o24zut59ng2zyZ ~]# 

12. 如何将命令输出同时显示在终端并写入文件?

参考答案:command | tee /path/to/file
  例:ls -l | tee /root/test.txt
  tee 从标准输入读取,写入文件的同时也输出到标准输出
  加 -a 选项可追加写入而非覆盖
[root@iZwz97vc0o24zut59ng2zyZ ~]# ls -l | tee /root/test.txt
total 794532
-rw-r--r-- 1 root root  13049663 Dec 16 20:23 apache-tomcat-9.0.113.tar.gz
-rw-r--r-- 1 root root 182486159 Feb  7 18:05 jdk-17_linux-x64_bin.rpm
-rw-r--r-- 1 root root 618056612 Dec 13  2023 mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz
[root@iZwz97vc0o24zut59ng2zyZ ~]# cat test.txt 
total 794532
-rw-r--r-- 1 root root  13049663 Dec 16 20:23 apache-tomcat-9.0.113.tar.gz
-rw-r--r-- 1 root root 182486159 Feb  7 18:05 jdk-17_linux-x64_bin.rpm
-rw-r--r-- 1 root root 618056612 Dec 13  2023 mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz

13. chmod 755 /data/script.sh 代表什么权限?

参考答案:
  7 = rwx(所有者:读+写+执行)
  5 = r-x(所属组:读+执行)
  5 = r-x(其他用户:读+执行)
  即:-rwxr-xr-x

15. umask 022 表示什么?新建文件和目录的默认权限分别是多少?

参考答案:
  umask 是权限掩码,表示从默认权限中去除的位
  文件默认最大权限:666,减去 022 = 644(rw-r--r--)
  目录默认最大权限:777,减去 022 = 755(rwxr-xr-x)
[root@iZwz97vc0o24zut59ng2zyZ ~]# umask
0022

16. 如何在不打开文件的情况下,查看文件的 inode 号?

参考答案:ls -i filename  或  stat filename
  stat 还可显示文件的完整元数据信息(权限、大小、时间等)

[root@iZwz97vc0o24zut59ng2zyZ ~]# ls -i test.txt 
401369 test.txt
[root@iZwz97vc0o24zut59ng2zyZ ~]# stat test.txt 
  File: ‘test.txt’
  Size: 248       	Blocks: 8          IO Block: 4096   regular file
Device: fd01h/64769d	Inode: 401369      Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2026-04-08 17:26:24.641376178 +0800
Modify: 2026-04-08 17:26:13.774189490 +0800
Change: 2026-04-08 17:26:13.774189490 +0800
 Birth: -

17. 如何找到系统中所有属于用户 lolo的文件?

参考答案:find / -user olduser 2>/dev/null
  常用于用户删除前的资产清理
[root@iZwz97vc0o24zut59ng2zyZ ~]# find / -user lolo 2>/dev/null 
/var/spool/mail/lolo
/tmp/hsperfdata_lolo

18. 将 /etc/hosts 文件中所有的 127.0.0.1 替换为 192.168.1.1 并直接修改原文件,使用什么命令?

参考答案:sed -i 's/127.0.0.1/192.168.1.1/g' /etc/hosts
  -i  直接修改原文件(in-place)
  g   替换每行中所有匹配项
  建议操作前备份:cp /etc/hosts /etc/hosts.bak

[root@iZwz97vc0o24zut59ng2zyZ ~]# cat hosts 
::1	localhost	localhost.localdomain	localhost6	localhost6.localdomain6
127.0.0.1	localhost	localhost.localdomain	localhost4	localhost4.localdomain4

172.18.83.54	iZwz97vc0o24zut59ng2zyZ	iZwz97vc0o24zut59ng2zyZ

[root@iZwz97vc0o24zut59ng2zyZ ~]# sed -i 's/127.0.0.1/192.168.1.1/g' ./hosts 
[root@iZwz97vc0o24zut59ng2zyZ ~]# cat hosts 
::1	localhost	localhost.localdomain	localhost6	localhost6.localdomain6
192.168.1.1	localhost	localhost.localdomain	localhost4	localhost4.localdomain4

172.18.83.54	iZwz97vc0o24zut59ng2zyZ	iZwz97vc0o24zut59ng2zyZ

19. 如何查看当前目录下各子目录的磁盘占用大小,并按大小排序?

参考答案:du -sh * | sort -rh
  du -sh *   以人性化格式统计当前目录下每个子目录/文件的大小
  sort -rh   按人性化数字倒序排列(-r 倒序,-h 识别 K/M/G)
[root@iZwz97vc0o24zut59ng2zyZ ~]# du -sh * | sort -rh
590M	mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz
175M	jdk-17_linux-x64_bin.rpm
13M	apache-tomcat-9.0.113.tar.gz
4.0K	test.txt
4.0K	hosts

20. >>> 重定向符号有什么区别?

参考答案:
  >   覆盖重定向,若文件存在则清空后写入,不存在则创建
  >>  追加重定向,在文件末尾追加内容,不存在则创建
  例:echo "hello" > file.txt   # 覆盖写入
      echo "world" >> file.txt  # 追加写入
[root@iZwz97vc0o24zut59ng2zyZ ~]# cat hosts 
::1	localhost	localhost.localdomain	localhost6	localhost6.localdomain6
192.168.1.1	localhost	localhost.localdomain	localhost4	localhost4.localdomain4

172.18.83.54	iZwz97vc0o24zut59ng2zyZ	iZwz97vc0o24zut59ng2zyZ

[root@iZwz97vc0o24zut59ng2zyZ ~]# echo "hello" > hosts 
[root@iZwz97vc0o24zut59ng2zyZ ~]# cat hosts 
hello
[root@iZwz97vc0o24zut59ng2zyZ ~]# cat test.txt 
total 794532
-rw-r--r-- 1 root root  13049663 Dec 16 20:23 apache-tomcat-9.0.113.tar.gz
-rw-r--r-- 1 root root 182486159 Feb  7 18:05 jdk-17_linux-x64_bin.rpm
-rw-r--r-- 1 root root 618056612 Dec 13  2023 mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz
[root@iZwz97vc0o24zut59ng2zyZ ~]# echo "world" >>test.txt 
[root@iZwz97vc0o24zut59ng2zyZ ~]# cat test.txt 
total 794532
-rw-r--r-- 1 root root  13049663 Dec 16 20:23 apache-tomcat-9.0.113.tar.gz
-rw-r--r-- 1 root root 182486159 Feb  7 18:05 jdk-17_linux-x64_bin.rpm
-rw-r--r-- 1 root root 618056612 Dec 13  2023 mysql-8.0.36-linux-glibc2.12-x86_64.tar.xz
world

二、文本处理(21-35)

21. 如何从 /etc/passwd 中提取所有用户名(第一列)?

参考答案:cut -d: -f1 /etc/passwd
  -d:  以冒号为分隔符
  -f1  取第一列
  或:awk -F: '{print $1}' /etc/passwd


[root@iZwz97vc0o24zut59ng2zyZ ~]# cut -d: -f1 /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
.....

[root@iZwz97vc0o24zut59ng2zyZ ~]# awk -F: '{print $1}' /etc/passwd
root
bin
daemon
adm
lp
sync
shutdown
halt


评论