Linux systemd管理常用的几个小案例

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:指定服务在重启之间的等待时间。

猜你喜欢

转载自blog.csdn.net/weixin_45310323/article/details/132125299