我目前正在特定端口上同时运行ngrock和一个python应用程序来发送我的覆盆子pi,并让它通过Twilio对我的消息做出相应的响应。每次我的覆盆子pi启动或重新启动时,我都需要使用./ngrok http 5000
和python /path/to/file/app.py
再次手动启动服务。为了避免这种情况,我按如下方式编辑了我的cron作业,并编写了一个名为startService.py
的脚本。但是,它似乎没有正常运行,因为重启后我没有收到文本的答案。有什么想法吗?
的Cron:
# 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')
答案 0 :(得分:2)
您没有提及您的操作系统,假设您的操作系统使用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
答案 1 :(得分:0)
多次尝试失败后,我似乎想出了一个工作系统。我首先必须通过执行以下操作授权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:
crontab的:
# 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应用程序收到了对我的短信的响应。