MacからAndroid端末を定期的に再起動して安定運用したいけれど手順が分からず戸惑っていませんか。
この記事を読むとADBの準備から実際のコマンド入力、Mac標準のスケジューラであるlaunchdを使った自動化まで、迷わず進められる具体的な手順が身につきます。加えて複数台管理やネットワーク接続時の落とし穴、ログの取り方といった実務で役立つコツも学べます。
| 項目 | 内容 |
|---|---|
| 独自コンテンツ1 | 実環境で動かしたコマンド一式とlaunchd用のplistテンプレートをそのまま使える形で提供します。 |
| 独自コンテンツ2 | USB接続とネットワーク接続の両方に対応する運用上のコツや複数台管理の手順を実践的に解説します。 |
| 独自コンテンツ3 | 安全に再起動するための事前チェック項目とログ取得方法、トラブル時の対処フローを具体例つきで紹介します。 |
まずは簡単な準備から始めて、手順通りに進めれば確実に自動再起動の仕組みが構築できます。作業は短時間で終わるので気軽に取り組んでみてください。
Android博士初めてでも大丈夫です。焦らず一つずつ進めれば確実に動くようになりますから、困ったときは落ち着いてここを読み返してください。
MacでADBを使ってAndroid端末の定期再起動をスケジュールする方法


手元のMacからAndroid端末を定期的に再起動する方法をやさしくまとめます。ADBを使えば端末を物理操作せずにリモートで再起動できるので、長時間稼働する端末の安定化にとても便利です。
ここでは毎日決まった時刻に動かすパターンと、一度だけ指定時刻に動かすパターンを扱います。実際に使う前にADBがMacにインストール済みで端末がUSBデバッグで接続承認されていることを確認してください。
手順はシェルスクリプトの作成と、macOS標準のlaunchdを使ったスケジュール登録が中心です。やさしい手順で進めるので、落ち着いて取り組んでください。
毎日決まった時刻にMacのlaunchdで再起動するパターン


毎日同じ時刻に再起動するには、再起動コマンドを呼ぶシェルスクリプトを作り、~/Library/LaunchAgentsにStartCalendarIntervalを含むplistを置いてlaunchdに登録します。launchdはmacOS標準の常駐スケジューラなので余計なソフトは不要です。
実務的なコツとしてはadbのフルパスを使うことと、スクリプトにログ出力を入れておくことです。手動でスクリプトを一度実行してadbが端末を見つけるか試すと安心して進められます。
Macのターミナルで再起動用シェルスクリプトを作る(adb rebootを記述)
ターミナルで新しいシェルスクリプトを作ります。先頭に#!/bin/bashを書き、adbのフルパスをwhich adbで確認してから/フルパス/adb rebootを記述してください。
chmod +xで実行権限を付けます。スクリプトは~/scriptsや~/binなど分かりやすい場所に置くと管理が楽になります。
ターミナルでスクリプトを実行して、端末が再起動するかを確認してください。問題があればadbのパスや接続状況を見直してください。
~/Library/LaunchAgentsにlaunchd用のplistを作成して時刻を設定する
~/Library/LaunchAgentsにcom.example.reboot.plistのようなファイルを作ります。LabelとProgramArgumentsにシェルスクリプトへのフルパスを指定します。
StartCalendarIntervalキーでHourとMinuteを指定すると毎日その時刻に動きます。ローカル時間で指定する点に注意してください。
ファイルはユーザーのLaunchAgentsに置きます。所有者や読み書き権限は通常のユーザーで問題ありません。
launchctlでplistを読み込みテストして自動実行を確認する
launchctl load ~/Library/LaunchAgents/com.example.reboot.plistで登録します。エラーが出たらplistの構文とパスを見直してください。
launchctl start com.example.rebootで即時起動を試せます。動かない場合はスクリプト側のログやadbのパスをチェックしてください。
log showやConsoleアプリで起動履歴を確認して、スクリプトが呼ばれたかを確かめると原因が分かりやすくなります。
一度だけ指定時刻にMacから再起動するパターン


一度だけ指定時刻に再起動したいときは、StartCalendarIntervalで時刻を指定したplistを一度だけ読み込み、動いたらアンロードして削除するのが手軽です。日次で残したくないときに便利なやり方です。
自動で後片付けしたい場合は、スクリプトの最後にlaunchctl unloadやファイル削除の処理を入れると、実行後に自動で消える仕組みが作れます。手動でアンロードする手順も後で示します。
一度だけ実行するplistを作成してlaunchctlで登録し、実行後に解除する手順
StartCalendarIntervalで希望の時刻を入れたplistを作り、LabelとProgramArgumentsにスクリプトを指定します。KeepAliveは通常不要です。
launchctl load ~/Library/LaunchAgents/com.example.once_reboot.plistで登録します。指定時刻に起動するのを確認してください。
動作確認後はlaunchctl unload ~/Library/LaunchAgents/com.example.once_reboot.plistでアンロードし、ファイルを削除して片付けます。スクリプト内で自動削除する方法も使えます。
Android端末単体で定期再起動をスケジュールする方法


端末単体で定期再起動を実現するには大きく分けて二つのやり方がある。ひとつはTaskerのような自動化アプリで時間トリガーから再起動命令を出す方法。もうひとつはTermux上でスクリプトとcronを使って再起動をスケジュールする方法でどちらもrootまたはADB許可が前提になる点に注意が必要です。
- Taskerを使う方法。GUIで設定できて細かい条件指定ができる点が魅力です。
- Termuxでスクリプトとcronを使う方法。スクリプトを自由に書けるため応用が効きます。
- 端末メーカーの再起動スケジュール機能を使う方法。対応端末が限られるので確認が必要です。
Taskerで端末内から定期再起動するパターン(rootまたはADB許可がある場合)


Taskerを使う場合は時間トリガーでプロファイルを作りタスク側で再起動処理を呼び出すのが基本です。再起動処理はRunShellアクションでroot権限を使ってrebootを実行するかSecureSettingsなどのプラグインで行います。
実運用で気を付けたいのは電池残量や充電中などの条件を追加することです。不要なタイミングで再起動するとトラブルになるので充電中のみや深夜帯のみといった制約を付けると安心です。
Taskerのプロファイル画面で時間トリガーを作成しRebootアクションを設定する
Taskerの新規プロファイルで時間トリガーを作成し再起動したい時刻を指定します。曜日や繰り返しの設定もここで行ってください。
タスクでRunShellアクションを追加し再起動コマンドをrootで実行する設定にします。SecureSettingsプラグインを使う選択肢もあります。
電池残量や充電中などの条件をタスクに追加して不要な再起動を防ぎます。安全な運用を優先してください。
Taskerで再起動をテストし履歴やlogcatで動作ログを確認する方法
数分後に実行するテストプロファイルを作り正常に再起動するかを確認します。失敗したらタスクの権限設定やコマンドを見直してください。
Taskerメニューの実行ログを開き該当プロファイルとタスクの履歴を確認します。ここでエラーや実行タイミングが確認できます。
詳細なシステムログが必要な場合はPC経由のADBや端末上のログ収集でlogcatを確認してください。再起動直前のログが手がかりになります。
Termuxでスクリプトとcronを使って再起動するパターン(rootが必要)


Termuxで行う場合は再起動を実行するシェルスクリプトを用意してcronで定期実行するのが基本です。こちらも再起動コマンドを実行するためにrootが必須になりAndroidのバージョンやSELinuxの状態で挙動が変わる点に注意してください。
運用上のコツはスクリプトをまず手動で実行して挙動を確認することとcronには十分なログ出力を組み込んでおくことです。ログがあれば問題発生時に原因特定がぐっと楽になります。
Termuxで再起動用スクリプトを作成しcrontabに登録して動作を確認する
Termuxにシェルスクリプトを用意し再起動処理を記述して実行権限を付けます。まずは手動でスクリプトを実行して期待どおりに動くか確認します。
Termux用のcronパッケージやcronieを導入してcrontabにスクリプトを登録します。登録後はcronが起動中かを確認しておきます。
登録後に近い将来の時刻で一度実行を待ち再起動が行われるかを確認します。ログ出力を確認して成功を確かめてください。
実体験に基づく応用 自動化の広げ方(MacとAndroidを連携)


MacとAndroidを連携して定期再起動を広げると運用負荷がぐっと下がります。手作業で回す煩雑さや人為的ミスが減るので安定度が上がります。実際に試して効果があった実践的なパターンをわかりやすく紹介します。
小さく始めて段階的に台数を増やすのが安全な進め方です。再起動の順序や待ち時間を調整することで意外なトラブルを避けられます。運用前にログとタイムアウト処理を整備しておくと後が楽になります。
- 単体をlaunchdで定期実行して安定性を確認する。
- Mac上でadbのdevices出力を使って接続を検出し順次rebootするスクリプトを運用に組み込む。
- ログ集約と再試行ロジックを入れて異常時に通知する。
Macから複数台のAndroidを順番に再起動する応用パターン


複数台を順番に再起動する場合は同時に全部を落とさないよう順次処理するのが基本です。Mac上でadbのdevices出力をパースしてシリアルごとにadb-s<シリアル>rebootを実行する流れが扱いやすいです。
再起動間に適切な待ち時間を入れて起動完了を待つこととオフライン端末はスキップしてログに残す実装が実用的です。最初は非稼働時間に短サイクルでテストしてから本番運用に移すと安全です。
Macのターミナルでadb devicesで接続を検出しループで順次adb rebootを実行するスクリプト例と注意点
adbのdevices出力をパースしてforループで各シリアルに対してadb-s<シリアル>rebootを順次呼び出す構成にする。
再起動直後は端末が一時的にオフラインになるため十分な待ち時間とタイムアウト処理を入れてください。
各端末の実行結果をログに残し失敗時は数回リトライしてアラートを上げる仕組みを入れると運用が楽になります。
よくある質問


- MacでADBが端末を認識しません
まずケーブルと端末のUSBデバッグが有効か確認してください。端末側で接続許可のポップが出たら許可してください。Macには公式PlatformToolsを入れてadbデーモンを再起動すると認識が改善することが多いです。
- 定期再起動のスケジュールはどう設定すればいいですか
Macではlaunchdを使う方法がおすすめです。再起動を行う簡単なシェルスクリプトを用意してlaunchdのplistで時刻指定すると安定して動きます。cronよりMacの起動タイミングでの扱いが分かりやすいので導入が楽です。
- 再起動でデータが消える心配はありますか
通常の再起動でストレージが消えることはありません。ただし開いているアプリの未保存データは失われる可能性があるので重要な作業は事前に保存するようにしてください。自動実行前に端末ユーザーへ通知する運用が安心です。
- 端末のバッテリーが少ないときはどうすればいいですか
電源が低い状態で再起動すると失敗することがあるので充電中のみ実行する条件を付けると安全です。シェルスクリプトでバッテリー残量をチェックして閾値未満ならスキップする仕組みを入れると運用が安定します。
- root権限は必要ですか
再起動だけならrootは不要です。adb経由の再起動コマンドで一般的な端末は問題なく再起動できます。特殊なリカバリ再起動などは別途権限や手順が必要になる場合があります。
まとめ


MacでADBを使ってAndroid端末の定期再起動をスケジュールする手順をまとめます。USBデバッグを有効にし、MacにADBを入れて端末を認識させるところから始めると余計なつまずきが減ります。再起動コマンドを用意してcronやlaunchdでスケジュールする流れが基本です。
現場では権限や接続の問題が起きやすいので、ADBのデバイス一覧で端末が表示されるか毎回確認してください。自動化後はログを残すと失敗時の原因追跡が楽になります。小さな間隔でテストしてから本運用に移すのがおすすめです。



最初は緊張するかもしれませんが、慣れるとメンテがぐっと楽になります。まずは短めの間隔でテストを回して、安全を確認してから定期化してください。
