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가 만료된 여러 솔루션을 테스트했습니다. 나는 분명할 수 있는 뭔가를 놓치고 있습니다.
어떤 아이디어가 있나요?
- 데비안 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