使用systemd




systemd 是一个 Linux 系统基础组件的集合,提供了一个系统和服务管理器,运行为 PID 1 并负责启动其它程序,现在已成为大多数发行版的标准配置。

历史上,Linux 的启动一直采用init用于管理进程和服务。这种方法有两个缺点:一是启动时间长。init进程是串行启动,只有前一个进程启动完,才会启动下一个进程;二是启动脚本复杂。init进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长。因此Systemd应运而生,Systemd 取代了initd,成为系统的第一个进程(PID 等于 1),为系统的启动和管理提供一套完整的解决方案。

根据 Linux 惯例,字母d是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是它要守护整个系统。

创建配置文件

/etc/systemd/system创建一个以.service结尾的文件。

例如servicename.service

[Unit]
Description=systemd sample

[Service]
ExecStart=[启动命令(可执行文件应为绝对路径)]
Restart=always
User=[用户名]
Group=[组名]
Environment=PATH=/usr/bin:/usr/local/bin
Environment=[环境变量(例如NODE_ENV=production)]
WorkingDirectory=[工作目录]

[Install]
WantedBy=multi-user.target

字段含义

Service区块

  • ExecStart:启动命令
  • Restart:如何重启。always表示如果进程退出,总是重启
  • Environment:环境变量
  • WorkingDirectory:工作目录

Install区块

  • WantedBy字段:设为开机启动时,该服务所在的 Target 是multi-user.target。

常用命令

重载配置文件
sudo systemctl daemon-reload
启动服务
sudo systemctl start servicename
查看状态
sudo systemctl status servicename
查看日志
sudo journalctl -u servicename
重启服务
sudo systemctl restart servicename
停止服务
sudo systemctl stop servicename

设置服务为开机启动

sudo systemctl enable servicename

参考资料

https://github.com/fatedier/frp/issues/176

http://www.ruanyifeng.com/blog/2016/03/systemd-tutorial-commands.html

https://wiki.archlinux.org/index.php/systemd_(%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87)




Posted

in

by

Comments

发表回复/Leave a Reply

您的电子邮箱地址不会被公开。/Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.