Запустите программу Python при загрузке / перезагрузке, на отдельном разделе в OpenWrt Linux - PullRequest
0 голосов
/ 23 октября 2019

В OpenWrt Linux я поместил скрипт запуска в папку /etc/init.d и включил его. Сценарий в порядке и выглядит следующим образом:

#!/bin/sh /etc/rc.common

# Automatically place an "S91canpy" symlink in /etc/rc.d/ once we enable it
# This means it will start right after /etc/rc.d/90openvpn
START=91

# This is what will run when this service starts
start() { 
    # Run the process in the background (&), and direct errors to a log file
    sh /user/start_everything.sh >/var/log/init_canpy.log 2>&1 &
}

# This is what will run when the service stops
stop() {
    echo "no stop function set up yet"
}

# This is what will run when the service restarts
restart() {
    # Run the process in the background (&), and direct errors to a log file
    sh /user/start_everything.sh >/var/log/init_canpy.log 2>&1 &
}

Сценарий /user/start_everything.sh, который он вызывает, выглядит следующим образом:

#!/bin/sh

# Run the "find_config_data.py" Python program 
/data/venv/bin/python3.6 /user/canpy/find_config_data.py

Проблема в том, что / data включенаотдельный раздел жесткого диска, поэтому init.d не может найти его. Я получаю следующее сообщение об ошибке:

line 4: /data/venv/bin/python3.6: not found

У моего основного раздела осталось только 20 МБ свободного места, поэтому я должен установить Python 3.6 и его библиотеки на раздел / data, который имеет 2,5 ГБпространство.

Как я могу заставить init.d найти мой двоичный файл Python в /data/venv/bin/python3.6? Я обязательно должен запускать эту программу Python каждый раз, когда Linux загружается / перезагружается. СПАСИБО !!

Ниже приведены настройки моего раздела:

root@FATBOX:/tmp/log# df -h
Filesystem                Size      Used Available Use% Mounted on
/dev/root               476.2M    456.0M     20.2M  96% /
devtmpfs                512.0K         0    512.0K   0% /dev
tmpfs                   247.7M    116.0K    247.6M   0% /tmp
tmpfs                   512.0K         0    512.0K   0% /dev
/dev/mmcblk0p3            2.7G     50.2M      2.5G   2% /data

1 Ответ

0 голосов
/ 23 октября 2019

Я нашел альтернативное решение, которое выполняет свою работу и гарантирует, что мои приложения продолжают работать (дополнительное преимущество).

Я планирую запускать скрипт проверки процесса каждую минуту в cron:

#!/bin/sh

# Checking if /user/canpy/app.py is running
ps | grep -v grep | grep /user/canpy/app.py
if [ $? -eq 0 ]; then
    echo "/user/canpy/app.py is running."
else
    # If it is not running, start it!
    echo "/user/canpy/app.py is not running. Starting it now"
    /data/venv/bin/python3.6 /user/canpy/app.py >/var/log/main_app_canpy.log 2>&1 &
fi

Вот crontab, расположенный в / etc / crontabs / root:

# Schedule check_running.sh to run every minute
* * * * * sh /user/check_running.sh >/var/log/check_running_canpy.log 2>&1 &

Ура, Шон

...