サービスを開始できませんでした


15

systemdサービスを作成しました:

[Unit]
Description=My service

[Service]
Type=forking
ExecStart=/bin/sh $HOME/theFolder/run.sh
Restart=on-failure

[Install]
WantedBy=multi-user.target
Alias=mine.service

/ etc / systemd / systemフォルダーに配置し、mine.serviceという名前を付けました。

私がsudo service mine startそれを実行すると、私に与えられます:

mine.service.Unit mine.serviceが見つかりませんでした

---更新-----

最初に実行するsudo systemctl daemon-reloadと、メッセージは表示されませんが、サービスは開始されません。


10
systemctl daemon-reloadユニットファイルの作成後に実行しましたか?
ヴィーランド

@Wieland:Hmm..Nowはメッセージを表示しません。しかし、まだ起動しません。
ジョージ

@don_crissti:ステータスはアクティブであると言いますが、スクリプト(ExecStart内)は実行されません。
ジョージ

適切な$ HOMEをどのように知るのでしょうか システムサービスに期待することは何ですか?
セルジュ

@Serge:Hmm ..では、どのように$ HOMEを使用できますか?
ジョージ

回答:


14

$HOMEスクリプトを実行しているユーザーのホームディレクトリを指します。Systemdサービスはrootで開始されるので、おそらくそれを試み/root/theFolder/run.shます。サービスファイルで絶対パスを使用します。

forkingオプションも設定されています。これは、自身をバックグラウンドにするプログラムに必要ですが、スクリプトはこれを行いますか?ほとんどの場合はそうではありません。もしそうでない場合は、このオプションを削除する必要があります。そうしないと、systemdはスクリプトが開始済みであると宣言するのを待ちます。

また、ホームディレクトリ内のスクリプトを指すシステムサービスファイルは推奨されておらず、セキュリティ上の問題がある可能性があります。これらはrootとして実行されるため、それらを変更できるユーザーは、潜在的にコンピューターへのrootアクセスを取得できます。これ/usr/local/binを停止するには、スクリプトをコピーして、rootのみが書き込み可能であることを確認することをお勧めします。サービスファイルのUser=およびGroup=オプションを使用して、権限のないユーザーとしてスクリプトを実行することもお勧めします。

ユーザーとして実行したい場合は、サービスファイルを入れて~/.config/systemd/user/起動/有効化することをお勧めしますsystemctl --user enable yourservice && systemctl --user start yourservice(注:rootではなくユーザーとして実行してください)。ユーザーサービスファイルの詳細については、こちらをご覧ください。


:スクリプトを/ usr / local / binに、サービスを/.config/systemd/userに入れます。サービスを有効にしようとすると、「余分な引数」が表示されます。systemctlを使用しようとすると、「失敗」と表示されます.. unit .. '、このようなもの。
ジョージ

試した完全なコマンドとより詳細なログを提供できますか フラグメントでデバッグするのは難しいです。
マイケルダフィン16

:$ HOMEパスを使用する解決策はありますか?スクリプトを/ usr / local / binに配置すると、$ HOMEへの相対パスが使用されるため、これを確認しHOME=$HOMEました。そして、最初の環境ファイルに配置しようとしました。しかし、サービスは開始できず、エラーは発生しませんでした。
ジョージ

1
ubuntuでsystemdを使用せずにsystemctlを使用する必要がありました。systemdを使用すると、「Excess Arguments」というエラーが発生しました
Alexander Mills

1
@AlexanderMillsあなたは正しい、systemctlとsystemdの正しいコマンドは答えの単なるタイプミスでした。
マイケルダフィン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.