[解決済み] タスクを頻繁に実行するように設定するにはどうすればよいですか?
質問
例えば30分ごとにスクリプトを実行させるにはどうしたらよいでしょうか。 OS によって異なる方法があると思います。 私は OS X を使用しています。
どのように解決するのですか?
ただ
launchd
. これは非常に強力なランチャーシステムで、一方でMac OS Xの標準ランチャーシステムでもあります(現在のOS Xバージョンはこれなしでは起動すらしません)。をよく知らない人のために
launchd
(あるいは OS X 全般) に馴染みのない方のために説明しますと、このシステムは
init
,
cron
,
at
, SysVinit (
init.d
),
inetd
,
upstart
と
systemd
. これらのプロジェクトのコンセプトを借りながら、他にはないものを提供します。
すべてのサービス/タスクはファイルです。ファイルの場所は、「このサービスはいつ実行されることになっているのか」、「このサービスはどのような特権を必要とするのか」という質問に依存します。
システムタスクは
/Library/LaunchDaemons/
を実行する場合、どのユーザがシステムにログインしているかどうかに関係なく、実行されます。それらは "root" 権限で開始されるでしょう。
もし、以下の場合にのみ実行されるのであれば の場合のみ実行されます。 のユーザがログインしている場合にのみ実行されるのであれば、次のようになります。
/Library/LaunchAgents/
で、先ほどログインしたユーザーの権限で実行されます。
もし、以下の場合にのみ実行されるのであれば の場合のみ実行されます。 がログインしているときのみ実行される場合、それらは
~/Library/LaunchAgents/
ここで、~はあなたのホームディレクトリです。これらのタスクは、コマンドラインやFinderでファイルをダブルクリックして自分で起動したのと同じように、あなたの権限で実行されます。
また
/System/Library/LaunchDaemons
と
/System/Library/LaunchAgents
の下にあるものは、通常通り
/System
にあるものはすべて OS X によって管理されています。あなたが何をしているかを本当に理解していない限り、そこにファイルを置いたり、ファイルを変更したりしてはいけません。Systems フォルダをいじくり回すと、システムが使用不能になる可能性があります (再起 動を拒否するような状態になることもあります)。これらは、Apple が
launchd
タスクが配置されるディレクトリで、起動時にシステムを稼働させたり、必要に応じてサービスを自動的に開始したり、システムのメンテナンス タスクを実行したりします。
すべての
launchd
タスクには plist 形式のファイルがあります。これは、逆ドメイン名表記でなければなりません。例えば、タスクの名前を
com.example.my-fancy-task.plist
このplistは様々なオプションや設定を持つことができます。片手間に書くのは最適ではないので、無料のツールを入手するとよいでしょう リンゴン を利用してタスクを作成するとよいでしょう。このツールは以前は無料でしたが、現在はアプリストアで5ドル、非アプリストア版として10ドルかかります(非アプリストア版の方がはるかに強力なので、すでにお金を払うつもりなら、マジで非アプリストア版を買ってください)。もし誰かがフリーウェアやオープンソースの同等のツールを知っていたら、コメントで私に一行送ってください、私はむしろそのツールを推薦します (ここで商用ソフトウェアの宣伝をしたくありません)。
例として、次のようなものがあります。
<?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.example.my-fancy-task</string>
<key>OnDemand</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/bin/sh</string>
<string>/usr/local/bin/my-script.sh</string>
</array>
<key>StartInterval</key>
<integer>1800</integer>
</dict>
</plist>
このエージェントは、1800秒毎(30分毎)にシェルスクリプト /usr/local/bin/my-script.sh を実行します。また、特定の日時にタスクを実行させたり(基本的に launchd は cron ができることは全てできます)、quot; OnDemand" を無効にして launchd にプロセスを常時実行させることもできます(プロセスが終了するかクラッシュすると launchd は直ちにそれを再開します)。プロセスが使用するリソースの量を制限することもできます (先に述べたように、Lingon はこれらの設定をすべて素晴らしい UI インターフェースで表示します)。
アップデートです。
にもかかわらず
OnDemand
はまだサポートされていますが、非推奨です。新しい設定の名前は
KeepAlive
と名付けられ、より意味のあるものになっています。これはブール値を持つことができ、その場合は
OnDemand
(に設定する)。
false
のように動作します。
OnDemand
は
true
であり、その逆もしかり)。素晴らしい新機能は、ブーリアン値ではなくディクショナリ値を持つことができることです。辞書値を持つ場合、いくつかの追加オプションがあり、どのような状況でタスクが生かされるかをより細かく制御することができます。例えば、プログラムが終了コード0で終了している間だけ、ディスク上の特定のファイル/ディレクトリが存在する間だけ、他のタスクも生きている場合だけ、ネットワークが現在稼働している場合だけ、などです。
また、コマンドラインから手動でタスクを有効化/無効化することもできます。
launchctl <command> <parameter>
コマンドは plist をロードしたり、アンロードしたりすることができます。また、コマンドは start や stop で、そのようなタスクを開始または停止します。この場合、パラメータはラベル (com.example.my-fancy-task) になります。他のコマンドやオプションも存在する。
の Apple のドキュメントを参照してください。
plist フォーマット
と
launchctl
コマンドラインツール
(フォーマットやオプションが異なる OS X リリース間で異なるため、上の OS X バージョンを選択できることに注意してください)
関連
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] Bashシェルスクリプトでディレクトリが存在するかどうかを確認するにはどうすればよいですか?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] Bashで変数が設定されているかどうかを確認する方法は?
-
[解決済み] find .コマンドでディレクトリを除外する方法
-
[解決済み] シェルコマンドを実行しながらエコーする方法
-
[解決済み] nginx の "ssl" ディレクティブは非推奨、"listen ... ssl" を使用すること。
-
[解決済み] Macで$PATHに/usr/local/binを追加する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Homebrewでnvmをインストールしたが、その後nvmが見つからなくなった?
-
[解決済み] Mac OSXでデフォルトゲートウェイを取得する方法
-
[解決済み] nginx の "ssl" ディレクティブは非推奨、"listen ... ssl" を使用すること。
-
[解決済み] ターミナルで開くファイルのデフォルトエディタを変更しますか?(例:TextEdit/Coda/Textmateに設定する。)
-
[解決済み] Mac OS XでのApache 2サイトファイル/フォルダの正しいオーナー/グループ/パーミッションは?
-
[解決済み] grep -P が効かなくなりました。どうすれば検索を書き換えることができますか?
-
[解決済み] Mac OS Xのビルトインvimのアップデート
-
[解決済み] YosemiteとValgrind
-
[解決済み] dyld: ライブラリがロードされません。rpath/libswiftAVFoundation.dylib です。
-
[解決済み] brewでgoをインストールし、gotourを実行する。