Я изменил файл sudoers с помощью sudo visudo и добавил к нему 2 строки:
tiamo ALL = NOPASSWD: /home/tiamo/myscript.sh
tiamo ALL = NOPASSWD: /usr/bin/command
Затем я добавил свой сценарий в «Запуск приложений» следующим образом: bash -c "sleep 1m;gksu /home/tiamo/myscript.sh"
myscript.sh выглядит так:
do some non sudo stuff
do sudo command
while true
do
launch a program
sleep 15m
kill the program
done
После перезагрузки Ubuntu я открываю терминал и использую pgrep myscript, он показывает, что он запущен и его pid. Тем не менее, программа, которую она должна запускать, неактивна, поэтому я предполагаю, что она застревает в команде sudo, которую я добавил в файл sudoers.
Любая подсказка, почему она застревает?
SOLVED так:
Добавил команды sudo в мой /etc/rc.local. Запустите мой скрипт в приложениях запуска, таких как gnome-terminal -e ./myscript.sh. Результат скрипта теперь перенаправляется на новый терминал, и он выполняется успешно.
Файл sudoers выглядит нормально.
Скрипт, вероятно, в порядке, если ни одна из команд не блокирует его. Однако, если какая-либо из команд также является скриптами, вы, вероятно, захотите использовать . script.sh.
Я не уверен, нужна ли команда bash. Обычно я думаю, что для скрипта достаточно, чтобы исполняемый файл был правильным #!.
Существует также потенциальная проблема с запуском графических программ с правами root. Возможно, вам понадобится создать файл ~/.xinitrc со следующим содержимым:
#! /usr/bin/env bash
xhost +local:
На этой странице есть информация, которую вы, вероятно, найдете полезной:
Как написать скрипт bash перезапустить процесс, если он умирает?Файл sudoers выглядит нормально.
Скрипт, вероятно, в порядке, если ни одна из команд не блокирует его. Однако, если какая-либо из команд также является скриптами, вы, вероятно, захотите использовать . script.sh.
Я не уверен, нужна ли команда bash. Обычно я думаю, что для скрипта достаточно, чтобы исполняемый файл был правильным #!.
Существует также потенциальная проблема с запуском графических программ с правами root. Возможно, вам понадобится создать файл ~/.xinitrc со следующим содержимым:
#! /usr/bin/env bash
xhost +local:
На этой странице есть информация, которую вы, вероятно, найдете полезной:
Как написать скрипт bash перезапустить процесс, если он умирает?Файл sudoers выглядит нормально.
Скрипт, вероятно, в порядке, если ни одна из команд не блокирует его. Однако, если какая-либо из команд также является скриптами, вы, вероятно, захотите использовать . script.sh.
Я не уверен, нужна ли команда bash. Обычно я думаю, что для скрипта достаточно, чтобы исполняемый файл был правильным #!.
Существует также потенциальная проблема с запуском графических программ с правами root. Возможно, вам понадобится создать файл ~/.xinitrc со следующим содержимым:
#! /usr/bin/env bash
xhost +local:
На этой странице есть информация, которую вы, вероятно, найдете полезной:
Как написать скрипт bash перезапустить процесс, если он умирает?