Linux

Linux 服务面试题

·6 分钟阅读·2007 字

整理Linux 服务高频问答、延伸追问与易错点

📋 目录

Linux 服务面试题

1. 创建用户并指定主目录

useradd -m -d /home/newuser newuser

2. 设置密码

passwd newuser

3. 参数说明

-m # 如果主目录不存在则创建

-d # 指定主目录路径

-s # 指定登录 Shell(默认 /bin/bash)

-G # 指定附加组


**相关命令**:

usermod -aG wheel newuser # 将用户加入 wheel 组(sudo 权限)

userdel -r newuser # 删除用户及其主目录


【延伸追问】

- `/etc/passwd`、`/etc/shadow`、`/etc/group` 三个文件的作用?

- 如何批量创建用户?

【易错坑点】

- 不指定 `-m` 时主目录不会自动创建

- 删除用户时记得加 `-r` 参数清理主目录,否则会残留垃圾文件

---

## systemctl 管理服务

【题目】

如何在不重新启动服务的情况下,使 Linux 系统上的服务立即生效?

【参考答案】

4. 重新加载配置(不重启服务)

systemctl reload servicename

5. 重启服务(完全停止再启动)

systemctl restart servicename

6. 重新加载或重启(优先 reload,不支持则 restart)

systemctl reload-or-restart servicename


**`reload` vs `restart`**:

| 操作 | 行为 | 中断服务? |

|------|------|:----------:|

| **reload** | 发送 SIGHUP 信号,重新读取配置 | ❌ **不中断** |

| **restart** | 停止 → 重新启动 | ✅ 中断 |

**其他常用命令**:

systemctl status servicename # 查看服务状态

systemctl enable servicename # 开机自启

systemctl disable servicename # 关闭开机自启

journalctl -u servicename -f # 查看服务日志


【延伸追问】

- 哪些服务不支持 `reload`?(如 Nginx 支持,MySQL 部分配置需要 restart)

- systemd 的 unit 文件存放在哪些目录?

【易错坑点】

- 修改了配置文件后不执行 `reload` 或 `restart` 不会生效

- `systemctl reload` 要求服务支持 SIGHUP 信号

---

## 查看正在运行的进程

【题目】

如何在 Linux 中查看正在运行的进程?

【参考答案】

7. 静态查看

ps aux # 所有进程(BSD 格式)

ps -ef # 所有进程(标准格式)

ps aux —sort=-%mem # 按内存使用排序

8. 动态监控

top # 实时进程监控

htop # top 增强版(交互式)


**`ps aux` 字段含义**:

| 字段 | 含义 |

|------|------|

| USER | 进程所有者 |

| PID | 进程 ID |

| %CPU | CPU 使用率 |

| %MEM | 内存使用率 |

| VSZ | 虚拟内存大小 |

| RSS | 常驻内存大小 |

| STAT | 进程状态(R=运行,S=休眠,Z=僵尸) |

| COMMAND | 命令名 |

【延伸追问】

- 僵尸进程是如何产生的?如何清理?

- `top` 输出的 %CPU 可以超过 100% 吗?(多核情况下可以)

【易错坑点】

- `ps aux` 显示的是命令执行瞬间的快照,不是实时数据

- 进程状态 Z(僵尸)表示进程已结束但父进程未回收,少量正常,大量需排查

---

## SSH 远程连接

【题目】

解释一下什么是 SSH,如何使用它?

【参考答案】

**SSH(Secure Shell)** 是一种**加密的网络传输协议**,用于在不安全的网络中安全地执行远程命令。

9. 基本连接

ssh username@hostname

10. 指定端口(默认 22)

ssh -p 2222 username@hostname

11. 密钥认证(推荐)

ssh-keygen -t ed25519 # 生成密钥对

ssh-copy-id username@hostname # 复制公钥到服务器

12. 配置文件 ~/.ssh/config

Host myserver

HostName 192.168.1.100

User root

Port 22

IdentityFile ~/.ssh/id_ed25519

13. 之后可以直接 ssh myserver


【延伸追问】

- SSH 密码认证和密钥认证的工作流程有什么区别?

- SSH 端口转发(本地转发、远程转发、动态转发)如何使用?

【易错坑点】

- **生产环境建议禁用密码认证**,仅使用密钥认证

- 私钥文件权限必须为 600(`chmod 600 ~/.ssh/id_ed25519`),否则 SSH 拒绝使用

---

> [!info] 关联文档
> - [[Linux]]:Linux 学习主页
> - [[iostat 命令详解]]:性能工具
Yanche Blog

记录云原生、Linux、数据库等技术领域的学习心得,以及日常生活的思考与感悟。

© 2026 Yanche Blog. All rights reserved.

Powered by Astro