每次开一台新 VPS,我都会按同一个顺序过一遍:先看看这台机器什么底子,再理顺用户和权限,最后才开始装东西。这篇就是那份清单,也是我自己的命令备忘录,后面会一直往里加。
一、先看看这台机器什么底子
一条命令看全部
Ubuntu 上登录时显示的那一大段摘要,其实可以随时手动调出来:
landscape-sysinfo
输出包括系统负载、根分区占用、内存占用、交换分区、进程数、内网 IP,和登录时看到的一模一样。
如果提示命令不存在,装一下
sudo apt install landscape-common。非 Ubuntu 系统没有这个命令,用下面的分项命令代替。
分项快速查看
只想看某一项的时候,这几条更快:
free -h
看 available 那一列,不要只看 free。 Linux 会把空闲内存拿去做缓存,free 显示的是完全没被碰过的部分,数字往往小得吓人;available 才是系统真正还能分配给程序用的量。
df -h
磁盘占用。要找出到底是谁把盘吃满了,接着用:
sudo du -h --max-depth=1 / | sort -hr | head -20
uptime
系统整体负载。后面三个数字分别是 1 / 5 / 15 分钟的平均负载,和 CPU 核心数比较着看才有意义——4 核机器负载 4 才算跑满。核心数用 nproc 查。
看有哪些服务在跑
systemctl list-units --type=service --state=running
新机器上这条命令能让你知道系统预装了什么在后台跑,顺手关掉不需要的可以省点内存。
只看失败的服务:
systemctl --failed
二、用户与权限
让 sudo 免密
如果你想保留自己的普通用户身份、敲命令时依然带 sudo,但不想每次都输密码,可以改 sudoers。
必须用专门的安全编辑命令打开配置,它会在保存前做语法检查:
sudo visudo
在文件末尾找到类似 %sudo ALL=(ALL:ALL) ALL 的行,在它下方添加一行(把 vinkey 换成你自己的用户名):
vinkey ALL=(ALL) NOPASSWD: ALL
保存并退出。默认的 nano 编辑器是 Ctrl+O 回车保存、Ctrl+X 退出。之后执行 sudo apt update 之类的命令就不会再弹密码提示了。
⚠️ 这一步是拿安全换方便,想清楚再做。一旦免密,任何拿到你这个用户 shell 的人(比如 SSH 私钥泄露、某个服务被打穿)就直接等于拿到 root。一定不要在这台机器上同时开着 SSH 密码登录。
折中方案是只给特定命令免密,风险小得多:
vinkey ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart frpc@*, /usr/bin/docker
顺带一提,改完千万别关掉当前这个 SSH 会话,另开一个窗口验证能正常 sudo 再关,不然配错了就只能去控制台救援了。
把文件的归属改给自己
配置文件默认属于 root,每次编辑都要 sudo 很烦。直接改归属:
sudo chown $USER:$USER /etc/xray/config.json
递归改一整个目录:
sudo chown -R $USER:$USER /usr/local/frp
三、生成密码
需要一串随机密码(数据库、面板、frp token 之类):
openssl rand -base64 24
需要的是能直接写进 /etc/shadow 的哈希(SHA-512):
openssl passwd -6
回车后交互式输入两遍,避免明文留在 shell 历史里。
顺手生成 UUID:
cat /proc/sys/kernel/random/uuid
四、常用命令备忘
这部分是我平时随手往里塞的,会持续补充。
查端口占用
sudo ss -tulnp
sudo ss -tulnp | grep :8080
ss 是 netstat 的替代品,新系统默认就有。
找大文件
sudo find / -xdev -type f -size +500M -exec ls -lh {} \; 2>/dev/null
看日志
journalctl -u nginx -f
journalctl -p err -b # 本次开机以来的所有错误
journalctl --disk-usage # 日志占了多少盘
sudo journalctl --vacuum-time=7d # 只保留最近 7 天
最后这条在磁盘告急时很救命,systemd 日志不清理是会一直长的。
定时任务
crontab -l
crontab -e
这篇会随着我踩到的坑持续更新。