
RESTful サービス (Flask フレームワークを使用) を公開する Python スクリプトがあります。このサービスで実行したいのは、最新バージョンの Python スクリプトを複製し、main.py を起動することです。
明らかにinitレベル3で起動される可能性がありますが、init情報をどのように構成する必要があるかはわかりません。また、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.local
は通常、ブート サイクルの非常に遅い段階で実行されます。 これは、スタートアップ コードを配置するのに適した場所です。コードを実行する前に$1
の値を確認してください。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