저는 Ubuntu Server 10.04에서 실행되는 apache2와 postgres를 사용하고 있습니다.
두 응용 프로그램 모두에 대한 시작 스크립트를 제거했으며 감독자를 사용하여 이를 모니터링하고 제어하고 있습니다. 내가 겪고 있는 문제는 두 디렉토리 모두 pid 파일을 보관하기 위해 /var/run(실행 중인 사용자로서 올바른 권한이 있는)에 디렉토리가 필요하다는 것입니다. 루트로 생성한 다음 올바른 사용자에게 권한을 부여해야 하므로 부팅 중에 어떻게 생성합니까?
편집하다
가장 좋은 방법은 사용자 정의 초기화 스크립트를 사용하여 디렉토리를 만드는 것 같습니다. 쉘 스크립팅 기술이 전혀 없는데 어떻게 해야 합니까?
답변1
~에 따르면데비안 정책,
/var/run
/var/lock
임시 파일 시스템으로 마운트될 수 있으므로 스크립트init.d
는 이를 올바르게 처리해야 합니다. 이는 일반적init.d
으로 패키지에 하위 디렉터리를 포함하고 dpkg를 사용하여 생성하는 대신 스크립트가 실행되는 동안 필요한 하위 디렉터리를 동적으로 생성하는 것과 같습니다 .
분명히 Ubuntu는 Debian을 상속받았으며, 제가 아는 한 이 정책은 변경되지 않았습니다.
가장 좋은 해결책은 서비스를 시작할 때 이러한 디렉터리가 존재하지 않는 경우 생성되도록 새 시작 스크립트를 수정하는 것입니다.
답변2
이런 종류의 것은 "/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.
if [ ! -d /var/run/foo ]; then
mkdir /var/run/foo/
chown user1:group1 /var/run/foo/
fi
if [ ! -d /var/run/bar ]; then
mkdir /var/run/bar/
chown user2:group2 /var/run/bar/
fi
exit 0
답변3
이 댓글에 답글을 달아주세요:
현재 서비스에 대한 시작 스크립트가 없습니다. 감독자 데몬은 init.d 스크립트에 의해 시작되며, 이후 다른 서비스를 시작하므로 루트로 실행하면 안 됩니다.
감독자가 init.d
스크립트에서 시작되는 경우 init.d
감독자가 시작되기 전에 다른 스크립트를 작성하고 기본 설정을 실행하십시오(구현 방법은 전적으로 **IX 버전에 따라 다름).
해당 메서드 start
에 필요한 권한이 있는 필수 디렉터리를 생성합니다 .
해당 메소드 stop
에서 이러한 디렉토리를 해체하십시오 .
답변4
몇 가지 옵션이 표시됩니다.
- 설치 중 디렉터리 생성
- 시작 시 생성하려는 모든 디렉터리에 대한 파일을 생성한 다음 이러한 모든 파일을 생성하고 시작 시 이를 실행하는 프로그램을 작성합니다(루트 권한이 있는 시작 스크립트에서).
이를 반복하는 다른 옵션도 작동할 수 있습니다.