1. 用户和用户组
常用命令:
useradd:创建用户(-m创建家目录,-s指定默认 shell)。usermod:修改用户属性(如-aG将用户添加到附加组)。userdel:删除用户(-r同时删除家目录)。groupadd:创建用户组。groups:查看用户所属组。passwd:修改用户密码。- 面试重点:
- 用户和用户组的配置文件:
/etc/passwd、/etc/shadow、/etc/group。 - 如何实现用户权限隔离(通过用户组管理)。
- 如何查看当前用户:
whoami或id。
- 用户和用户组的配置文件:
- 案例:
- 创建一个用户
testuser,并将其添加到developers组:useradd -m testuser groupadd developers usermod -aG developers testuser - 查看
testuser的组信息:groups testuser
- 创建一个用户
2. 权限管理
常用命令:
-
chmod:修改文件权限(如chmod 755 file或chmod u+x file)。 -
chown:修改文件所有者(如chown user:group file)。 -
chgrp:修改文件所属组。 -
面试重点:
- 权限表示法:
rwx(读、写、执行)及其数字表示(如755)。 - 特殊权限:
SUID、SGID、Sticky 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的高级用法:按时间、大小、类型查找文件。awk和sed的常见场景:日志分析、文本替换。
- 案例:
- 查找
/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 中替换文件中所有的
foo为bar::%s/foo/bar/g - 在 VI 中显示行号并跳转到第 50 行:
:set number :50
- 在 VI 中替换文件中所有的
5. 进程管理
常用命令:
ps:查看进程状态(如ps aux)。top:实时查看系统资源占用。kill:终止进程(如kill -9 PID)。pkill:按名称终止进程(如pkill process_name)。nohup:后台运行进程(如nohup command &)。- 面试重点:
- 如何查看进程的 CPU 和内存占用:
ps aux或top。 - 如何查找某个进程的 PID:
ps aux | grep process_name。 - 如何优雅地终止进程:
kill -15 PID(发送 SIGTERM 信号)。
- 如何查看进程的 CPU 和内存占用:
- 案例:
- 查找并终止名为
nginx的进程:pkill nginx - 查看占用 CPU 最高的进程:
top -o %CPU
- 查找并终止名为
6. Shell 编程
常用知识点:
- 变量定义与使用:
var=value、echo $var。 - 条件判断:
if [ condition ]; then ... fi。 - 循环:
for、while。 - 函数定义:
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"脚本解析:
-
#!/bin/bash
指定使用 Bash 作为解释器。 -
logfile=$1
将脚本的第一个参数(即用户传入的日志文件名)赋值给变量logfile。
例如:运行脚本时输入./script.sh /var/log/syslog,则$1就是/var/log/syslog。 -
error_count=$(grep -c "ERROR" $logfile)- 使用
grep命令在日志文件中查找包含"ERROR"的行。 -c选项表示统计匹配行的数量。- 将统计结果赋值给变量
error_count。
- 使用
-
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!"脚本解析:
-
#!/bin/bash
指定使用 Bash 作为解释器。 -
backup_dir=$1
将脚本的第一个参数(即用户传入的目录路径)赋值给变量backup_dir。
例如:运行脚本时输入./backup.sh /home/user/documents,则$1就是/home/user/documents。 -
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:要备份的目录。
- 使用
-
echo "Backup completed!"
输出备份完成的提示信息。
示例运行:
假设要备份
/home/user/documents目录,运行脚本:./backup.sh /home/user/documents输出:
Backup completed!同时会在当前目录生成一个类似
backup_20231025.tar.gz的压缩文件。 -
-
602

被折叠的 条评论
为什么被折叠?



