Jak uruchomić polecenie powłoki jednowierszowej przy użyciu uruchomionego?


2

Poniżej znajduje się przykład tego, co próbuję zrobić:

    <?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>

List został dodany do, /Library/LaunchDaemonswięc powinien działać podczas rozruchu dla wszystkich użytkowników, prawda? W odpowiednie uprawnienia do plików były ustawione.

Skrypt musi działać jako proces w tle, a także wymaga połączenia z siecią. Jak mogę się upewnić, że plist nie uruchomi się, dopóki nie zostanie ustanowiony dostęp do Internetu?


Odpowiedzi:


3

Chcesz dołączyć to sprawdzenie stanu sieci:

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

Ponadto - prawdopodobnie chcesz poprawnie przekazać argumenty swojego programu:

<key>ProgramArguments</key>
<array>
    <string>/usr/local/bin/binaryname</string>
    <string>arg1</string>
    <string>arg2</string>
</array>

1
dzięki za pomoc. Nadal mam problemy. czy możesz pokazać przykład użycia argumentów dla następującego polecenia? tail -n100 /var/log/foo.log | curl -s --data - http://website.com/upload/ 2>&1 >/tmp/bar
lilia

2
Znacznie łatwiej jest zawinąć to, co chcesz zrobić w skrypt i nazwać to od momentu uruchomienia.
Alex
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.