私は iPad を使ってリモートでアプリを開発し (iMac に戻ってテストします)、コンピューター上のファイルに他の小さな変更を加えています。これまでは iOS と iMac 用の TeamViewer を使用していましたが、Windows 7 マシンから iMac にアクセスしようとしたときまではうまく機能していました。しかし、あるとき TeamViewer がクラッシュしました。
リモート プログラムが失敗したときに Mac を再起動する方法を探しています。これを行うことができる Applescript はありますか?
また、リモート再起動をサポートする互換性のある iOS アプリを備えた VNC プログラムはありますか?
答え1
TeamViewer を再起動するために再起動する必要はありません。launchd
プロセスを監視し、クラッシュした場合に再起動することができます。
まず、実際の実行可能ファイルを特定する必要があります。ターミナルを開いて、TeamViewer バンドル内を調べます。実行可能ファイルはおそらく にあります/Applications/TeamViewer.app/Contents/MacOS/TeamViewer
が、状況によって異なる場合があります。正しいパスを見つけたかどうかを確認するには、ターミナルに入力します。TeamViewer が起動する場合は、おそらく正しいパスが見つかります。または、TeamViewer の実行中にアクティビティ モニターを開き、TeamViewer プロセスを特定して、ツールバーの [検査] をクリックします。次に、[開いているファイルとポート] タブで、実行可能ファイルはおそらく の後の最初または 2 番目のエントリとしてリストされます/
。
追跡するプログラムがわかったら、launchd
プロパティ リストを作成できます。これは XML ファイルなので、お気に入りのテキスト エディターで作成することも、Mac OS X 開発ツールにインストールされているプロパティ リスト エディターを使用することもできます。次のものを作成します。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>some.meaningful.name</string>
<key>OnDemand</key>
<false/>
<key>ProgramArguments</key>
<array>
<string>/path/we/identified/earlier</string>
</array>
</dict>
</plist>
これを に保存し~/Library/LaunchAgents/some.meaningful.name.plist
、ターミナルを開いて以下を実行します。
launchctl load ~/Library/LaunchAgents/some.meaningful.name.plist
これにより、launchd はアイテムをロードして、指定されたプログラムを監視し、何らかの理由で終了した場合は再起動します。これは、ユーザーがログインしている場合にのみ実行されます。起動時に実行するには、plist を に配置し/Library/LaunchDaemons/some.meaningful.name.plist
、キー/値のペアを追加してUserName
、 load の実行時にGroupName
を使用します。アイテムを削除するには (たとえば、TeamViewer を本当に終了する必要がある場合)、上記のコマンドの load を unload に置き換えるだけです。sudo
launchd
あるいは、リンゴンlaunchd へのグラフィカル インターフェイスが提供され、より簡単になる可能性があります。
答え2
iMac でタスクを設定して、TeamViewer プロセスの存在を確認し、見つからない場合は再起動することもできます。しかし、マシン全体を再起動するのではなく、プロセスだけを再起動したらどうでしょうか?
答え3
コマンドラインに慣れているなら、これはかなり簡単です。iOS 用の SSH クライアントは多数存在します。共有設定パネルから「リモート ログイン」を有効にする必要があります。
これが完了し、適切なネットワークの細かい点が処理されたら、再起動するために必要なのは、iMac に SSH で接続して を実行することだけです$ sudo shutdown -r now
。これにより、マシンが再起動します。TeamViewer を起動して実行するために必要なことがこれだけであれば、問題なく動作するはずです。
プロセスを再起動することを提案した人もいます。繰り返しになりますが、TeamViewer をアクティブ化するために必要なのはアプリケーションを起動することだけだと仮定すると、まず、 などのコマンドで既存のハングしたプロセスを強制終了し$ sudo killall TeamViewer
、 または同様のコマンドでアプリケーションを再起動する必要があります$ open /Applications/TeamViewer.app
。