如何更改一堆 systemd 服务文件的用户?

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)

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

jes*_*e_b 5

使用sed

sed -i 's/^User=Foo$/User=Bar/' /etc/systemd/service/myapp.*.service
Run Code Online (Sandbox Code Playgroud)

  • 我建议使用锚点,比如 `s/^User=Foo$/User=Bar/`,这样搜索就不会匹配 `# User=Foo # original value` 或 `User=Foodle` 之类的东西。 (2认同)

Jde*_*eBP 5

谁说您需要更改文件??

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
完毕

此外,这当然是使用包提供的和运行时生成的单元来做这种事情的官方方法。你应该不会改变这种单元文件。

进一步阅读

  • Lennart Poettering (2013-10-07)。 systemd.unit. systemd 手册页。freedesktop.org。