Запуск xprop в crontab: "unable to open display"

Для приложения это не имеет значения. Ссылка без завершающей косой черты (находится на более низком уровне, чем вы обычно думаете об этом )ссылка на файл с именем FOLDER, файл, который просто является каталогом. Ссылка с завершающей косой чертой явно указывает на каталог с именем FOLDER. В качестве счетчика -пример:

$ mkdir test
$ cd test
$ touch foo
$ ll
drwxrwxr-x.   2 jwbernin jwbernin  4096 Aug  2 09:33.
drwx------. 102 jwbernin jwbernin 20480 Aug  2 09:33..
-rw-rw-r--.   1 jwbernin jwbernin     0 Aug  2 09:33 foo
$ ln -s foo/ TRAIL
$ ll
drwxrwxr-x.   2 jwbernin jwbernin  4096 Aug  2 09:33.
drwx------. 102 jwbernin jwbernin 20480 Aug  2 09:33..
-rw-rw-r--.   1 jwbernin jwbernin     0 Aug  2 09:33 foo
lrwxrwxrwx.   1 jwbernin jwbernin     4 Aug  2 09:33 TRAIL -> foo/

Цветное выделение не отображается, но последняя ссылка не работает. Если вы ln -s foo NOTRAIL, запись NOTRAILявляется действительной ссылкой на файл foo. Поскольку fooне является каталогом, ссылка, использующая косую черту в конце, становится неработающей.

Все каталоги являются файлами (для ОС ), но не все файлы являются каталогами.

0
18.10.2019, 04:02
1 ответ

Вы пропустили переменную окружения $DISPLAY. Он устанавливается первым процессом, который инициализирует ваш сеанс GUI, а затем наследуется всеми его дочерними процессами. Для локального сеанса X11 значение обычно равно :0.

Переменная $DISPLAYсообщает приложениям X11, как обращаться к X-серверу; значение :0говорит им использовать локальный сокет Unix по адресу /tmp/.X11-unix/X0. После первоначального подключения можно активировать высокопроизводительные методы доступа, такие как инфраструктура прямого рендеринга (DRI ).

Задания Cron не получают переменную $DISPLAYавтоматически, потому что они должны выполняться независимо от сеанса GUI. :Что, если владелец задания в данный момент не вошел в систему? Если бы задание cron могло просто получить доступ к любому сеансу X11, это позволило бы пользователям шпионить друг за другом, а это совершенно неприемлемо.

В зависимости от используемого вами дистрибутива вам также может потребоваться установить переменную среды $XAUTHORITY. Без него все инструменты и приложения X11 будут предполагать, что файл cookie сеанса X11 расположен по адресу $HOME/.Xauthority, но, например, Debian 10 создает личные каталоги $TMPдля каждого пользователя, поэтому $TMPбудет установлено на /tmp/user/<user's UID number>. ] и $XAUTHORITYбудут установлены на $TMP/xauth-<user's UID number>-_0для DISPLAY :0.

Без доступа к правильному файлу cookie сеанса X11 сервер X11 не будет отвечать на запросы, даже для root. Запуск программ с графическим интерфейсом после входа в систему в качестве обычного пользователя и последующего использования suили sudo, чтобы стать пользователем root, возможен тогда и только тогда, когда$DISPLAY$XAUTHORITY, при необходимости ), передаются пользователю su. ] / sudoсеанс -, который часто устанавливается по умолчанию.

3
28.01.2020, 02:29

Теги

Похожие вопросы