ブート/ログイン/その他の時間で、アプリケーションを自動的に実行/停止/再起動するにはどうすればよいですか?
-
16-10-2019 - |
質問
システムが起動されたときに自動的に実行または実行を停止するスクリプトまたはアプリを作成するには、特定の時間にユーザーがログオンします。ディスクが接続されている場合など。
解決
GUIメソッド
ユーザーがログインしたときに何かを実行したい場合は、最も簡単な方法はGUIを使用することです。あなたはできる
- に行きます
System Prefs > Accounts > Login Items
画面を表示し、そこにアイテムを追加します- クリックします
+
シンボル - ドラッグしてドロップします
.app
ペインに
- クリックします
- ドックで、アプリのコンテキストメニューを表示します。
Options
, 、選択しますOpen at Login
起動メソッド
あなたがそうではない何かを起動したい場合 .app
, 、または、次のような起動をより詳細に制御する必要があります。
- 特定の時間または指定された間隔で
- クラッシュした場合、継続的に再起動します
- ユーザーログインとは関係ありません
- ネットワークアクセスの関数として
- 別のプロセスが実行されている場合にのみ実行します
- ファイルがフォルダーに追加されたとき
- 等
次に、を使用します 技術的なソリューション あれは launchd
.
セットアップする最も簡単な方法 launchd
構成ファイルは、ツールを使用して役立ちます。書いている時点で、最も人気のある方法は リンゴン (SourceForgeから利用可能な古い無料版があります)、または プリストウェブサイト 道具。
ハンドコーディング
LingonまたはPlist Webサイトを使用したくない場合、システムで利用可能な生のツールを使用したい場合は、独自に書くことができます launchd
plist
手で
これがSomeappを実行するための私の起動スクリプトです 継続的に システムブーツの後(ユーザーがログインすることとは無関係)。 /system/library/launchagents/およびsomeapp.restart.plistと呼ばれています。ユーザーログインに基づいて実行されると、〜/library/launchagents/に保存できます。
<?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>RunAtLoad</key>
<true/>
<key>KeepAlive</key>
<true/>
<key>Label</key>
<string>SomeApp.restart</string>
<key>ProgramArguments</key>
<array>
<string>/path/to/SomeApp.app/Contents/MacOS/SomeApp</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>5</integer>
<key>Minute</key>
<integer>10</integer>
</dict>
</dict>
</plist>
一度ロードします
launchctl load ~/Library/LaunchAgents/SomeApp.restart.plist
-
RunAtLoad
オプションはアプリケーションを起動しますlaunchCtlがこれを実行します。 -
KeepAlive
オプションは、クラッシュした場合にアプリケーションを再起動します。 -
StartCalendarInterval
特定の時間に実行します。おそらくこれは前の2つで相互に排他的ですが、で何ができるかを示すために含まれていますlaunchd
- larchctlは再起動後にこれを実行します。
Lingonを実験するか、男性のページを読むことで見つけることができる多くの追加オプションがあります launchctl
, launchd.plist
, plist
, launchd.conf
, 、など
他のヒント
リンゴンはまだ機能しています。私は先週それを使用して「スケジュールされたタスク」を作成しました。ダウンロードした後、最新バージョンを取得するにはAuto-Updaterを使用する必要がありましたが、正常に動作します。
システムが起動されたときに実行する必要がある場合は、 アカウントのログインアイテムのタブは、システム設定の優先ペインです。
スクリプトの場合は、Applescriptエディターを使用してアプリケーションとして保存します。 Applescriptスクリプトでない場合でも、Applescriptを使用してこのようなスクリプトを実行できます。
do shell script "your script here"
loginhooksを忘れないでください。
それらはルートとして実行されますが、このようなものを使用して$ home/.loginhookスクリプトを実行することができるはずです。
#!/bin/sh
home=`eval echo ~$user`
if [ -x "$home/.loginhook" ]; then
logger -t $0 "executing .loginhook of user $user"
su - $user -c "$home/.loginhook"
fi
次に、〜/.loginhookに必要なコマンドを追加するだけです
また、「LaunchD」は「The Mac Way」ですが、Crontabは依然として完全に実行可能なオプションであり、XML LaunchDファイルよりも手渡しがはるかに簡単です。
個人的には、私は喜んで5ドルを支払いました リンゴン.
指定された時間にアプリを実行することは、別のフォーラムのおかげでわかったばかりのように、ICALで簡単に実行できます!
- アプリを開いてほしい時間のために、ICALで新しいイベントを作成します。
- 「アラート」で「開くファイル」を選択すると、ファイルを開くように設定できます。これにより、そのファイルタイプのデフォルトアプリケーションも開きます。
- ファイルではなくアプリを開くだけで、「ICAL」ドロップダウンを「その他...」に変更し、実行するアプリを選択してください!
注意すべきことの1つは、iCloudを介して物を共有している複数のMacがある場合、このイベントはそれらのアプリでも実行される可能性があることです。これを単一のMacでのみ実現するには、次のようにできる「On My Mac」カレンダーでイベントを作成する必要があります...
- カレンダー名の上にホバリングし、表示される「非表示」ボタンをクリックすることにより、左手バーの他のすべてのiCloudまたは共有カレンダーを非表示にします。
- 右クリックします(または完全なクレチンであり、まだ複数の指を持っていることに気付いていない場合はオプションをクリックし、マウスの好みを変更できるため、デフォルトの「クレチンのクレチンレンガ」状態よりもわずかに便利です。 )そして「新しいカレンダー」を選択します。
- すべての共有カレンダーが非表示になっているため、この新しいカレンダーは「My Mac」として作成され、このMacのローカルになります。
私はこれを自分で見つけたばかりで、両方のヒントに驚いたので、ここで共有していると思いました。
私はここでこれらの役立つ人々から情報を得ました...だからあなたに感謝します!...
http://osxdaily.com/2013/04/15/launch-file-app-scheduled-date-mac-os-x/