【systemd】关于systemd中的 $MAINPID

时间:2024-03-20 10:48:18

$MAINPID is a systemd variable for your service that points to the PID of the main application.

$ MAINPID是服务的systemd变量,它指向主应用程序的PID。

 

【systemd】关于systemd中的 $MAINPID

 

【systemd】关于systemd中的 $MAINPID

ExecReload=

这是一个可选的指令, 用于设置当该服务 被要求重新载入配置时 所执行的命令行。 语法规则与 ExecStart= 完全相同。

另外,还有一个特殊的环境变量 $MAINPID 可用于表示主进程的PID, 例如可以这样使用:

ExecReload=/bin/kill -HUP $MAINPID

注意,像上例那样,通过向守护进程发送复位信号, 强制其重新加载配置文件,并不是一个好习惯。

 因为这是一个异步操作, 所以不适用于需要按照特定顺序重新加载配置文件的服务。 

我们强烈建议将 ExecReload= 设为一个 能够确保重新加载配置文件的操作同步完成的命令行。

 

 

你应该使用PIDFile和$ MAINPID而不是pkill。 

如果由于某种原因多次运行nginx怎么办。 在几个容器中,或作为某些开发人员的本地服务器。 谁知道将获取哪些PID?

但是systemd知道服务的PID,通过$MAINPID变量 为你获取它。

 

【systemd】关于systemd中的 $MAINPID

常用信号表

 

【systemd】关于systemd中的 $MAINPID

【systemd】关于systemd中的 $MAINPID

 

 

kill与信号量

https://www.jianshu.com/p/966d18eac17e

 

当执行kill -9 PID时系统发生了什么?

http://zyearn.github.io/blog/2015/03/22/what-happens-when-you-kill-a-process

 

systemd.service 中文手册

http://www.jinbuguo.com/systemd/systemd.service.html

 

Systemd Services: Beyond Starting And Stopping

https://www.linux.com/tutorials/systemd-services-beyond-starting-and-stopping

 

Using PIDFile and $MAINPID instead of pkill

https://medium.com/@jbriggs_24705/you-should-be-using-pidfile-and-mainpid-instead-of-pkill-1935e4531931