시작 시 /var/run/에 디렉터리 생성

시작 시 /var/run/에 디렉터리 생성

저는 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

몇 가지 옵션이 표시됩니다.

  1. 설치 중 디렉터리 생성
  2. 시작 시 생성하려는 모든 디렉터리에 대한 파일을 생성한 다음 이러한 모든 파일을 생성하고 시작 시 이를 실행하는 프로그램을 작성합니다(루트 권한이 있는 시작 스크립트에서).

이를 반복하는 다른 옵션도 작동할 수 있습니다.

관련 정보