Cronjob - Сценарий, не работающий на перезагрузке

Я должен выполнить сценарий, myscript.sh, в каждой перезагрузке. После crontab -e Я записал:

@reboot /home/techy/Documents/myscript.sh

Файл является исполняемым файлом после chmod 777 myscript.sh, но я не могу быть произведенным из сценария оболочки.

Мой сценарий оболочки, как предполагается, изменяет настольный фон и работает, если выполняется от терминала.

0
задан 21 December 2016 в 15:43

5 ответов

Вы не можете сделать этого с @reboot, (или даже cron). То, когда Ваш @reboot выполнения сценария, Вы не вошли в систему (myscript.sh выполняется как root), X-сервер не был запущен, и фон, который Вы хотите изменить, даже не существует.

я предлагаю использовать ~/.config/autostart/. Файлы там .desktop файлы, видят man desktop-file-validate, man desktop-file-edit, man desktop-file-install.... Начиная с файлов в моем ~/.config/autostart/ помещенные значки на вершине моего экрана, я думаю, что это - правильный контекст/время для "изменения настольного фона".

1
ответ дан 7 November 2019 в 07:00

Не уверенный в деталях Вашего сценария в myscript.sh.

, Если Ваш сценарий требует для соединения удаленного хоста, то Вам нужно интернет-соединение во-первых перед выполнением этого сценария.

Для решения этого необходимо поместить некоторую задержку (Пример: sleep 5m) в Вашем сценарии, пока интернет-соединение не устанавливается успешно.

Этот метод решает мою проблему, но не уверенный, если это работает на Вас также.

0
ответ дан 7 November 2019 в 07:00

Я попробовал бы это вместо этого.

@reboot sleep 45 && sh /home/techy/Documents/myscript.sh

Это дает некоторое время Вашей начальной загрузке, и sh на самом деле называет сценарий оболочки. Вы, возможно, должны были бы работать chmod -x /home/techy/Documents/myscript.sh это снимает ограничения сценария и пути.

-1
ответ дан 7 November 2019 в 07:00

Вы хотите выполнить свой сценарий при входе в систему, не при начальной загрузке.
как упомянуто, хороший путь состоит в том, чтобы поместить средство запуска (.desktop файл) в папке автоматического запуска
~/.config/autostart/

Больше информации об Автоматическом запуске Gnome:
Спецификация автоматического запуска настольного приложения

- 1-Создают средство запуска:
Скопировать/вставить те строки в терминале

tee -a  ~/.config/autostart/myscript.desktop << END1
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec='/home/techy/Documents/myscript.sh'
Name=myscript
END1
chmod +x ~/.config/autostart/myscript.desktop

- 2-Запускают средство запуска впервые, оно попросит, чтобы Вы проверили
Обзор с файловым менеджером к ~/.config/autostart/
Дважды щелкните по созданному новому myscript.desktop файл
Проверьте всплывающее окно сообщения защиты

- 3-Сделанных, тест это
Выход из системы затем входит в систему, въезжают задним ходом, чтобы видеть, что он работает

0
ответ дан 7 November 2019 в 07:00

Я сталкивался с этой проблемой на каждой начальной загрузке. Ubuntu не полностью загружала два твердых драйвера на моем ПК. Я должен был нажать на них в Наутилусе для реальной загрузки драйверов. Я заметил, что при выполнении Передачи на запуске с помощью тех драйверов в качестве цели для файлов потока и это не работало.

Таким образом, я должен был сделать это crontab волшебство и понял, что две команды ниже очень отличаются действительно:

crontab -e

sudo crontab -e

Поскольку я должен был использовать учетные данные пользователя root для загрузки драйверов, только вторая опция работала на меня и внутри crontab файл, который я мог записать

@reboot /folder/loadhd.sh

Проверьте это: https://stackoverflow.com/questions/43237488/linux-difference-between-sudo-crontab-e-and-just-crontab-e

-1
ответ дан 7 November 2019 в 07:00

Другие вопросы по тегам:

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