我有一堆服务文件/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