文章列表
1 分钟阅读

systemctl 与 journalctl 入门:管理服务和查看日志


系列:Linux 命令基础

第 9 / 16 篇

  1. Tmux 入门教程:让 SSH 断线和多任务终端不再中断
  2. Tree 命令教程:快速查看和导出目录结构
  3. Linux 搜索命令教程:find、grep、locate、rg 应该怎么选
  4. Linux 压缩与解压命令教程:tar、zip、gzip、xz、zstd 一次讲清
  5. Linux 文本处理命令教程:cat、less、head、tail、wc、sort、uniq
  6. Linux 权限命令教程:chmod、chown、umask
  7. Linux 进程查看与管理:ps、top、htop、kill、jobs
  8. Linux 网络排查命令:ss、curl、dig、ping、traceroute
  9. systemctl 与 journalctl 入门:管理服务和查看日志
  10. rsync 使用指南:服务器文件同步与备份
  11. Linux 服务器安全基础:SSH、用户权限、防火墙和 fail2ban
  12. 线上问题排查流程:日志、端口、进程、磁盘、网络怎么一步步看
  13. 深入浅出:Linux 树状目录神器 tree 命令的安装与使用指南
  14. Linux 系统 Vim 编辑器终极指南:从入门到精通
  15. SSH 隧道实战:本地转发、远程转发和动态转发
  16. SSH Config 使用指南:别名、跳板机与多服务器管理

Linux 上长期运行的服务,通常交给 systemd 管。systemctl 管服务状态,journalctl 看日志。它们比手动开 tmux 挂服务可靠得多。

管理服务

Terminal window
sudo systemctl start nginx
sudo systemctl stop nginx
sudo systemctl restart nginx
sudo systemctl status nginx

开机自启:

Terminal window
sudo systemctl enable nginx
sudo systemctl disable nginx

修改 service 文件后:

Terminal window
sudo systemctl daemon-reload

看日志

Terminal window
journalctl -u nginx
journalctl -u nginx -f
journalctl -u nginx --since "1 hour ago"

-f 是实时跟随,排查启动失败很常用。

写一个服务

自己写 service 文件时,先保证命令在终端里能直接运行。systemd 不会自动读取你的 shell 配置,所以路径最好写绝对路径。

[Unit]
Description=My App
After=network.target
[Service]
WorkingDirectory=/srv/app
ExecStart=/srv/app/.venv/bin/python main.py
Restart=always
RestartSec=3
[Install]
WantedBy=multi-user.target

保存为 /etc/systemd/system/my-app.service 后:

Terminal window
sudo systemctl daemon-reload
sudo systemctl enable --now my-app

常见问题

服务启动失败先看:

Terminal window
systemctl status my-app
journalctl -u my-app -n 100

权限问题再结合 Linux 权限命令教程:chmod、chown、umask。端口问题结合 Linux 网络排查命令:ss、curl、dig、ping、traceroute

总结

systemd 适合管理长期服务,tmux 适合人工交互现场。部署 Web 服务时,systemctl 负责拉起进程,journalctl 负责告诉你为什么失败。更多细节参考 systemd 文档