2017-12-06 43 views
0

私はLaunchDaemonを一度も書いたことがないので、私は単純ではありません。私の単純なものでさえ、実行されていないようです。LaunchDaemonはただちに終了しますが、直接実行すると実行され続けます

私はmacOS Sierra 10.12.5を使用しています。

EDIT:私のSYSTEM.LOGには、以下のいっぱいです:

Dec 6 00:02:47 Michaels-Mac-mini com.apple.xpc.launchd[1] (com.frescologic.hello): Service only ran for 0 seconds. Pushing respawn out by 10 seconds. 
Dec 6 00:02:57 Michaels-Mac-mini com.apple.xpc.launchd[1] (com.frescologic.hello[1386]): Service could not initialize: 16F73: xpcproxy + 11769 [1505][34964CF1-9965-3B4D-ADC7-6FBC6669C56D]: 0x2 

は、しかし、私はそれが稼働し続け、コマンドラインからこんにちは直接実行したとき。

私の設定ファイル:

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
    <key>Label</key> 
    <string>com.frescologic.hello</string> 
    <key>ProgramArguments</key> 
    <array> 
     <string>hello</string> 
     <string>world</string> 
    </array> 
    <key>KeepAlive</key> 
    <true/> 
</dict> 

マイデーモンのソース:

#include <stdio.h> 
#include <stdlib.h> 
#include <unistd.h> 

int 
main(int argc, const char * argv[]) 
{ 
    FILE *outFile; 

    if (argc != 2){ 

     fprintf(stderr, "Usage:\n $ %s world\n", argv[ 0 ]); 
     exit(1); 
    } 

    outFile = fopen("/tmp/foo", "w"); 
    if (outFile == NULL) exit(1); 

    while (1){ 
     fprintf(outFile, "%s\n", argv[ 1 ]); 
     sleep(10); 
    } 

    return 0; 
} 

関連する権限:

$ ls -l /Library/LaunchDaemons/com.frescologic.hello.plist 
[email protected] 1 root wheel 375 Dec 5 21:47 /Library/LaunchDaemons/com.frescologic.hello.plist 

$ ls -l /usr/local/libexec 
total 40 
-rwxr-xr-x 1 root wheel 18240 Dec 5 21:45 hello 

にlaunchctlは、それが実行していると主張:

$ sudo launchctl list | grep hello 
Password: 
- 78 com.frescologic.hello 

をしかし、PSはしません:

$ ps -ef | grep hello 
    501 737 387 0 10:38PM ttys000 0:00.00 grep hello 

$ ps -ax | grep hello 
    743 ttys000 0:00.00 grep hello 

ログファイルが存在しません:

$ cd /tmp 
$ ls 
com.apple.launchd.JOJDWGHX78 com.apple.launchd.oUj51Uvj6v 

あなたは私の唯一の希望です!

答えて

0

Stephàneはこれを[email protected]で回答しました。実行可能ファイルの完全なパスを含むプロパティリストに「Program」キーを追加します。

<key>Program</key> 
<string>/usr/local/libexec/hello</string> 
関連する問題