2016-11-25 12 views
2

私はinitdを使ってsystemdに変換するアプリケーションを持っています。 initdスクリプトは "myscript.bash start"の実行に使用されましたが、ユーザーは "myscript.bash start"を実行することもできます。ユーザーが "myscript.bash start"を実行すると、systemctl(それ自体が "myscript.bash startup"を起動します)が実行され、サービスが開始されます。 (これは曖昧なことですが、私は知っています - myscript.bashの内容のバージョン履歴を保持することですが、ユーザーはシステムの使い方をシステムで開始できるようにするため、systemctlへの切り替えは不可視です)。systemdサービスのためにstdout/stderrをコンソールに送ります

以前は、ユーザーがmyscript.bashを実行した場合、スタートアップがどのように進んでいたかについてコンソールに一連のアップデートがありました。これで情報はコンソールに送られません。私は、物事のカップルを試した中で最も有望なのttyにStandardOutput &はStandardErrorを設定しているように見えた:

StandardOutput=tty 
StandardError=tty 
ExecStart=/bin/bash -c './myscript.bash startup &' 
ExecStop=/bin/bash -c './myscript.bash shutdown' 

しかし、私はこのエラーを取得する:

systemd[20694]: Failed at step STDOUT spawning /bin/bash: Inappropriate ioctl for device 

私はこれを見てきました:How to Pipe Output to a File When Running as a Systemd Service? (これは私にStandardOutput =を試してみるというアイデアを与えてくれましたが、ファイルに書き込むという目標があり、ユーザのコンソールに出力しようとしています)。

これは、ユーザーが直接起動するのではなく、systemctlを実行しているスクリプトがあるためですか?これを行う方法はありますか?

答えて

2

同様のことをやりたかったので、StandardOutput=journal+consoleを設定してみました。 FWIWこれは関連するシステム文書https://www.freedesktop.org/software/systemd/man/systemd.exec.htmlです。

あなたの場合、TTYPathオプション、特にsystemdのデフォルト値とシステムのデフォルト値を見たいと思っています。 HTH。

+0

このリンクは質問に答えるかもしれませんが、答えの本質的な部分をここに含めて参考にしてください。リンクされたページが変更された場合、リンクのみの回答は無効になります。 – Marusyk

+0

私はjournal + consoleで希望の結果を得られません。 「コンソール」はシステムコンソール、つまりマシンに接続されているモニターを意味するのでしょうか、それともsystemdを実行したユーザーセッションを意味していますか?私の場合、私はマシンに流し込まれていて、systemdを実行しています。私は、私のsshセッションでExecStartの出力をリアルタイムで見たいと思っています。 – papercrane

関連する問題