1

我目前正在特定端口上同时运行ngrock和 python 应用程序来给我的树莓派发短信,并让它通过Twilio相应地响应我的消息。每次我的树莓派启动或重新启动时,我都需要使用./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 &

启动服务.py

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

2 回答 2

3

您没有提及您的操作系统,假设您的操作系统使用 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

于 2016-05-20T02:12:07.010 回答
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 作业:

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 应用程序对我的短信的响应。

于 2015-07-10T07:36:43.037 回答