Я хочу запустить скрипт, как только моя аутентификация lightdm пройдет успешно, и мой Unity начнет загружаться. и я хочу запускать свои скрипты от имени пользователя root.
где находятся скрипты запуска в Unity?
Я хочу запустить скрипт, как только моя аутентификация lightdm пройдет успешно, и мой Unity начнет загружаться. и я хочу запускать свои скрипты от имени пользователя root.
где находятся скрипты запуска в Unity?
Ответы:
Сначала поместите ваш скрипт /usr/bin
и дайте разрешение на выполнение.
Теперь создайте файл .desktop, в /home/[user-name]/.config/autostart/
котором запускается ваш скрипт, который запускается при запуске.
Пример: - Пусть ваше имя файла сценария "example" или "example.sh"
Создайте файл .desktop с помощью gedit со следующими строками и сохраните как filename.desktop в /home/[user-name]/.config/autostart/
[Desktop Entry]
Type=Application
Exec=sudo example
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=myscript
Comment=Startup Script
Здесь Exec=sudo example
или Exec=sudo example.sh
запускает ваш скрипт в качестве пользователя root из /usr/bin
раздела «Предоставить разрешение на выполнение» в файл .desktop.
Теперь скрипт запускается при запуске.
Другая возможность:
Создать файл в $HOME/.config/upstart/my-upstart-script.conf
start on desktop-start
stop on desktop-end
script
sudo fdisk -l > /home/[user-name]/upstart-test.txt
end script
Более подробная информация о Upstart :
http://ifdeflinux.blogspot.de/2013/04/upstart-user-sessions-in-ubuntu-raring.html
http://upstart.ubuntu.com/cookbook/
Информация для запуска sudo
без пароля:
/home/yourusername/.config/upstart/
. Откройте ваш домашний директор в nautilus, нажмите Ctrl + H, и вы должны увидеть каталог .config
Чтобы выполнить команду как корень , после входа в систему , есть еще один простой трюк:
Требуется два шага:
/etc/crontab
), для запуска крошечного скрипта (запуска вашей команды) тогда и только тогда, когда существует файл триггера. Поскольку файл триггера удаляется тем же сценарием, ваша команда запускается только один раз.Последовательность тогда:
USER LOGIN > trigger file is created > cronjob runs script (with your command) and removes trigger file, > next time the script passes, since the trigger file does not exist anymore
Настройка
Два небольших сценария:
Один, чтобы создать файл триггера при входе в систему:
#!/bin/sh
touch $HOME/.trigger
и один два запускают команду:
#!/bin/bash
FILE="/path/to/your/homedirectory/.trigger"
# don't use $HOME here, since you run it by root
if [ -f $FILE ]; then
<your command here, run by root>
rm -f $FILE
fi
create_trigger.sh
и run_command.sh
.Добавьте следующую команду в свои приложения автозагрузки (Dash> Startup Applications> Add)
/path/to/create_trigger.sh
Добавьте следующую строку в /etc/crontab
файл ( sudo nano /etc/crontab
):
* * * * * root /path/to/run_command.sh
Теперь определенная команда выполняется один раз в течение одной минуты после входа в систему.