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:指定服务在重启之间的等待时间。
下一篇:
查看linux 所有运行的应用和端口命令