systemd是目前Linux系统上主要的系统守护进程管理工具,配置文件要以.service
结尾且放到 /usr/lib/systemd/system/
目录下面
1、systemd管理ElasticSearch
[Unit]
Description=Elasticsearch Service[Service]
Type=forking
User=elastic
Group=elastic
ExecStart=/home/elastic/elasticsearch-7.17.6/bin/elasticsearch -d
ExecStop=/bin/kill -s QUIT $MAINPID
LimitNOFILE=65536
LimitNPROC=65536
Restart=on-failure
RestartSec=30s
KillMode=control-group
KillSignal=SIGTERM
TimeoutStopSec=30s[Install]
WantedBy=multi-user.target
常用参数解释:
- LimitNOFILE:指定了一个服务可打开的最大文件描述符数。
- LimitNPROC:指定了一个服务可以创建的最大进程数。
- Restart:可以理解为守护进程on-failure表示在退出异常时,进行重启。
- RestartSec:指定服务在重启之间的等待时间。
2、systemd管理 ZooKeeper
[Unit]
Description=zookeeper Service[Service]
Type=forking
WorkingDirectory=/home/zookeeper/apache-zookeeper-3.6.1-bin
User=zookeeper
Group=zookeeper
ExecStart=/home/zookeeper/apache-zookeeper-3.6.1-bin/bin/zkServer.sh start
ExecStop=/home/zookeeper/apache-zookeeper-3.6.1-bin/bin/zkServer.sh stop
Restart=on-failure
RestartSec=30s
KillMode=control-group
KillSignal=SIGTERM
TimeoutStopSec=30s[Install]
WantedBy=multi-user.target
3、system管理Nginx
[Unit]
Description=nginx - high performance web server
Documentation=http://nginx.org/en/docs/
After=network-online.target remote-fs.target nss-lookup.target
Wants=network-online.target[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf
ExecReload=/bin/sh -c "/bin/kill -s HUP $(/bin/cat /var/run/nginx.pid)"
ExecStop=/bin/sh -c "/bin/kill -s TERM $(/bin/cat /var/run/nginx.pid)"[Install]
WantedBy=multi-user.target
常用参数解释:
- After:在xxxx服务启动之后再启动Nginx
- Wants:与"After"选项不同,"Wants"选项并不会影响Unit的启动顺序。它只是表达当前Unit对其他Units的依赖关系,但无论这些Units是否已经启动,当前Unit都可以继续启动。
- PIDFile:指定Pid文件位置,停止Nginx时可以kill掉Pid进程
4、system管理Redis
[Unit]
Description=Redis Service
After=network.target
After=network-online.target
Wants=network-online.target[Service]
ExecStart=/usr/bin/redis-server /etc/redis.conf --supervised systemd
ExecStop=/usr/libexec/redis-shutdown
Type=simple
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755[Install]
WantedBy=multi-user.target
常用参数解释:
- Type:simple,大概就是放到后台运行
5、systemd管理 Jar包
[Unit]
Description= jar Package manager [Service]
Type=forking
WorkingDirectory=/home/robot/robotv6.6.2/rbc_web
User=robot
Group=robot
ExecStart=/home/robot/robotv6.6.2/rbc_web/run.sh start
ExecStop=/home/robot/robotv6.6.2/rbc_web/run.sh stop
Restart=on-failure
RestartSec=30s
KillMode=control-group
KillSignal=SIGTERM
TimeoutStopSec=30s[Install]
WantedBy=multi-user.target
6、常用配置总结:
- Description:服务备注信息
- After:服务依赖,指明启动顺序
- Type:上文中使用的是:forking 以fork方式从父进程创建子进程,创建后父进程会立即退出,子进程将成为主进程
- PIDFile:PID文件路径
- ExecStartPre:启动前要做的事情
- ExecStart:启动服务
- ExecReload:重载服务
- ExecStop:停止服务
- WorkingDirectory:工作目录
- User:启动用户
- Group启动组
- PrivateTmp:True表示给服务分配独立的临时空间
- WantedBy:服务安装的用户模式,上文中使用的是:multi-user.target ,就是指想要使用这个服务的目录是多用户。
- LimitNOFILE:指定了一个服务可打开的最大文件描述符数。
- LimitNPROC:指定了一个服务可以创建的最大进程数。
- Restart:可以理解为守护进程on-failure表示在退出异常时,进行重启。
- RestartSec:指定服务在重启之间的等待时间。