При запуске сценария ниже из моего локального пользователя crontab, с sudo до /usr/bin/FreeFileSync (строка последнего сценария), небольшое окно прогресса открывается в моем графическом интерфейсе, и все идет хорошо. Единственное, что я должен указать на мой sudo passwd, который делает его интерактивным и несколько неуклюжим.
Для запуска FFS необходимы корневые привилегии, в противном случае он жалуется на отсутствие прав на доступ к некоторым каталогам и резервным копиям файлов.
#!/bin/bash
# define default display and pass it on to any child process
# from within the running shell
DISPLAY=:0.0
export DISPLAY
/usr/bin/FreeFileSync /home/user/bu-1.ffs_batch 2> \
/home/user/bu-1.ffs_log
Когда я вызываю тот же скрипт из мой корневой crontab с sudo crontab -e, FreeFileSync никогда не запускается из-за следующей ошибки:
$ cat /home/user/bu-1.ffs_log
16:35:01: Error: Unable to initialize GTK+, is DISPLAY set properly?
Как видно, у меня есть export DISPLAY=:0.0 внутри скрипта, а мой корневой файл crontab оборудовано:
$ sudo crontab -e | head -4
[sudo] password for user:
1 SHELL=/bin/bash
2 PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
3 HOME=/
4 MAILTO=root
Может ли кто-нибудь помочь устранить неисправность?
РЕДАКТИРОВАТЬ: Может ли быть запущено это из корневого корневого корня, потому что пользователь root не работает как открытый сеанс и, следовательно, не выводит stdout? Могу ли я обойти эту проблему, попросив корень отобразиться на stdout сессии текущего пользователя? Кажется, стоит сделать, если выполнимо; если да, то как это сделать?