メインコンテンツへスキップ

Termux-servicesとTermux:Bootで自動起動サービスを管理する

·
カテゴリー スマートフォン Termuxチュートリアル
タグ Runit
目次

Manage auto-startup services in Termux.

ここでは2つのTermux拡張機能を紹介します。1つ目はTermux-servicesで、Termuxアプリを起動した後のサービスを管理します。2つ目はTermux:Bootで、Androidの起動後にTermuxのサービスを自動起動するよう設定します。

なぜTermux-servicesが必要なのでしょうか。

Termuxでサービスを起動・停止したい、アプリを開いた後にサービスを自動起動したい。しかしTermuxにはSystemdがありません。自動起動したいサービスを~/.bashrc~/.profileに書き込み、停止したいときはプロセスを探してkillコマンドで止めるしかないのでしょうか。

こういう時にTermux-servicesは便利なツールになります。

Termux-servicesを使うと、一連のコマンドでサービスの実行を制御でき、自由にサービスを起動・停止できます。常駐プログラム(daemon)を必要とするソフトウェアには特に便利です。たとえばsshdapache2bitcoinなどはTermux-services経由で、Termuxアプリを開いた後に自動起動できます。

Termux-servicesは「runit」を使ってシステムサービスを管理します。runitは非常にシンプルなinitサービスマネージャーで、現在これを採用しているLinuxディストリビューションは少数です。runitを使うLinuxディストリビューションといえば、有名なのはArtix LinuxとVoid Linuxあたりでしょう。

まずTermux-serviceの使い方を紹介し、その後でTermux: Bootの使い方を説明します。

1. Termux-servicesの自動起動
#

  1. Termux-servicesパッケージをインストールします。
pkg install termux-services
  1. Termuxは一部のパッケージをインストールする際、runitのサービスファイルも一緒にインストールします。すべてのサービスファイルは$PREFIX/var/service/svにあります。

  2. たとえばopensshパッケージをインストールすると、Termux-servicesはSSHDのサービスファイルを自動で用意します。$PREFIX/var/service/sv/sshd/runはサービス起動後に実行するコマンドを定義し、$PREFIX/var/service/sv/sshd/downはサービス停止後に実行するコマンドを定義します。

  3. SSHDサービスを起動・停止するには、以下のコマンドを使います。

# 起動
sv up sshd

# 停止
sv down sshd

# アプリ起動後に自動起動
sv-enable sshd

# アプリ起動後の自動起動を解除
sv-disable sshd
  1. 同じ要領で、Termux起動後に他のプログラムを実行したい場合は、サービスファイルを作成します。スクリプトを書く際はrunit公式のテンプレートを参照してください。ここでは自作スクリプトを実行する例を示します。
# 内容を編集
echo "echo 'Hello world' ">> ~/run.sh
chmod +x ~/run.sh

# サービスファイルを追加
vim $PREFIX/var/service/sv/myscript/run

# 以下を記入:
bash ~/run.sh

# Termuxアプリ起動後に自動起動するよう設定
sv-enable myscript

2. Termux:Bootで起動時に自動起動
#

Termux:Bootは、Androidシステムが起動した後に、あなたが書いたスクリプトを自動で実行します。

実はTermux-serviceと組み合わせなくても使えます。Termux:BootはTermuxを呼び出して任意のコマンドを実行できます。ただ、システムサービスは集中管理した方がよいと思います。つまり構成としては、まずTermux-servicesで実行したいサービスを追加し、その後Termux:BootでTermuxを自動起動します。そうすれば、自分で書いたサービスもすべて一緒に起動します。

  1. Termux: Boot APKをインストールします。

  2. アイコンをタップして一度起動します。これで起動後に自動起動するようになります。

  3. Termuxでディレクトリを作成し、起動時スクリプトを追加します。

mkdir -p ~/.termux/boot/

vim ~/.termux/boot/run.sh
  1. 以下の内容を記入し、起動後にrunitのすべての自動起動サービスを実行するよう設定します。
#!/data/data/com.termux/files/usr/bin/sh
termux-wake-lock
. $PREFIX/etc/profile

参考資料
#

関連記事


最後までお読みいただきありがとうございます。本サイトでは公開コメント欄を設けていません。私はソーシャルな反応やアクセス数を追い求めるためではなく、自分の考えを誠実に探求するために文章を書いています。記事を丁寧にお読みいただいたうえで、ご感想やご意見をお寄せいただければ幸いです。誤字・誤り・技術的な問題などを見つけた場合、またはフィードバックを共有したい場合は、Aboutページに記載しているメールアドレスまでお気軽にご連絡ください。