首页 > 解决方案 > systemd - 如何从系统服务访问当前用户名?

问题描述

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

这是示例服务:

[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

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

标签: linuxservicesystemdsystemctl

解决方案


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

%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

推荐阅读