2009-12-14 4 views
2

이 명령으로 내 daemon-app를로드하려고합니다. launchctl load /Library/LaunchDaemons/myPlistFileName 내 사용자가 시스템에 로그인되어있는 동안에 만 작동합니다.MacOS에서 시스템 전체 데몬을로드하는 방법

deamon-app을로드하면 어떻게됩니까? deamon-app는 어떤 사용자도 시스템에 로그인하지 않고도 계속로드됩니다 (예 : windows-services) ??

sudo launchctl load /Library/LaunchDaemons/myPlistFileName 나에게 오류를 제공 명령 ->아무것도

이 작업을 수행하는 올바른 방법은로드 발견?


편집 : 내 PLIST 파일

<key>Label</key> 
<string>com.myCompany.myApplication</string> 
<key>ProgramArguments</key> 
<array> 
    <string>open</string> 
    <string>-g</string> 
    <string>/Applications/myAppDir/myApplication.app</string> 
</array> 
<key>UserName</key> 
<string>root</string> 
<key>GroupName</key> 
<string>wheel</string> 
<key>KeepAlive</key> 
<true/> 
<key>OnDemand</key> 
<false/> 

현재 그렇게입니다 : 나의 데몬이 루트 권한으로 시작 시스템 시작합니다. 난 내 사용자 계정, 데몬 프로세스를 다시 시작하여 로그인 한 내 사용자는 "sudo는 launchctl 부하를 사용하는 과정

답변

3

의 새 소유자 후 < 이름의-PLIST 파일 >, sudo는이 <을 시작 launchctl < 명령 > [<는 arg0 > ... <에서 argN이 >] "길을 가야하는 것입니다 - sudo는"새로운 launchctl 버전, 또는 "작업 이름 >은 -l < 라벨 > 제출 launchctl.

"sudo launchctl"명령이 실제로 PLIST를 보지 않고 실패한 이유를 진단하기는 어렵지만 PLIST에 대한 사용 권한이 모든 사용자에게 읽기 쉽도록해야합니다 (단, root : wheel 또는 root : admin 만 쓸 수 있음).), "UserName"과 "GroupName"필드가 주어 졌는지 확인해야합니다. "Program"이 해당 프로그램의 절대 경로를 제공하는지 확인해야합니다 (예를 들어, 사용자의 특정 PATH 환경 변수 설정), "WorkingDirectory"및 "EnvironmentVariables"필드가 적절하게 정의되어 있어야합니다.

항목 : man launchd.plist

편집 : 당신은 또한이 "중지"와 "언로드"는 "sudo는 ...로드"를 수행하기 전에 명령을 실행 시도 할 수 있습니다
.

EDIT :
이제 PLIST 파일을 업로드 했으므로 문제가 무엇인지 알 수 있습니다. 다른 사용자로 실행할 때 open 명령을 사용할 수 없습니다. running OS X GUI app as root을 참조하십시오. 또한, KeepAlive 및 OnDemand 키는, 나는 꽤, 무상이다. 나는 그것들이 삭제 될 수 있다고 생각한다.

+0

구성 파일을 추가했습니다. "launchctl"로 plist를로드하기 전에 stop 및 unload 명령을 실행하려고 시도했습니다. – Nobik

+0

어제 저는 어딘가에서 정확히 같은 해결책을 발견했습니다. 지금 그것은 잘 작동합니다 :) 고마워요. – Nobik