systemd - 如何从系统服务访问当前用户名?

Roc*_*nch 6 linux service systemd systemctl

我想创建系统服务,该服务(对于每个用户)将在用户登录后立即启动,并以 root 权限在用户的 $HOME 内执行一些工作。

这是示例服务:

[Unit]
Description= My User service
After=dbus.service

[Service]
StandardError=journal
ExecStart=/bin/sh -c "cp -r $HOME/.config /root/backup/$USER/$(date)/"  #<- just a sample root task

[Install]
WantedBy=default.target
Run Code Online (Sandbox Code Playgroud)

但 $HOME 或 $USER 变量不可用。如何访问它们?

sma*_*c89 6

您可以使用单位说明符来完成此操作:

%h代表用户的主文件夹

%u获取用户的名称

[Unit]
Description= My User service
After=dbus.service

[Service]
StandardError=journal
ExecStart=/bin/sh -c "cp -r %h/.config /root/backup/%u/$(date)/"  #<- just a sample root task

[Install]
WantedBy=default.target
Run Code Online (Sandbox Code Playgroud)