指定した時間にMacを強制的にシャットダウンするにはどうすればよいですか?


19

指定した時間にコンピューターを強制的にシャットダウンする自動シャットダウンアプリを探しています。

これの最も重要な部分は、シャットダウンをキャンセルできないようにすることです(プロセスが非常に面倒な場合を除く)。


「アプリ」とはどういう意味ですか?GUIプログラムである必要がありますか、それとも起動しますか(以下で提案します)。GUIアプリを実行する場合、何をしたいですか?実行時にコンピューターをシャットダウンする時間を要求しますか?
TJルオマ

回答:


25

さて、前回の答えにさらに進んで、cron(UNIXスケジュールサービスに組み込まれている)を取得して、スケジュールされたシャットダウンコマンドを実行する方法を説明します。

ルートとして実行され、強制されます。

  • ターミナルを開きます(/アプリケーション/ユーティリティ/ターミナル)
  • 入力 sudo crontab -e

ログインパスワードを入力し、Enterキーを押す必要があります。

これで、テキストエディター(vim)になります。次のキーストロークを慎重に入力します。

  • i1回押す(これにより、テキストを入力できます)

毎日午前2時にマシンをシャットダウンしたい場合、次のように入力します。

* 2 * * * /sbin/shutdown -h now

毎日午前2:30にマシンをシャットダウンする場合は、次のように入力します。

30 2 * * * /sbin/shutdown -h now
  • これを入力したら、を押します esc
  • 次に、shift+ z shift+を押しzます(大文字の「z」を2回押すと、変更が書き込まれ、エディターが終了します)

これで、開始したコマンドラインに戻るはずです。

できました!


sudoそこに置く必要はありませんか?それがおそらくハングアップする原因になることは知っていますが、実行するにはrootである必要があると確信していますshutdown
-daviesgeek

例外は必要ありません。それは驚くべき答えであり、特に私があなたの無礼に答えた後、非常に喜んでいます。ご協力ありがとうございます
ハリー

3
@daveisgeek-あなたはまったく正しいですが、crontabをsudoで起動することに注意してください。これは、ルートのcrontabを編集しているため、スケジュールされたコマンドはすべてそのユーザーとして実行されることを意味します。
マカコ

ねえ、私はこれをしました、そして、指定された時間に、このコンピューターは10分でシャットダウンするというダイアログを受け取りましたか?そして、キャンセルするように求められます。それがcronの結果なのか、それとも私がやった省エネの結果なのかはわかりません。cronのことは、キャンセルダイアログなしで強制的にシャットダウンすることになっていますか?
ハリー

3
shutdownは、/sbinおそらくcronのデフォルトの$ PATHにありません。修正するには、sudo crontab -eもう一度操作を行い、dd行を削除するように入力して(ファイルが上記のリンクのようになっていると仮定して)、行をとして再入力し30 22 * * * /sbin/shutdown -h nowます。
nohillside

13

ただし、キャンセルできます:


停止yymmddhhmm

shutdown -h 1109211555

4分で停止します。

shutdown -h +4

/Library/LaunchAgents/me.lri.forceshutdown.plist

<?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>Label</key>
    <string>me.lri.forceshutdown</string>
    <key>ProgramArguments</key>
    <array>
        <string>shutdown</string>
        <string>-h</string>
        <string>now</string>

    </array>
    <key>StartCalendarInterval</key>
    <dict>
        <key>Hour</key>
        <integer>23</integer>
        <key>Minute</key>
        <integer>0</integer>
    </dict>
</dict>
</plist>

plistが通常のユーザーによって所有されている場合、それをロードしようとするとエラーになりますlaunchctl: Dubious ownership on file (skipping)

sudo chown root /Library/LaunchAgents/me.lri.forceshutdown.plist

エージェントは、ログアウトして再度ログインするか、次の方法でロードできます。

sudo launchctl load /Library/LaunchAgents/me.lri.forceshutdown.plist

sudo crontab -e

`08 16 * * * /sbin/shutdown -h now`

これにより、通常の非強制シャットダウンが実行されます。

osascript -e 'tell app "System Events" to shut down'

/ Library / LaunchAgents /のlaunchdエージェントにシャットダウンコマンドを追加すると、機能せず、「コンソール」は「shutdown:NOT super-user」をログに記録します。おそらくこれは/ System / Library / LaunchAgentsで機能するはずです(ただし、そこに物を置く必要はありません:-))通常のシャットダウンだけが必要なので、osascriptを使用して〜/ Library / LaunchAgentsに入れました/bla.shutdown.plist。うまくいきました。
commonpike

ただし、<code> osascript -e 'app "Finder"でシャットダウンする "</ code>を使用する必要がありました
-commonpike

これが唯一の正しい答えです。(私の意見)
CousinCocaine 14

9

これは、[ システム環境設定]> [省エネルギー]> [スケジュール]でスケジュールできます。これが強制シャットダウンを開始するかどうかはわかりません。試してみる必要があります。ただし、これはスケジュールされた電源の切断/自動化を自動化する組み込みオプションです。

  • 端末コマンドでシステムを強制的にシャットダウンすることもできます(rootが必要です):

    シャットダウン-h今

    そのコマンドをlaunchdまたはcronのスケジュールされたタスクに入れることができます。チェックアウトこの記事をこれら2つのサービス上ではるかに多くの情報のため。

  • iWannaSleepという名前の適切なアプリケーションをチェックアウトすることもできます(これにより強制的にシャットダウンされるかどうかはわかりません)。


何...???アプリを探しています。
ハリー

2
あなたは恩知らずに見えたくないかもしれませんが、私の答えをもう一度読むと、私はアプリをお勧めしていることがわかります。
マカコ

iWannaSleepは、人々がGoogleで最初に推奨する結果であり、私が望んでいることをしません。そして、コンピュータをシャットダウンするためのUnixのことを学ぶことを勧めていますか?
ハリー

3
組み込みのツールを使用して目的を達成するための効果的な方法であるため、お勧めします。あなたのニーズに合ったアプリケーションが見つからない場合は、私の提案に沿って何かに目を向ける必要があるかもしれません。
マカコ

1
Energy Saver»スケジュールは適切な答えではありません。シャットダウンの10分前にユーザーにプロンプ​​トを表示し、プロセスのキャンセルを提案するためです。
TJルオマ

3

shutdown直接使用して、将来の任意の時点でシャットダウンをスケジュールできます。

shutdown -h time

ここで、timeは、+ numberまたはyymmddhhmmの2つの形式のいずれかで将来の時刻を指定します。ここで、年、月、および日は現在のシステム値にデフォルト設定できます。最初の形式はシステムを数分で停止し、2番目の形式は指定された絶対時間に停止します。


2
cd ~/Downloads/

curl --remote-name http://dl.dropbox.com/u/18414/ase/com.tjluoma.forceshutdown.plist

#下記の注を参照

sudo mv com.tjluoma.forceshutdown.plist /Library/LaunchAgents

sudo chown root:wheel /Library/LaunchAgents/com.tjluoma.forceshutdown.plist

sudo launchctl load /Library/LaunchAgents/com.tjluoma.forceshutdown.plist

注意:

書かれているように、plistはコンピューターを毎日午後11時(現地時間)にシャットダウンします。

時間を変更する場合は、テキストエディターでスクリプトを編集します。ここで抜粋した時間と分のキーを変更します。

<dict>
    <key>Hour</key>
    <integer>23</integer>
    <key>Minute</key>
    <integer>0</integer>
</dict>

(24時間の使用に注意してください)


2

より良い定期的なシャットダウン

スケジュールされた時間にMac安全にシャットダウンする場合は、Power Managerを検討してください。アプリケーションにプロセスをブロックさせずにうまくシャットダウンします:

  • すべてのアクティブなユーザーに十分な通知が与えられます。
  • シャットダウンが開始される少し前に、大きな警告が表示されます。
  • 実行中のアプリケーションはうまく終了するように求められます。
  • niceリクエストを無視するアプリケーションは、より確実に終了します。
  • Macが最終的にシャットダウンする前に、ログアウトは完了しません。

不正なアプリケーションまたはプロセスがこれらのステップをブロックすることは非常に困難です。

何故なの shutdown

を使用shutdownすると、グラフィカルアプリケーションを含むMac上のすべてのプロセスが強制終了されます。多くのアプリケーションでは、これは積極的な動作であり、状態やデータを保存する機会をアプリケーションに提供しません。

スケジュールアシスタント

Power Managerには、スケジュールにシャットダウンするためのSchedule Assistantタスクが含まれています。

Power Manager-毎日のタスクの電源を切る

開示:Power Managerを作っている会社と仕事をしています。


0

ありがとう、私は今何をしますか?
ハリー

SendAppleEventToSystemProcess(kAEShutDown)を使用してから、killall -u usernameコマンドを使用してすべてのアプリを強制終了できます(キャンセルできないようにするため)。タイマークラスを確認することもできます:developer.apple.com/library/ mac /#documentation / Cocoa / Reference /…
サマンサカタニア

1
すばらしい記事ですが、OPはcronまたはlaunchdの使用について口を閉ざしていましたが、この問題に対する彼自身の解決策をコーディングしようとしているとは思えません。
マカコ

1
これは理論的には質問に答える可能性がありますが、答えの重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
daviesgeek
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.