백 포트에서 PostgreSQL 9.1과 함께 debian squeeze를 사용하고 있습니다. 꼭두각시 버전은 2.7.14입니다. 불행히도 init 스크립트는 상태에 대해 잘못된 종료 코드를 반환합니다. 따라서 status
postgresql이 실행 중인지 여부를 감지 하는 사용자 지정 명령을 작성했습니다 .
service { 'postgresql':
ensure => running,
enable => true,
hasstatus => false,
hasrestart => true,
status => "pg_lsclusters -h | awk 'BEGIN {rc=0} {if ($4 != \"online\") rc=3} END { exit rc }'",
provider => debian,
}
내 명령은 매력처럼 작동하지만 꼭두각시에는 문제가있는 것 같습니다. 나는 notice: /Stage[main]/Postgresql/Service[postgresql]/ensure: ensure changed 'stopped' to 'running'
이미 실행 중이지만 항상 얻 습니다.
따라서 다음을 시도하십시오.
service { 'postgresql':
ensure => running,
enable => true,
hasstatus => false,
hasrestart => true,
status => "exit 0",
provider => debian,
}
이 사용자 정의 status
명령을 이해 했으므로 꼭두각시는 postgresql이 실행 중이라고 항상 생각해야합니다. 그럼에도 불구하고 꼭두각시는 postgresql을 시작할 때마다 시도합니다.
내 잘못은 무엇입니까? 아니면 꼭두각시의 버그입니까?
종료 0이 유효한 명령인지 확인하십시오. exit 명령은 일반적으로 쉘 내부에 있습니다. bash -c 'exit 0'과 같은 것을해야합니까?
—
Zoredache
@ 조르 데샤 당신이 맞아요. sh -c 'exit 0'을 사용하면
—
MMore
status
꼭두각시 명령이 예상대로 작동합니다!
provider => init
하고enable
매개 변수를 제거하십시오 .