กลับไปหน้าสูตร
#systemd#linux#service#cheatsheet
systemd Cheatsheet
รวมคำสั่ง systemd แบบจัดเต็ม: service lifecycle, unit files, journal logs, timers, startup behavior และ troubleshooting
11 มีนาคม 2569อ่านประมาณ 2 นาที
สารบัญสูตร
Service Lifecycle
| Command | ใช้ทำอะไร |
|---|---|
sudo systemctl start <service> | start service |
sudo systemctl stop <service> | stop service |
sudo systemctl restart <service> | restart service |
sudo systemctl reload <service> | reload config แบบไม่ restart |
sudo systemctl status <service> | ดูสถานะ |
sudo systemctl is-active <service> | เช็ก active/failed |
sudo systemctl is-enabled <service> | เช็ก enable at boot |
Enable / Disable at Boot
| Command | ใช้ทำอะไร |
|---|---|
sudo systemctl enable <service> | ให้รันตอนบูต |
sudo systemctl disable <service> | ยกเลิก auto start |
sudo systemctl reenable <service> | disable+enable ใหม่ |
sudo systemctl mask <service> | บล็อกไม่ให้ start ได้ |
sudo systemctl unmask <service> | ยกเลิก mask |
Journal Logs
| Command | ใช้ทำอะไร |
|---|---|
journalctl -u <service> | ดู logs service |
journalctl -u <service> -f | follow logs |
journalctl -u <service> --since "1 hour ago" | logs ย้อนหลังช่วงเวลา |
journalctl -xeu <service> | logs error แบบละเอียด |
journalctl --disk-usage | ดูพื้นที่ logs |
Unit Files
| Path | ความหมาย |
|---|---|
/etc/systemd/system | custom units ของผู้ใช้ระบบ |
/lib/systemd/system หรือ /usr/lib/systemd/system | units จากแพ็กเกจ |
Common Unit Commands
| Command | ใช้ทำอะไร |
|---|---|
systemctl list-units --type=service | ดู services ที่โหลดอยู่ |
systemctl list-unit-files --type=service | ดู unit files ทั้งหมด |
systemctl cat <service> | แสดง unit file ที่ใช้งานจริง |
systemctl show <service> | แสดง properties |
sudo systemctl daemon-reload | reload unit files หลังแก้ไฟล์ |
Example Service Unit
[Unit]
Description=My API Service
After=network.target
[Service]
Type=simple
User=deploy
WorkingDirectory=/opt/my-api
ExecStart=/usr/bin/node server.js
Restart=always
RestartSec=3
Environment=NODE_ENV=production
[Install]
WantedBy=multi-user.target
Timers (แทน cron)
| Command | ใช้ทำอะไร |
|---|---|
systemctl list-timers | ดู timers |
systemctl status <name>.timer | สถานะ timer |
systemctl start <name>.timer | start timer |
systemctl enable <name>.timer | enable timer ตอนบูต |
User Services
| Command | ใช้ทำอะไร |
|---|---|
systemctl --user status <service> | ดู user-level service |
systemctl --user start <service> | start user service |
systemctl --user enable <service> | enable user service |
Troubleshooting Playbook
| ปัญหา | วิธีเช็ก |
|---|---|
| service ไม่ขึ้น | systemctl status + journalctl -xeu |
| start แล้วดับทันที | ตรวจ ExecStart, permission, env vars |
| แก้ unit แล้วไม่เปลี่ยน | ลืม daemon-reload |
| เปิดเครื่องแล้วไม่รัน | เช็ก is-enabled และ [Install] |
| restart loop | เช็ก Restart= และ root cause logs |
Deployment Flow (Recommended)
| Step | Command |
|---|---|
| deploy code | rsync/scp ไฟล์ไป server |
| reload unit | sudo systemctl daemon-reload |
| restart app | sudo systemctl restart my-api |
| verify | sudo systemctl status my-api |
| follow logs | journalctl -u my-api -f |