仅以linux —— Centos为例,若其他系统,例如suse等参见官方文档
例:
[Unit]
Description=test deamon ##描述
After=rc-local.service ##在after=的程序启动之后程序才会启动
[Service]
Type=simple
User=root
Group=root
WorkingDirectory=/home
ExecStart=/usr/bin/python test.py
Restart=always
[Install]
WantedBy=multi-user.target
Type= 参数说明
官方提供一下参数:
simple
, exec
, forking
, oneshot
, dbus
, notify
or idle
Type=simple
说明:
在有些情况下 systemctl start *** 这条命令即使执行成功,服务也没有运行,原因在于此条配置,simple为默认值(必须写,不写默认值为oneshot),在你指定ExecStart=所配置的进程视为主进程,
因为服务管理器将在创建主服务进程之后和执行服务的二进制文件之前立即启动后续单元。请注意,这意味着即使无法成功调用服务的二进制文件(例如,因为选定的User=不存在,或者服务二进制文件丢失),简单服务的systemctl start命令行也将报告成功。
Type=exec 说明:
exec类型类似于simple,但是服务管理器会考虑在主服务二进制文件执行后立即启动该单元。这意味着如果二进制文件丢失或者选定的User=不存在,systemctl start 将报错
Type=forking 说明:
如果设置为forking,则会将execut=所配置的进程将调用fork()作为其启动的一部分,这意味着启动完成后父进程退出,子进程作为主服务进程运行,当父进程退出时,服务管理器默认该单元已经启动,通常搭配PIDFlie=选项,以便systemd能够可靠的识别服务的主要进程
Type=oneshot 说明
如果没有指定Type=或ExecStart=的话,Type=oneshot是默认的。请注意,如果使用此选项而没有RemainAfterExit=服务将永远不会进入“活动”单元状态,而是直接从“激活”转换到“停用”或“死亡”,因为没有配置应连续运行的进程。