일반 우분투에서는 다음과 같이 Unix 소켓용 디렉토리를 생성했습니다(예: 프로젝트의 경우 foo
).
- 다음 위치에서 시스템 스크립트를 만듭니다.
/usr/lib/tmpfiles.d/foo.conf
- 스크립트에 다음 코드를 배치합니다.
/run/foo 0770 <username> <groupname>
그런 다음 다음에 재부팅할 때 /run/foo
필요한 권한을 사용하여 디렉터리가 생성됩니다. 내가 이렇게 하는 이유는 루트만 /var/run
->에 대한 링크 에 쓸 수 /run
있고 많은 앱에서 소켓을 만들기 전에 권한을 삭제하고 사용자를 변경하는 것이 일반적이므로 에 쓰지 못하기 때문입니다 /var/run
.
이제 Ubuntu 20.04와 함께 WSL2를 사용하고 있는데 systemd
존재하지 않습니다. 작동시키기 위해 많은 어려움을 겪을 수 있지만 버그가 있습니다.
설치된 앱(예: nginx/postgresql)이 소켓 생성을 시도하기 전에(따라서 재부팅 전의 오래된 소켓으로 인해 실패함) 재부팅 후 지워지는 원하는 권한이 있는 폴더를 어떻게 생성합니까?
답변1
init.d 서비스 대신에 전체 스크립트 경로를 이라는 파일에 작성하고 /etc/rc.local
(생성해야 할 수도 있음) 실행 가능하게 만들면 운이 좋을 수도 있습니다.
다음과 같습니다:
#!/bin/sh -e
#
# rc.local
#
# This script is executed at the end of each multiuser runlevel.
# Make sure that the script will "exit 0" on success or any other
# value on error.
#
# In order to enable or disable this script just change the execution
# bits.
#
# By default this script does nothing.
## Examples:
/usr/bin/foo # a program
/usr/local/bin/bar.sh # a shell script
/etc/init.d/foobar start # a service
exit 0
중요 exit 0
하다!
그런 다음 실행 가능하게 만듭니다.
chmod +x /etc/rc.local
거기에 있는 모든 것이 다음과 같이 시작됩니다.뿌리시스템 부팅 시.
rc.local은 실제로 더 이상 사용되지 않습니다.1983년그리고더 이상 작동하지 않을 수 있습니다. 그 당시에는 새롭고 이제는 더 이상 사용되지 않는 SysV-Init 시스템이 도입되었을 때 이전 시스템 초기화 방법을 유지하기 위한 해결 방법으로 사용되었으며 더 이상 사용하지 않는 것이 좋습니다.