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/usrProgram 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 |
| 打开文件资源管理器逛文件夹 | ls、cd、tree,或直接进 mc |
| 打开任务管理器看进程 | htop(或 top) |
| 查看服务列表 | systemctl list-units --type=service |
| 事件查看器看日志 | journalctl -xe |
| 添加/删除程序 | apt install / apt remove |
| 磁盘管理 | lsblk、df -h、ncdu |
| 网络设置 | ip a、ss -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退出、k或F9杀进程、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>看打开的配置/日志/数据库文件"]

浙公网安备 33010602011771号