Подумайте об этом некоторое время. Вы перезагружаете компьютер и идете делать чашку кофе. Задача cron пытается запуститься, но где она должна открывать терминал? Вы даже не вошли в систему...
Задания Cron не запускаются в той же среде, что и ваша интерактивная среда с графическим интерфейсом, и поэтому вы обычно не можете планировать задания cron, как если бы они были обычными командами, введенными в командной строке, не позаботившись о настройке необходимых переменных среды и т. д. что задание cron должно быть запущено.
В данном случае дело не только в нескольких переменных среды, но и в том факте, что пользователь может даже не войти в систему, когда выполняется задание cron. Для запуска графического терминала требуется среда рабочего стола.
Я предполагаю, что вы хотите запускать свою команду каждый раз при запуске среды рабочего стола (при входе в систему, а не при перезагрузке ).
Чтобы сделать это в XFCE, выберите «Настройки» -> «Сеанс и запуск» -> «Автозапуск приложения» и щелкните Add
или создайте файл с расширением .desktop
в~/.config/autostart/
(этот каталог может не существовать, поэтому вам, возможно, придется его создать ).
Файл должен выглядеть примерно так
[Desktop Entry]
Version=1.0
Name=Script
Type=Application
Exec=/home/user/bin/script.sh
Terminal=false
StartupNotify=false
Где /home/user/bin/script.sh
— скрипт, который делает то, что вы хотите.
(Приведенное выше взято из ветки форума XFCE , и я не знаю, работает ли это, поскольку я даже не использую X11)
Также относится:Сценарий инициализации Xfce
Вы используете printf
неправильно. Вы указали строку, в которой ожидается строка формата, и printf
соответственно интерпретирует \n
. Используйте строку правильного формата и укажите строку в кавычках ANSI -C -в качестве аргумента:
$ printf '%s\n' $'"Hello, World!\\n"'
"Hello, World!\n"
Или, чтобы более четко показать, куда идет аргумент в строке формата:
$ printf '|%s|\n' $'"Hello, World!\\n"'
|"Hello, World!\n"|