面试准备—— Linux [必备,主要掌握常用命令]

1. 用户和用户组

常用命令

  • useradd:创建用户(-m 创建家目录,-s 指定默认 shell)。
  • usermod:修改用户属性(如 -aG 将用户添加到附加组)。
  • userdel:删除用户(-r 同时删除家目录)。
  • groupadd:创建用户组。
  • groups:查看用户所属组。
  • passwd:修改用户密码。
  • 面试重点
    • 用户和用户组的配置文件:/etc/passwd/etc/shadow/etc/group
    • 如何实现用户权限隔离(通过用户组管理)。
    • 如何查看当前用户:whoamiid
  • 案例
    • 创建一个用户 testuser,并将其添加到 developers 组:
      useradd -m testuser
      groupadd developers
      usermod -aG developers testuser
      
    • 查看 testuser 的组信息:
      groups testuser
      

2. 权限管理

常用命令

  • chmod:修改文件权限(如 chmod 755 filechmod u+x file)。

  • chown:修改文件所有者(如 chown user:group file)。

  • chgrp:修改文件所属组。

  • 面试重点

    • 权限表示法:rwx(读、写、执行)及其数字表示(如 755)。
    • 特殊权限:SUIDSGIDSticky Bit 的作用及设置方法。
    • 如何递归修改目录及其子文件的权限:chmod -R
  • 案例

    • 设置脚本为可执行、可读权限:

      chmod +rx script.sh
      

      这将为脚本文件添加可执行 (x) 和可读 (r) 权限。

    • 设置脚本为可执行、可写权限:

      chmod +wx script.sh
      

      这将为脚本文件添加可执行 (x) 和可写 (w) 权限。

    • 设置脚本为可执行、可读、可写权限:

      chmod +rwx script.sh
      

      这将为脚本文件添加可执行 (x)、可读 (r) 和可写 (w) 权限。

    • 使用数字模式设置权限:
      也可以使用数字模式来设置权限。每个权限对应一个数字:
      读 (r) = 4
      写 (w) = 2
      执行 (x) = 1

    例如:

    • 设置脚本为可读、可写、可执行权限:

      chmod 777 script.sh
      

      这里的 777 表示所有用户(所有者、组、其他用户)都具有读、写、执行权限。

    • 设置脚本为可读、可执行权限:

      chmod 755 script.sh
      

      这里的 755 表示所有者具有读、写、执行权限,而组和其他用户只有读和执行权限。

    • 设置脚本为可写、可执行权限:

      chmod 733 script.sh
      

      这里的 733 表示所有者具有读、写、执行权限,而组和其他用户只有写和执行权限。

3. 文件/字符查询

常用命令

  • find:查找文件(如 find /path -name "*.log")。
  • grep:查找文件内容(如 grep "keyword" file)。
  • awk:文本处理工具(如 awk '{print $1}' file)。
  • sed:流编辑器(如 sed 's/old/new/g' file)。
  • locate:快速查找文件(需先更新数据库:updatedb)。
  • 面试重点
    • grep 的高级用法:正则表达式匹配、递归查找(-r)、忽略大小写(-i)。
    • find 的高级用法:按时间、大小、类型查找文件。
    • awksed 的常见场景:日志分析、文本替换。
  • 案例
    • 查找 /var/log 目录下所有包含 error 关键字的日志文件:
      grep -r "error" /var/log
      
    • 查找 /home 目录下大于 100MB 的文件:
      find /home -type f -size +100M
      

4. VI 编辑器

常用操作

  • 模式切换:命令模式(按 Esc)、插入模式(按 i)、末行模式(按 :)。
  • 保存与退出::w(保存)、:q(退出)、:wq(保存并退出)、:q!(强制退出)。
  • 文本操作:复制(yy)、粘贴(p)、删除(dd)、撤销(u)。
  • 面试重点
    • 如何快速定位行号::set number
    • 如何进行批量替换::%s/old/new/g
    • 如何搜索关键字:/keyword
  • 案例
    • 在 VI 中替换文件中所有的 foobar
      :%s/foo/bar/g
      
    • 在 VI 中显示行号并跳转到第 50 行:
      :set number
      :50
      

5. 进程管理

常用命令

  • ps:查看进程状态(如 ps aux)。
  • top:实时查看系统资源占用。
  • kill:终止进程(如 kill -9 PID)。
  • pkill:按名称终止进程(如 pkill process_name)。
  • nohup:后台运行进程(如 nohup command &)。
  • 面试重点
    • 如何查看进程的 CPU 和内存占用:ps auxtop
    • 如何查找某个进程的 PID:ps aux | grep process_name
    • 如何优雅地终止进程:kill -15 PID(发送 SIGTERM 信号)。
  • 案例
    • 查找并终止名为 nginx 的进程:
      pkill nginx
      
    • 查看占用 CPU 最高的进程:
      top -o %CPU
      

6. Shell 编程

常用知识点

  • 变量定义与使用:var=valueecho $var
  • 条件判断:if [ condition ]; then ... fi
  • 循环:forwhile
  • 函数定义:function_name() { ... }
  • 脚本参数:$1$2 表示第 1、2 个参数,$# 表示参数个数。
  • 面试重点
    • 如何编写一个简单的 Shell 脚本并执行。
    • 如何处理脚本中的错误:set -e(遇到错误立即退出)。
    • 如何调试 Shell 脚本:bash -x script.sh
    • 常见的 Shell 脚本应用场景:日志清理、定时任务、自动化部署。
  • 案例
    • 编写一个脚本,统计日志文件中错误出现的次数:

      #!/bin/bash
      logfile=$1
      error_count=$(grep -c "ERROR" $logfile)
      echo "Error count: $error_count"
      
      脚本解析:
      1. #!/bin/bash
        指定使用 Bash 作为解释器。

      2. logfile=$1
        将脚本的第一个参数(即用户传入的日志文件名)赋值给变量 logfile
        例如:运行脚本时输入 ./script.sh /var/log/syslog,则 $1 就是 /var/log/syslog

      3. error_count=$(grep -c "ERROR" $logfile)

        • 使用 grep 命令在日志文件中查找包含 "ERROR" 的行。
        • -c 选项表示统计匹配行的数量。
        • 将统计结果赋值给变量 error_count
      4. echo "Error count: $error_count"
        输出错误次数的统计结果。

      示例运行:

      假设日志文件 /var/log/syslog 中有 5 行包含 "ERROR",运行脚本:

      ./script.sh /var/log/syslog
      

      输出:

      Error count: 5
      
    • 编写一个脚本,备份指定目录并压缩:

      #!/bin/bash
      backup_dir=$1
      tar -czf backup_$(date +%Y%m%d).tar.gz $backup_dir
      echo "Backup completed!"
      
      脚本解析:
      1. #!/bin/bash
        指定使用 Bash 作为解释器。

      2. backup_dir=$1
        将脚本的第一个参数(即用户传入的目录路径)赋值给变量 backup_dir
        例如:运行脚本时输入 ./backup.sh /home/user/documents,则 $1 就是 /home/user/documents

      3. tar -czf backup_$(date +%Y%m%d).tar.gz $backup_dir

        • 使用 tar 命令对目录进行压缩备份。
        • -c:创建新的归档文件。
        • -z:使用 gzip 压缩。
        • -f:指定输出的文件名。
        • backup_$(date +%Y%m%d).tar.gz:生成的文件名,包含当前日期(格式为 YYYYMMDD)。
        • $backup_dir:要备份的目录。
      4. echo "Backup completed!"
        输出备份完成的提示信息。

      示例运行:

      假设要备份 /home/user/documents 目录,运行脚本:

      ./backup.sh /home/user/documents
      

      输出:

      Backup completed!
      

      同时会在当前目录生成一个类似 backup_20231025.tar.gz 的压缩文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值