相关疑难解决方法(0)

如何在登录/注销时创建/删除 $XDG_RUNTIME_DIR

今天,我惊讶地ssh发现我的运行 Arch Linux 的机器/run/user/$(id -u)并不存在。

XDG基本目录规范指出:

$XDG_RUNTIME_DIR定义相对于用户特定的非必需运行时文件和其他文件对象(例如套接字、命名管道...)应存储的基目录。该目录必须由用户拥有,并且他必须是唯一对其具有读写访问权限的人。它的 Unix 访问模式必须是0700.

目录的生命周期必须与登录的用户绑定。它必须在用户首次登录时创建,如果用户完全注销,则必须删除该目录。如果用户登录多次,他应该被指向同一个目录,并且该目录必须从他第一次登录到最后一次注销在系统上继续存在,并且在这期间不能被删除。目录中的文件不能在重新启动或完整的注销/登录周期后继续存在。

在盒子上systemd,是/run/user/$(id -u)首选位置$XDG_RUNTIME_DIR(即使需要创建?)

如果没有,创建的最佳实践是什么$XDG_RUNTIME_DIR

如何确保仅当我“完全”注销时才删除该目录?

(“完全”是否意味着登录 shell 创建的所有进程都已退出?如何检查?)

systemd tmp tmpfs xdg xdg-user-dirs

9
推荐指数
1
解决办法
1万
查看次数

systemctl --user 不适用于 www-data 用户

systemctl --user 对于桌面用户来说似乎工作正常:

dev@dev-VirtualBox:~$ systemctl --user > /dev/null
dev@dev-VirtualBox:~$ echo $?
0
Run Code Online (Sandbox Code Playgroud)

但是当在 www-data 用户下运行相同的命令时,我得到了一个意外的响应

dev@dev-VirtualBox:~$ sudo su www-data -s /bin/bash
www-data@dev-VirtualBox:~$ systemctl --user > /dev/null 
Failed to connect to bus: No such file or directory 
www-data@dev-VirtualBox:~$ echo $? 
1
Run Code Online (Sandbox Code Playgroud)

systemctl --user这里怎么启用?

运行 Ubuntu 16.04

systemd not-root-user

8
推荐指数
2
解决办法
5863
查看次数

尝试以 root 用户身份启动 gnome-terminal 时出现“错误构建代理...”

openSUSE Leap 42.2 Gnome 终端 3.20.2

我打开了一个终端窗口。如果我输入以下命令:

gnome-terminal
Run Code Online (Sandbox Code Playgroud)

作为非 root 用户,它成功启动了一个新终端。

但是,如果我以 root 身份运行该命令,则会收到以下错误消息:

为 org.gnome.Terminal:/org/gnome/Terminal/Factory0 构建代理时出错:连接已关闭

如果我尝试启动终端,dbus-launch gnome-terminal那么它就可以工作。

什么阻止gnome-terminal命令以 root 身份启动终端?并且是dbus-launch可接受的解决方法还是可能导致无法预见的问题(我真的不明白它在做什么)?

opensuse d-bus gnome-terminal

3
推荐指数
1
解决办法
5170
查看次数