- 创建服务配置文件/usr/lib/systemd/system/oracle.service,内容如下:
[Unit]
Description=blog Server
After=multi-user.target
[Service]
User=www
Group=www
Type=forking
PIDFile=/tmp/blog.pid
ExecStart=/usr/bin/python3.6 /www/wwwroot/blog/manage.py runserver
WorkingDirectory=/www/wwwroot/blog/
Restart=always
[Install]
WantedBy=multi-user.target
1、Unit部分 Unit部分是启动顺序与依赖关系。
[Unit]
Description=blog Server
After=multi-user.target
Description字段:给出当前服务的简单描述。
Documentation字段:给出文档位置。
After字段:表示本服务应该在某服务之后启动。
Before字段:表示本服务应该在某服务之前启动。
After和Before字段只涉及启动顺序,不涉及依赖关系。设置依赖关系,需要使用Wants字段和Requires字段。
Wants字段:表示本服务与某服务之间存在“依赖”系,如果被依赖的服务启动失败或停止运行,不影响本服务的继续运行。
Requires字段,表示本服务与某服务之间存在“强依赖”系,如果被依赖的服务启动失败或停止运行,本服务也必须退出。
- Service部分 Service部分定义如何启动/重启/停止服务。 1)启动类型(Type字段)
Type字段定义启动类型。它可以设置的值如下。
simple(默认值):ExecStart字段启动的进程为主进程。
forking:ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程。
oneshot:类似于simple,但只执行一次,Systemd会等它执行完,才启动其他服务。
dbus:类似于simple,但会等待D-Bus信号后启动。
notify:类似于simple,启动结束后会发出通知信号,然后Systemd再启动其他服务。
idle:类似于simple,但是要等到其他任务都执行完,才会启动该服务。
2)启动服务(ExecStart字段)
启动服务时执行的命令,可以是可执行程序、系统命令或shell脚本。
3)重启服务(ExecReload字段)
重启服务时执行的命令,可以是可执行程序、系统命令或shell脚本。
4)停止服务(ExecStop字段)
停止服务时执行的命令,可以是可执行程序、系统命令或shell脚本。
5)如果RemainAfterExit字段设为yes,表示进程退出以后,服务仍然保持执行。
6)服务配置文件还可以读取环境变量参数文件,我个人认为比较麻烦,没有必要,就不介绍了,设置程序的环境变量有很多种方法,可以在脚本中配置,也可以用“su –”的方法。
- Install部分 Install部分定义如何安装这个配置文件,即怎样做到开机启动。
[Install]
WantedBy=multi-user.target
WantedBy字段:表示该服务所在的Target。
Target的含义是服务组,表示一组服务。WantedBy=multi-user.target指的是,blog所在的Target是multi-user.target(多用户模式)。
这个设置非常重要,因为执行systemctl enable blog.service命令时,blog.service会被链接到/etc/systemd/system/multi-user.target.wants目录之中,实现开机启动的功能。
- 重启行为 Service部分还有一些字段,定义了重启行为。
1)KillMode字段
KillMode字段定义Systemd如何停止sshd服务,可以设置的值如下:
control-group(默认值):当前控制组里面的所有子进程,都会被杀掉。
process:只杀主进程。
mixed:主进程将收到SIGTERM信号,子进程收到SIGKILL信号。
none:没有进程会被杀掉,只是执行服务的stop命令。
2)Restart字段
Restart字段定义了服务程序退出后,Systemd的重启方式,可以设置的值如下:
no(默认值):退出后不会重启。
on-success:只有正常退出时(退出状态码为0),才会重启。
on-failure:非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启。
on-abnormal:只有被信号终止和超时,才会重启。
on-abort:只有在收到没有捕捉到的信号终止时,才会重启。
on-watchdog:超时退出,才会重启。
always:不管是什么退出原因,总是重启。
3)RestartSec字段。
RestartSec字段:表示Systemd重启服务之前,需要等待的秒数
- 使用自定义的服务 1、重新加载服务配置文件 每次修改了服务配置文件后,需要执行以下命令重新加载服务的配置文件。
systemctl daemon-reload
- 启动/停止/启重服务
systemctl start blog # 启动blog服务。
systemctl restart blog # 重启blog服务。
systemctl stop blog # 关闭blog服务。
-把服务设置为开机/关机自启动/停止
systemctl is-enabled blog # 查看blog服务是否是开机自启动。
systemctl enable blog # 把blog服务设置为开机自启动。
评论区