Termux设置——服务自启动

这篇具有很好参考价值的文章主要介绍了Termux设置——服务自启动。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

用过termux的小伙伴会知道termux虽然模拟了能够运行linux许多服务,但是没有能像普通的Linux一样设置程序或服务的自启动。

这给我们日常使用带来了许多不便,当我们使用termux搭建一个网站或者云盘的时候,需要依赖mysql、nginx、php等其他服务时,每次启动软件后还要敲命令一个一个启动,效率极其低下!
那么可能你想问了,是否有办法能够让我们需要的服务随软件的启动而自动运行呢?答案当然是有的!

示例服务:test.sh

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

模拟一个真实服务,长期运行,每隔五秒打印一次日志信息。先给它赋予执行权限:chmod +x ~/test/test.sh

下面分享两种服务自启动方法。

1. termux-login.sh

Termux设置——服务自启动
先说一下这个网上好多教程所用的方法。

$PREFIX/etc/termux-login.sh文件会在每个shell会话启动时被执行一次,我们只需要将服务的启动命令追加到$PREFIX/etc/termux-login.sh中即可:

echo "nohup ~/test/test.sh > ~/test/test.log 2>&1 &" > $PREFIX/etc/termux-login.sh

termux-login.sh脚本被执行完毕才会进入shell会话,前台运行服务会造成阻塞,无法进入shell会话,所以这里使用了后台启动命令,并将日志信息重定向到了test目录下的日志文件中。

这样我们新开一个会话,test.sh就会被执行一次,那么问题就来了,如果我需要这个服务同时只存在一个怎么办?

方法是修改追加的命令,用pgrep做一个简单的判断,手动修改$PREFIX/etc/termux-login.sh

vim $PREFIX/etc/termux-login.sh

将刚刚那条追加的命令替换为:

if pgrep -x "nohup ~/test/test.sh > ~/test/test.log 2>&1 &" >/dev/null
  then
    echo "test服务运行中..."
  else
    nohup ~/test/test.sh > ~/test/test.log 2>&1 & 
    echo "filebrowser服务已开启..."
fi

这样就解决服务重复开启的问题了。好了,完结撒花,test服务用不到了,我们关了它:

pkill "nohup ~/test/test.sh > ~/test/test.log 2>&1 &"

然后打开一个新会话开始玩耍,,你又发现问题了,test服务它自己跟着新开会话复活了。。。

这咋办?加守护进程,再加判断条件?一环套一环,的确是能解决问题,但是,如果你需要开启n多个自启服务,这,,,不累吗?

所以,针对这个问题,Termux官方封装了一个termux-services工具,这就是我要说的第二个方法。

2. termux-services

Termux设置——服务自启动

首先奉上官方Wilki: https://wiki.termux.com/wiki/Termux-services

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

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

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

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

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

安装:

pkg install termux-services -y

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

①原生支持的服务

包名 进程服务名 默认使用端口 服务描述
apache2 httpd 8080 Apache Web Server HTTP Web Server
at atd   AT and batch delayed command scheduling utility and daemon at
bitcoin bitcoind   Bitcoin Core
busybox telnetd 8023 Remote terminal service Telnet
busybox ftpd 8021 FTP (File Transfer Protocol) FTP
cronie crond   Daemon that runs specified programs at scheduled times cron
emacs emacsd   Extensible, customizable text editor-and more EMACS
ipfs ipfs   A peer-to-peer hypermedia distribution protocol IPFS
libmosquitto mosquitto 1883 MQTT is a lightweight, publish-subscribe network protocol MQTT
lighttpd lighttpd 8080 Lighttpd Small webserver HTTP Web Server
lnd lnd   Lightning Network Daemon
mariadb mysqld 3306 MariaDB Community-developed fork of the MySQL from its original authors
mpd mpd   Music Player Daemon (MPD)
mpdscribble mpdscribble   MPD client which submits tracks being played
nginx nginx 8080 NGINX Web server HTTP Web Server
openssh sshd 8022 OpenSSH SSH
postgresql postgres 5432 PostgreSQL database PostgreSQL
privoxy privoxy   Privoxy is non-caching web proxy with advanced filtering capabilities HTTP Proxy
tor tor   The Onion Router anonymizing overlay network Tor
transmission transmission   BitTorrent client BitTorrent

上表中的服务安装时就会自动在$PREFIX/var/service/下生成自己的服务文件夹:
Termux设置——服务自启动
我们直接用命令管理这些服务即可。

②相关命令

这里以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

接下来创建执行脚本run:

vim $PREFIX/var/service/test_ato/run

脚本内容:

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

保存,赋予其执行权限:

chmod +x $PREFIX/var/service/test_ato/log/run

配置服务的输出日志

mkdir -p $PREFIX/var/service/test_ato/log
vim $PREFIX/var/service/test_ato/log/run

log/run中内容:

#!/data/data/com.termux/files/usr/bin/sh
svlogger="/data/data/com.termux/files/usr/share/termux-services/svlogger"
exec "${svlogger}" "$@"

保存,赋予其执行权限:

chmod +x $PREFIX/var/service/test_ato/log/run

此时,日志文件被重定向到了目录$PREFIX/var/log/sv/<服务名>中:
Termux设置——服务自启动

自启动服务测试

test.sh设为自启动:

sv-enable test_ato

重启Termux应用,此时test.sh已经开始运行,查看日志文件$PREFIX/var/log/sv/test_ato/current
Termux设置——服务自启动
已经开始稳定输出日志信息了。

一个简单的模板服务就写好了,可以根据这个模板来编写自己需要的服务。

 文章来源地址https://www.toymoban.com/news/detail-450104.html


 

快速导航
         👈 Termux个人云盘搭建——kodbox Termux公网ipv6访问 👉        

到了这里,关于Termux设置——服务自启动的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • docker服务器、以及容器设置自动启动

    查看已启动的服务 查看是否设置开机启动 设置开机启动 关闭开机启动 启动时加--restart=always 如果已经过运行的项目

    2024年02月12日
    浏览(73)
  • Linux elasticsearch设置为开机自启动服务

    说明: (1)“su es”为切换用户名,“es”为系统新建的用户名 (2)“/usr/local/elasticsearch-6.2.3”为el安装目录 具体el安装流程:请点击这里

    2024年02月13日
    浏览(31)
  • Docker服务以及容器如何设置设备开机自动启动

    如果碰到断电重启,在没有设置自动启动的情况下,我们所有应用(比如redis)都需要重新手动启动一遍,这样就非常麻烦,不能及时处理,所以本文来讲解一下如果设置自动启动,话不多说,直接开始。 使用docker run命令创建容器时没有添加参数 --restart=always ,导致的后果是

    2024年02月04日
    浏览(47)
  • 银河麒麟服务器操作系统设置网卡自启动

    操作环境:虚拟机 系统版本:Kylin-Server-10-SP2-x86-Release-Build09-20210524 问题现象 新安装的银河麒麟服务器操作系统,开机网卡不自启动,需要手动点击一下,才能启动网卡 现象图如下所示 解决方案 注:网卡名需要提前确认好,可以点击网络图标查看自己使用的是哪块网卡,以

    2024年02月06日
    浏览(214)
  • Gin 笔记(06)— 设置不同启动模式、优雅启动和关闭、运行多个不同端口的服务进程

    SetMode() 这个函数来设置运行的模式,有三种模式可以设置,分别为 gin.ReleaseMode gin.TestMode gin.DebugMode 正式发布时应该设置为发布模式。 运行结果: 我们可以使用 fvbock/endless 来替换默认的 ListenAndServe. 可以参考 #296 有更多的细节。 其它可选的方案 manners: A polite Go HTTP server th

    2024年02月06日
    浏览(80)
  • 服务器设置tomcat开机自启动(cmd命令行语句)

    1 找到tomcat安装目录,进入bin/文件夹下面,在此打开windows 命令行窗口。 2 输入 将tomcat注册成为windows服务,其中tomcatXXX为服务名。 3查看刚刚注册的服务 “我的电脑”-》右键管理 发现刚刚的服务是手动的,并不是自动的,而且无法通过界面修改启动方式。 4 命令行修改启动

    2024年02月13日
    浏览(53)
  • Termux的ssh使用方式(连接云服务器,ssh密钥登录和Termux互联)

     Termux作为强大的终端模拟软件,通过ssh可以轻松的连接到云服务器上,这里以连接阿里云服务器为例  一般在服务器运营商上购买的服务器都开启了远程连接服务。先在ternux上安装openssh。  安装完成后,在服务器控制台找到需要连接的服务器的ip地址,以47.115.217.154为例,

    2024年02月06日
    浏览(58)
  • 【openGauss数据库】---设置开机自启动openGauss数据库服务

    👈【上一篇】 💖The Begin💖 点点关注,收藏不迷路💖 【下一篇】👉 在统信uos-server-20-1060e操作系统上设置 openGauss 开机自启动 ,自定义服务的配置文件组成部分, 共分为[Unit]、[Service]、[Install]三个部分 。 🍀 2.1、进入系统目录 /usr/lib/systemd/system/ ---------》存放启动文件的

    2024年02月11日
    浏览(56)
  • centos中mongodb设置服务自启动并 允许远程IP访问

    安装mongodb参考 注意的是配置文件需要把 journal 设置为true fork设置为false 因为进程由systemd管理所有不需要fork进程。 制作为系统服务 创建MongoDB服务文件。运行以下命令创建服务文件/etc/systemd/system/mongod.service: vi /etc/systemd/system/mongod.service 设置MongoDB服务为自启动。运行以下命

    2024年02月07日
    浏览(41)
  • 【服务器】安卓手机使用Termux搭建web服务

      Yan-英杰的主页 悟已往之不谏 知来者之可追    C++程序员,2024届电子信息研究生 目录 概述 1.搭建apache 2.安装cpolar内网穿透 3.公网访问配置 4.固定公网地址 5.添加站点 Termux是一个Android终端仿真应用程序,用于在 Android 手机上搭建一个完整的Linux 环境,能够实现Linux下的许

    2024年02月06日
    浏览(70)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包