ブート/ログイン/その他のときに、アプリケーションを自動的に実行/停止/再起動するにはどうすればよいですか?


42

システムの起動時、ユーザーのログオン時、特定の時間、ディスクの接続時などに、自動的に実行または停止するスクリプトまたはアプリを作成するにはどうすればよいですか?


3
Lingonは、起動するための.plistファイルをよりユーザーフレンドリーにするための単なるアプリです。また、誰かがWebベースの起動plist作成者を作成しました:plist.spotmac.de
Chealion

ブー!plist.spotmac.deはなくなったようです。:-(
docwhat

回答:


44

Guiメソッド

ユーザーがログインしたときに何かを実行したい場合、最も簡単な方法はGUIを使用することです。あなたはできる

  • 移動しSystem Prefs > Accounts > Login Items、スクリーン、およびによってそこに項目を追加します
    • +シンボルをクリック
    • .appペインにドラッグアンドドロップします
  • ドックで、アプリのコンテキストメニューを表示し、を選択してOptionsから、選択しますOpen at Login

打ち上げ方法

以外の何かを起動する場合.app、または次のように起動をより詳細に制御する場合:

  • 特定の時間または指定した間隔で
  • クラッシュした場合、継続的に再起動する
  • ユーザーログインとは関係ありません
  • ネットワークアクセスの機能として
  • 別のプロセスが実行されている場合にのみ実行
  • ファイルがフォルダーに追加されたとき

あなたが使用したいの技術的な解決策ですlaunchd

構成launchdファイルをセットアップする最も簡単な方法は、ツールを使用して支援することです。執筆時点で最も人気のある方法は、Lingon(SourceForgeから入手可能な古い無料バージョンがあります)、またはPList Websiteツールです。

ハンドコーディング

LingonまたはPList Webサイトを使用せず、システムで利用可能な生のツールのみを使用する場合は、独自のツールlaunchd plistを手書きで作成できます。

これは、システムの起動後に(ユーザーのログインに関係なく)SomeAppを継続的に実行するlaunchdスクリプトです。/ 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
  • Launchctlは、再起動後にこれを実行します。

Lingonで実験したりするためにmanページを読むことによって見つけることができる多くの追加オプションがありlaunchctllaunchd.plistplistlaunchd.conf、など


ありがとう、本当に便利。またlaunchctl load -w ...、変更を永続的にするために使用することもできます。私の更新フィードバックIに基づいてOSXパワーユーザーコンフィギュレータスクリプトを
ソリン

8

リンゴンはまだ動作します。先週それを使用して、「スケジュールされたタスク」を作成しました。ダウンロードした後、自動アップデータを使用して最新バージョンを取得する必要がありましたが、正常に動作します。


1
Lingonは現在App Storeにもあります
-user151019

1
しかし、無料のオープンソースバージョンを見つけるには、Sourceforgeから掘り下げる必要があります。最新の商用バージョンもLeopard(10.5)では動作しません。しかし、2.1.1はない-を参照してsourceforge.net/projects/lingon/files/Lingon/2.1.1
nealmcb

7

システムの起動時にのみ実行する必要がある場合は、システム環境設定の「アカウント」環境設定ペインの「ログイン項目」タブを使用します。

代替テキスト

スクリプトの場合は、AppleScript Editorを使用してアプリケーションとして保存します。AppleScriptスクリプトでない場合でも、AppleScriptを使用して次のようにスクリプトを実行できます。

do shell script "your script here"


え?確かですか?スクリーンショットのUIに「ログインするとこれらのアイテムが自動的に開きます」と表示されます-システムの起動時と違いはありませんか?また、リンクは404のようです
。– ssc

5

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」は「Macの方法」ですが、crontabは依然として完全に実行可能なオプションであり、XML起動ファイルよりもはるかに簡単に編集できます。

個人的には、Lingonに 5ドルを喜んで支払いました。


したがって、コードブロック内のスクリプトはとして保存する必要が/path/to/scriptありsudo defaults write com.apple.loginwindow LoginHook /path/to/scriptますか?そして、ホームディレクトリでスクリプトを実行することのポイントは、各ユーザーがカスタム(またはno)を持つことができるということ~/.loginhookですか?
リ、

@Lri-はい、正確に。申し訳ありませんが、それは明確ではありませんでした。ブロックコードは/usr/local/bin/loginhook.shであり、rootによって実行されるため、ユーザーがログインするときに$ HOME / .loginhookを探し、そのユーザーとして実行します。
TJルオマ

4

別のフォーラムのおかげでわかったように、指定した時間にアプリを実行することはiCalで簡単に実行できます!

  1. アプリを開く時間に合わせて、iCalで新しいイベントを作成します。
  2. 「アラート」で「ファイルを開く」を選択します。そのため、ファイルを開くように設定できます。これにより、明らかにそのファイルタイプのデフォルトアプリケーションも開きます。
  3. ファイルではなくアプリを開くには、「iCal」ドロップダウンを「その他...」に変更し、実行するアプリを選択します!

知っておくべきことの1つは、iCloud上で複数のMacがコンテンツを共有している場合、このイベントはこれらのアプリでも実行されることです。これを1台のMacでのみ実行するには、「On My Mac」カレンダーでイベントを作成する必要があります。これは次のように実行できます...

  1. カレンダー名にカーソルを合わせて表示される[非表示]ボタンをクリックして、左側のバーで他のすべてのiCloudまたは共有カレンダーを非表示にします。
  2. ここで右クリック(または完全なクレチンで、まだ複数の指があることを認識していない場合はオプションをクリックし、マウスの設定を変更して、デフォルトの「クレチン用クレチン状レンガ」状態よりも少し便利になるようにします) )、[新しいカレンダー]を選択します。
  3. すべての共有カレンダーが非表示になっているため、この新しいカレンダーは「On My Mac」として作成され、このMacに対してローカルになります。

私は自分でこれを見つけたばかりで、両方のヒントに喜んで驚いたので、ここでそれらを共有すると思いました。

私はここでこれらの親切な人々から情報を得ました...だからあなたの人々に感謝します!...

http://osxdaily.com/2013/04/15/launch-file-app-scheduled-date-mac-os-x/

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