我在使用 systemd 时遇到了一个小问题。我有一个正在运行的 php-fpm 服务,其PrivateTmp
指令设置为true
.
现在有一个 cronjob 应该从 php-fpm 服务的 tmp 目录获取一些文件。但是,由于 tmp 文件位于 中,因此 cronjob 中的脚本无法找到这些文件,因为它们位于php-fpm 服务的目录中。/tmp/systemd-private-<something>
PrivateTmp
作为解决方案,我创建了一个 systemd 单元,其中有一个JoinsNamespaceOf
设置为 PHP-fpm 服务的指令。如图所示系统文档,它还有一个PrivateTmp=true
指令。最后,这应该从.timer
单元运行,但目前我只是手动启动它。
为了查看它是否正常工作,我/bin/ls /tmp
从自己的 systemd 单元执行,假设它将显示 PHP-fpm 服务的 private-tmp 目录的内容。不幸的是,它只显示了/tmp
根文件系统上的内容。
我曾尝试从服务单元运行各种 PHP 脚本,以查看 PHP 进程是否能够以某种方式意识到它应该查看PrivateTmp
php-fpm 服务的目录,但遗憾的是,它没有。
我在这里做的事情完全错误吗?或者该JoinsNamespaceOf
功能没有像宣传的那样工作?
在我的系统单元下面:
[Unit]
Description=PrivateTmp test
JoinsNamespaceOf=php70-php-fpm.service
PrivateTmp=true
[Service]
Type=simple
ExecStart=/bin/ls /tmp
答案1
该PrivateTmp
值应为[Service]
单位部分。