Я сделал файл /root/startup.sh
(я нахожусь на Ubuntu с Gnome 3.22.3 с рут-доступом) со следующим содержимым:
#!/bin/bash DISPLAY=":0" PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" SHELL="/bin/bash" $(/usr/bin/xinput list > /root/Desktop/output.txt)
, и я поместил эту строку в файл crontab -e
:
* * * * * /bin/bash /root/startup.sh
, но через минуту, когда файл output.txt
создан и когда я его открываю, он пуст и в нем нет содержимого.
Почему?
В Интернете так много статей, так много вопросов и ответов по этому вопросу, но ни одна из них не уведомила меня об этой глупой ошибке:
export DISPLAY=":0" export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" export SHELL="/bin/bash"
Это следует использовать вместо 3 строк в моем вопрос.
Я должен был добавить export
перед ними.
И это работает.
По моему опыту, также необходимо установить переменную XAUTHORITY.
export XAUTHORITY=/home/<user>/.Xauthority
, Поскольку Вы запускаете свой сценарий как корень через крон, вероятно, у пользователя root нет.Xauthority файла. Но потому что Вы - корень на сессии крона, можно использовать тот от обычного пользователя.