技术教程
10-02
Linux系统命令是管理和操作Linux系统的核心工具,涵盖文件管理、系统监控、进程控制等多个方面。以下分类总结常用命令及其功能: 一、系统信息查询 架构与内核 arch:显示处理器架构 uname -r:查看内核版本 cat /proc/cpuinfo:获取CPU详细信息 cat /proc/meminfo:检查内存使用情况 日期时间 date:显示或设置当前日期时间 二、文件与目录操作 基础命令 ls:列出目录内容(-l显示详情,-a包含隐藏文件) cd:切换目录(cd ~返回家目录,cd -返回上一目录) pwd:显示当前工作目录路径 增删改查 mkdir:创建目录(-p递归创建多级目录) rm:删除文件或目录(-rf强制递归删除) cp/mv:复制或移动文件/目录 find:搜索文件(如find /usr -name 'a*') 三、进程管理 查看与终止 ps:查看进程状态(ps -aux显示所有用户进程) kill:终止进程(kill -9 PID强制终止) 四、帮助与手册 man:查看命令手册(如man ls) --help:获取命令简要帮助(如ls --help) 五、其他实用命令 clear:清屏2 alias:设置命令别名(如alias ll='ls -l') df -Th:查看文件系统格式及磁盘空间 如需更详细的功能参数,可通过man命令查阅具体手册。 -------------------------------------------------------------------- cp -r ./* /var/www/lottery_app/ # 复制当前目录下的所有文件于是别一目录 cp models.py /var/www/lottery_app # 将当前目录下的models.py文件复制到/var/www/lottery_app目录 # 若目标目录不存在会报错 # 若目标目录已存在同名文件会被覆盖 rm -rfv /var/www/lottery_app/lottery_app # 具有破坏性的Linux文件删除操作 -rfv组合参数: -r:递归删除目录及其内容 -f:强制删除不提示确认 -v:显示详细删除过程 cp -r /var/www/lottery_app /backup/ # 将 /var/www/lottery_app 目录及其所有子目录和文件 递归复制到 /backup/ (数据执行备份),/var/www/lottery_app:源目录路径,/backup/:目标目录路径 ps -aux 是一个常用的Linux/Unix命令,用于查看系统中正在运行的进程信息。以下是详细解析: 命令组成: ps:process status的缩写 -a:显示所有用户的进程 -u:以用户为主的格式显示 -x:显示没有控制终端的进程 输出列说明: USER:进程所有者 PID:进程ID %CPU:CPU占用率 %MEM:内存占用率 VSZ:虚拟内存用量(KB) RSS:常驻内存用量(KB) TTY:终端设备 STAT:进程状态(S-休眠,R-运行等) START:启动时间 TIME:CPU占用时间 COMMAND:启动命令 常用组合: 查找特定进程:ps -aux | grep [进程名] 按CPU排序:ps -aux --sort=-%cpu 按内存排序:ps -aux --sort=-%mem 注意事项: 在BSD系统上应使用ps aux(无横线) 会显示系统所有进程,可能输出较长 普通用户只能看到自己的进程,root可查看全部 该命令是系统监控的基础工具,常用于检查异常进程或分析资源占用情况。如需实时监控,可改用top命令。 ********************************************************************************************************* 附:虚拟环境相关操作: # 先退出当前虚拟环境 deactivate # 进入项目目录 cd /www/wwwroot/lottery_app # 删除有问题的旧虚拟环境 rm -rf venv # 使用支持 SSL 的 Python 重新创建虚拟环境 /usr/local/python3.9/bin/python3.9 -m venv venv # 激活新的虚拟环境 source venv/bin/activate # 验证虚拟环境中的 Python 是否支持 SSL python -c "import ssl; print('虚拟环境 SSL 模块正常')" ------------------------------------------------------------------------------------------------ # 先删除现有虚拟环境 rm -rf /var/www/blog/venv # 重新创建虚拟环境 python3 -m venv /var/www/blog/venv # 激活虚拟环境 source /var/www/blog/venv/bin/activate # 重新安装需要的包 pip install <需要的包> --------------------------------------------------------------------------------------------------- # 切换到应用目录 cd /var/www/blog # 确保已激活虚拟环境(终端显示 (venv)) source venv/bin/activate # 如果尚未激活 # 再次尝试启动(此时 gunicorn 能找到当前目录下的 app.py) gunicorn --bind 0.0.0.0:8888 app:app # 虚拟环境 Python 路径 + -m gunicorn + 启动参数 /var/www/blog/venv/bin/python -m gunicorn --bind 0.0.0.0:8888 app:app ----------------------------------------------------------------------------- 从 ps aux 输出可以看到,你当前同时运行了 两个 Gunicorn 服务: 绑定 8000 端口 的服务(主进程 PID: 15232,工作进程 PID: 15235); 绑定 8888 端口 的服务(主进程 PID: 16180,工作进程 PID: 16183)。 这就是你执行命令 “没有反应” 的原因 —— 旧的服务(8000/8888 端口)已经占用了终端,新的启动命令被阻塞或端口冲突。 第一步:停止所有旧的 Gunicorn 进程(避免冲突) 先终止这两个服务的所有进程,清理环境: bash # 终止 8000 端口的主进程(PID: 15232)和工作进程(PID: 15235) kill -9 15232 15235 # 终止 8888 端口的主进程(PID: 16180)和工作进程(PID: 16183) kill -9 16180 16183 验证是否停止成功: bash ps aux | grep gunicorn 如果只显示 grep --color=auto gunicorn 这一行,说明所有旧进程已终止。 第二步:重新启动指定端口的 Gunicorn 服务 根据你的需求(使用 8888 端口),重新在项目目录启动服务: bash # 1. 切换到项目目录 cd /var/www/lottery_app # 2. 激活虚拟环境(确保命令行前有 (venv)) source venv/bin/activate # 3. 启动 Gunicorn 并绑定 8888 端口(推荐后台运行,不占用终端) nohup gunicorn --bind 0.0.0.0:8888 app:app > gunicorn.log 2>&1 & 第三步:确认新服务是否正常运行 查看进程: bash ps aux | grep gunicorn 应显示新的 8888 端口服务进程(主进程 + 工作进程)。 测试端口响应: bash curl -I http://127.0.0.1:8888 若返回 HTTP/1.1 200 OK 或其他状态码,说明服务完全正常。 为什么推荐后台运行(nohup)? 前台启动(直接 gunicorn ...)会占用终端,关闭终端或按 Ctrl+C 会导致服务停止; 后台启动(nohup ... &)会让服务在后台持续运行,日志输出到 gunicorn.log,方便后续排查问题。 若需停止新服务 后续若需重启 / 停止,只需终止新的主进程: bash # 找到新的主进程 PID ps aux | grep "gunicorn --bind 0.0.0.0:8888" # 终止进程(替换为新的 PID) kill -9 新主进程PID 现在你的环境已清理干净,新的 Gunicorn 服务会在 8888 端口稳定运行,且不会占用终端。 ---------------------------------------------------- 终止主进程,停止服务。 1.检查所有 Gunicorn 的进程 ps aux | grep gunicorn 2.使用 kill -9 命令终止主进程(替换为你找到的 PID) # 替换为实际的主进程 PID(如 27738) kill -9 27738 ---------------------------------------------------------------------- 启动新的 Gunicorn 进程: 若使用 8888 端口(确保已释放): bash # 后台启动,日志输出到 gunicorn.log nohup gunicorn --bind 0.0.0.0:8888 app:app > gunicorn.log 2>&1 & 你可以通过以下命令进一步确认服务是否正常: 查看日志文件:tail -f gunicorn.log 检查 8888 端口是否被监听:netstat -tuln | grep 8888 或 ss -tuln | grep 8888 如果需要停止这些进程,可以使用: kill -9 主进程 工作进程 ----------------------------------------------------------------------------------- # 一次性杀死所有 gunicorn 相关进程 pkill gunicorn # 或者更精确地杀死特定应用的 gunicorn 进程 pkill -f "/var/www/lottery_app/venv/bin/gunicorn"