init.d как запустить службу в init.d, когда сеть полностью работает?

init.d как запустить службу в init.d, когда сеть полностью работает?

У меня есть скрипт python, который предоставляет RESTful-сервис (используя фреймворк flask). Я хотел бы, чтобы этот сервис клонировал новейшую версию скрипта python, а затем запускал main.py.

Мне ясно, что он может быть запущен на уровне инициализации 3, однако я не уверен, как именно должна быть настроена информация об инициализации, а также не уверен, можно ли обновлять crontab с помощью

sudo update-rc.d myservice enable 3

на самом деле в скрипте myservice содержится что-то вроде:

#!/bin/sh
rm -fR /home/pi/myservicedir
git clone https://repo/code.git /home/pi/myservicedir
cd /home/pi/myservicedir
python main.py

решение1

Ваш скрипт не является правильным init.dскриптом. Возможно, в нем есть файл шаблона, /etc/init.dкоторый вы можете использовать для создания своего стартового скрипта. В противном случае просмотрите некоторые другие скрипты в , /etc/init.dчтобы найти шаблон, используемый вашим дистрибутивом.

В качестве альтернативы, rc.localis обычно запускается очень поздно в цикле загрузки. Это было бы подходящим местом для размещения вашего кода запуска. Проверьте значение $1is startперед запуском вашего кода.

Серверы запускаются в порядке, указанном в /etc/rc3.d. Сначала запускаются скрипты kill Kв лексическом порядке, затем запускаются скрипты start Sв лексическом порядке. Если вы хотите быть уверены, что все запущено, используйте порядок запуска 99.

Ваш дистрибутив должен иметь метод установки и удаления ссылок в rc#.dкаталогах. В вашем случае это, по-видимому update-rc.d, . Обычно это контролируется строками комментариев в верхней части скрипта init.d.

Должны быть manстраницы с описанием программ и файлов, которые вам нужны. Попробуйте запустить man update-rc.dи man -k init.

решение2

Укажите $network, например так:

#!/bin/bash                                                          
### BEGIN INIT INFO                                                  
# Provides: mountftp                                                 
# Required-Start: $remote_fs $syslog $network                        
# Required-Stop: $remote_fs $syslog $network                         
# Default-Start: 2 3 4 5                                             
# Default-Stop: 0 1 6                                                
# Short-Description: Mount disk2                                     
# Description: Mount disk2                                           
### END INIT INFO

Связанный контент