OS Xで起動時にスクリプトを実行する最も簡単な方法は何ですか?


12

OS Xのブート時にスクリプト(bash / zsh / ruby​​ / ...)を実行したい。これを行う最も簡単な方法は、xml / plistファイルをいじらずに、できればメタAppleScriptを作成する必要がないこと。

回答:


7

MacOS XはVixie cronを使用します。これには、再起動時に起動するための特別なメタタグがあります。をご覧くださいファイル形式 manページください

何かのようなもの:

@reboot /path/to/script.sh

あなたのcrontabで動作します。これがlaunchdよりも優れたソリューションであるかどうかはわかりません。おそらく、cronよりもlaunchdを見るメタツールの方が多いでしょう。


大好きです、あなたは私が間違っていることを証明しました:-) cronOS Xではデフォルトでログを記録するのはそれほど素晴らしいことではありません(ほんの数日前にそのトピックがありました)。
ダニエルベック

これは完璧です。
ジョンバチャー

1
cron、atなどはOS Xである程度非推奨になっていることに注意してください。さまざまなドキュメントでそのことを明示的に説明することはできません。概要については、launchdのドキュメントを参照してください。
ノーマングレー

plistは私にはうまくいきません-これは魅力のように動作します-ありがとう!:-D
BGブルーノ

正直なところ、OS Xで構文が同じかどうかは
わかりませんでした。– NobleUplift

6

意見を変えた場合:

<?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>com.superuser.245713</string>
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/script.sh</string>
    </array>
    <key>UserName</key>
    <string>someuser</string>
</dict>
</plist>

などの店舗com.superuser.245713.plist/Library/LaunchAgents/および作るroot:wheel所有者/グループ。


1
それはにそれを置くために間違いなく良いでしょう/Library/LaunchAgentsではなく/System/Library/LaunchDaemonsので、/SystemOS固有のものであり、1頭の下には、/Libraryサードパーティ製のもののため、より使用されています。また、LaunchDaemonsLaunchAgentsユーザーとして、またはユーザーランドのコンテキストで実行する」場所として、「ルートとして実行するアイテム、通常はバックグラウンドプロセスを含む必要があります」。それらの引用のソースは、launchdに関するすばらしい記事であり、私はローンチされた質問について相談します。
ダグ・ハリス

@DougHarris提案をありがとう!私はこのアドホックを入力するだけであったことを認めなければなりません-私は通常自分のソリューションをテストしますが、このためにマシンを再起動するつもりはありませんでした。
ダニエルベック

Vixie cronソリューションの方が好きですが、これは非常に素晴らしいことです:)
ジョンバチャー

実際には、/ Library / LaunchDaemonsに配置する必要があります。エージェントはユーザーセッション内でのみ実行されます。つまり、誰かがログインするまで実行されず(正確には実行資格があります)、誰かがログインするたびに再び実行され、常に現在ログインしているユーザーとして実行されます。デーモンはブート時に実行(/実行可能になります)し、通常はrootとして実行されますが、UserNameキーを使用して他のユーザーとして実行できます。
ゴードンデイヴィソン


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.