追加読書

追加読書

サービスファイルがたくさんあります/etc/systemd/service/myapp.*.service

各行には次の行があります。

User=Foo

...この.serviceファイルをすべて変更して、すべて次のように表示する必要があります。

User=Bar

これをどのように効率的に実行しますか?

答え1

誰がファイルを変更する必要があると言いますか? ☺

/etc/systemd/service/ -maxlength 1 -name 'myapp.*.service'
-riを読むとき
する
    printf '[サービス]\nUser=%s\n' 'バー' > ${i}.d/change-user.conf
完璧

これにより、元のサービス定義を復元するのが簡単になります。

rm - /etc/systemd/service/myapp.*.service.d/change-user.conf

これらすべてを作るファイルもちろん、これはサービス全体で動作するハードリンクを使用する簡単な練習です。

インストール -d /etc/systemd/temp
printf '[サービス]\nUser=%s\n' 'バー' > /etc/systemd/temp/change-user.conf
/etc/systemd/service/ -maxlength 1 -name 'myapp.*.service'
-riを読むとき
する
    ln /etc/systemd/temp/change-user.conf ${i}.d/change-user.conf
完璧

また、これはパッケージ提供とランタイム生成ユニットを使用してこれらのタスクを実行するための正式な方法です。あなたはする必要がありますいいえそのユニットファイルを変更してください。

追加読書

  • レナート・ペトリング(2013-10-07)。 systemd.unit。システムのマニュアルページ。 freedesktop.org.

答え2

使用sed:

sed -i 's/^User=Foo$/User=Bar/' /etc/systemd/service/myapp.*.service

関連情報