Linux 常用命令速查
本文按日常 Linux 使用场景整理常见命令。示例中的 <file>、<directory>、<user>、<pid> 等内容需要替换为实际的文件名、目录、用户名或进程号。
部分命令需要管理员权限,可以在命令前添加 sudo。执行删除文件、修改权限、终止进程、磁盘分区等操作前,应先确认操作对象是否正确。
Linux 常用目录
| 目录 | 说明 |
|---|---|
/ | 根目录 |
/home | 普通用户家目录 |
/root | root 用户家目录 |
/etc | 系统和软件配置文件 |
/var | 日志、缓存等经常变化的数据 |
/var/log | 系统和服务日志 |
/usr | 用户程序和共享资源 |
/usr/bin | 常用命令 |
/usr/local | 本地安装的软件 |
/opt | 第三方软件 |
/tmp | 临时文件 |
/dev | 设备文件 |
/proc | 进程和内核运行信息 |
/sys | 内核和硬件设备信息 |
/mnt | 临时挂载目录 |
/media | U 盘、光盘等可移动设备挂载目录 |
查看当前环境
查看当前用户名
whoami查看当前所在目录
pwd查看当前登录用户
who查看更加详细的登录信息
w查看主机名
hostname查看系统运行时间和负载
uptime查看 Linux 内核版本
uname -r查看完整系统信息
uname -a查看发行版信息
cat /etc/os-release查看系统时间
date浏览目录
查看当前目录内容
ls以详细格式查看
ls -l显示隐藏文件
ls -a显示隐藏文件,并以易读方式显示文件大小
ls -lah按修改时间排序
ls -lt按文件大小排序
ls -lhS切换目录
进入指定目录
cd <directory>返回上一级目录
cd ..返回用户家目录
cd ~也可以直接使用:
cd返回上一次所在目录
cd -进入根目录
cd /创建文件和目录
创建空文件
touch <file>同时创建多个文件
touch file1.txt file2.txt file3.txt创建目录
mkdir <directory>递归创建多级目录
mkdir -p path/to/directory同时创建多个目录
mkdir dir1 dir2 dir3复制文件和目录
复制文件
cp <source> <destination>复制文件并重新命名
cp source.txt backup.txt递归复制目录
cp -r <source-directory> <destination-directory>保留权限、时间戳等属性复制
cp -a <source> <destination>覆盖文件前进行提示
cp -i <source> <destination>移动和重命名文件
移动文件
mv <source> <destination>重命名文件
mv old-name.txt new-name.txt移动目录
mv <directory> <destination>覆盖目标文件前提示
mv -i <source> <destination>删除文件和目录
删除文件
rm <file>删除多个文件
rm file1.txt file2.txt删除空目录
rmdir <directory>递归删除目录及其内容
rm -r <directory>删除前进行确认
rm -ri <directory>危险操作:`rm -rf`
rm -rf 会递归并强制删除目标目录,不会进入回收站,也不会逐个询问。
例如:
rm -rf <directory>使用变量或通配符时尤其需要谨慎。执行前可以先通过 ls 检查匹配结果:
ls <target>确认无误后再执行删除操作。
查看文件内容
输出整个文件
cat <file>显示行号
cat -n <file>分页查看长文件
less <file>在 less 中:
↑ / ↓ 上下移动
Space 下一页
b 上一页
/keyword 搜索
n 下一个匹配
q 退出查看文件前 10 行
head <file>查看文件前 20 行
head -n 20 <file>查看文件最后 10 行
tail <file>查看文件最后 50 行
tail -n 50 <file>实时查看文件新增内容
tail -f <file>常用于查看日志:
tail -f /var/log/syslog编辑文件
使用 Nano 编辑文件
nano <file>常见快捷键:
Ctrl + O 保存
Ctrl + X 退出
Ctrl + W 搜索使用 Vim 编辑文件
vim <file>常用操作:
i 进入插入模式
Esc 返回普通模式
:w 保存
:q 退出
:wq 保存并退出
:q! 放弃修改并退出
/word 搜索
dd 删除当前行
yy 复制当前行
p 粘贴
u 撤销文件查找
按文件名查找
find <directory> -name "<filename>"例如:
find /etc -name "nginx.conf"忽略大小写查找
find <directory> -iname "<filename>"查找指定扩展名文件
find . -name "*.log"查找目录
find . -type d -name "<directory-name>"查找文件
find . -type f -name "<filename>"查找最近 1 天修改过的文件
find . -type f -mtime -1查找大于 100 MB 的文件
find . -type f -size +100M查找命令位置
which <command>例如:
which python3查找命令、源码和手册位置
whereis <command>搜索文本
在文件中搜索字符串
grep "<keyword>" <file>忽略大小写
grep -i "<keyword>" <file>显示匹配行号
grep -n "<keyword>" <file>递归搜索目录
grep -r "<keyword>" <directory>递归搜索并显示行号
grep -rn "<keyword>" <directory>排除匹配内容
grep -v "<keyword>" <file>使用扩展正则表达式
grep -E "<pattern>" <file>搜索正在运行的进程
ps aux | grep <process-name>使用 grep 搜索进程时,结果中通常还会出现 grep 命令自身。可以使用 pgrep 简化进程查找。
文件压缩与解压
创建 tar 归档
tar -cvf archive.tar <directory>解压 tar 归档
tar -xvf archive.tar创建 gzip 压缩包
tar -czvf archive.tar.gz <directory>解压 tar.gz
tar -xzvf archive.tar.gz创建 xz 压缩包
tar -cJvf archive.tar.xz <directory>解压 tar.xz
tar -xJvf archive.tar.xz查看压缩包内容但不解压
tar -tvf archive.tar.gz解压到指定目录
tar -xzvf archive.tar.gz -C <directory>创建 ZIP 压缩包
zip -r archive.zip <directory>解压 ZIP
unzip archive.zip解压 ZIP 到指定目录
unzip archive.zip -d <directory>文件权限
Linux 文件权限分为:
r = read 读取
w = write 写入
x = execute 执行权限对象分为:
u = user 文件所有者
g = group 所属用户组
o = others 其他用户
a = all 所有用户查看文件权限
ls -l <file>例如:
-rwxr-xr-- 1 qzh qzh 1024 Sep 2 12:00 script.sh其中:
rwx 所有者权限
r-x 用户组权限
r-- 其他用户权限为所有者增加执行权限
chmod u+x <file>移除其他用户的写权限
chmod o-w <file>为所有用户添加执行权限
chmod a+x <file>使用数字设置权限
chmod 755 <file>数字权限对应关系:
| 数字 | 权限 |
|---|---|
0 | --- |
1 | --x |
2 | -w- |
3 | -wx |
4 | r-- |
5 | r-x |
6 | rw- |
7 | rwx |
常见权限:
chmod 644 <file>
chmod 755 <file>
chmod 600 <file>其中:
644 普通文本文件常见权限
755 可执行程序或目录常见权限
600 私钥等敏感文件常见权限递归修改目录权限
chmod -R 755 <directory>修改文件所有者
修改文件所有者
sudo chown <user> <file>同时修改所有者和用户组
sudo chown <user>:<group> <file>递归修改目录所有者
sudo chown -R <user>:<group> <directory>修改文件所属用户组
sudo chgrp <group> <file>用户管理
查看当前用户 UID 和用户组
id查看指定用户信息
id <user>创建用户
sudo adduser <user>删除用户
sudo deluser <user>删除用户及其家目录
sudo deluser --remove-home <user>修改当前用户密码
passwd修改指定用户密码
sudo passwd <user>切换用户
su - <user>切换到 root 用户
sudo -i使用 root 权限执行单条命令
sudo <command>用户组管理
查看当前用户所属用户组
groups查看指定用户所属用户组
groups <user>创建用户组
sudo groupadd <group>将用户加入用户组
sudo usermod -aG <group> <user>例如将用户加入 docker 用户组:
sudo usermod -aG docker <user>使用 usermod -aG 修改用户组后,通常需要重新登录才能完全生效。
从用户组中删除用户
sudo gpasswd -d <user> <group>进程管理
查看当前终端进程
ps查看系统所有进程
ps aux以树形结构查看进程
ps auxf动态查看系统进程
top如果安装了 htop:
htop根据进程名称查找 PID
pgrep <process-name>同时显示进程名称和 PID
pgrep -a <process-name>终止指定进程
kill <pid>强制终止指定进程
kill -9 <pid>根据名称终止进程
pkill <process-name>根据名称强制终止进程
pkill -9 <process-name>kill -9 会直接发送 SIGKILL,进程没有机会执行清理工作。通常应先尝试普通 kill <pid>,只有进程无法正常退出时再考虑使用 kill -9。
后台运行任务
将命令放入后台运行
<command> &查看当前 Shell 的后台任务
jobs将后台任务切换到前台
fg %1将暂停的任务继续放到后台运行
bg %1让程序退出终端后继续运行
nohup <command> &例如:
nohup python3 app.py > app.log 2>&1 &查看后台程序 PID
echo $!systemd 服务管理
现代 Ubuntu、Debian、Rocky Linux、CentOS 等发行版通常使用 systemd 管理系统服务。
查看服务状态
systemctl status <service>例如:
systemctl status ssh启动服务
sudo systemctl start <service>停止服务
sudo systemctl stop <service>重启服务
sudo systemctl restart <service>重新加载服务配置
sudo systemctl reload <service>设置服务开机启动
sudo systemctl enable <service>立即启动并设置开机启动
sudo systemctl enable --now <service>取消开机启动
sudo systemctl disable <service>查看服务是否开机启动
systemctl is-enabled <service>查看服务是否正在运行
systemctl is-active <service>查看失败的服务
systemctl --failed查看 systemd 日志
查看系统日志
journalctl查看指定服务日志
journalctl -u <service>实时查看服务日志
journalctl -u <service> -f查看最近 100 行日志
journalctl -u <service> -n 100查看本次启动以来的日志
journalctl -b查看上一次启动的日志
journalctl -b -1查看最近一小时日志
journalctl --since "1 hour ago"查看 CPU 和内存
查看 CPU 信息
lscpu查看 CPU 核心数量
nproc查看内存使用情况
free -h实时观察内存变化
watch -n 1 free -h查看系统负载
uptime也可以使用:
cat /proc/loadavg查看磁盘空间
查看文件系统磁盘使用情况
df -h同时显示文件系统类型
df -Th查看指定目录所在文件系统空间
df -h <directory>查看当前目录大小
du -sh .查看指定目录大小
du -sh <directory>查看当前目录下各文件和目录大小
du -sh *按大小排序
du -sh * | sort -h查看当前目录中最大的 20 个项目
du -ah . | sort -rh | head -n 20查看磁盘和分区
查看块设备
lsblk显示文件系统类型和 UUID
lsblk -f查看磁盘分区信息
sudo fdisk -l查看文件系统 UUID
sudo blkid查看当前挂载情况
findmnt挂载文件系统
创建挂载目录
sudo mkdir -p /mnt/data挂载分区
sudo mount <device> /mnt/data例如:
sudo mount /dev/sdb1 /mnt/data卸载文件系统
sudo umount /mnt/data也可以通过设备卸载:
sudo umount /dev/sdb1查看永久挂载配置
cat /etc/fstab修改 /etc/fstab 前建议先备份:
sudo cp /etc/fstab /etc/fstab.bak修改完成后可以使用以下命令测试配置:
sudo mount -a如果命令没有报错,再考虑重启系统。
LVM 常用命令
查看物理卷
sudo pvs查看卷组
sudo vgs查看逻辑卷
sudo lvs查看详细逻辑卷信息
sudo lvdisplay将卷组中全部空闲空间分配给逻辑卷
sudo lvextend -l +100%FREE <logical-volume>例如:
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv扩容 ext4 文件系统
sudo resize2fs <logical-volume>扩容 XFS 文件系统
sudo xfs_growfs <mount-point>缩小逻辑卷和文件系统的风险明显高于扩容。执行 LVM 修改前,应先确认设备路径、文件系统类型和备份情况。
网络信息
查看网卡和 IP 地址
ip addr简写:
ip a只查看 IPv4 地址
ip -4 addr查看路由表
ip route简写:
ip r查看默认网关
ip route | grep default查看邻居和 ARP 信息
ip neigh查看 DNS 配置
cat /etc/resolv.conf在使用 systemd-resolved 的系统中也可以使用:
resolvectl status网络连通性测试
测试目标主机是否可达
ping <host>发送 4 个数据包后停止
ping -c 4 <host>查看访问目标主机经过的路由
traceroute <host>如果没有安装 traceroute,部分系统可以使用:
tracepath <host>查询域名解析
nslookup <domain>也可以使用:
dig <domain>查询指定记录
dig <domain> A
dig <domain> AAAA
dig <domain> MX查看端口
查看正在监听的 TCP 和 UDP 端口
ss -tuln同时显示对应进程
sudo ss -tulpn查看指定端口
sudo ss -tulpn | grep :<port>例如查看 8080 端口:
sudo ss -tulpn | grep :8080查看占用指定端口的进程
sudo lsof -i :<port>例如:
sudo lsof -i :8080HTTP 请求
获取网页内容
curl <url>只查看响应头
curl -I <url>跟随 HTTP 重定向
curl -L <url>下载文件并保留原文件名
curl -O <url>下载文件并指定文件名
curl -o <filename> <url>发送 GET 请求并显示详细信息
curl -v <url>发送 POST 请求
curl -X POST <url>发送 JSON 数据
curl -X POST \
-H "Content-Type: application/json" \
-d '{"name":"test"}' \
<url>使用 wget 下载文件
下载文件
wget <url>指定保存文件名
wget -O <filename> <url>断点续传
wget -c <url>后台下载
wget -b <url>SSH 远程登录
登录远程服务器
ssh <user>@<host>指定 SSH 端口
ssh -p <port> <user>@<host>指定私钥
ssh -i <private-key> <user>@<host>执行远程命令
ssh <user>@<host> "<command>"例如:
ssh qzh@192.168.1.10 "hostname"SSH 密钥
创建 Ed25519 密钥
ssh-keygen -t ed25519 -C "you@example.com"创建 RSA 密钥
ssh-keygen -t rsa -b 4096 -C "you@example.com"将公钥复制到远程服务器
ssh-copy-id <user>@<host>查看公钥
cat ~/.ssh/id_ed25519.pub测试 SSH 配置
ssh -v <user>@<host>SCP 文件传输
上传本地文件到远程服务器
scp <file> <user>@<host>:<remote-path>从远程服务器下载文件
scp <user>@<host>:<remote-file> <local-path>递归上传目录
scp -r <directory> <user>@<host>:<remote-path>指定 SSH 端口
scp -P <port> <file> <user>@<host>:<remote-path>ssh 使用小写 -p 指定端口,而 scp 使用大写 -P。
rsync 文件同步
同步目录
rsync -av <source>/ <destination>/显示同步进度
rsync -av --progress <source>/ <destination>/通过 SSH 同步到远程服务器
rsync -av <source>/ <user>@<host>:<destination>/从远程服务器同步到本地
rsync -av <user>@<host>:<source>/ <destination>/删除目标端多余文件,使两端完全一致
rsync -av --delete <source>/ <destination>/--delete 会删除目标目录中源目录不存在的文件。正式执行前可以添加 --dry-run 预览操作:
rsync -av --delete --dry-run <source>/ <destination>/APT 软件包管理
适用于 Ubuntu、Debian 等发行版。
更新软件包索引
sudo apt update升级已安装软件包
sudo apt upgrade安装软件
sudo apt install <package>删除软件但保留配置
sudo apt remove <package>删除软件及其配置
sudo apt purge <package>清理不再需要的依赖
sudo apt autoremove搜索软件包
apt search <keyword>查看软件包信息
apt show <package>查看已经安装的软件包
apt list --installedDNF 软件包管理
适用于 Fedora、Rocky Linux、AlmaLinux 等发行版。
更新软件包
sudo dnf upgrade安装软件
sudo dnf install <package>删除软件
sudo dnf remove <package>搜索软件包
dnf search <keyword>查看软件包信息
dnf info <package>环境变量
查看所有环境变量
env查看指定环境变量
echo $PATH临时设置环境变量
export NAME=value例如:
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64在 PATH 中增加目录
export PATH="$PATH:/opt/example/bin"查看当前 Shell
echo $SHELL重新加载 Bash 配置
source ~/.bashrc也可以写成:
. ~/.bashrcShell 重定向
将标准输出写入文件并覆盖原内容
<command> > output.txt将标准输出追加到文件
<command> >> output.txt将标准错误写入文件
<command> 2> error.log同时保存标准输出和标准错误
<command> > output.log 2>&1Bash 中也可以使用:
<command> &> output.log丢弃标准输出
<command> > /dev/null丢弃标准输出和错误输出
<command> > /dev/null 2>&1管道
管道 | 会将前一个命令的标准输出作为后一个命令的标准输入。
搜索命令输出
<command> | grep "<keyword>"分页查看命令输出
<command> | less统计输出行数
<command> | wc -l排序后去重
<command> | sort | uniq按数字排序
<command> | sort -n逆序排列
<command> | sort -r文本处理
统计文件行数
wc -l <file>统计单词数量
wc -w <file>统计字节数量
wc -c <file>排序文件内容
sort <file>去除相邻重复行
uniq <file>通常配合 sort 使用:
sort <file> | uniq统计重复行出现次数
sort <file> | uniq -c提取指定列
cut -d '<delimiter>' -f <field> <file>例如读取 /etc/passwd 中的用户名:
cut -d ':' -f 1 /etc/passwdawk 常用操作
输出第一列
awk '{print $1}' <file>输出第一列和第三列
awk '{print $1, $3}' <file>指定分隔符
awk -F ':' '{print $1}' /etc/passwd按条件过滤
awk '$3 > 100 {print $1, $3}' <file>sed 常用操作
将第一个匹配内容替换
sed 's/old/new/' <file>替换一行中所有匹配内容
sed 's/old/new/g' <file>直接修改文件
sed -i 's/old/new/g' <file>删除空行
sed '/^$/d' <file>sed -i 会直接修改原文件。重要文件建议先备份,或者先去掉 -i 查看替换结果。
命令历史
查看历史命令
history查看最近 20 条命令
history 20搜索历史命令
history | grep "<keyword>"执行上一条命令
!!执行指定编号的历史命令
!<number>清空当前 Shell 历史记录
history -c反向搜索历史命令
在终端中按:
Ctrl + R输入关键词即可搜索之前执行过的命令。
命令帮助
查看命令手册
man <command>例如:
man ls查看命令帮助
<command> --help例如:
ls --help查看 Shell 内置命令帮助
help <command>例如:
help cd查看命令类型
type <command>alias 命令别名
查看当前别名
alias临时创建别名
alias ll='ls -lah'删除别名
unalias ll永久添加别名
将别名写入:
~/.bashrc例如:
alias ll='ls -lah'
alias gs='git status'然后重新加载:
source ~/.bashrc定时任务 Cron
编辑当前用户的定时任务
crontab -e查看当前用户的定时任务
crontab -l删除当前用户所有 Cron 任务
crontab -rCron 基本格式:
分 时 日 月 周 命令
* * * * *
│ │ │ │ │
│ │ │ │ └── 星期:0-7,0 和 7 都表示星期日
│ │ │ └───── 月份:1-12
│ │ └──────── 日期:1-31
│ └─────────── 小时:0-23
└────────────── 分钟:0-59每天凌晨 2 点执行脚本
0 2 * * * /path/to/script.sh每 5 分钟执行一次
*/5 * * * * /path/to/script.sh每周一上午 8 点执行
0 8 * * 1 /path/to/script.sh查看最近登录记录
查看用户登录历史
last查看登录失败记录
sudo lastb查看用户最后登录时间
lastlog查看打开的文件
查看系统打开的文件
sudo lsof查看指定进程打开的文件
sudo lsof -p <pid>查看指定文件被哪些进程使用
sudo lsof <file>查看指定端口使用情况
sudo lsof -i :<port>查看硬件信息
查看 PCI 设备
lspci查看 USB 设备
lsusb查看块设备
lsblk查看内存硬件信息
sudo dmidecode --type memory查看 BIOS 信息
sudo dmidecode --type bios查看系统硬件概况
sudo lshw -short关机与重启
立即关机
sudo shutdown -h now也可以使用:
sudo poweroff立即重启
sudo reboot10 分钟后关机
sudo shutdown -h +10指定时间关机
sudo shutdown -h 23:30取消计划中的关机
sudo shutdown -c常用快捷键
| 快捷键 | 作用 |
|---|---|
Ctrl + C | 终止当前命令 |
Ctrl + Z | 暂停当前进程 |
Ctrl + D | 退出当前 Shell 或发送 EOF |
Ctrl + L | 清屏 |
Ctrl + A | 移动到行首 |
Ctrl + E | 移动到行尾 |
Ctrl + U | 删除光标前全部内容 |
Ctrl + K | 删除光标后全部内容 |
Ctrl + W | 删除光标前一个单词 |
Ctrl + R | 搜索历史命令 |
Tab | 自动补全 |
↑ / ↓ | 浏览历史命令 |
常用命令组合
查看磁盘空间
df -Th查看各目录占用空间并排序
du -sh * | sort -h查找大文件
find / -type f -size +1G 2>/dev/null查看内存占用最高的进程
ps aux --sort=-%mem | head查看 CPU 占用最高的进程
ps aux --sort=-%cpu | head查看指定端口是否被占用
sudo ss -tulpn | grep :<port>查看指定程序是否正在运行
pgrep -a <process-name>实时查看日志
tail -f <log-file>查看服务最近 100 行日志
journalctl -u <service> -n 100实时查看服务日志
journalctl -u <service> -f查找包含指定文本的文件
grep -rn "<keyword>" <directory>查看当前服务器 IP 地址
ip -br addr查看默认网关
ip route | grep default查看 CPU、内存和磁盘基本情况
lscpu
free -h
df -Th查看磁盘、分区和 LVM 状态
lsblk
sudo pvs
sudo vgs
sudo lvs
df -Th常见排障流程
当服务器上的服务无法正常访问时,可以按照以下顺序快速排查:
flowchart TD
A[服务无法访问] --> B[检查服务状态]
B --> C[检查服务日志]
C --> D[检查进程]
D --> E[检查监听端口]
E --> F[检查本机网络]
F --> G[检查远程连通性]
G --> H[检查磁盘和内存]
1. 检查服务状态
systemctl status <service>2. 查看服务日志
journalctl -u <service> -n 1003. 查看进程
pgrep -a <process-name>4. 查看监听端口
sudo ss -tulpn5. 检查本机 IP 和路由
ip addr
ip route6. 测试网络连通性
ping -c 4 <host>7. 检查系统资源
free -h
df -Th
uptime实际排障时,通常应先确认“服务是否运行”,再确认“端口是否监听”,最后检查防火墙、网络、DNS 和系统资源。这样比直接修改配置更容易定位问题。
喜欢的话,留下你的评论吧~