vdir 実行: UNIX初期化方式サービス監督としてfromは、runit
特定のサービスが終了した場合に再実行するための素晴らしいツールです。ディレクトリの変更inotify
を監視します。ディレクトリのスクリプトを永久に実行します。
私は次の構造を持っています:
$ tree app
app
├── service
│ ├── run
│ └── supervise
├── replay
│ ├── run
│ └── supervise
└── run
├── run
└── supervise
私がしたいことは次のとおりです。これ(リンクで解決策を試しましたが失敗しました)app/run/run
:app/replay/run
su - user -c screen -S run<<EOF
[...]
# code
EOF
runsvdir
//で複数のインスタンスが実行されないようにするには、コードをブロック/待機する必要があります。
コードはコンテナからルートとして実行されますdocker
。ここではないsystemd
。
私は避けたいプロセスのPIDが期限切れになった複数のソリューションをテストしました。私は明らかな何かを見逃しています。
どんなアイデアがありますか?
- Debian 11 は来週まで ;)
- ルーニー2.1.2-41
コメント/編集:で実行/再生を強制的に生成しませんinit
。シェルスクリプト(bash)かもしれません。一度だけ実行する必要がありますscreen
。
答え1
その後、修正は次のようになりますdocker build .
。
docker exec -d -u mevatlave cont screen -d -m -S run ./run
docker exec -d -u mevatlave cont screen -d -m -S replay ./replay.sh
docker exec -it -u mevatlave cont screen -x run