サービスファイルがたくさんあります/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