Runitが起動しない、または管理対象アプリケーションのステータスが表示されない理由を理解しようとしています。 Ubuntu 12.04で実行されています。
/ service、/ etc/sv/myappを作成しました(実行スクリプト、構成ファイル、ログフォルダー、および実行スクリプトをその内部に含めて)。/service /から/ etc/sv/myappへのシンボリックリンクを作成します
私が走るとき
Sudo sv s /service/*
次のエラーメッセージが表示されます。
warning: /service/myapp: unable to open supervice/ok: file does not exist
私のグーグルの一部は、おそらくsvscanサービスを再起動するとこれを修正できる可能性があることを明らかにしましたが、それを強制終了してsvscanbootを実行しても違いはありませんでした。
助言がありますか?ここのどこかに足りないのですか?
問題は、少なくともUbuntu 12.04では、runitサービスのシンボリックリンクは、/-のように/ serviceではなく、/ etc/serviceの下に配置する必要があるということでした RunitのArchガイド
私の場合、サービスを停止した後、サービス構成からlockおよびpidを削除しました。
# stops the service
sv down serviceName
# deletes the 'pid' and 'lock' files
find -L /etc/service/serviceName -type f \( -name "pid" -o -name "lock" \) -delete
# starts the service
sv up serviceName
# verify service status
sv s serviceName
解決策を見つけるのにしばらく時間がかかったので、他の人の役に立つことを願っています。
Ubuntu 18.04以降を実行していて、次のエラーが発生する場合
supervise/okを開けません:ファイルが存在しません
または、runsvdirが「grep」出力に表示されない場合は、次のコマンドを実行してrunit-systemdパッケージを実行してください
Sudo apt install runit-systemd
Ubuntu 18.04の場合、上記の指定されたすべての回答がうまくいきませんでした。次に、別のaskubuntuからこの解決策を見つけました question
これが役に立てば幸い
Sudo runsv /service/run/ &
その後
Sudo sv start /service/run/
または
Sudo sv up /service/run/
また、LVMを介して別のファイルシステムにマウントされているディレクトリにサービスがシンボリックリンクされている場合、Runitの起動に問題があります。例えば、
$ readlink -f /etc/service/my-service
/opt/my-service
$ mount
...
/dev/mapper/lvm--local-opt on /opt type ext4 (...)
$ sv once my-service
warning: my-service: unable to open supervise/ok: file does not exist
可能な解決策:
umount /opt; lvremove /dev/mapper/lvm--local-opt
update-service --remove /opt/my-service; mv /opt/my-service /etc/sv; update-service --add /etc/sv/my-service