Wyc*_*yck 4 text-processing systemd
我有一堆服务文件 /etc/systemd/service/myapp.*.service
每一个都有一条线,看起来像......
User=Foo
Run Code Online (Sandbox Code Playgroud)
...我需要更改所有这些 .service 文件,所以他们都说...
User=Bar
Run Code Online (Sandbox Code Playgroud)
我如何有效地做到这一点?
使用sed
:
sed -i 's/^User=Foo$/User=Bar/' /etc/systemd/service/myapp.*.service
Run Code Online (Sandbox Code Playgroud)
谁说您需要更改文件??
find /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 '[Service]\nUser=%s\n' 'Bar' > /etc/systemd/temp/change-user.conf find /etc/systemd/service/ -maxdepth 1 -name 'myapp.*.service' | 读时 -ri 做 ln /etc/systemd/temp/change-user.conf ${i}.d/change-user.conf 完毕
此外,这当然是使用包提供的和运行时生成的单元来做这种事情的官方方法。你应该不会改变这种单元文件。
systemd.unit
. systemd 手册页。freedesktop.org。