systemd를 사용하는 동안 작은 문제가 발생했습니다. PrivateTmp
로 설정된 지시문 으로 실행되는 php-fpm 서비스가 있습니다 true
.
이제 php-fpm 서비스의 tmp 디렉토리에서 일부 파일을 가져와야 하는 cronjob이 있습니다. 그러나 tmp 파일은 에 있으므로 cronjob의 스크립트는 php-fpm 서비스 디렉터리에 있으므로 이러한 파일을 찾을 수 없습니다./tmp/systemd-private-<something>
PrivateTmp
해결책으로 JoinsNamespaceOf
PHP-fpm 서비스로 설정된 지시문을 사용하여 systemd 유닛을 만들었습니다. 그림에서 알 수 있듯이시스템 문서, 지시문도 있습니다 PrivateTmp=true
. 결국 이것은 .timer
장치에서 실행되어야 하지만 현재는 수동으로 시작합니다.
작동하는지 확인하기 위해 /bin/ls /tmp
PHP-fpm 서비스의 private-tmp 디렉터리 내용이 표시된다고 가정하고 내 시스템 장치에서 실행했습니다. 안타깝게도 /tmp
루트 파일 시스템에 있는 내용만 표시됩니다.
PHP 프로세스가 php-fpm 서비스의 디렉토리를 찾아야 한다는 것을 어떻게든 인식할 수 있는지 확인하기 위해 서비스 유닛에서 다양한 PHP 스크립트를 실행해 보았지만 PrivateTmp
불행히도 그렇지 않았습니다.
내가 여기서 완전히 잘못된 일을 하고 있는 걸까요? 아니면 JoinsNamespaceOf
기능이 광고된 대로 작동하지 않습니까?
내 시스템 장치 아래:
[Unit]
Description=PrivateTmp test
JoinsNamespaceOf=php70-php-fpm.service
PrivateTmp=true
[Service]
Type=simple
ExecStart=/bin/ls /tmp
답변1
값 은 단위 부분 PrivateTmp
이어야 합니다 .[Service]