ubuntu bash命令对照表

类比windows操作习惯的ubuntu bash操作

控制面板 -> 系统/硬件信息命令

  • hostnamectl: 系统版本,内核,主机名,架构
  • lsb_release -a:发行版详细信息
  • uname -a:内核+架构
  • lscpu:cpu详情(型号,核心数,频率)
  • free -h:内存使用情况
  • df -h,lsblk:磁盘分区和挂载点
  • lspci:PCI设备(网卡,显卡等)
  • lsusb:USB设备
  • timedatectl:系统事件和时区设置
  • 系统页面相关插件:
    # 想要"一屏总览"的效果(有点像 Windows 系统信息页):
    sudo apt update
    sudo apt install neofetch      # 或者更活跃维护的 fastfetch: sudo apt install fastfetch
    neofetch
    

文件夹浏览 -> "文件资源管理器"

  • pwd:当前所在目录
  • ls -la:列出当前目录的所有文件,包含隐藏文件,带详细信息
  • cd /etc:进入某个目录
  • cd ~:回到家目录,/home/用户名
  • cd ..:返回上一级
  • 文件视图相关插件:
    # 想要"树状目录"视图(类似 Windows 资源管理器左侧的文件夹树)
    sudo apt install tree
    tree -L 2 /etc          # 只展开2层,不然会刷屏
    
    # 想要类似 DOS 时代的文件管理器体验:
    # 进去后:F5 复制、F6 移动、F8 删除、F3 查看文件内容、F10 退出。
    sudo apt install mc
    mc
    
    # 想知道"这个文件夹占了多少空间"(类似右键属性看大小)
    du -sh /var/log        # 看某个目录总大小
    sudo apt install ncdu
    ncdu /                 # 交互式磁盘占用分析,能一层层点进去看谁占空间最多,非常好用
    
  • cat 文件名:直接输出全部内容(适合小文件)
  • less 文件名:分页查看,按q退出,适合大文件/日志
  • nano 文件名:一种终端编辑器
  • vim 文件名:另一种老牌的终端编辑器
  • 常用位置速查表:
    路径 类比 Windows 命令示例
    /home/你的用户名 C:\Users\你 ls ~
    /etc 配置文件集合(类似注册表) ls /etc
    /var/log 事件查看器日志 ls /var/log
    /usr Program Files ls /usr/bin
    /opt 手动安装的第三方软件 ls /opt

任务管理器 -> 进程/资源监控

  • top: 按 q 退出,P 按 CPU 排序,M 按内存排序,k 输入 PID 杀进程
  • 相关优化插件:
    # 体验对标任务管理器
    # 方向键选中进程,F9 杀进程,F6 排序方式,鼠标(如果终端支持)也能点
    sudo apt install htop
    htop
    
    # CPU、内存、磁盘、网络、进程全在一个界面,颜色高亮预警,很像 Windows 资源监视器 + 任务管理器的合体
    sudo apt install glances
    glances
    
  • 只看进程列表(脚本/一次性查看常用)
    • ps aux:所有进程
    • ps aux | grep nginx:查找特定进程
    • kill 1234:按PID结束进程
    • killall 进程名:按名字结束

"服务"管理器 services.msc -> 服务管理

  • Ubuntu Server 上很多东西是以"系统服务"形式运行(比如 SSH、Nginx、数据库),管理方式:
    • systemctl list-units --type=service:列出所有正在运行的服务
    • systemctl status ssh:单独查看某个服务的状态
    • sudo systemctl restart ssh:重启某个服务
    • sudo systemctl stop ssh:停止某个服务
    • sudo systemctl enable ssh:把某个服务设置为开机自启
    • sudo systemctl disable ssh:取消某个服务的开机自启
  • 日志查看:
    • journalctl -xe:看最近的系统日志和报错
    • journalctl -u ssh:只看某个服务的日志
    • journalctl -f:实时滚动查看

"添加/删除程序" -> 软件管理

  • sudo apt update:刷新软件源列表
  • sudo apt upgrade:升级所有已安装软件
  • sudo apt install 软件名:安装软件
  • sudo apt remove 软件名:卸载软件
  • apt list --installed:查看已安装列表
  • apt search 关键词:搜索软件
  • apt show 软件名:查看软件详情
  • snap list:如果用了snap包,看已装的snap

磁盘管理

  • lsblk:查看所有磁盘和分区结构
  • sudo fdish -l:更详细的分区表信息
  • df -h:各个分区已用/剩余空间
  • mount | column -t:查看当前挂载情况
  • sudo blkid:查看分区的文件系统类型和uuid

"用户账户"设置 -> 用户和登录情况

  • whoami:我是谁
  • id:我的用户组和权限
  • cat /etc/passwd:系统里的所有用户列表
  • who:当前登录的用户
  • w:当前登录的用户 + 在干嘛
  • last: 最近的登录历史

"网络设置" -> 网络配置

  • ip a:查看网卡和ip地址
  • ip route:查看路由表
  • ss -tulnp:查看哪些端口在监听,被哪个进程占用
  • ping baidu.com:测试联通性
  • curl ifconfig.me:查看公网出口IP

和windows对比的速查对照表

Windows 操作 Ubuntu Server 终端命令
打开控制面板看系统信息 hostnamectl / lscpu / free -h / fastfetch
打开文件资源管理器逛文件夹 lscdtree,或直接进 mc
打开任务管理器看进程 htop(或 top
查看服务列表 systemctl list-units --type=service
事件查看器看日志 journalctl -xe
添加/删除程序 apt install / apt remove
磁盘管理 lsblkdf -hncdu
网络设置 ip ass -tulnp
任务栏资源监视器 glances

Linux 进程调试相关知识总结

  • 基础概念:
概念 说明
进程(Process) 一个正在运行的程序实例,系统会给它分配唯一编号 PID(Process ID)
父进程/子进程 每个进程都有一个 PPID(父进程ID),进程之间是树状关系;init/systemd 的 PID 固定是 1,是所有进程的祖先
孤儿进程 父进程先于子进程退出,子进程会被 PID 1(init/systemd)"收养",表现为 PPID=1
前台/后台进程 前台进程占用终端、能直接看到输出并用 Ctrl+C 中断;后台进程脱离终端持续运行
僵尸进程(Zombie) 子进程已结束,但父进程还没"收尸"(读取其退出状态),会短暂残留在进程表里
/proc 虚拟文件系统 内核实时生成的"进程信息窗口",不占硬盘空间,进程退出即消失,体现Linux"一切皆文件"的哲学
  • 查看进程:静态列表 vs 实时监控:
ps aux                     # 列出当前所有进程(一次性快照)
ps aux | grep 关键词        # 过滤特定进程
ps -p PID -o pid,ppid,user,lstart,cmd   # 查看指定PID的详细信息

top                        # 实时监控,Linux自带,功能朴素
htop                       # 实时监控升级版,界面友好,支持鼠标/方向键,推荐装
glances                    # 更全面的资源仪表盘(CPU+内存+磁盘+网络+进程一屏全览)

常用 top/htop 内快捷键:q 退出、kF9 杀进程、P 按CPU排序、M 按内存排序。

  • /proc/<PID>/:每个进程自带的"透明档案袋":
文件/目录 类型 作用
cwd 符号链接 指向进程当前工作目录
exe 符号链接 指向进程对应的可执行文件本体
cmdline 虚拟文本(\0分隔,需 tr '\0' ' ' 转换可读) 启动时的完整命令+参数
environ 虚拟文本(同样\0分隔) 进程继承的环境变量
status 虚拟文本 内存占用、线程数、运行状态等摘要
fd/ 目录,内含多个符号链接 进程当前打开的所有文件描述符(lsof -p底层数据来源)
maps 虚拟文本 内存映射详情(加载了哪些动态库)
cat /proc/PID/cmdline | tr '\0' ' '; echo
ls -l /proc/PID/cwd
ls -l /proc/PID/exe
cat /proc/PID/status
ls -l /proc/PID/fd/
  • 进程 ↔ 网络端口的关联排查:
sudo ss -tulnp | grep LISTEN     # 看所有监听端口,及背后的进程名+PID
sudo ss -tulnp | grep :8000      # 只看某个端口(注意冒号前要留空格)
sudo lsof -p PID                 # 看这个进程打开了哪些文件/端口/socket
sudo lsof -i :8000                # 反过来,看谁占用了8000端口
  • 进程控制:结束/发信号:
kill PID              # 默认发送 SIGTERM(15),请求进程"体面退出"
kill -9 PID           # 发送 SIGKILL(9),强制立即终止,进程无法拒绝/清理
killall 进程名         # 按名字批量结束
pkill -f 关键词        # 按命令行内容模糊匹配结束

小知识:kill 不是"杀死"的意思,是"发信号",SIGTERM 是礼貌请求退出(进程可以捕获这个信号做清理工作再退出),SIGKILL 才是不由分说强制杀掉,无法被进程拦截。

  • 后台运行进程的三种方式(从简单到专业):
方式 命令 特点 适用场景
nohup nohup python app.py > app.log 2>&1 & 忽略挂断信号,退出终端进程不死,但重启服务器不会自启 临时跑一下
tmux/screen tmux new -s myapp → 里面直接跑程序 → Ctrl+B, D 分离 能随时断开重连、实时看输出,调试体验好 开发调试阶段
systemd服务 .service 文件 + systemctl enable/start 开机自启、崩溃自动重启、统一用 systemctl/journalctl 管理 正式生产部署

一个 .service 文件模板:

[Unit]
Description=My App
After=network.target

[Service]
ExecStart=/path/to/venv/bin/python /path/to/server.py
WorkingDirectory=/path/to/project
Restart=on-failure
User=youruser

[Install]
WantedBy=multi-user.target
  • systemd 服务管理常用命令:
systemctl list-units --type=service     # 列出所有服务
systemctl status 服务名                  # 看状态(含PID、启动时间、最近日志)
systemctl cat 服务名                     # 打印服务配置文件内容(ExecStart路径等)
ps -p PID -o unit=                       # 反查某个PID属于哪个systemd服务
sudo systemctl start/stop/restart 服务名
sudo systemctl enable/disable 服务名     # 开机自启开关
journalctl -u 服务名 -f                  # 实时看这个服务的日志
  • 完整的"排查一个正在跑的服务"流程:
flowchart TD A["ss -tulnp grep LISTEN<br>找端口到PID"] --> B["cat /proc/PID/cmdline<br>找启动命令和脚本路径"] B --> C["ls -l /proc/PID/cwd<br>找工作目录"] C --> D["ps -p PID -o unit=<br>判断是否systemd管理"] D -->|有unit| E["systemctl cat 服务名<br>看完整配置"] D -->|无unit,PPID为1| F["很可能是nohup或tmux启动后<br>父终端已退出"] B --> G["lsof -p PID<br>看打开的配置/日志/数据库文件"]
posted @ 2026-08-25 14:59  你要去码头整点薯条吗  阅读(24)  评论(0)    收藏  举报