/var/tmp/test.sh
私のiMacで無限ループで実行されるbashシェルスクリプトがありますwhile
。
このスクリプトを年中無休で24時間実行したいと思います。 iMacが再起動されても、スクリプトは自動的に実行する必要があります。
年中無休の24時間バックグラウンドプロセスで実行されるシェルスクリプトを実行したいと思います。
迅速で簡単な解決策を提案できますか?どうすればいいですか?
答え1
Appleはまだこれを終了していないのでcron
、少なくとも2つの選択肢があると思いますcron
。LaunchControl
簡単に:
cron
「古い」コマンドラインUnix。crontab
スケジュールを定義するために使用されます。無料でオープンソースで広く使われています。制限を理解すれば使いやすいです。アップルネイティブ
launchd
とlaunchctl
より強力な機能がありますが、cron
あなたの質問によると、これらのアドインは不要なようです。しかし、まだ興味がある場合は、知っておくべきことがいくつかあります。最初に知っておくべきことLaunchControl
;この単語を使用しましたシンプルあなたの質問によると、これはlaunchctl
...LaunchControl
強力なGUIスケジューリングメカニズムを提供するサードパーティの商用(無料ではない)アプリケーションですlaunchd
。launchctl
すべき。
解決策cron
:
最初のステップは、root
(管理者)権限が必要かどうかによって異なります。言及していないので、スクリプトにはsh
ユーザー権限のみが必要であると仮定します。
Terminal
iMacのアプリから:
% crontab -e
編集者として選択するように求められますcrontab
。どちらを選択するかわからない場合は、nano
編集者として選択してください。
crontab
選択したエディタで遺言が開きます。
ファイルの一番下に次の行を追加しますcrontab
。
@reboot /bin/sleep 10; /var/tmp/test.sh >> /Users/<YOURUSERID>/test_sh_log.txt 2>&1
それを破壊する:
@reboot:
cron
システムの起動時に次のコマンドを実行するように指示します。/bin/sleep 10
cron
次のコマンドを実行する前に、10秒間スリープモードに切り替えるように指示します。これは必要ないかもしれませんが、ネットワークサービスを使用したりファイルシステムをマウントしたりすると、システムsleep
はスクリプトがそれを呼び出す前にそれを実行する時間があります。/var/tmp/test.sh は実行権限が正しく設定されたスクリプトです。
>> /Users/<YOURUSERID>/test_sh_log.txt 2>&1
リダイレクト便利なログファイルのすべての出力も&(エラーメッセージ)を2>&1
受け取ります。これは、トラブルシューティングに役立つ場合や、実行中にシェルスクリプトに何かを出力させたい場合に便利です。stdout
stderr
reboot
iMacがある場合は、test.shの実行を開始する必要があります。
ついに:
リンゴセキュリティ対策「Appleを満たすために追加の措置を講じる必要があるかもしれないということは絶えず変化しているようです。決定を下します。