systemd User= 设置:如何选择性地应用?

systemd User= 设置:如何选择性地应用?

Systemd 文档中关于 User= 的说明:

此设置不会影响命令行以“+”为前缀的命令。我无法使用“+”前缀。我添加的任何前缀都会被系统忽略,因此在下面的代码中,预启动根本不会运行。

[Service]
+ExecStartPre=/postgres.run.sh pre_start
ExecStart=/postgres.run.sh
ExecStop=/postgres.run.sh stop
+ExecStopPost=/postgres.run.sh post_stop
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=postgres
Type=forking
PIDFile=/run/pid.postgres
User=postgres

答案1

您的语法正确,但systemd版本错误。您正在阅读当前系统版本的文档,但运行的是旧版本。该+ExecXYZ语法是在systemd版本 231 中引入的。

解决方法是让您的“服务”以 root 身份运行,然后让需要运行的脚本首先作为postgres包含包装器运行到 PostgreSQL。bashsu

但是为什么要编写自己的postgresqlsystemd 文件而不是使用已经写好的文件呢?

相关内容