После выполнения "sudo su -" на ноутбуке Ubuntu 12.04 я сделал "crontab-e", добавило это:
* * * * * env DISPLAY=:0.0 /usr/bin/gnome-calculator
и ожидал в течение многих минут. Ничего Не Произошло. У меня нет внешних мониторов и если я работаю, эта команда "ENV ОТОБРАЖАЕТСЯ =:0.0/usr/bin/gnome-calculator" в терминале, это просто работает. Но не от крона. Почему?
Системный журнал только содержит это:
May 24 14:37:01 localhost cron[1227]: (root) RELOAD (crontabs/root)
May 24 14:37:01 localhost CRON[16432]: (root) CMD (env DISPLAY=:0.0 /usr/bin/gnome-calculator )
И я уже попробовал "xhost +localhost".
[root@NOTEBOOK /var/log] xhost
access control enabled, only authorized clients can connect
INET:localhost.localdomain
SI:localuser:USERNAME
[root@NOTEBOOK /var/log]
Таким образом, решение для другого вопроса как это на askubunut не сделало работавший.
Переписано в качестве ответа на запрос OP.
Вероятно, не стоит помещать это в корневой crontab на первое место. Вы пробовали поместить его в свой пользовательский crontab?
Я думаю, что это проблема:
* * * * * env
DISPLAY =: 0.0
/ usr / bin / gnome-Calculator
Настройка на это похоже, что это работает:
* * * * * env DISPLAY=:0 /usr/bin/gnome-calculator
env DISPLAY =: 0
сообщает ему экспортировать на дисплей : 0
- вы можете найти свой в TTY
в выводе w
Затем запустите crontab -e
от имени обычного пользователя, где вы хотите, чтобы приложение запускалось, и вставьте эту строку:
* * * * * env DISPLAY=:0 /usr/bin/gnome-calculator
Если вы не хотите в crontab -e
, чтобы отредактировать его, используя vim
, запустите это заранее, чтобы использовать вместо nano
:
export EDITOR=nano ; export VISUAL=nano
Обратите внимание, что звездочки означают, что он будет запускаться каждую минуту, каждую час и каждый день, поэтому он, вероятно, станет ОЧЕНЬ раздражающим, если вы его не удалите.
Если это все еще не работает, попробуйте выполнить эту команду:
sudo bash -c "echo $(whoami) > /etc/cron.allow"
И, если вы не хотите возиться с текстовыми файлами, вы можете вместо этого использовать gnome-schedule
.
Ссылки:
Cron, запущенный под root, не имеет доступа к отображению, если текущий пользователь x не является root.
Нам просто нужно добавить пользователя root к x, вы можете сделать это во время входа в систему с помощью скрипта запуска
xhost local:root
В целях тестирования мы можем просто запустить чем команду под текущим пользователем и перезапустить задание cron root
Для работы в Ubuntu 18 вам необходимо:
-подключить терминал в качестве пользователя с помощью w
(например, «: 1 ] ")
-then * * * * * env DISPLAY =: 1 / usr / bin / gnome-Calculator
Так как этому сайту требуется 50 репутации для добавления комментариев, я добавлю ответ в ответ на ответ @intika .
Если вы хотите запустить команду из корневой таблицы cron, вы можете запустить команду как основной пользователь без полномочий root с:
* * * * * env DISPLAY=:0 sudo -i su USERNAME -c "/usr/bin/gnome-calculator"