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)
发表回复/Leave a Reply