Linux系统管理
文件操作
ls -alh
📌 功能描述:显示当前目录下所有文件和文件夹的详细信息,包括隐藏文件,并以易读格式显示文件大小。
🎯 典型场景:查看目录内容、检查文件权限和大小。
⚠️ 注意事项:无特殊注意事项。
💡 扩展技巧:可配合 `grep` 过滤特定文件,例如 `ls -alh | grep .txt`。
chmod 755 <file_or_directory>
📌 功能描述:修改文件或目录的权限。755表示所有者具有读、写、执行权限,组用户和其他用户具有读、执行权限。
🎯 典型场景:设置脚本执行权限、保护文件不被随意修改。
⚠️ 注意事项:谨慎修改系统关键文件的权限。
💡 扩展技巧:使用 `chmod -R 755 <directory>` 递归修改目录下所有文件和子目录的权限。
rsync -avz <source> <destination>
📌 功能描述:远程同步文件和目录。-a 表示归档模式,-v 表示详细输出,-z 表示压缩传输。
🎯 典型场景:文件备份、服务器间数据同步。
⚠️ 注意事项:确保目标路径正确,避免覆盖重要数据。
💡 扩展技巧:添加 `--delete` 参数可以在目标目录删除源目录不存在的文件。
进程管理
htop
📌 功能描述:交互式的进程查看器。
🎯 典型场景:监控系统资源占用、查找和管理进程。
⚠️ 注意事项:可能需要root权限查看所有进程。
💡 扩展技巧:按 'F4' 过滤进程,'F5' 树状视图,'k' 发送信号。
kill -9 <PID>
📌 功能描述:强制终止指定PID的进程。
🎯 典型场景:结束无响应或无法正常退出的进程。
⚠️ 注意事项:强制终止可能导致数据丢失,应谨慎使用。
💡 扩展技巧:先尝试 `kill <PID>` (SIGTERM),无效再用 `-9` (SIGKILL)。
systemctl <action> <service_name>
📌 功能描述:管理systemd系统和服务的工具。
🎯 典型场景:启动、停止、重启、查看服务状态(如 `systemctl start nginx`)。
⚠️ 注意事项:需要root权限执行修改操作。
💡 扩展技巧:`systemctl status <service_name>` 查看详细状态,`systemctl enable <service_name>` 设置开机自启。
网络调试
netstat -tulnp
📌 功能描述:显示TCP/UDP端口监听情况、程序名和PID。
🎯 典型场景:检查端口占用、排查网络服务问题。
⚠️ 注意事项:可能需要root权限查看所有进程信息。
💡 扩展技巧:结合 `grep` 过滤特定端口或服务,如 `netstat -tulnp | grep 80`。
tcpdump -i <interface> <options>
📌 功能描述:强大的网络抓包工具。
🎯 典型场景:分析网络流量、诊断网络连接问题。
⚠️ 注意事项:需要root权限,输出信息量可能很大。
💡 扩展技巧:使用过滤器如 `tcpdump -i eth0 port 80` 只抓取80端口的包。
Shell编程
变量处理
${var:-default}
📌 功能描述:如果变量`var`未定义或为空,则使用`default`作为其值,但不会改变`var`本身。
🎯 典型场景:脚本中设置参数的默认值。
⚠️ 注意事项:区分 `${var:=default}` (如果为空则赋值)。
💡 扩展技巧:`${var:?error_message}` 如果为空则打印错误并退出。
流程控制
while read line; do ... done < file.txt
📌 功能描述:逐行读取文件内容并进行处理。
🎯 典型场景:批量处理文本文件中的数据。
⚠️ 注意事项:注意循环体内的变量作用域。
💡 扩展技巧:可以使用 `IFS` 变量控制分隔符。
正则表达式
grep -E '[0-9]{3}' file.txt
📌 功能描述:使用扩展正则表达式在文件中搜索包含三个连续数字的行。
🎯 典型场景:文本搜索、日志分析、数据提取。
⚠️ 注意事项:`-E` 启用扩展正则,不同工具的正则语法可能略有差异。
💡 扩展技巧:`-o` 只输出匹配部分,`-i` 忽略大小写,`-v` 反向匹配。
Git高级操作
分支管理
git rebase -i <base>
📌 功能描述:交互式变基,可以修改、合并、删除、重排提交历史。
🎯 典型场景:合并多个小提交、修改提交信息、整理提交历史。
⚠️ 注意事项:不要对已经推送到公共仓库的分支执行rebase,除非你清楚后果。
💡 扩展技巧:`git rebase -i HEAD~N` 修改最近N个提交。
贮藏技巧
git stash apply [stash_id]
📌 功能描述:应用某个贮藏的更改,但不会从贮藏列表中删除它。
🎯 典型场景:临时保存工作区更改,切换分支处理紧急任务后恢复。
⚠️ 注意事项:`git stash pop` 会应用并删除贮藏。
💡 扩展技巧:`git stash list` 查看所有贮藏,`git stash save "message"` 添加描述。
子模块操作
git submodule update --init --recursive
📌 功能描述:初始化并更新项目中的所有子模块,包括嵌套子模块。
🎯 典型场景:克隆包含子模块的项目后,获取子模块内容。
⚠️ 注意事项:子模块有自己的版本历史。
💡 扩展技巧:`git submodule add <repository> <path>` 添加新的子模块。
Kubernetes实战
Pod排错
kubectl describe pod <pod_name> -n <namespace>
📌 功能描述:查看指定命名空间下Pod的详细信息,包括事件、状态、配置等。
🎯 典型场景:排查Pod启动失败、状态异常等问题。
⚠️ 注意事项:需配置好kubectl并有相应权限。
💡 扩展技巧:结合 `kubectl logs <pod_name>` 查看容器日志。
滚动更新
kubectl rollout restart deployment/<deployment_name>
📌 功能描述:触发Deployment的滚动重启。
🎯 典型场景:应用配置更新后,平滑重启应用实例。
⚠️ 注意事项:确保Deployment的更新策略配置合理。
💡 扩展技巧:`kubectl rollout status deployment/<deployment_name>` 查看更新状态。
网络策略
kubectl port-forward pod/<pod_name> <local_port>:<pod_port>
📌 功能描述:将本地端口转发到Pod的端口,方便本地调试。
🎯 典型场景:本地访问Pod内容器运行的服务进行调试。
⚠️ 注意事项:只在调试时使用,转发会占用本地端口。
💡 扩展技巧:可以同时转发多个端口,也可以转发到Service。
MySQL 命令
数据库操作
CREATE DATABASE database_name;
📌 功能描述:创建一个新的数据库。
🎯 典型场景:为新项目或应用创建独立的数据库环境。
⚠️ 注意事项:确保数据库名称唯一且符合命名规范。
💡 扩展技巧:可以指定字符集和排序规则,例如 `CREATE DATABASE database_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;`
SHOW DATABASES;
📌 功能描述:列出MySQL服务器上所有的数据库。
🎯 典型场景:查看可用的数据库列表。
USE database_name;
📌 功能描述:选择要操作的数据库。
🎯 典型场景:在执行表操作或查询前,切换到目标数据库。
DROP DATABASE database_name;
📌 功能描述:删除一个数据库及其所有表和数据。
🎯 典型场景:移除不再需要的数据库。
⚠️ 注意事项:此操作不可逆,请谨慎操作,务必提前备份重要数据。
用户管理
CREATE USER 'username'@'host' IDENTIFIED BY 'password';
📌 功能描述:创建一个新的MySQL用户。
🎯 典型场景:为应用程序或开发人员创建专用的数据库账户。
⚠️ 注意事项:`host` 可以是 `localhost` (本地连接),`%` (任意主机),或特定IP地址。
GRANT ALL PRIVILEGES ON database_name.* TO 'username'@'host';
📌 功能描述:授予用户对特定数据库的所有权限。
🎯 典型场景:赋予用户管理特定数据库的能力。
⚠️ 注意事项:`ALL PRIVILEGES` 权限较高,按需分配最小权限原则。
💡 扩展技巧:可以授予特定权限,如 `GRANT SELECT, INSERT ON database_name.* TO 'username'@'host';`
FLUSH PRIVILEGES;
📌 功能描述:重新加载授权表,使权限更改生效。
🎯 典型场景:在执行 `GRANT` 或 `REVOKE` 命令后,确保权限立即生效。
数据备份
mysqldump -u <user> -p <database_name> > backup.sql
📌 功能描述:备份MySQL数据库到SQL文件。
🎯 典型场景:数据库定期备份、迁移。
⚠️ 注意事项:确保有足够的磁盘空间存放备份文件。
💡 扩展技巧:添加 `--all-databases` 备份所有数据库。
连接测试
mysql -u <user> -p -h <host>
📌 功能描述:连接到MySQL服务器。
🎯 典型场景:管理数据库、执行SQL查询。
⚠️ 注意事项:如果密码包含特殊字符,可能需要引号。
💡 扩展技巧:使用 `mysql -u <user> -p -e "SHOW DATABASES;"` 直接执行命令。
Redis 命令
字符串 (String) 操作
SET key value [EX seconds|PX milliseconds|EXAT unix-time-seconds|PXAT unix-time-milliseconds|KEEPTTL] [NX|XX] [GET]
📌 功能描述:设置指定 key 的值。可选参数可以设置过期时间、条件设值等。
🎯 典型场景:缓存用户信息、计数器、分布式锁。
⚠️ 注意事项:如果 key 已经持有其他值,SET 就覆写旧值,无视类型。
💡 扩展技巧:`SET mykey "Hello" EX 60 NX` 表示如果 `mykey` 不存在,则设置值为 "Hello" 且60秒后过期。
GET key
📌 功能描述:获取指定 key 的值。
🎯 典型场景:读取缓存数据。
⚠️ 注意事项:如果 key 不存在时,返回 nil。
INCR key
📌 功能描述:将 key 中储存的数字值增一。
🎯 典型场景:实现计数器功能,如文章阅读量、用户点赞数。
⚠️ 注意事项:如果 key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作。如果值包含错误的类型,或字符串类型的值不能表示为数字,那么返回一个错误。
哈希 (Hash) 操作
HSET key field value [field value ...]
📌 功能描述:将哈希表 key 中的字段 field 的值设为 value 。
🎯 典型场景:存储对象信息,如用户信息(用户名、年龄、邮箱等)。
⚠️ 注意事项:如果哈希表不存在,一个新的哈希表被创建并进行 HSET 操作。如果字段已经存在于哈希表中,旧值将被覆盖。
HGET key field
📌 功能描述:获取存储在哈希表中指定字段的值。
🎯 典型场景:读取对象的部分属性。
HGETALL key
📌 功能描述:获取在哈希表中指定 key 的所有字段和值。
🎯 典型场景:一次性读取对象的全部信息。
⚠️ 注意事项:当哈希表很大时,HGETALL 可能会阻塞服务器,谨慎使用。
列表 (List) 操作
LPUSH key element [element ...]
📌 功能描述:将一个或多个值插入到列表头部。
🎯 典型场景:实现消息队列(生产者)、最新动态列表。
RPOP key [count]
📌 功能描述:移除并获取列表尾部的元素。
🎯 典型场景:实现消息队列(消费者)。
LRANGE key start stop
📌 功能描述:获取列表指定范围内的元素。
🎯 典型场景:分页显示列表数据,如获取最新的10条评论。
⚠️ 注意事项:`start` 和 `stop` 都以 0 为基础索引。 `LRANGE mylist 0 -1` 可以获取所有元素。
集合 (Set) 操作
SADD key member [member ...]
📌 功能描述:向集合添加一个或多个成员。
🎯 典型场景:存储唯一值,如标签、共同好友。
⚠️ 注意事项:如果成员已经是集合的成员,则忽略。如果 key 不存在,则创建一个新的集合。
SMEMBERS key
📌 功能描述:返回集合中的所有成员。
🎯 典型场景:获取某个标签下的所有文章ID。
SINTER key [key ...]
📌 功能描述:返回给定所有集合的交集。
🎯 典型场景:计算共同关注的好友、共同标签的文章。
有序集合 (Sorted Set / ZSET) 操作
ZADD key [NX|XX] [CH] [INCR] score member [score member ...]
📌 功能描述:向有序集合添加一个或多个成员,或者更新已存在成员的分数。
🎯 典型场景:排行榜、带权重的任务队列。
⚠️ 注意事项:每个成员都有一个关联的分数,用于排序。
ZRANGE key start stop [WITHSCORES]
📌 功能描述:通过索引区间返回有序集合成中指定区间内的成员。
🎯 典型场景:获取排行榜前N名用户。
⚠️ 注意事项:成员按分数从小到大排序。`WITHSCORES` 选项会同时返回成员和分数。
ZRANK key member
📌 功能描述:返回有序集合中指定成员的排名(按分数从小到大)。
🎯 典型场景:查询用户在排行榜中的名次。
⚠️ 注意事项:排名以 0 为底。
连接测试
redis-cli PING
📌 功能描述:检查Redis服务器是否正在运行。
🎯 典型场景:测试Redis连接、监控服务状态。
⚠️ 注意事项:确保redis-cli已安装并能连接到服务器。
💡 扩展技巧:`redis-cli -h <host> -p <port> PING` 连接到指定服务器。
服务器信息
redis-cli INFO
📌 功能描述:获取Redis服务器的详细信息和统计数据。
🎯 典型场景:监控Redis性能、诊断问题。
⚠️ 注意事项:输出信息较多,可以配合 `grep` 过滤。
💡 扩展技巧:`redis-cli INFO memory` 只查看内存相关信息。
扩展内容
Docker 命令
docker ps -a
📌 功能描述:列出所有容器(包括已停止的)。
🎯 典型场景:查看当前运行和已停止的容器状态。
⚠️ 注意事项:`-a` 参数是关键。
💡 扩展技巧:结合 `docker logs
docker build -t my-image .
📌 功能描述:根据当前目录下的 Dockerfile 构建一个名为 my-image 的镜像。
🎯 典型场景:创建自定义的 Docker 镜像。
⚠️ 注意事项:确保 Dockerfile 文件存在且编写正确。
💡 扩展技巧:使用 `.dockerignore` 文件排除不需要包含在镜像中的文件。
Nginx 配置与命令
nginx -t
📌 功能描述:测试 Nginx 配置文件语法是否正确。
🎯 典型场景:修改 Nginx 配置后,验证配置文件的有效性。
⚠️ 注意事项:通常需要 sudo 权限执行 Nginx 相关命令。
💡 扩展技巧:`nginx -s reload` 平滑加载新配置。
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://localhost:3000;
}
}
📌 功能描述:一个基本的 Nginx 反向代理配置示例。
🎯 典型场景:将外部请求转发到内部应用服务器。
⚠️ 注意事项:配置文件路径和具体配置项可能因系统和需求而异。
💡 扩展技巧:可以配置 SSL、负载均衡等高级功能。
情景模式训练器
模拟真实运维场景(服务器宕机、CI/CD故障),分步骤引导命令输入,实时验证执行结果。
命令实验室
沙箱环境(Web版Linux终端),危险命令预警系统(rm -rf / 拦截),执行历史对比工具。
知识图谱
命令关系网可视化,版本差异提示(Git v2.x vs v1.x),跨平台标注(MacOS与Linux区别)。