使用systemd管理程序进程
下面是zk的管理脚本
vim /usr/lib/systemd/system/zookeeper.service
添加以下内容
[Unit] Description=zookeeper After=network.target remote-fs.target nss-lookup.target [Service] Type=forking ExecStart=/usr/local/apache-zookeeper-3.6.2-bin/bin/zkServer.sh start ExecReload=/usr/local/apache-zookeeper-3.6.2-bin/bin/zkServer.sh restart ExecStop=/usr/local/apache-zookeeper-3.6.2-bin/bin/zkServer.sh stop [Install] WantedBy=multi-user.target
section文件内容讲解
[Unit] 区块部分
描述,启动顺序与依赖关系
| 键值 | 功能描述 |
|---|---|
| Description | 当前服务的简单描述 |
| Documentation | 文档位置 |
| After | (非依赖)启动顺序,其他服务启动后,本程序启动 |
| Before | (非依赖)启动顺序,本程序启动后,再启动其他服务 |
| Wants | (弱依赖),其他程序启动失败或停止运行,不影响本程序继续执行 |
| Requires | (强依赖),其他程序启动失败或停止运行,本程序也必须退出 |
[Service] 区块说明
定义如何启动当前服务
| 键值 | 功能描述 |
|---|---|
| Type | 定义启动类型 |
| ExecStartPre | 启动服务之前执行的命令 |
| ExecStart | 启动进程时执行的命令 |
| ExecStartPost | 启动服务之后执行的命令 |
| ExecReload | 重启服务时执行的命令 |
| ExecStop | 停止服务时执行的命令 |
| ExecStopPost | 停止服务之后执行的命令 |
| Restart | 守护进程,当服务进程正常退出、异常退出、被杀死、超时的时候, 是否重新启动该服务。 |
| RestartSec | 服务重启之间,等待的秒数 |
| TimeoutStartSec | 服务允许的最大启动时长 |
| TimeoutStopSec | 服务允许的最大停止时长 |
| TimeoutSe | 同时设置TimeoutStartSec与TimeoutStopSec |
| KillMode | 服务停止时,杀死进程的方法 |
| PrivateTmp | 服务启动时在/tmp目录中生成缓存目录 |
| LimitNOFILE | 最大打开文件数 |
[Install] 区块说明
定义如何安装这个配置文件,即怎样做到开机启动。
| 键值 | 功能描述 |
|---|---|
| WantedBy | 表示该服务所在的 Target.默认填写(multi-user.target)运行级别3命令行模式,5图形界面模式 |
其中service 中的Type取值如下:
| 类型 | 功能描述 |
|---|---|
| simple | (默认值)ExecStart字段启动的进程为主进程 |
| forking | ExecStart字段将以fork()方式启动,此时父进程将会退出,子进程将成为主进程 |
| oneshot | 类似于simple,但只执行一次,Systemd会等它执行完,才启动其他服务 |
| dbus | 类似于simple,但会等待D-Bus信号后启动 |
| notify | 类似于simple,启动结束后会发出通知信号,然后Systemd再启动其他服务 |
| idle | 类似于simple,但是要等到其他任务都执行完,才会启动该服务。一种使用场合是为让该服务的输出,不与其他服务的输出相混合 |
Restart 的参数如下:
| 类型 | 功能描述 |
|---|---|
| no | (默认值)退出后不会重启 |
| on-success | 只有正常退出时(退出状态码为0),才会重启 |
| on-failure | 非正常退出时(退出状态码非0),包括被信号终止和超时,才会重启 |
| on-abnormal | 只有被信号终止和超时,才会重启 |
| on-abort | 只有在收到没有捕捉到的信号终止时,才会重启 |
| on-watchdog | 超时退出,才会重启 |
| always | 不管是什么退出原因,总是重启 |
对于守护进程,推荐设为on-failure。对于那些允许发生错误退出的服务,可以设为on-abnormal
KillMode的参数如下:
| 类型 | 功能描述 |
|---|---|
| control-group | (默认值)当前控制组里面的所有子进程,都会被结束 |
| process | 只杀主进程 |
| mixed | 主进程将收到 SIGTERM 信号,子进程收到 SIGKILL 信号 |
| none | 没有进程会被杀掉,只是执行服务的 stop 命令 |
浙公网安备 33010602011771号