私はこれを機能させるためにAppleScriptとAutomatorをいじくり回してきましたが、ただ頭を抱えているようには見えません。誰かが私に例を示すか、特定の時間にアプリケーションを閉じてコンピューターをスリープまたはシャットダウンする方法についていくつかのヒントを教えていただければ、大歓迎です。
私はこれを機能させるためにAppleScriptとAutomatorをいじくり回してきましたが、ただ頭を抱えているようには見えません。誰かが私に例を示すか、特定の時間にアプリケーションを閉じてコンピューターをスリープまたはシャットダウンする方法についていくつかのヒントを教えていただければ、大歓迎です。
回答:
この手順を定期的に実行するのではなく、開始することを想定しています。
私のアプローチはこれをコマンドラインから開始することですが、コマンドはAutomatorスクリプトのシェルスクリプトコンポーネントで変更を加えて実行できます。次のアプローチは、いくつかのコンポーネントを組み合わせて仕事を完了します。
tell
アプリケーションを終了するコマンド1.アプリケーションに終了するように伝える
これは次のように簡単です。
osascript -e 'tell application "AppName" to quit'
2.コンピュータをスリープ状態にする
見てpmset
の詳細についてはなく、次のコマンドを発行すると、スリープ状態にコンピュータを配置します。
pmset sleepnow
3.特定の時間に実行される操作のスケジュール
atコマンドを見てください。このコマンドを使用すると、コマンドを実行する時間を指定できます。この機能はデフォルトでは有効になっていないため、有効にする必要があります。atrun
デーモンを有効にするには、次のコマンドを実行します[SUのリファレンス]:
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.atrun.plist
を有効にするatrun
と、次のコマンドを発行して、特定の時間にコマンドをスケジュールできます
echo "<command>" | at HH:MM
これat
はstdin
、デフォルトで入力を取得するため機能します。より簡単な方法は、ファイルにリストされたコマンドを実行することです。-f
フラグを使用してファイルを実行し、次のように実行するスクリプトの名前を続けます。
at -f /path/to/file HH:MM
すべてを一緒に入れて
以下では、それatrun
が有効になっていると想定しています。おもちゃの例として、Mailを終了してコンピュータを午後11時にスリープ状態にしたいとします。次のように、実行するコマンドを含むファイルを作成します。
osascript -e 'tell application "Mail" to quit'
pmset sleepnow
そのファイルを保存しquit-and-sleep
て、コマンドラインで実行します
at -f /path/to/quit-and-sleep 23:00
注意事項
Mailが実際に閉じていることを確認するためのチェックは行いませんでした。また、スクリプトは、コンピューターをスリープ状態にする方法が他にないことを前提としています。ここでは、必要なものの開始点として、それを単純なままにしています。
これは、ハードコードされた時間値を指定してこれを実現する厳密にAppleScriptバージョンです。もちろん、必要に応じてこの部分をインタラクティブにすることもできます。また、このバージョンは、時間列が今日に関連していることを前提としています。
--Get time setting for action to occur
set t to "3:16:30 PM"
--build a time string to use as a target.
set cd to (current date) as text
set AppleScript's text item delimiters to " "
set targetTime to text items 1 thru -3 of cd
set targetTime to date ((targetTime as text) & " " & t)
repeat while (current date) < targetTime
beep
delay 30 -- check the time every 30 seconds
end repeat
tell application "Mail"
quit
end tell
tell application "Finder"
display dialog "Do you want to shut the computer down now?"
if button returned of the result is "Ok" then
shutdown
end if
end tell
イベントは次の場所で1度だけスケジュールできます。
at 23:59 <<< 'osascript -e "quit app \"Mail\""; pmset sleepnow'
または、毎日繰り返すようにスケジュールするには、crontabを編集して、次のEDITOR=nano crontab -e
ようなエントリを追加します。
59 23 * * * osascript -e 'quit app "Mail"'; pmset sleepnow