Bagaimana cara menjalankan perintah shell satu-liner menggunakan launchd?

2

Di bawah ini adalah contoh dari apa yang saya coba lakukan:

    <?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>fooLabel</string>
        <key>Something</key>
        <string>/bin/bash foo -arg 1 -arg 2 &</string>
</dict> 
</plist>

Plist telah ditambahkan /Library/LaunchDaemonssehingga harus dijalankan saat boot untuk semua pengguna, bukan? The hak akses file yang sesuai ditetapkan.

Script perlu dijalankan sebagai proses latar belakang dan juga membutuhkan konektivitas jaringan. Bagaimana saya bisa memastikan daftar tidak diluncurkan sampai akses internet dibuat?

bunga bakung
sumber
1
Bergabunglah dengan saya di chat.stackexchange.com/rooms/38/ask-different-chat
Allan

Jawaban:

3

Anda ingin menyertakan pemeriksaan ini untuk status jaringan:

<dict>
  <key>NetworkState</key>
  <true/>
</dict>

Juga - Anda mungkin ingin menyampaikan argumen program dengan benar:

<key>ProgramArguments</key>
<array>
    <string>/usr/local/bin/binaryname</string>
    <string>arg1</string>
    <string>arg2</string>
</array>
Alex
sumber
1
terima kasih atas bantuan Anda. Saya masih mengalami beberapa masalah. dapatkah Anda menunjukkan contoh penggunaan args untuk perintah berikut? tail -n100 /var/log/foo.log | curl -s --data - http://website.com/upload/ 2>&1 >/tmp/bar
lily
2
Jauh lebih mudah untuk menyelesaikan apa yang ingin Anda lakukan menjadi skrip dan menyebutnya dari launchd.
Alex