这篇就是给自己查命令用的。
Linux 命令太多,不可能全背。平时能记住常用的,剩下的需要时能快速翻到就行。

目录
- 常用命令简表
- 文件和目录
- 查看文件
- 文本处理
- 查找文件
- 权限和用户
- 进程和服务
- 网络相关
- 软件包管理
- 磁盘和挂载
- 压缩和解压
- 日志和排错
- Shell 小东西
- 几个常用一行命令
常用命令简表
| 要干嘛 |
常用命令 |
| 看目录 |
ls, tree |
| 切目录 |
cd, pwd |
| 复制移动删除 |
cp, mv, rm |
| 看文件 |
cat, less, head, tail |
| 搜文本 |
grep, rg |
| 处理文本 |
awk, sed, cut, sort, uniq |
| 找文件 |
find, locate, which |
| 改权限 |
chmod, chown |
| 看进程 |
ps, top, htop, kill |
| 看网络 |
ip, ss, curl, ping, ssh |
| 打包压缩 |
tar, zip, gzip |
文件和目录
ls
看目录:
常用参数:
-l:详细列表
-a:显示隐藏文件
-h:文件大小更好看,比如 1.2G
cd 和 pwd
1 2 3 4
| pwd cd /var/www cd ~ cd -
|
cd - 可以回到上一个目录,挺常用。
cp
1 2 3
| cp a.txt b.txt cp -r src/ backup/ cp -a src/ backup/
|
-a 会尽量保留权限、时间等信息,备份目录时比 -r 更稳一点。
mv
1 2
| mv old.txt new.txt mv file.txt /tmp/
|
既能移动,也能改名。
rm
1 2 3
| rm file.txt rm -r folder/ rm -rf folder/
|
rm -rf 别手滑。尤其是带变量的时候,先 echo 一下路径,不然删错真没得后悔。
mkdir
1 2
| mkdir logs mkdir -p app/data/cache
|
-p 会自动创建中间目录。
查看文件
cat
小文件直接看。大文件别用它硬刷屏。
less
常用操作:
head 和 tail
1 2 3
| head -n 20 app.log tail -n 50 app.log tail -f app.log
|
看日志一般用 tail -f。
nl
带行号显示文件。排查配置时有用。
文本处理
grep
1 2 3 4
| grep "ERROR" app.log grep -n "ERROR" app.log grep -R "listen" /etc/nginx grep -i "error" app.log
|
常用参数:
-n:显示行号
-R:递归搜索目录
-i:忽略大小写
如果系统里有 rg,我一般会优先用 rg,快很多:
1 2
| rg "ERROR" rg "listen" /etc/nginx
|
sed
1 2
| sed -n '1,20p' file.txt sed 's/old/new/g' file.txt
|
常用来替换文本或者只看某几行。
awk
1 2
| awk '{print $1}' access.log awk '{print $1, $9}' access.log
|
按列处理文本。日志分析经常用。
cut
1 2
| cut -d':' -f1 /etc/passwd cut -d',' -f1,3 data.csv
|
简单分列就用它,不用上来就写一堆脚本。
sort 和 uniq
1 2 3 4
| sort file.txt sort -n numbers.txt sort file.txt | uniq sort file.txt | uniq -c
|
统计重复项时很顺手。
wc
1 2
| wc -l file.txt wc -c file.txt
|
数行数、字节数。
查找文件
find
1 2 3
| find . -name "*.log" find /var/log -type f -mtime -7 find . -type f -size +100M
|
几个常用条件:
-name:按名字
-type f:只找文件
-type d:只找目录
-mtime -7:7 天内改过
-size +100M:大于 100M
which
1 2
| which nginx which python
|
看命令到底从哪来的。
locate
快,但是依赖索引。刚创建的文件可能搜不到。
权限和用户
chmod
1 2 3
| chmod 644 file.txt chmod 755 script.sh chmod +x script.sh
|
常见权限:
644:普通文件
755:可执行脚本或目录
600:私钥这类敏感文件
chown
1 2
| sudo chown user:group file.txt sudo chown -R www-data:www-data /var/www/app
|
网站目录权限不对时经常要看这个。
用户相关
1 2 3 4 5
| whoami id passwd sudo useradd name sudo usermod -aG sudo name
|
进程和服务
看进程
1 2 3 4
| ps aux ps aux | grep nginx top htop
|
有 htop 就用 htop,看着舒服点。
杀进程
1 2 3
| kill 1234 kill -9 1234 pkill -f nginx
|
kill -9 是强杀,不是万能修复按钮。先正常 kill,不行再用。
systemd 服务
1 2 3 4
| sudo systemctl status nginx sudo systemctl start nginx sudo systemctl restart nginx sudo systemctl enable nginx
|
看服务日志:
1 2
| journalctl -u nginx -f journalctl -u nginx --since "1 hour ago"
|
网络相关
IP 和端口
1 2 3 4
| ip addr ip route ss -tuln ss -tulnp
|
ss -tulnp 能看哪个进程占了哪个端口。
连通性
1 2 3
| ping 1.1.1.1 curl -I https://example.com curl http://127.0.0.1:3000
|
测 HTTP 服务别只会 ping。ping 通不代表网站活着。
SSH
1 2 3
| ssh root@1.2.3.4 ssh -p 2222 user@1.2.3.4 scp file.txt user@1.2.3.4:/tmp/
|
rsync
1 2
| rsync -avz ./dist/ user@server:/var/www/app/ rsync -avz --delete ./dist/ user@server:/var/www/app/
|
--delete 会删除目标端多出来的文件,用之前先想清楚。
软件包管理
Debian / Ubuntu:
1 2 3
| sudo apt update sudo apt install nginx sudo apt upgrade
|
CentOS / RHEL:
1 2
| sudo yum install nginx sudo dnf install nginx
|
Arch:
openSUSE:
1
| sudo zypper install nginx
|
不同发行版命令不一样。别复制错系统了。
磁盘和挂载
看磁盘
1 2 3
| df -h du -sh * du -sh /var/log
|
找大目录:
1
| du -h --max-depth=1 / | sort -h
|
块设备
1 2 3
| lsblk blkid sudo fdisk -l
|
挂载
1 2
| sudo mount /dev/sdb1 /mnt sudo umount /mnt
|
压缩和解压
tar
1 2 3
| tar -czvf archive.tar.gz folder/ tar -xzvf archive.tar.gz tar -tzf archive.tar.gz
|
zip
1 2
| zip -r archive.zip folder/ unzip archive.zip
|
gzip
1 2
| gzip file.txt gunzip file.txt.gz
|
日志和排错
1 2 3 4 5
| dmesg journalctl -xe journalctl -u service-name -f tail -f /var/log/syslog tail -f /var/log/nginx/error.log
|
端口被占用:
1 2
| sudo lsof -i :80 sudo ss -tulnp | grep :80
|
配置改完不生效,先看服务有没有重启,再看日志。很多问题不是配置没写,是服务根本没加载。
Shell 小东西
环境变量
1 2 3 4
| env printenv export NODE_ENV=production echo $PATH
|
alias
1 2
| alias ll='ls -lah' alias gs='git status'
|
写进 ~/.bashrc 或 ~/.zshrc 才会长期生效。
执行脚本
1 2
| chmod +x script.sh ./script.sh
|
定时任务
几个常用一行命令
找大文件:
1
| find / -type f -size +500M 2>/dev/null
|
查日志里的错误:
1
| grep -R --line-number "ERROR" /var/log 2>/dev/null
|
看当前目录每个文件夹大小:
1
| du -h --max-depth=1 . | sort -h
|
同步网站构建产物:
1
| rsync -avz --delete ./dist/ user@server:/var/www/site/
|
看某个服务最近日志:
1
| journalctl -u nginx --since "2 hours ago" -f
|
找占用端口的进程:
1
| sudo ss -tulnp | grep :3000
|
批量删 .tmp 文件:
1
| find . -type f -name "*.tmp" -delete
|
这个命令执行前最好先把 -delete 去掉看一眼结果:
1
| find . -type f -name "*.tmp"
|
别上来就删,删错挺麻烦。