进一步阅读

进一步阅读

我有一堆服务文件/etc/systemd/service/myapp.*.service

每条线都有一条看起来像...的线。

User=Foo

...我需要更改所有这些 .service 文件,以便它们都说...

User=Bar

我如何有效地做到这一点?

答案1

谁说您需要更改文件? ☺

查找 /etc/systemd/service/ -maxdepth 1 -name 'myapp.*.service' |
读-ri时
    printf '[Service]\nUser=%s\n' 'Bar' > ${i}.d/change-user.conf
完毕

通过这种方式,再次恢复原始服务定义会更容易一些。

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

使这些都一个文件当然,适用于一大堆服务的只是使用硬链接的简单练习。

安装-d /etc/systemd/temp
printf '[服务]\nUser=%s\n' 'Bar' > /etc/systemd/temp/change-user.conf
查找 /etc/systemd/service/ -maxdepth 1 -name 'myapp.*.service' |
读-ri时
    ln /etc/systemd/temp/change-user.conf ${i}.d/change-user.conf
完毕

此外,这当然是使用包提供的和运行时生成的单元执行此类操作的官方方法。你应该不是更改此类单元文件。

进一步阅读

  • 伦纳特·珀特林 (2013-10-07)。 systemd.unit。 systemd 手册页。 freedesktop.org。

答案2

使用sed

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

相关内容