Cara menjalankan aplikasi non-pembuatan pada startup di macOS Sierra

2

Saya harus menginstal versi Elasticsearch (2.3.3) yang lebih lama dari sumber. Biner terletak di /opt/local/elasticsearch-2.3.3/bin/saya membuat file berikut

/Library/LaunchDaemons/org.elasticsearch.plist

<?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>org.elasticsearch</string>
        <key>ProgramArguments</key>
        <array>
            <string>/opt/local/elasticsearch-2.3.3/bin/elasticsearch</string>
        </array>
        <key>UserName</key>
        <string>root</string>
<!--         <key>GroupName</key>
        <string>staff</string> -->
        <key>WorkingDirectory</key>
        <string>/opt/local/elasticsearch-2.3.3/bin</string>
        <key>KeepAlive</key>
        <true/>
        <key>RunAtLoad</key>
        <true/>
    </dict>
</plist>

Saya kemudian mengeluarkan perintah berikut:

sudo launchctl load -w /Library/LaunchDaemons/org.elasticsearch.plist

Ketika saya menanyakannya sudo launchctl list | grep elastickembali org.elasticsearch. Tetapi ketika saya memeriksa apakah elasticsearch berjalan dengan ps ax | grep elasticitu tidak berjalan.

Apakah ada yang salah dengan .plistfile saya ?

mikrofon
sumber
Tolong jangan lakukan posting ganda dan hapus yang sama di stackexchange.com.
klanomath

Jawaban:

1

Elasticsearch tidak boleh dijalankan sebagai root. Jadi hapus plist dari database launchd, pindahkan plist ke / Library / LaunchAgents (atau ~ / Library / LaunchAgents), buat / opt / local / var dan ubah sedikit:

<?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>EnvironmentVariables</key>
    <dict>
        <key>VAR</key>
        <string>VAL</string>
    </dict>
    <key>KeepAlive</key>
    <false/>
    <key>Label</key>
    <string>org.elasticsearch</string>
    <key>ProgramArguments</key>
    <array>
        <string>/opt/local/elasticsearch-2.3.3/bin/elasticsearch</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>StandardErrorPath</key>
    <string>/tmp/org.elasticsearch.stderr</string>
    <key>StandardOutPath</key>
    <string>/tmp/org.elasticsearch.stdout</string>
    <key>WorkingDirectory</key>
    <string>/opt/local/var</string>
</dict>
</plist>

Kemudian periksa /opt/local/elasticsearch-2.3.3 dan subdirinya untuk izin yang tepat, tambahkan EnvironmentVariables jika perlu (atau hapus kunci & dict) dan muatkan plist.

Jika semuanya berfungsi dengan baik, Anda dapat menghapus StandardErrorPath dan StandardOutPath dan string-nya.


Anda juga dapat menjalankannya sebagai daemon tetapi dengan pengguna yang berbeda (yaitu nama pengguna Anda) - tergantung pada kebutuhan / lingkungan Anda.

klanomath
sumber
ok ini berfungsi ketika saya memuatnya secara manual, tetapi tidak memuat saat boot ...
mike
hanya me-reboot dan kemudian masuk.
mike
@ mikeglaz Saya tidak punya masalah dengan pengaturan ini. Silakan periksa org.elasticsearch.stdout / stderr untuk kesalahan. Mungkin ini merupakan kesalahan izin di /opt/local/elasticsearch-2.3.3 dan / atau / opt / local / var path. Setiap orang membutuhkan akses penuh ke semua subdirs. Selain itu / Anda juga dapat memindahkan ... stdout / stderr ke / opt / local / tmp.
klanomath
ok itu berhasil, saya perlu mengubah izin untuk / opt / local / var
mike