当前位置:  开发笔记 > 编程语言 > 正文

什么是XDG_SESSION_COOKIE环境变量?

如何解决《什么是XDG_SESSION_COOKIE环境变量?》经验,为你挑选了1个好方法。

我最近一直在与crontab战斗,因为在Intrepid中gconftool使用dbus后端,这意味着当从crontab使用它时它不起作用.

为了使它工作,我必须在登录时导出相关的环境变量,以便在cron运行时找到dbus会话地址.

出于好奇,我想知道的cron什么样的环境看到,它原来我所有的HOME,LOGNAME,PATH,SHELL,CWD和我这个新的,XDG_SESSION_COOKIE.这看起来好奇,几个谷歌搜索引发了一些错误或涉及它的其他功能请求但没有告诉我它做了什么.

我的直觉是,这个变量可以用来查找我必须导出到cron作业运行之前我来源的文件的所有内容.

因此,我的问题是a)我可以吗?b)如果是这样,怎么样?和c)它做了什么(别的)?

谢谢大家



1> Johannes Sch..:

这很有趣.我发现是显示管理器设置了一个cookie.那个可用于注册属于"会话"的进程,这些进程由一个被调用的守护进程管理ConsoleKit.这是为了支持快速用户切换.我的KDE4.2.1系统显然也支持它.

阅读这个 fedora wiki条目.

所以这个环境变量就像DBUS_SESSION_BUS_ADDRESS是可以访问某个实体(在XDG_SESSION_COOKIEConsoleKit管理的登录会话的情况下).例如,具有该环境变量,您可以向经理询问您当前的会话:

$ dbus-send --print-reply --system --type=method_call \
    --dest=org.freedesktop.ConsoleKit \
    /org/freedesktop/ConsoleKit/Manager \
    org.freedesktop.ConsoleKit.Manager.GetCurrentSession

method return sender=:1.1 -> dest=:1.34 reply_serial=2
   object path "/org/freedesktop/ConsoleKit/Session1"
$

Manager还支持查询某个进程所属的会话

$ [...].Manager.GetSessionForUnixProcess uint32:4494

method return sender=:1.1 -> dest=:1.42 reply_serial=2
   object path "/org/freedesktop/ConsoleKit/Session1"

但是,它不会列出或以某种方式包含与某个cron作业相关的变量.但是,文档dbus-launchlibdbus会自动找到合适的DBUS总线地址.例如,文件存储在/home/js/.dbus/session-bus包含正确的当前dbus会话地址的文件中.

推荐阅读
oDavid_仔o_880
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有