启动时启动 ngrok 和 python 应用程序

Starting ngrok and python app on startup

我目前 运行 ngrock and a python app concurrently on a specific port to text my raspberry pi, and have it respond accordingly to my message via Twilio。每次我的 raspberry pi 启动或重新启动时,我都需要使用 ./ngrok http 5000python /path/to/file/app.py 再次手动启动服务。为了避免这种情况,我按如下方式编辑了我的 cron 作业,并编写了一个名为 startService.py 的脚本。但是,它似乎无法正常运行,因为我在重启后没有收到短信回复。有什么想法吗?

计划任务:

# m h  dom mon dow   command
*/5 * * * * python /rasp/system/systemCheck.py
@reboot python /Rasp/system/twilio/startService.py &

startService.py

import os
os.system('/./ngrok http -subdomain=ABC123  5000')
os.system('python /Rasp/system/twilio/starter/app.py')

在多次尝试失败后,我似乎想出了一个可行的系统。我首先必须通过执行以下操作授权 root 用户使用我的 ngrok 帐户:

sudo su
./ngrok authtoken {{Insert Your Auth Token Here}}
exit

然后,我创建了 ngrokLauncher.sh 和 appLauncher.sh,如图所示。

ngrokLauncher.sh:

#!/bin/sh
# launcher.sh

cd /
./ngrok http -subdomain={{My Reserved Subdomain}} 5000 &
cd /

appLauncher.sh:

#!/bin/sh
# launcher.sh

cd /Storage/system/twilio/starter
python app.py &
cd /

然后,我修改了文件权限,使它们在启动时能够 运行 sudo chmod 755 ngrokLauncher.sh && sudo chmod 755 appLauncher.sh。最后,我将 Cron Jobs 编辑如下:

定时任务表:

# m h  dom mon dow   command
*/5 * * * * python /SKYNET/system/systemCheck.py
@reboot sh /Storage/ngrokLauncher.sh >/Storage/logs/cronlog 2>&1
@reboot sh /Storage/appLauncher.sh >/Storage/logs/cronlog 2>&1

然后在 运行 宁 sudo reboot 之后,系统重新启动,我收到了来自 python 应用程序的短信回复。

您没有提到您的 OS,假设您的 OS 使用 Upstart 进行引导,您可以创建 upstart 脚本来启动,然后您的进程将在引导时或进程终止时自动生成。对于 ngrok,创建一个文件 /etc/init/ngrok.conf

# Ngrok
#
# Create tunnel provided by ngrok.io

description "Ngrok Tunnel"

start on runlevel [2345]
stop on runlevel [!2345]

respawn
respawn limit 10 5
umask 022

exec /ngrok http -subdomain={{My Reserved Subdomain}} 5000

现在它会在开机时自动启动。如果您想手动启动,只需发出命令即可。

$ sudo service ngrok start

仅供参考,将您的二进制文件放在根目录 / 不是好的做法。

参考: http://notes.rioastamal.net/2016/05/starting-ngrok-automatically-at-boot.html