3

コンピューターを再起動するように設計されたシェル スクリプトを実行するために使用している単純な launchd plist ファイルがあります。

<?xml vesion="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>com.sag95.restartscript</string>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/sag95/Desktop/Scripts/restartscript.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>300</integer>
</dict>
</plist>

スクリプト ファイルは、1 行の強制再起動コマンドです (パスワードは実際のファイルにあり、ここには配置されません)。

echo <password> | sudo -S shutdown -r now

を使用してplistファイルをロードしたら

launchctl load com.sag95.restartscript.plist

リストに表示されます (launchctl リスト)。現在、5 分ごとにスクリプトを実行するための plist ファイルがあります。5 分間の読み込みの後、スクリプトが最初に呼び出され、その後コンピューターが再起動されます。ログインすると、launchd plist ファイルがリスト (launchctl リスト) に表示されなくなります。30 分待ったが、コンピューターを再起動するために再度実行されませんでした。

私の質問は、再起動/強制再起動後に com.sag95.restartscript plist ファイルがアンロードされるのはなぜですか?

4

1 に答える 1

4

launchctl load現在のセッションでのみロードします。次回ログインすると、/System/Library/LaunchAgents/*.plist/Library/LaunchAgents/*.plist、およびから起動エージェントのリストが読み込まれます/Users/sag95/Library/LaunchAgents/*.plist。ファイルがこれらのフォルダーのいずれにもない場合、読み込まれません。

ログインしているときにのみ実行したい場合は、ファイルを に配置します/Users/sag95/Library/LaunchAgents。ログインしているユーザーに対して実行したい場合は、/Library/LaunchAgents代わりにそれを入れてください(ただし、この特定のスクリプトでは、パスワードはあなたのアカウントに対してのみ機能するため、これは役に立ちません).

于 2016-11-03T05:11:11.833 に答える