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?


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>

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.