발사 에이전트를 사용하십시오. 다른 모든 방법으로 쓸모없는 세부 사항 및 숨겨진 트릭의 톤과 함께 당신의 마음을 날려 버릴 것입니다. 일반적으로 많은 코너 케이스가있는 매우 복잡한 작업이며 제대로 구현하기가 어렵습니다. Launchd 에이전트를 사용하면 작업에 집중하고 많은 시간을 절약 할 수 있습니다.
가장 좋은 해결책은 에이전트를 다시 작성하고 명령 줄을 사용하지 않고 launchd 데몬에 연결하고 적절한 옵션/설정을 요청하는 것입니다.
가능하지 않거나 어렵다면 시작시 데몬에 연결할 래퍼 실행 에이전트를 작성하고 옵션을 요청한 다음 적절한 명령 줄을 사용하여 원래 에이전트를 시작할 수 있습니다.
"데몬 연결"기계를 구현하는 것이 너무 어렵다고 생각한다면 ... 어쩌면 그렇지만 데몬에서 다른 세션의 에이전트를 시작하는 것보다 훨씬 쉽습니다 (다른 코너 케이스 지원으로 구현했을 때) .
하지만 실제로 아무 문제가없는 경우 더러운 방식으로 원하는 경우 "launchctl bsexec"으로 게임 할 수 있습니다. 작동하는 몇 가지 예 : Starting/stopping a launchd agent for all users with GUI sessions ("launchctl load"대신 세션 컨텍스트에서 실행 파일을 시작할 수 있음).
일부 업데이트되었습니다.
ps aux | grep loginwindow | grep user | awk '{ system("sudo launchctl bsexec "$2" sudo -u user /Applications/TextEdit.app/Contents/MacOS/TextEdit") }'
, 당신이 원하는 세션에서 일부 응용 프로그램을 찾아 가지고는 PID와 당신이 원하는 것을 실행 "launchctl bsexec"전화 : 그 같은 의미 "bsexec launchctl와 함께 플레이"으로
같은 세션. 위의 예는 로그온 한 다른 사용자 acount 또는 서비스에서 해당 행이 실행 되더라도 로그온 한 "사용자"세션에서 TextEdit을 시작합니다.
하지만 라이온에서 테스트했는데 작동하지 않습니다. Leopards (10.5/10.6)에서만 작동합니다. 발사 요원을 사용하지 않고 말하려고했던 것은 당신의 엉덩이와 그 밖의 다른 것에는 끊임없는 고통을 줄 것입니다. 그런 일이 12 번 있었을 때 우리는 발사 요원에 대해 전적으로 전환했으며 지금은 행복합니다 :)
전적으로 발사 요원으로 전환 한 것에 대해 의견을 말할 수 있습니까? 설치 후에 시작할 에이전트를 사용하고 있기 때문에 설치 (특히, 포스트 플라이트 스크립트)가 루트로 실행 중입니다. 언급 한대로 발사 요원을 시작하는 데 사용되는 bsexec 각도이지만 라이온에서는 그렇지 않습니다. 로그인 한 각 사용자의 발사 에이젼트를 처음부터 시작하는 방법은 무엇입니까? – devguydavid
ps aux | grep loginwindow.app | grep -v grep | awk '{system ("sudo launchctl bsexec"$ 2 "sudo -u"$ 1 "launchctl load -S Aqua /Library/LaunchAgents/com.my.agent.plist")}' –
하지만 원하면 라이온에게 문제가 있습니다. 몇 가지 UI를 보여줍니다. 우리는 아직 그것을 풀지 않습니다. –