快轉到主要內容

管理自動啟動的服務,Termux-services & Termux:Boot用法

分類   智慧型手機 Termux教學
標籤   Runit
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

Manage auto-startup services in Termux.

這裡分享兩個Termux擴充功能,第一個是Termux-services,管理啟動Termux APP之後的服務。第二個是Termux:Boot設定Android開機後,自動啟動Termux的服務。

為什麼你會需要Termux-services?

想要在Termux開關服務,設定開啟APP後自動啟動服務,但Termux沒有Systemd,難道只能將自動啟動的服務寫在~/.bashrc~/.profile,要殺掉行程再用kill指令停止嗎?

這個時候Termux-services就是一個不錯的工具。

Termux-services讓你用一組指令來控制服務的執行,讓你能夠自由啟動與關閉服務,對需要常駐程式(daemon)的程式來說十分有用,例如sshd、apache2、bitcoin能透過Termux-services,自動在開啟Termux APP之後啟動。

Termux-services使用「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

# 開啟APP後自動啟動 
sv-enable sshd

# 取消開啟APP後自動啟動 
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 APP後自動啟動
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

參考資料
#

相關文章

Termux proot無法使用systemctl指令的解決方案
分類   智慧型手機 Termux教學
標籤   Systemd Proot-Distro Chroot OpenRC Runit
Android免刷機跑postmarketOS與Phosh桌面(Termux proot)
分類   智慧型手機 Termux教學
標籤   PostmarketOS Termux GNOME KDE Plasma PinePhone
淺談Termux檔案管理,將Linux環境的檔案與Android共享
分類   智慧型手機 Termux教學
標籤   Termux

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。