权限/文件系统/进程/网络/常用工具的“能上手”基础
| 目录 | 用途 | 例子 |
|---|---|---|
| /etc | 系统与服务配置 | nginx.conf、ssh_config |
| /var | 可变数据(日志/缓存/队列) | /var/log、/var/lib |
| /usr | 用户程序与库 | /usr/bin、/usr/lib |
| /tmp | 临时文件 | 重启可能被清理 |
| /home | 用户家目录 | /home/username |
r/w/x:读/写/执行权限;按 owner/group/others 三段划分。
7 = 4(r) + 2(w) + 1(x)
5 = 4(r) + 1(x)
4 = 4(r)
755 = owner:rwx, group:rx, others:rx
644 = owner:rw, group:r, others:r常见:脚本/二进制用 755;普通配置文件用 644。
# grep:找错误
grep "ERROR" app.log
# sed:把 code=500 提取出来
sed -E 's/.*code=([0-9]{3}).*/\1/' app.log
# awk:统计第三列总和
awk '{sum += $3} END {print sum}' data.txtps -ef | head
ps -p 12345 -o pid,ppid,cmd,%cpu,%mem
top -H -p 12345 # 查看某进程的线程load average 表示系统处于可运行/不可中断 IO 等待的任务数量。
load 高不一定是 CPU:可能是 IO wait 高、磁盘打满、NFS 卡住导致大量 D 状态进程。
uptime
vmstat 1 5
iostat -x 1 5 # 需要 sysstat# 管道:把前一个命令输出当成后一个输入
cat app.log | grep "ERROR" | head
# 重定向:
cmd > out.log # 覆盖写
cmd >> out.log # 追加写
cmd 2> err.log # 标准错误
cmd > out.log 2>&1 # stdout+stderr 合并# 推荐 ss
ss -lntp | grep 8080
# 或 lsof
lsof -i:8080
# 看连接概览
ss -secho $PATH
export MY_VAR=123 # 临时(当前 shell)
# 永久:写入 ~/.bashrc 或 ~/.zshrc
echo 'export MY_VAR=123' >> ~/.bashrc
source ~/.bashrclsof | grep deleted,找到进程重启或 truncate。df -h
lsof | grep deleted | headsystemctl status nginx
systemctl start nginx
systemctl stop nginx
systemctl restart nginx
systemctl enable nginx
journalctl -u nginx --since "10 min ago"ln file1 file1.hard
ln -s /var/log/nginx/access.log access.log.linkkill -15 12345
kill -9 12345ss -ant | grep TIME-WAIT | wc -l
ss -ant | awk '{print $1}' | sort | uniq -ctar -czf logs.tar.gz /var/log/nginx
tar -xzf logs.tar.gz
zip -r out.zip dir/
unzip out.zipless app.log
# /ERROR 搜索,n 下一个
tail -f app.log | grep "ERROR"