linux - 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 变量不可用。如何访问它们?
解决方案
您可以使用单位说明符来完成此操作:
%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
推荐阅读
- excel - 通过“ListBox”传递数据
- django - 如何从 html 更新 django 数据库?
- node.js - Firebase Cloud Function,触发 onCreate 事件后如何访问父数据?
- android - 权限拒绝:无法附加文件,文件需要导出提供程序,或 grantUriPermission(),API 29
- sql - 在 postgresql 上查询 JSON 数组时我应该使用横向吗?
- angular - 如何以角度设置div的背景颜色?
- java - @ControllerAdvice 与 ExceptionHandler 类一起工作需要任何额外的设置吗?
- mongodb - 从 Databricks 写入 Azure cosmos DB 的问题
- angular - 角进口成本
- r - 使用另一个数据帧从一个数据帧中逐组采样 n 行