Я хочу запустить скрипт, как только моя аутентификация lightdm пройдет успешно, и мой Unity начнет загружаться. и я хочу запускать свои скрипты от имени пользователя root.
@Shnd X на самом деле запускается до lightdm, потому что lightdm также работает в X. Поэтому, если вы хотите запускать что-то от имени своего пользователя, вы, вероятно, захотите это «после успешной аутентификации lightdm» или другими словами «при запуске рабочего стола». Также возможно запускать сценарий, когда ваш компьютер просто загружается, независимо от того, вошел ли пользователь в систему или нет (это то, что запускает X, например), тогда как это совершенно другой вопрос. Если вы хотите запустить что-то от имени пользователя, вы, вероятно, хотите этого, и ответ зависит от вашей системы инициализации.
erikbwork
Ответы:
5
Сначала поместите ваш скрипт /usr/binи дайте разрешение на выполнение.
Теперь создайте файл .desktop, в /home/[user-name]/.config/autostart/котором запускается ваш скрипт, который запускается при запуске.
Пример: - Пусть ваше имя файла сценария "example" или "example.sh"
Создайте файл .desktop с помощью gedit со следующими строками и сохраните как filename.desktop в /home/[user-name]/.config/autostart/
Здесь Exec=sudo exampleили Exec=sudo example.shзапускает ваш скрипт в качестве пользователя root из /usr/bin
раздела «Предоставить разрешение на выполнение» в файл .desktop.
"$ HOME / .config / upstart" на моей машине такого каталога нет.
Каламалка Малыш
1
@KalamalkaKid Какую версию Ubuntu вы используете? Каталог upstart должен быть в этом месте /home/yourusername/.config/upstart/. Откройте ваш домашний директор в nautilus, нажмите Ctrl + H, и вы должны увидеть каталог .config
TuKsn
2
Чтобы выполнить команду как корень , после входа в систему , есть еще один простой трюк:
Требуется два шага:
создать файл триггера при входе в систему
создайте cronjob, запускаемый root (set in /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
Теперь определенная команда выполняется один раз в течение одной минуты после входа в систему.
Ответы:
Сначала поместите ваш скрипт
/usr/bin
и дайте разрешение на выполнение.Теперь создайте файл .desktop, в
/home/[user-name]/.config/autostart/
котором запускается ваш скрипт, который запускается при запуске.Пример: - Пусть ваше имя файла сценария "example" или "example.sh"
Создайте файл .desktop с помощью gedit со следующими строками и сохраните как filename.desktop в
/home/[user-name]/.config/autostart/
Здесь
Exec=sudo example
илиExec=sudo example.sh
запускает ваш скрипт в качестве пользователя root из/usr/bin
раздела «Предоставить разрешение на выполнение» в файл .desktop.Теперь скрипт запускается при запуске.
источник
Другая возможность:
Создать файл в
$HOME/.config/upstart/my-upstart-script.conf
Более подробная информация о Upstart :
http://ifdeflinux.blogspot.de/2013/04/upstart-user-sessions-in-ubuntu-raring.html
http://upstart.ubuntu.com/cookbook/
Информация для запуска
sudo
без пароля:Как запустить приложение, используя sudo без пароля?
Как запустить определенные команды sudo без пароля?
источник
/home/yourusername/.config/upstart/
. Откройте ваш домашний директор в nautilus, нажмите Ctrl + H, и вы должны увидеть каталог .configЧтобы выполнить команду как корень , после входа в систему , есть еще один простой трюк:
Требуется два шага:
/etc/crontab
), для запуска крошечного скрипта (запуска вашей команды) тогда и только тогда, когда существует файл триггера. Поскольку файл триггера удаляется тем же сценарием, ваша команда запускается только один раз.Последовательность тогда:
Настройка
Два небольших сценария:
Один, чтобы создать файл триггера при входе в систему:
и один два запускают команду:
create_trigger.sh
иrun_command.sh
.Добавьте следующую команду в свои приложения автозагрузки (Dash> Startup Applications> Add)
Добавьте следующую строку в
/etc/crontab
файл (sudo nano /etc/crontab
):Теперь определенная команда выполняется один раз в течение одной минуты после входа в систему.
источник