# -*- coding: utf-8 -*- r'''把上次查询里两个可疑点查清楚。 == 疑点一:证书目录为什么是空的 == 我明明给 yk.xxmxxs.top 签过 Let's Encrypt 证书。 但 `/etc/letsencrypt/live/` 列出来是空的 —— 多半是**权限**:那个目录是 0700 root,普通用户 ls 不到。 == 疑点二:3306 在监听,但没找到 mariadb/mysql == `ss` 显示 127.0.0.1:3306 有人在听,但 `command -v mariadb` 没找到。 可能是: * 装了但可执行文件叫别的名字 * 是别的东西占了 3306(比如某个容器) 得看是哪个进程在听。 == 疑点三:内存用量涨了 == 之前看是 414MB,现在 1037MB。得知道是谁吃的 —— WordPress + MySQL 还要再吃 300~500MB,这台只有 2GB,得先弄清余量。 == 顺带 == `grep -r /etc/nginx/sites-enabled/` 没输出 server_name, 是因为那里全是**指向 sites-available 的符号链接**, 而 `grep -r` **默认不跟符号链接**。不是配置丢了。 ''' from __future__ import annotations import sys from pathlib import Path ROOT = Path(__file__).resolve().parent.parent sys.path.insert(0, str(ROOT / "_build")) from lssh import run # noqa: E402 REMOTE = r''' echo "==== 1. 证书(带 sudo)====" sudo ls -1 /etc/letsencrypt/live/ 2>&1 | sed 's/^/ /' echo " --- yk.xxmxxs.top 的证书 ---" sudo openssl x509 -in /etc/letsencrypt/live/yk.xxmxxs.top/fullchain.pem \ -noout -subject -dates 2>&1 | sed 's/^/ /' echo echo "==== 2. nginx 站点(跟符号链接)====" sudo grep -h server_name /etc/nginx/sites-available/ykxmz 2>/dev/null | sed 's/^/ /' echo " sites-enabled:" sudo ls -la /etc/nginx/sites-enabled/ 2>&1 | tail -n +2 | sed 's/^/ /' echo echo "==== 3. 谁在听 3306 ====" sudo ss -tlnp 2>/dev/null | grep 3306 | sed 's/^/ /' echo echo "==== 4. 数据库到底装没装 ====" dpkg -l 2>/dev/null | grep -iE 'mariadb|mysql' | head -8 | sed 's/^/ /' echo " (上面没输出就是没装 —— 那 3306 是别的东西占的)" echo echo "==== 5. 内存被谁吃了 ====" ps -eo rss,comm --sort=-rss 2>/dev/null | head -10 | sed 's/^/ /' echo echo " --- systemd 服务占用 ---" systemd-cgtop -n 1 -b 2>/dev/null | head -8 | sed 's/^/ /' echo echo "==== 6. 有没有 swap ====" free -m | sed 's/^/ /' swapon --show 2>/dev/null | sed 's/^/ /' || echo " 没有 swap" ''' def main() -> int: print("=" * 58) print(" 查清三个疑点") print("=" * 58) print() out = run(REMOTE, timeout=240, quiet=True) print(out[1] if isinstance(out, tuple) else out) return 0 if __name__ == "__main__": sys.exit(main())