termux系统服务

 

通过安装termux-services作为系统服务

安装服务 termux-services

pkg install termux-services -y

安装完成后会随软件开启自动运行。

用过Linux的朋友应该对runit并不陌生,runit是一个用于服务监控的UNIX软件,它提供以下两种服务:

  • 当服务器启动的时候启动定义好的服务。
  • 监控运行的服务,当服务发生意外中断的时候,自动重启服务。

而termux-services就是基于runit封装的,至此大部分runit功能及命令,并专门针对Termux特殊结构做了优化。

termux-services会主动监视$PREFIX/var/service/目录,会自动未目录下服务生成守护程序,当服务意外崩溃时,会第一时间将服务重新启动。

同时termux-services默认会后台启动服务,并将服务的输出流做重定向。

原生支持很多服务, 如sshd, crond

相关命令

# 这里以sshd为例:

sv-enable sshd       #sshd服务设为自启动
sv-disable sshd      #取消sshd自启动
sv down sshd         #停止sshd服务,并使本次Termux运行期间sshd自启动服务失效
sv up sshd           #启动sshd服务
sv status sshd       #查看sshd服务运行状态

自己编写启动脚本

_分割, 有可能不识别, 尽量使用-分割

创建启动脚本

$PREFIX/var/service/下创建子目录,子目录名即为自启动服务名,这里使用test-ato作为自启动服务名

#创建目录
mkdir -p $PREFIX/var/service/test-ato

#创建执行脚本
vim $PREFIX/var/service/test-ato/run

内容如下

#!/data/data/com.termux/files/usr/bin/sh
exec 2>&1
exec ~/test/test.sh

~/test/test.sh内容如下

#!/data/data/com.termux/files/usr/bin/sh
while true
do
    echo 'I am still here!'
    sleep 5
done
exit 0

创建日志

#创建日志目录
mkdir -p $PREFIX/var/service/test-ato/log
#创建软连接
ln -sf $PREFIX/share/termux-services/svlogger $PREFIX/var/service/test-ato/log/run

设置开机启动

sv-enable test-ato

重启termux

#查看状态
sv status test-ato

查看日志

tail -f $PREFIX/var/log/sv/test-ato/current

参考