添加systemd服务学习

发布时间 2023-07-14 09:31:56作者: 小清澈

cd /usr/lib/systemd/system

vi oscardb.service

[Unit]
Description=oscar
After=network.target

[Service]
Type=forking
ExecStart=/opt/ShenTong/admin/oscardb_OSRDBd start
ExecReload=/opt/ShenTong/admin/oscardb_OSRDBd reload
ExecStop=/opt/ShenTong/admin/oscardb_OSRDBd stop
PrivateTmp=true

[Install]
WantedBy=multi-user.target

 

例:

- Unit
   - Description,服务的描述
   - Documentation,文档介绍
   - After,该服务要在什么服务启动之后启动,比如Mysql需要在network和syslog启动之后再启动
- Install
   - WantedBy,值是一个或多个Target,当前Unit激活时(enable)符号链接会放入/etc/systemd/system目录下面以Target名+.wants后缀构成的子目录中
   - RequiredBy,它的值是一个或多个Target,当前Unit激活(enable)时,符号链接会放入/etc/systemd/system目录下面以Target名+.required后缀构成的子目录中
   - Alias,当前Unit可用于启动的别名
   - Also,当前Unit激活(enable)时,会被同时激活的其他Unit
- Service
   - Type,定义启动时的进程行为。它有以下几种值。
   - Type=simple,默认值,执行ExecStart指定的命令,启动主进程
   - Type=forking,以 fork 方式从父进程创建子进程,创建后父进程会立即退出
   - Type=oneshot,一次性进程,Systemd 会等当前服务退出,再继续往下执行
   - Type=dbus,当前服务通过D-Bus启动
   - Type=notify,当前服务启动完毕,会通知Systemd,再继续往下执行
   - Type=idle,若有其他任务执行完毕,当前服务才会运行
   - ExecStart,启动当前服务的命令
   - ExecStartPre,启动当前服务之前执行的命令
   - ExecStartPost,启动当前服务之后执行的命令
   - ExecReload,重启当前服务时执行的命令
   - ExecStop,停止当前服务时执行的命令
   - ExecStopPost,停止当其服务之后执行的命令
   - RestartSec,自动重启当前服务间隔的秒数
   - Restart,定义何种情况 Systemd 会自动重启当前服务,可能的值包括always(总是重启)、on-success、on-failure、on-abnormal、on-abort、on-watchdog
   - TimeoutSec,定义 Systemd 停止当前服务之前等待的秒数
   - Environment,指定环境变量

 systemctl daemon-reload

systemctl start xxxx.service