web-dev-qa-db-ja.com

runitでログを記録しようとすると、「supervise / okを開くことができません」が返されるだけです。

VagrantのDebian7.4にrunitをインストールしました。

実行スクリプトは機能していますが、service/pants/log /ディレクトリを作成すると、次のエラーが発生し始めます:unable to open supervise/ok。サービスは引き続き実行されますが、何もログに記録されません。

2つの異なるサービスを試しましたが、どちらも同じ問題があります。

さまざまなサービス/パンツ/ログ/実行スクリプト(主にsvlogdを使用)を試しましたが、すべてのアクセス許可(a + rwx)を変更しようとしました。ログを保存するディレクトリが存在し、同じアクセス許可があります。

コマンドラインから直接svlogdを実行すると、期待どおりに機能します。

以下のbashログは、/etc/service/pants/_logの名前を/etc/service/pants/logに変更し、再び/etc/service/pants/_logに戻すとどうなるかを示しています。

root@vwb-debian-wheezy:/etc/service# sv s pants/
run: pants/: (pid 29260) 44931s
root@vwb-debian-wheezy:/etc/service# mv pants/{_,}log/
root@vwb-debian-wheezy:/etc/service# sv s pants/
run: pants/: (pid 29260) 44963swarning: pants/: unable to open supervise/ok: file does not exist
; run: log: (pid 29260) 44963s
root@vwb-debian-wheezy:/etc/service# cat pants/log/run
#!/bin/sh

exec svlogd -ttt /var/log/service/pants/

root@vwb-debian-wheezy:/etc/service# ll pants/
total 12
drwxrwxrwx 2 root root 4096 Jul  3 07:00 log
-rwxrwxrwx 1 root root  442 Jul  3 06:58 run
drwxrwxrwx 2 root root 4096 Jul  2 18:59 supervise
root@vwb-debian-wheezy:/etc/service# ll /var/log/service/
total 8
drwxrwxrwx 2 root root 4096 Jul  2 16:55 pants
root@vwb-debian-wheezy:/etc/service# mv pants/{,_}log/
root@vwb-debian-wheezy:/etc/service# sv s pants/
run: pants/: (pid 29260) 45105s
2
Rudolf Vavruch

/etc/sv/pants/ではなく/etc/service/pants/runファイルを作成します。

次に、/etc/serviceから/etc/sv/pantsにシンボリックリンクを作成して、サービスをアクティブ化する必要があります。

ln -s /etc/sv/pants /etc/service/

/etc/serviceで直接ファイルを作成することはサービスに対してのみ機能しますが、ロギングを使用する場合にも問題が発生するようです。

/etc/service/のシンボリックリンクを削除すると、サービスを非アクティブ化できます。

5
Rudolf Vavruch

Debianインストールの場合、twoディレクトリがあります:/etc/serviceおよび/service。サービスを効果的に制御するには、それらは多かれ少なかれ互いの鏡像である必要があります。あなたの例では、サービスpantsの場合、シンボリックリンク/etc/service/pantsとシンボリックリンク/service/pantsがあり、それぞれが/etc/sv/pantsを指している必要があります。 「チート」して/service/etc/serviceへのシンボリックリンクにして同じ効果を得ることができますが、その変更の完全な影響についてはまだわかりません。

2
Avery Payne

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

監視/ OKを開くことができません:ファイルが存在しません

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

Sudo apt install runit-systemd

Ubuntu 18.04の場合、上記で指定したすべての回答が機能しませんでした。その後、別のaskubuntuからこの解決策を見つけました 質問

これがお役に立てば幸いです

1
Kumaran