启动时启动 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 5000
和 python /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
我目前 运行 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 5000
和 python /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