操作系统面试题 — 常见的Linux命令有哪些?熟悉哪些Linux命令?

114 阅读10分钟

Author : Cyan_RA9
Source : 【卡码笔记】网站
Question : 常见的Linux命令有哪些?熟悉哪些Linux命令?

【简要回答】

一、文件与目录管理

  1. ls: 列出目录内容。
  2. cd: 改变当前工作目录。
  3. pwd: 显示当前工作目录的完整路径。
  4. mkdir: 创建新目录。
  5. rm: 删除文件或目录。
  6. cp: 复制文件或目录。
  7. mv: 移动或重命名文件/目录。
  8. chmod: 修改文件或目录的权限。

二、文本处理与编辑

  1. cat: 查看文件内容。
  2. less: 分页显示文件内容。
  3. vim: 功能强大的文本编辑器。
  4. grep: 在文件中搜索指定模式。

三、进程与系统监控

  1. ps: 显示当前运行的进程。
  2. top: 实时显示系统中各个进程的资源占用状况。
  3. kill: 终止指定的进程。
  4. free: 显示内存使用情况。
  5. df: 报告文件系统磁盘空间使用情况。

四、用户与权限管理

  1. useradd: 创建新用户(Ubuntu 常用 adduser)。
  2. passwd: 修改用户密码。
  3. sudo: 以其他用户身份执行命令。

五、网络管理与远程连接

  1. ip a: 显示网络接口信息(替代 ifconfig)。
  2. ping: 测试网络连接。
  3. ssh: 安全地登录到远程系统。
  4. scp: 在网络上的主机之间安全地复制文件。
  5. 防火墙管理
    • Ubuntu: ufw (例如 sudo ufw allow ssh)
    • CentOS: firewall-cmd (例如 sudo firewall-cmd --add-service=ssh --permanent)

六、软件包与服务管理

  1. 软件包管理
    • Ubuntu: apt (例如 sudo apt install package_name)
    • CentOS: dnfyum (例如 sudo dnf install package_name)
  2. 服务控制
    • systemctl: 控制系统服务(例如 sudo systemctl status service_name)。

七、压缩、归档与调度

  1. tar: 归档工具,常用于打包和解压文件。
  2. cron: 定时执行命令。

【详细回答】

一、文件与目录管理 (File & Directory Management)

  1. ls : 列出目录内容
    • eg1: ls: 列出当前目录下的非隐藏文件和目录。

    • eg2: ls -lah: 以长格式(详细信息)、显示隐藏文件、并以人类可读的格式(如 K, M, G)显示文件大小。

      ls -lah
      # 示例输出:
      # total 12K
      # drwxr-xr-x  3 user group 4.0K Sep 25 10:15 .
      # -rw-r--r--  1 user group    0 Sep 25 10:00 file.txt
      # -rw-------  1 user group   50 Sep 25 10:12 .hidden_config
      
  2. cd : 改变当前工作目录
    • eg1: cd /var/log: 进入 /var/log 目录。
    • eg2: cd ..: 返回上一级目录。
  3. pwd : 显示当前工作目录的完整路径(print work directory)
    • eg1: pwd

      # 示例输出:
      # /home/user/my_project
      
  4. mkdir : 创建新目录
    • eg1: mkdir my_data: 在当前目录下创建 my_data 目录。
    • eg2: mkdir -p project/src/main: 递归创建多级目录,如果父目录不存在也会一并创建。
  5. rm : 删除文件或目录
    • eg1: rm old_file.txt: 删除 old_file.txt 文件。
    • eg2: rm -rf my_empty_dir: 强制递归删除 my_empty_dir 目录及其所有内容(危险操作,谨慎使用!)。
  6. cp : 复制文件或目录
    • eg1: cp source.txt destination.txt: 复制 source.txtdestination.txt
    • eg2: cp -r my_dir /backup/: 递归复制 my_dir 目录及其所有内容到 /backup/
  7. mv : 移动文件或目录,也可用于重命名
    • eg1: mv old_name.txt new_name.txt: 将 old_name.txt 重命名为 new_name.txt
    • eg2: mv file.txt /tmp/: 将 file.txt 移动到 /tmp/ 目录下。
  8. head : 显示文件开头内容
    • eg1: head -n 5 logfile.log: 显示 logfile.log 文件的前 5 行。
  9. tail : 显示文件结尾内容
    • eg1: tail -n 10 logfile.log: 显示 logfile.log 文件的最后 10 行。
    • eg2: tail -f /var/log/syslog: 实时跟踪 syslog 文件的新增内容(常用于监控日志)。
  10. find : 在指定目录下搜索文件
    • eg1: find . -name "*.py": 在当前目录及其子目录中查找所有 .py 文件。
    • eg2: find /var/log -type f -mtime +7 -delete: 删除 /var/log 下 7 天前修改过的所有普通文件。
  11. chmod : 修改文件或目录的权限
    • eg1: chmod 755 script.sh: 将 script.sh 设置为所有者可读写执行,组用户和其他用户只读执行。
    • eg2: chmod +x my_program: 给 my_program 文件添加执行权限。
  12. chown : 改变文件或目录的所有者
    • eg1: sudo chown user:group file.txt: 将 file.txt 的所有者改为 user,所属组改为 group

二、文本处理与编辑 (Text Processing & Editing)

  1. cat : 查看文件内容(连接文件并打印到标准输出)
    • eg1: cat my_config.txt: 显示 my_config.txt 的所有内容。
    • eg2: cat file1.txt file2.txt > combined.txt: 将两个文件内容合并到 combined.txt
  2. less : 分页显示文件内容
    • eg1: less large_log_file.log: 逐页查看大文件,支持搜索和前后翻页。
  3. vim : 功能强大且经常使用的文本编辑器
    • eg1: vim my_script.py: 使用 Vim 编辑 my_script.py 文件。
    • eg2: vim /etc/nginx/nginx.conf: 编辑 Nginx 配置文件。
  4. grep : 在文件中搜索指定模式
    • eg1: grep "error" /var/log/syslog: 在 syslog 中搜索所有包含“error”的行。
    • eg2: ps aux | grep python: 查找所有包含“python”的进程(常用于配合管道)。
  5. sed : 流编辑器,用于文本替换、删除等
    • eg1: sed 's/old_text/new_text/g' file.txt: 将 file.txt 中所有 old_text 替换为 new_text 并输出到屏幕。
    • eg2: sed -i '1d' file.txt: 删除 file.txt 的第一行(-i 表示直接修改文件)。
  6. awk : 功能强大的文本处理工具
    • eg1: awk '{print $1, $3}' data.txt: 打印 data.txt 中每行的第一列和第三列。
    • eg2: df -h | awk 'NR>1 {print $1, $5}': 打印 df -h 输出中除标题行外的文件系统和使用百分比。

三、进程与系统监控 (Process & System Monitoring)

  1. ps : 显示当前运行的进程
    • eg1: ps aux: 显示所有用户的进程,包括没有控制终端的进程。
    • eg2: ps -ef | grep my_app: 查找名为 my_app 的进程。
  2. top : 实时显示系统中各个进程的资源占用状况
    • eg1: top: 启动 top 界面,实时查看 CPU、内存、进程等信息。
  3. htop : 交互式的进程查看器, top的增强版 (通常需要安装)
    • eg1: htop: 启动 htop 界面,提供更友好的交互式操作和彩色显示。
  4. kill : 向进程发送信号,通常用于终止进程
    • eg1: kill PID: 终止指定 PID 的进程(发送 SIGTERM 信号)。
    • eg2: kill -9 PID: 强制终止指定 PID 的进程(发送 SIGKILL 信号,慎用!)。
  5. free : 用于显示内存使用情况
    • eg1: free -h: 以人类可读的格式显示内存和交换空间使用情况。
  6. df : 报告文件系统磁盘空间使用情况
    • eg1: df -h: 以人类可读的格式显示所有挂载的文件系统的磁盘空间使用情况。
  7. du : 估计文件空间使用率
    • eg1: du -sh /var/log: 估算 /var/log 目录的总大小。
    • eg2: du -h --max-depth=1 .: 显示当前目录下每个一级子目录的大小。
  8. uname : 显示系统信息
    • eg1: uname -a: 显示所有系统信息(内核版本、操作系统、架构等)。
  9. uptime : 显示系统运行时间和平均负载
    • eg1: uptime: 查看服务器已经运行了多久,以及过去 1、5、15 分钟的平均负载。

四、用户与权限管理 (User & Permission Management)

  1. useradd : 创建新用户
    • eg1: Ubuntu/Debian 推荐 adduser: sudo adduser newuser (更友好,会创建主目录、设置密码等)。
    • eg2: CentOS/RHEL 推荐 useradd: sudo useradd -m newuser (创建用户并创建主目录)。
  2. passwd : 修改用户密码
    • eg1: passwd: 修改当前用户密码。
    • eg2: sudo passwd newuser: 修改 newuser 的密码(需要管理员权限)。
  3. usermod : 修改用户账户属性
    • eg1: sudo usermod -aG sudo newuser: 将 newuser 添加到 sudo 组,赋予管理员权限(a 追加,G 指定组)。
  4. sudo : 以其他用户身份执行命令
    • eg1: sudo apt update: 以 root 身份更新软件包列表。
    • eg2: sudo -u anotheruser ls /home/anotheruser: 以 anotheruser 的身份执行 ls 命令。
  5. su : 切换用户
    • eg1: su -: 切换到 root 用户(需要 root 密码)。
    • eg2: su - newuser: 切换到 newuser 用户(需要 newuser 密码)。

五、网络管理与远程连接 (Network Management & Remote Connection)

  1. ip : 显示或操纵路由、网络设备、接口和隧道(现代 Linux 推荐)
    • eg1: ip a: 显示所有网络接口的 IP 地址信息(替代 ifconfig)。
    • eg2: ip route show: 显示路由表。
  2. ping : 测试网络连接
    • eg1: ping google.com: 测试与 google.com 的连通性。
    • eg2: ping -c 4 192.168.1.1: 发送 4 个数据包测试与 192.168.1.1 的连通性。
  3. ssh : 安全地登录到远程系统
    • eg1: ssh user@remote_host_ip: 使用 user 登录到 remote_host_ip
    • eg2: ssh -p 2222 user@remote_host_ip: 使用 user 登录到 remote_host_ip 的 2222 端口。
  4. scp : 在网络上的主机之间安全地复制文件
    • eg1: scp local_file.txt user@remote_host_ip:/path/to/remote/: 将本地文件复制到远程服务器。
    • eg2: scp user@remote_host_ip:/path/to/remote/file.txt .: 将远程文件复制到当前本地目录。
  5. 防火墙管理 (Ubuntu/CentOS 差异显著) :
    • Ubuntu (使用 ufw):
      • sudo ufw status: 查看防火墙状态。
      • sudo ufw enable: 启用防火墙。
      • sudo ufw allow ssh: 允许 SSH 服务(默认端口 22)。
      • sudo ufw allow 80/tcp: 允许 TCP 80 端口。
    • CentOS (使用 firewalld):
      • sudo systemctl status firewalld: 查看 firewalld 服务状态。
      • sudo firewall-cmd --list-all: 列出所有防火墙规则。
      • sudo firewall-cmd --add-service=ssh --permanent: 永久允许 SSH 服务。
      • sudo firewall-cmd --add-port=80/tcp --permanent: 永久允许 TCP 80 端口。
      • sudo firewall-cmd --reload: 重新加载防火墙规则以使永久更改生效。

六、软件包与服务管理 (Package & Service Management)

  1. 软件包管理 (Ubuntu/CentOS 差异显著):
    • Ubuntu/Debian (使用 aptapt-get):
      • sudo apt update: 更新软件包列表(必做!)。
      • sudo apt upgrade: 升级所有已安装的软件包。
      • sudo apt install python3-pip: 安装 python3-pip 软件包。
      • sudo apt remove python3-pip: 卸载 python3-pip 软件包。
      • dpkg -l | grep python3: 列出所有与 python3 相关的已安装软件包(低级工具)。
    • CentOS/RHEL (使用 dnfyum):
      • sudo dnf update: 更新软件包(CentOS 8+ 推荐)。
      • sudo yum update: 更新软件包(CentOS 7 及更早版本)。
      • sudo dnf install python3-pip: 安装 python3-pip 软件包(CentOS 8+ )。
      • sudo yum install python3-pip: 安装 python3-pip 软件包(CentOS 7 及更早版本)。
      • sudo dnf remove python3-pip: 卸载 python3-pip 软件包。
      • rpm -qa | grep python3: 列出所有与 python3 相关的已安装 RPM 软件包(低级工具)。
  2. 服务控制 (systemctl - 现代 Linux 通用):
    • eg1: sudo systemctl status sshd: 查看 SSH 服务的状态。
    • eg2: sudo systemctl start nginx: 启动 Nginx 服务。
    • eg3: sudo systemctl stop apache2: 停止 Apache 服务。
    • eg4: sudo systemctl enable docker: 设置 Docker 服务开机自启动。
    • eg5: sudo systemctl disable firewalld: 禁用 firewalld 服务开机自启动。

七、压缩、归档与调度 (Compression, Archiving & Scheduling)

  1. tar : 最广泛使用的归档工具(可以与压缩结合使用)
    • eg1: tar -cvf archive.tar my_dir/: 将 my_dir 目录打包成 archive.tar
    • eg2: tar -xvf archive.tar: 解包 archive.tar
    • eg3: tar -czvf archive.tar.gz my_dir/: 将 my_dir 打包并用 gzip 压缩成 archive.tar.gz
    • eg4: tar -xzvf archive.tar.gz: 解压并解包 archive.tar.gz
  2. gzip/gunzip : GNU压缩/解压缩程序
    • eg1: gzip file.txt: 压缩 file.txtfile.txt.gz
    • eg2: gunzip file.txt.gz: 解压缩 file.txt.gzfile.txt
  3. zip/unzip : 压缩和解压缩zip文件
    • eg1: zip -r archive.zip my_dir/: 将 my_dir 及其内容压缩为 archive.zip
    • eg2: unzip archive.zip: 解压缩 archive.zip
  4. cron : 用于定时执行命令
    • eg1: crontab -e: 编辑当前用户的 crontab 文件,设置定时任务。
    • eg2: crontab -l: 列出当前用户的所有定时任务。

【知识图解】

  1. Linux常用命令及分类,示意图如下

【知识拓展】

  1. 命令组合与管道 (|)
    • 使用管道符 | 将一个命令的输出作为另一个命令的输入。
      ls -l | grep "txt" # 列出详细信息,然后过滤出包含"txt"的行
      
  2. 输入/输出重定向 (>, >>, <)
    • >: 将命令输出重定向到文件,会覆盖原有内容。
      echo "Hello World" > output.txt
      
    • >>: 将命令输出追加到文件末尾。
      echo "Another line" >> output.txt
      
    • <: 从文件读取输入
      sort < names.txt # 从 names.txt 读取内容并排序
      
  3. 命令替换 (\command`$(command)`)
    • 将命令的输出作为另一个命令的参数。
      echo "Today is $(date +%Y-%m-%d)" # 输出当前日期
      
  4. 通配符和正则表达式
    • *: 匹配零个或多个字符。
      ls *.log # 列出所有以 .log 结尾的文件
      
    • ?: 匹配单个字符。
      ls file?.txt # 匹配 file1.txt, fileA.txt 等
      
    • []: 匹配方括号内的任意一个字符。
      ls [abc]file.txt # 匹配 afile.txt, bfile.txt, cfile.txt
      
  5. Shell 脚本编程
    • 将一系列命令写入一个文本文件(以 .sh 结尾),赋予执行权限后即可运行,实现自动化任务。
      #!/bin/bash
      echo "Starting deployment..."
      cd /path/to/project
      git pull origin main
      source venv/bin/activate
      pip install -r requirements.txt
      python app.py &
      echo "Deployment finished."