O valor PrivateTmp
deve estar na parte [Service]
da unidade.
Eu encontrei um pequeno problema com o systemd. Eu tenho um serviço php-fpm em execução, que tem PrivateTmp
diretiva definida como true
.
Existe um cronjob agora que deve obter alguns arquivos do diretório tmp do serviço php-fpm. No entanto, como os arquivos tmp estão localizados em /tmp/systemd-private-<something>
, o script do cronjob não pode encontrar os arquivos, pois eles estão no PrivateTmp
dir do serviço php-fpm.
Como solução, criei uma unidade systemd, que tem uma diretiva JoinsNamespacesOf
definida para o serviço PHP-fpm. Conforme indicado pela documentação do systemd, ela também tem uma diretiva PrivateTmp=true
. No final, isso deve ser executado a partir de .timer
unit, mas, por enquanto, eu apenas inicio manualmente.
Para ver se está funcionando, eu executei /bin/ls /tmp
da minha própria unidade systemd, assumindo que ele mostraria o conteúdo do diretório tmp-particular do serviço PHP-fpm. Infelizmente, ele apenas mostrou o conteúdo do / tmp no sistema de arquivos raiz.
Eu tentei executar vários scripts PHP a partir da unidade de serviço para ver se o processo PHP poderia estar ciente do fato de que ele deveria olhar para o diretório PrivateTmp
do serviço php-fpm, mas, infelizmente, isso não aconteceu.
Estou fazendo algo completamente errado aqui ou o recurso JoinsNamespaceOf
não funciona como anunciado?
Abaixo da minha unidade de sistema:
[Unit]
Description=PrivateTmp test
[Service]
Type=simple
JoinsNamespaceOf=php70-php-fpm.service
PrivateTmp=true
ExecStart=/bin/ls /tmp
Tags systemd