web-dev-qa-db-ja.com

runit-supervise / okを開けません:ファイルが存在しません

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を実行しても違いはありませんでした。

助言がありますか?ここのどこかに足りないのですか?

8

問題は、少なくともUbuntu 12.04では、runitサービスのシンボリックリンクは、/-のように/ serviceではなく、/ etc/serviceの下に配置する必要があるということでした RunitのArchガイド

3

私の場合、サービスを停止した後、サービス構成から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

解決策を見つけるのにしばらく時間がかかったので、他の人の役に立つことを願っています。

4
alfredocambera

Ubuntu 18.04以降を実行していて、次のエラーが発生する場合

supervise/okを開けません:ファイルが存在しません

または、runsvdirが「grep」出力に表示されない場合は、次のコマンドを実行してrunit-systemdパッケージを実行してください

Sudo apt install runit-systemd

Ubuntu 18.04の場合、上記の指定されたすべての回答がうまくいきませんでした。次に、別のaskubuntuからこの解決策を見つけました question

これが役に立てば幸い

2
Kumaran
Sudo runsv /service/run/ &

その後

Sudo sv  start /service/run/

または

Sudo sv  up /service/run/
1
ibroheem

また、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

可能な解決策:

  • LVMからファイルシステムをアンマウントする
    umount /opt; lvremove /dev/mapper/lvm--local-opt
  • Runitサービスをより適切な場所に移動する
    update-service --remove /opt/my-service; mv /opt/my-service /etc/sv; update-service --add /etc/sv/my-service
0
Robert Steward