/etc/systemd/systemにユニットファイルを含むサービスをブロックするにはどうすればよいですか?

/etc/systemd/systemにユニットファイルを含むサービスをブロックするにはどうすればよいですか?

カスタムユニットファイルを生成するための正しいパスである/etc/systemd/systemの下にテストサービスを作成しました。

[root@apollo system]# cat sample.service
[Unit]
Description=This is my test service
Wants=chronyd.service
After=chronyd.service

[Service]
Type=forking
ExecStart=/root/sample.sh

[Install]
WantedBy=multiuser.target chronyd.service
#RequiredBy=multiuser.target chronyd.service
#Alias=xyz
[root@apollo system]# pwd
/etc/systemd/system
[root@apollo system]#

「systemctl daemon-reload」を実行して、systemdが認識していることを確認しました。サービスを停止/開始することもできます。

ブロックしようとすると、次のエラーが表示されます。

[root@apollo system]# systemctl mask sample.service
Failed to execute operation: File exists
[root@apollo system]#

これは、systemdが次のようにシンボリックリンクを作成しようとするためです。

ln -s /dev/null /etc/systemd/system/sample.service

Sample.service が /etc/systemd/system にすでに存在するため、systemd が "ln -fs" を使用しないと、コマンドは失敗します。

これは/etc/systemd/system?以下に生成されたユニットファイルをブロックできないことを意味します。

example.serviceを/usr/lib/systemd/systemに移動しようとしました。

誰でもこれを経験しましたか?これがバグだと思いますか?

ベストアンサー1

/etc/systemd/systemまず、サービスファイルを削除しないと、サービスファイルを含むサービスをブロックできません。これは意図的な設計によるものです。

あなたできる 障害を負うほとんどの場合、そのサービスを使用すると、systemctl disable servicename.serviceそのサービスをブロックするのと同じ効果があります。

systemd 作成者の投稿3つの終了レベルstopsystemd、およびの違いのdisable詳細。mask

おすすめ記事