每次开一台新 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

这篇会随着我踩到的坑持续更新。