launchd로 부팅 할 때/Library/LaunchDaemons (10.8.x에서 중요)의 plist 파일을 통해 쉘 스크립트를 실행하려고합니다.launchd로 부팅 할 때 쉘 스크립트를 시작할 때 실제 호스트 이름을 가져올 수 없습니다
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>testD</string>
<key>ProgramArguments</key>
<array>
<string>/Users/lfriedman/cuda-stuff/sw/gpgpu/build/scripts/testing/testD.sh</string>
</array>
<key>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>UserName</key>
<string>lfriedman</string>
<key>AbandonProcessGroup</key>
<false/>
<key>StandardOutPath</key>
<string>/tmp/testD.out</string>
<key>StandardErrorPath</key>
<string>/tmp/testD.err</string>
</dict>
</plist>
셸 스크립트 내부에서 'hostname -s'를 호출합니다. 스크립트를 수동으로 실행하면 모든 것이 정상적으로 작동합니다. cron을 통해 스크립트를 실행하면 모든 것이 잘 동작합니다. 그러나 launchd를 통해 부팅 할 때 'hostname -s'에서 반환 된 값은 시스템의 실제 호스트 이름이 아닌 'localhost'로 항상 반환됩니다. 부팅시 이외의 시간에 스크립트를 실행하기 위해 plist를 조정하면 올바른 작업을 수행하고 시스템의 실제 짧은 호스트 이름을 반환합니다. 따라서 OS의 네트워크 하위 시스템이 완전히 실행되기 전에 launchd가 작업을 시작하는 경쟁 조건이 있다고 생각하게됩니다.
launchd가 작업을 실행하기 전에 OS가 "완전히"부팅되도록하는 특별한 방법이 있습니까? 아니면 프로그램이 호출되기 전에 plist 파일 내부에 지연을 강제하는 방법?