配置文件
将服务添加到systemctl管理,需要添加自定义的service文件到/usr/lib/systemd/system/下
nginx配置示例
[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/run/nginx.pid
# Nginx will fail to start if /run/nginx.pid already exists but has the wrong
# SELinux context. This might happen when running `nginx -t` from the cmdline.
# https://bugzilla.redhat.com/show_bug.cgi?id=1268621
ExecStartPre=/usr/bin/rm -f /run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=mixed
PrivateTmp=true
[Install]
WantedBy=multi-user.target
配置详解
Unit
- Description : 服务的简单描述 Documentation : 服务文档
- Before、After:定义启动顺序。Before=xxx.service,代表本服务在xxx.service启动之前启动。After=xxx.service,代表本服务在xxx.service之后启动
-
Requires: 指定服务依赖于哪些服务 (强依赖关系,一旦所依赖服务异常,当前服务也随之停
止) - Wants: 指定服务依赖于哪些服务 (弱依赖关系,所依赖服务异常不影响当前服务正常运行)
Service
-
Type
- simple(默认值):默认值,执行ExecStart指定的命令,启动主进程
- forking:以 fork 方式从父进程创建子进程,创建后父进程会立即退出
- oneshot:一次性进程,Systemd 会等当前服务退出,再继续往下执行
- notify:与 simple 相同,但约定服务会在就绪后向 systemd 发送一个信号。
- dbus:当指定的 BusName 出现在DBus系统总线上时,systemd认为服务就绪
- idle: systemd会等待所有任务(Jobs)处理完成后,才开始执行idle类型的单元。除此之外,其他行为和simple 类似。
- PIDFile:pid文件路径
- ExecStart:启动当前服务的命令
- ExecStartPre:启动当前服务之前执行的命令
- ExecStartPost:启动当前服务之后执行的命令
- ExecReload:重启当前服务时执行的命令
- ExecStop:停止当前服务时执行的命令
- RestartSec:自动重启当前服务间隔的秒数
- RestartSec:重启服务之前需要等待的秒数
-
Restart:定义了退出后,Systemd 的重启方式
- no (默认值):退出后不会重启;
- on-success:当进程正常退出时(退出状态码为0),才会重启;
- on-failure:当进程非正常退出时 (退出状态码非0),包括被信号终止和超时,才会重启;
- on-abnormal:当被信号终止和超时,才会重启;
- on-abort:当收到没有捕捉到的信号终止时,才会重启;
- on-watchdog:看门狗超时退出,才会重启;
- always:总是重启;
- TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数
- Environment:指定环境变量
-
KillMode:定义 Systemd 如何停止服务
- control-group (默认值): 当前控制组里面的所有子进程,都会被杀掉;
- process:只杀主进程;
- mixed:主进程将收到SIGTERM 信号,子进程收到SIGKILL 信号;
- none:没有进程会被杀掉;
- KillSignal
- PrivateTmp:创建私有的内存临时空间
Install
Alias:为单元提供一个空间分离的附加名字。
RequiredBy:单元被允许运行需要的一系列依赖单元,RequiredBy列表从Require获得依赖信息。
WantBy:单元被允许运行需要的弱依赖性单元,Wantby从Want列表获得依赖信息。 Also:指出和单元一起安装或者被协助的单元。 DefaultInstance:实例单元的限制,这个选项指定如果单元被允许运行默认的实例
namenode配置示例
[Unit]
Description=hdfs-namenode
After=ambari-agent.service
[Service]
Type=forking
User=hdfs
ExecStart=/xxx/hadoop/sbin/hadoop-daemon.sh --config /etc/hadoop/conf start namenode
ExecStop=/xxx/hadoop/sbin/hadoop-daemon.sh --config /etc/hadoop/conf stop namenode
PIDFile=/var/run/hadoop/hdfs/hadoop-hdfs-namenode.pid
Restart=always
RestartSec=5s
TimeoutSec=1200s
StartLimitInterval=600s
StartLimitBurst=3
StartLimitAction=none
Environment=HADOOP_LIBEXEC_DIR=/xxx/hadoop/libexec
LimitNOFILE=128000
LimitCORE=infinity
LimitNPROC=65536
[Install]
WantedBy=multi-user.target
版权声明:本文为zincooo原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。