2009-03-10 42 views
6

Tôi đã chiến đấu với crontab gần đây vì trong Intrepid gconftool sử dụng một phụ trợ dbus, và điều đó có nghĩa là khi được sử dụng từ crontab nó không hoạt động.Biến môi trường XDG_SESSION_COOKIE là gì?

Để làm cho nó hoạt động tôi đã phải xuất các biến môi trường có liên quan khi tôi đăng nhập để nó tìm thấy địa chỉ phiên dbus khi cron đến để chạy.

Ra khỏi tò mò tôi tự hỏi những gì môi trường cron thể xem và nó quay ra tất cả tôi có là HOME, LOGNAME, PATH, SHELL, CWD và cái mới này vào tôi, XDG_SESSION_COOKIE. Điều này có vẻ tò mò và một số googlings đã ném lên một số lỗi hoặc yêu cầu tính năng khác liên quan đến nó, nhưng không có gì mà nói với tôi những gì nó làm.

Bản năng của tôi là biến này có thể được sử dụng để tìm tất cả nội dung mà tôi đã xuất sang tệp mà tôi nguồn trước khi công việc cron chạy.

Câu hỏi của tôi, do đó, là a) tôi có thể? b) nếu có, làm thế nào? và c) những gì (khác) hiện nó làm gì?

Cảm ơn tất cả

Trả lời

6

Điều này rất thú vị. Tôi phát hiện ra đó là trình quản lý hiển thị thiết lập cookie. Đó là một trong những có thể được sử dụng để đăng ký các quy trình thuộc về một "phiên" được quản lý bởi một daemon gọi là ConsoleKit. Đó là để hỗ trợ chuyển đổi người dùng nhanh chóng. Hệ thống KDE4.2.1 của tôi dường như cũng hỗ trợ nó.

Đọc this mục nhập fedora wiki.

Vì vậy, biến môi trường này giống như DBUS_SESSION_BUS_ADDRESS để cấp quyền truy cập cho một số thực thể (trong trường hợp XDG_SESSION_COOKIE phiên đăng nhập do ConsoleKit quản lý). Ví dụ có mà biến môi trường tại chỗ, bạn có thể yêu cầu người quản lý cho phiên hiện tại của bạn:

$ 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 cũng hỗ trợ truy vấn cho phiên một số quá trình thuộc về

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

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

Tuy nhiên, nó không danh sách hoặc bằng cách nào đó chứa các biến có liên quan đến một số công việc cron. Tuy nhiên, tài liệu của dbus-launch nói rằng libdbus sẽ tự động tìm địa chỉ xe buýt DBUS phù hợp. Ví dụ: các tệp được lưu trữ trong /home/js/.dbus/session-bus chứa các địa chỉ phiên dbus hiện tại chính xác.

Các vấn đề liên quan