Где находятся сценарии запуска Unity Desktop?

11

Я хочу запустить скрипт, как только моя аутентификация lightdm пройдет успешно, и мой Unity начнет загружаться. и я хочу запускать свои скрипты от имени пользователя root.

где находятся скрипты запуска в Unity?

Shnd
источник
Я хочу запустить скрипт после загрузки моего X
Шнд
@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/

[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.

Теперь скрипт запускается при запуске.

Pandya
источник
1
для запуска Sudo без пароля см askubuntu.com/questions/39281/...
Pandya
Спасибо, что работает. Но с выскочкой вы можете сделать то же самое, возможно, немного проще (посмотрите на мой ответ).
TuKsn
Это было бы идеально с ссылкой на спецификацию
erikbwork
Я не думаю, что файл .desktop должен быть отмечен как исполняемый.
Джулиан
4

Другая возможность:

Создать файл в $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без пароля:

Как запустить приложение, используя sudo без пароля?

Как запустить определенные команды sudo без пароля?

TuKsn
источник
"$ 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
    

Теперь определенная команда выполняется один раз в течение одной минуты после входа в систему.

Якоб Влейм
источник