【运维】Linux 服务器实战(4):systemd 服务与 journal 日志
Linux 服务器实战 · 第 4 篇
服务起不来、要看日志——Ubuntu 22.04/24.04 默认 systemd + journald。
1. systemctl 必备
sudo systemctl status nginx --no-pager
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl reload nginx # 重载配置,适合 nginx
sudo systemctl enable nginx # 开机自启
sudo systemctl disable nginx
sudo systemctl is-enabled nginx
查看 unit 文件:
systemctl cat nginx
systemctl list-units --type=service --state=running
2. journalctl 看日志
配合第 1 篇别名 logsvc:
# 实时滚动
sudo journalctl -u nginx -f
# 最近 2 小时
sudo journalctl -u nginx --since "2 hours ago"
# 本次启动以来
sudo journalctl -u nginx -b
# 优先级:错误及以上
sudo journalctl -u nginx -p err..alert --since today
# 不分页一次 dump
sudo journalctl -u nginx --no-pager -n 100
多服务同时看:
sudo journalctl -u nginx -u gunicorn -f
3. journal 占满磁盘
journalctl --disk-usage
sudo journalctl --vacuum-time=7d
sudo journalctl --vacuum-size=500M
持久化限制(可选):
sudo mkdir -p /etc/systemd/journald.conf.d
sudo tee /etc/systemd/journald.conf.d/size.conf << 'EOF'
[Journal]
SystemMaxUse=500M
EOF
sudo systemctl restart systemd-journald
4. 最小自定义 service 示例
/etc/systemd/system/myapp.service:
[Unit]
Description=My Python App
After=network.target
[Service]
User=deploy
WorkingDirectory=/var/www/myapp
ExecStart=/var/www/myapp/venv/bin/gunicorn -b 127.0.0.1:8000 wsgi:application
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
启用:
sudo systemctl daemon-reload
sudo systemctl enable --now myapp
sudo journalctl -u myapp -f
5. 经典 service 命令
MySQL 等仍可用:
sudo systemctl status mysql
sudo systemctl restart mysql
service mysql restart 在 systemd 下多为兼容别名。
6. 应用日志 vs journal
| 来源 | 路径/命令 |
|---|---|
| systemd 服务 | journalctl -u xxx |
| nginx | /var/log/nginx/error.log |
| 通用系统 | /var/log/syslog |
| 内核 | dmesg -T |
本篇速查
sudo systemctl status SERVICE --no-pager
sudo journalctl -u SERVICE -f
sudo journalctl --disk-usage && sudo journalctl --vacuum-time=7d
系列导航
| 篇 | 链接 |
|---|---|
| 1–3 | /forum/13/ /forum/14/ 磁盘见上篇 |
| 4 | systemd/journal(本文) |
| 5–8 | 网络 / 监控 / 诊断 / Cron |