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区别)。