存放路径
system service存放路径
/usr/lib/systemd/system/
Dbus service存放路径
/usr/share/dbus-1/system-services/
组成
service文件主要由以下部分组成
[Unit]
Description=xxxx
After=B //在B之后启动
Before=C
[Service]
Type=forking: 后台运行模式
PIDFile=/xxx/xxx.xxx: 存放PID文件的位置
ExecStart=/bin/echo xxx: 这是服务运行的具体执行命令
ExecReload=/bin/echo xxx: 这是服务重启的执行命令
EexcStop=/bin/echo xxx: 这是服务停止的执行命令
[Install]
WantedBy=multi-user.target
参数解析
unit:
Description
:描述信息
After
:定义unit的启动次序,表示当前unit应该晚于哪些unit启动,其功能与Before相反
Requires
:依赖到的其它units,强依赖,被依赖的units无法激活时,当前unit也无法激活
Wants
:依赖到的其它units,弱依赖
Conflicts
:定义units间的冲突关系
BindsTo
:与Requires类似,它指定的 Unit 如果退出,会导致当前 Unit 停止运行
Before
:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之后启动
Conflicts
:这里指定的 Unit 不能与当前 Unit 同时运行
Condition...
:当前 Unit 运行必须满足的条件,否则不会运行
Assert...
:当前 Unit 运行必须满足的条件,否则会报启动失败
type:
simple
,这是默认的Type,当Type和BusName配置都没有设置,指定了ExecStart设置后,simple就是默认的Type设置。simple使用ExecStart创建的进程作为服务的主进程。在此设置下systemd会立即启动服务,如果该服务要启动其他服务(simple不会forking),它们的通讯渠道应当在守护进程启动之前被安装好(e.g. sockets,通过sockets激活)。
forking
,如果使用了这个Type,则ExecStart的脚本启动后会调用fork()函数创建一个进程作为其启动的一部分。当一切初始化完毕后,父进程会退出。子进程会继续作为主进程执行。这是传统UNIX主进程的行为。如果这个设置被指定,建议同时设置PIDFile选项来指定pid文件的路径,以便systemd能够识别主进程。
oneshot
,onesh的行为十分类似simple,但是,在systemd启动之前,进程就会退出。这是一次性的行为。可能还需要设置RemainAfterExit=yes,以便systemd认为j进程退出后仍然处于激活状态。
dbus
,这个设置也和simple很相似,该配置期待或设置一个name值,通过设置BusName=设置name即可。
notify
,同样地,与simple相似的配置。顾名思义,该设置会在进程结束时候发送推送消息(通过sd_notify(3))给systemd。