首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >UDEV: RUN+="/usr/bin/setsid /usr/bin/nautilus“不工作--为什么以及如何检测和运行它作为X用户?

UDEV: RUN+="/usr/bin/setsid /usr/bin/nautilus“不工作--为什么以及如何检测和运行它作为X用户?
EN

Unix & Linux用户
提问于 2015-09-21 12:12:23
回答 1查看 251关注 0票数 0

来自人类udev

这只能用于非常短时间运行的前台任务。长时间运行事件进程可能会阻塞此设备或依赖设备的所有进一步事件。

我要这么做:

代码语言:javascript
复制
KERNEL=="sd[a-z]", SUBSYSTEM=="block", ATTR{ro}=="0", ATTR{removable}=="1", SUBSYSTEMS=="usb", DRIVERS=="usb-storage", SYMLINK+="usb_%E{ID_VENDOR}_%E{ID_MODEL}_%E{ID_SERIAL_SHORT}"
ACTION=="add", KERNEL=="sd[a-z]", SUBSYSTEM=="block", ATTR{ro}=="0", ATTR{removable}=="1", SUBSYSTEMS=="usb", DRIVERS=="usb-storage", RUN+="/usr/bin/setsid /usr/bin/nautilus"

Setsid确实在新会话中运行程序。

我正在运行X: root 9371.41.3 179992 26328 tty2 S通过xinit /root/..xinitrc

EN

回答 1

Unix & Linux用户

发布于 2015-09-22 01:12:48

要运行X11程序,您需要告诉它把它的窗口放在哪里。这是通过DISPLAY环境变量完成的。

如果控制台上有用户登录,相应的显示通常是:0 (但可以有多个,:0可以用于非控制台X服务器)。所以您需要运行一个脚本,其中包含

代码语言:javascript
复制
#!/bin/sh
export DISPLAY=:0
setsid nautilus &

你可能需要设置XAUTHORITY除了……之外DISPLAY

但这是错误的做法。如果控制台上没有登录用户,您会做什么?如果控制台上有多个用户呢?如果X cookie文件位于根用户不能直接访问的FUSE文件系统上怎么办?

有一种机制允许udev通知桌面应用程序:D-总线。许多桌面环境使用它来安排文件管理器窗口在插入可移动设备时弹出。我不知道它到底是怎么工作的,但这是你需要研究的。

票数 0
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/231043

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档