【Linux】Linux 开发与运维命令终极手册 - 持续更新

小破孩
2025-09-10 / 0 评论 / 4 阅读 / 正在检测是否收录...

Linux 开发与运维命令终极手册

封面与使用说明

适用人群:PHP开发者、后端工程师、运维人员
核心价值:从日常开发到应急调试的全场景命令参考,兼顾效率与安全
使用方法:按「场景速查」快速定位,按「功能分类」系统学习,注意「安全警告」规避风险

一、场景速查索引(紧急情况优先看)

问题场景核心命令链功能分类
网站突然卡顿/502错误top(看CPU/内存)→ ss -s(连接数)→ systemctl status php-fpm(服务状态)五、一
.........

二、系统基础与环境监控

系统信息

  • uname:查看系统信息

    uname -a    # 完整信息
    uname -r    # 内核版本(确认Docker/Kernel兼容性)
  • lsb_release:发行版信息

    lsb_release -a    # 所有信息
    lsb_release -c    # 版本代号(适配apt/yum源)

磁盘与存储

  • df:磁盘空间

    df -h    # 人类可读格式
    df -i    # inode使用情况(紧急清理时,满需删除大量小文件)
  • du:目录大小分析

    du -sh *                          # 当前目录各项目大小
    du -h --max-depth=1 /var          # 一级目录分析
    du -sh * \| sort -hr              # 从大到小排列

内存与负载

  • free:内存监控

    free -h    # 易读格式
    free -m    # MB单位
    watch -n 5 "free -h"    # 每5秒刷新(内存泄漏排查)
  • uptime:系统负载

    uptime    # 显示1/5/15分钟平均负载(负载>CPU核心数时需排查进程)

高级监控

  • iostat:磁盘IO监控

    iostat -x 5    # 每5秒显示IO详情(%util接近100%表示IO饱和)
  • which/whereis:命令路径查找

    which php      # 检查php路径
    whereis mysql  # 查找mysql(区分系统自带与手动安装的程序)

三、文件与目录操作

基本操作

  • ls:列出内容

    ls -lh    # 详细+大小
    ls -lt    # 按修改时间排序
    # 现代替代:exa -l --git(带Git状态和颜色)
  • cd:切换目录

    cd ~     # 家目录
    cd -     # 返回上一目录
    # 技巧:cd .. 可简写为 ..(需配置bash)
  • mkdir:创建目录

    mkdir -p app/{ctrl,model,view}    # 递归创建多级目录(一次性创建项目结构)

文件操作

  • rm:删除文件 ⚠️极度危险

    rm file.txt    # 删除文件
    rm -rf dir/    # 递归强制删除目录
    
    # ⚠️ 安全准则:
    # 1. 禁止执行 rm -rf / 或 rm -rf /*
    # 2. 删前先用 ls 确认路径:ls dir/
    # 3. 替代方案:trash-put file(移到回收站,需安装trash-cli)
  • cp:复制文件

    cp -a src/ dest/           # 保留权限复制
    cp config.php{,.bak}       # 备份(生成config.php.bak)
    cp *.conf{,.bak}           # 批量备份(给所有conf文件加备份后缀)

高级文件操作

  • find:查找文件

    find ./ -name "*.php" -mtime -1                 # 1天内修改的PHP文件
    find ./ -name "*.log" -mtime +30 -print0 | xargs -0 rm -f    # 安全批量处理(处理含空格的文件名)
  • ln:创建链接

    ln -s /usr/local/php/bin/php /usr/bin/php    # 创建软链接(解决命令路径问题)
  • rsync:增量同步

    rsync -avz --delete ./local/ user@server:/remote/    # 镜像同步(部署代码比scp快)

四、文件内容处理

查看内容

  • cat:查看文件内容

    cat config.php    # 查看文件
    # 现代替代:bat config.php(代码高亮+行号)
  • tail:查看尾部

    tail -f error.log        # 实时监控
    tail -n 50 access.log    # 最后50行
    tail -F error.log        # 日志轮转必备(文件重建后仍跟踪)

文本处理

  • grep:文本搜索

    grep -rni "数据库" ./app    # 递归+行号+忽略大小写搜索
    find ./ -name "*.php" | xargs grep "function getUser"    # 结合find搜索
  • sed:文本替换

    sed -i 's/old/new/g' file.php           # 批量替换
    sed -i '/^#/d' nginx.conf               # 删除注释行
    sed -i 's/debug=true/debug=false/g' *.php    # 批量修改配置
  • awk:按列处理

    awk '$9==500 {print $0}' access.log    # 筛选500错误
    # 统计分析黄金链:
    awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -10    # Top 10访问IP
  • wc:统计行数

    wc -l *.php    # 统计PHP文件行数
    grep "error" log.txt | wc -l    # 错误数统计
    find ./ -name "*.php" | xargs wc -l    # 快速估算代码量

五、进程与服务管理

进程监控

  • ps:查看进程

    ps aux --sort=-%cpu                  # 按CPU排序
    ps aux | grep -v grep | grep php-fpm    # 筛选特定进程
  • top/htop:实时监控

    top     # 基础监控
    htop    # 交互式增强版(支持鼠标操作)
    # 技巧:按P(CPU)/M(内存)排序,k键终止进程
  • kill:终止进程

    kill 1234           # 正常终止
    kill -9 1234        # 强制终止
    pkill -f "php server.php"    # 按命令名批量终止

服务管理

  • systemctl:服务管理

    systemctl restart nginx      # 重启服务
    systemctl enable mysql       # 开机自启
    systemctl status php-fpm -l  # 查看状态及完整日志(启动失败排查)

网络与调试

  • netstat/ss:网络连接

    ss -lntup                              # 监听的端口及进程
    ss -ant | grep :80 | wc -l             # 统计80端口连接数
  • lsof:文件占用

    lsof -i :80          # 查看80端口占用
    lsof -p 1234         # 查看进程打开的文件
    lsof +D /var/www     # 查看目录相关进程(解决"文件被占用无法删除")
  • strace:系统调用跟踪

    strace -p 1234    # 调试卡死进程(定位程序卡住原因)

六、网络操作

网络诊断

  • ping:连通性测试

    ping -c 4 google.com    # 发送4个包
    # 现代替代:mtr google.com(持续跟踪丢包和延迟)
  • curl:HTTP请求

    curl -X POST -d "name=test" http://api.com    # POST请求
    curl -I https://example.com                   # 仅获取头部
    curl -v https://example.com                   # 详细输出(显示HTTPS握手过程)

文件传输

  • wget:文件下载

    wget -c https://file.com/big.tar.gz    # 断点续传
    wget -i url_list.txt                   # 批量下载(从文件读URL)
  • ssh:远程登录

    ssh -p 2222 user@server.com            # 指定端口登录
    ssh user@server "command"              # 远程执行命令
    ssh-copy-id user@server                # 免密登录(上传公钥)
  • scp:远程传输

    scp -r dir/ user@server:/path/    # 递归上传目录
    # 大文件传输技巧:pv file.tar.gz | ssh user@server "cat > file.tar.gz"(显示进度)
  • nc:网络调试

    nc -zv 192.168.1.1 3306    # 测试MySQL端口连通性
    # 临时文件传输:
    # 接收端:nc -l 8080 > recv.txt
    # 发送端:nc server 8080 < send.txt

七、MySQL数据库

基本操作

  • mysql:登录数据库

    mysql -u root -p                          # 本地登录
    mysql -h 10.0.0.5 -P 3307 -u user -p dbname    # 远程连接
    # 安全提示:生产环境禁止用root直接登录,创建专用用户
  • mysqldump:备份数据库

    mysqldump -u root -p --single-transaction blog > blog.sql    # 热备份(避免锁表)

管理操作

  • mysqladmin:数据库管理

    mysqladmin -u root -p processlist    # 查看连接进程
    mysqladmin -u root -p kill 123       # 杀死进程ID 123(终止慢查询)
  • 数据导入:恢复备份

    mysql -u root -p blog < blog.sql
    # ⚠️ 警告:导入前确认目标库正确,避免覆盖生产数据
  • 日志查看:调试问题

    tail -f /var/log/mysql/error.log    # 实时错误日志
    # 技巧:开启慢查询日志(临时生效):
    set global slow_query_log=1

八、Docker容器管理

镜像管理

  • 镜像操作

    docker pull php:7.4-fpm          # 拉取镜像
    docker build -t myphp:v1 .       # 构建镜像
    docker image prune -a            # 清理无用镜像

容器管理

  • 容器操作

    docker run -d -p 80:80 --name mynginx nginx    # 后台运行容器
    docker ps -a                                   # 查看所有容器
    docker exec -it myphp bash                     # 进入容器交互终端

数据与网络

  • 数据卷:持久化存储

    docker volume create phpdata                              # 创建数据卷
    docker run -v phpdata:/var/www/html php:7.4-fpm           # 使用数据卷
    # 备注:避免用 -v /host/path:/container/path(权限问题多),优先用数据卷
  • 网络管理:容器通信

    docker network create mynet                       # 创建网络
    docker run --network mynet --name db mysql        # 容器加入网络
    # 技巧:自定义网络避免端口冲突,容器间用名称通信(如mysql://db:3306)

九、Swoole扩展

安装与验证

  • 安装Swoole

    pecl install swoole               # 安装最新版
    pecl install swoole-4.8.12        # 安装指定版本(稳定版)
    echo "extension=swoole.so" >> php.ini    # 启用扩展
  • 验证安装

    php -m | grep swoole    # 检查是否加载
    php --ri swoole         # 查看扩展信息(确认enable_coroutine等关键特性)

服务管理

  • 服务管理

    php server.php start      # 启动服务
    php server.php reload     # 平滑重启(不中断连接,适合生产环境)
  • 进程监控

    ps aux | grep server.php         # 查看进程
    netstat -tulpn | grep 9501       # 查看端口监听
    # 备注:配置daemonize=1后台运行,通过ps确认进程数是否符合预期

十、编程工具与环境

开发工具

  • php:PHP解释器

    php -l file.php                      # 语法检查
    php -S 0.0.0.0:8000 -t public        # 启动内置服务器
    php -d display_errors=On index.php   # 临时调整配置(显示错误)
  • composer:依赖管理

    composer install --no-dev           # 生产环境安装
    composer dump-autoload -o           # 优化自动加载
    # 加速下载:切换国内镜像
    composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/
  • git:版本控制

    git stash                         # 暂存修改
    git bisect start                  # 二分查找bug
    git log -S "function_name"        # 搜索历史提交(查找引入函数的提交)

现代工具

  • jq:JSON处理

    curl api.com | jq '.data[].name'                  # 提取数据
    jq '.users[] | select(.age>18)' data.json         # 条件筛选
    cat messy.json | jq .                             # 格式化JSON
  • ag:代码搜索

    ag "function_name" app/           # 快速搜索
    ag -G "*.php" "database"          # 指定文件类型搜索
    # 备注:比grep -r快10倍,自动忽略.git和vendor目录

十一、压缩与归档

压缩解压

  • tar:打包/压缩

    tar -zcvf backup.tar.gz --exclude=vendor ./project    # 打包并排除目录
    tar -tf backup.tar.gz                                 # 查看内容不解压
  • zip/unzip:ZIP处理

    zip -r docs.zip ./docs -x "*.git*"    # 压缩并排除Git文件
    unzip -O GBK chinese.zip              # 解压中文文件(避免乱码)
  • gzip:GZIP压缩

    gzip large.log                # 压缩文件(替换原文件)
    gzip -c file > file.gz        # 压缩但保留原文件
    gunzip file.gz                # 解压

十二、包管理与软件安装

包管理命令

系统更新软件源安装软件搜索软件实用技巧
Debian/Ubuntuapt updateapt install <pkg>apt search <pkg>加速:替换国内镜像源
CentOS/RHELyum updateyum install <pkg>yum search <pkg>批量安装:yum install php-fpm nginx mysql-server

十三、安全警告与最佳实践

操作安全

  1. rm -rf 安全准则

    • 永远不要在根目录/或系统目录执行递归删除
    • 删前用ls确认路径:ls /path/to/delete/*
    • 推荐用trash-clitrash-put/trash-empty)替代rm,支持回收站恢复
  2. 权限操作禁忌

    • ⚠️ 禁止执行chmod -R 777 /chown -R root:root /home/,会导致系统崩溃
    • 正确权限:PHP文件644,目录755,Web可写目录属主设为www-data
  3. 数据库操作安全

    • 生产环境执行DROP/TRUNCATE前必须备份
    • 禁止直接在生产库执行UPDATE/DELETE不带WHERE的SQL
  4. 命令执行确认

    • 复杂命令先用echo测试:echo rm -rf /path/to/dir/*
    • 批量操作前先处理1个样本验证:find ./ -name "*.log" \| head -1 \| xargs rm -f

附录:现代工具安装指南

工具功能Ubuntu安装命令使用示例
bat增强版catsudo apt install batbat config.php(代码高亮)
exa增强版lssudo apt install exaexa -l --git(带Git状态)
htop增强版topsudo apt install htophtop(交互式监控)
mtr网络诊断sudo apt install mtrmtr google.com(路由追踪)
jqJSON处理sudo apt install jqcurl api.com \ jq '.data'
ag代码搜索sudo apt install silversearcher-agag "function" app/
fzf模糊查找sudo apt install fzfCtrl+R搜索历史命令
trash-cli回收站工具sudo apt install trash-clitrash-put file(安全删除)

使用提示:遇到任何命令不清楚时,使用man <命令>查看详细手册,如man grep

0

评论 (0)

取消