Gdzie są skrypty startowe dla Unity Desktop?

11

Chcę uruchomić skrypt, gdy tylko moje uwierzytelnianie lightdm powiedzie się, a moja Unity zacznie się ładować. i chcę uruchomić moje skrypty jako użytkownik root.

gdzie znajdują się skrypty startowe w Unity?

Shnd
źródło
Chcę uruchomić skrypt po załadowaniu mojego X.
Shnd
@Shnd X faktycznie zaczyna się przed lightdm, ponieważ lightdm działa również w X. Jeśli więc chcesz uruchomić coś jako użytkownik, prawdopodobnie chcesz to „po pomyślnym uwierzytelnieniu lightdm” lub innymi słowy „gdy komputer zaczyna się uruchamiać”. Możliwe jest również uruchomienie skryptu, gdy komputer uruchamia się po prostu podczas rozruchu, bez względu na to, czy masz zalogowanego użytkownika, czy nie (to jest na przykład X), to jest zupełnie inne pytanie. Jeśli chcesz uruchomić coś jako użytkownik, prawdopodobnie tego chcesz, a odpowiedź zależy od twojego systemu init.
erikbwork

Odpowiedzi:

5

Najpierw włóż skrypt /usr/bini zezwól na wykonanie.

Teraz utwórz plik .desktop, w /home/[user-name]/.config/autostart/którym uruchom skrypt, który uruchamia się podczas uruchamiania.

Przykład: - Niech Twoja nazwa skryptu to „przykład” lub „przykład.sh”

Utwórz plik .desktop za pomocą gedit z następującymi wierszami i zapisz jako filename.desktop w /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

Tutaj Exec=sudo examplelub Exec=sudo example.shuruchamia skrypt jako root z /usr/bin Daj uprawnienia do wykonywania do pliku .desktop.

Teraz skrypt działa podczas uruchamiania.

Pandya
źródło
1
dla uruchamiania sudo bez hasła, patrz askubuntu.com/questions/39281/…
Pandya
Dzięki, że działa. Ale z upstartem możesz nieco uprościć to samo (spójrz na moją odpowiedź).
TuKsn
To byłoby idealne z linkiem do spec
erikbwork
Nie sądzę, że plik .desktop musi być oznaczony jako wykonywalny.
Julian
4

Inna możliwość:

Utwórz plik w $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

Dalsze szczegóły dotyczące Upstart :

http://ifdeflinux.blogspot.de/2013/04/upstart-user-sessions-in-ubuntu-raring.html

http://upstart.ubuntu.com/cookbook/

Informacje do uruchomienia sudobez hasła:

Jak uruchomić aplikację przy użyciu sudo bez hasła?

Jak uruchomić określone polecenia sudo bez hasła?

TuKsn
źródło
„$ HOME / .config / upstart” nie ma takiego katalogu na moim komputerze.
Kalamalka Kid
1
@KalamalkaKid Której wersji Ubuntu używasz? Katalog upstart powinien znajdować się w tej lokalizacji /home/yourusername/.config/upstart/. Otwórz swojego dyrektora domowego w nautilus, naciśnij Ctrl + H i powinieneś zobaczyć katalog .config
TuKsn
2

Aby uruchomić polecenie jako root , po zalogowaniu jest jeszcze jedna prosta sztuczka:

To zajmuje dwa kroki:

  • utwórz plik wyzwalający podczas logowania
  • stworzyć cronjob, prowadzony przez administratora (ustawionego w /etc/crontab), aby uruchomić mały skrypt (wyświetlanie polecenia) jeśli i tylko jeśli plik istnieje wyzwalacza. Ponieważ plik wyzwalający jest usuwany przez ten sam skrypt, polecenie jest uruchamiane tylko raz.

Sekwencja to:

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

Ustawić

Dwa małe skrypty:

Jeden do utworzenia pliku wyzwalającego podczas logowania:

#!/bin/sh
touch $HOME/.trigger

a raz dwa uruchom polecenie:

#!/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
  • skopiuj oba skrypty do dwóch pustych plików, zapisz je jako create_trigger.shi run_command.sh.
  • Ze względów wygody uczyń je oba wykonalnymi.
  • Dodaj następujące polecenie do aplikacji startowych (Dash> Aplikacje startowe> Dodaj)

    /path/to/create_trigger.sh
    
  • Dodaj następujący wiersz do /etc/crontabpliku ( sudo nano /etc/crontab):

    * * * * * root /path/to/run_command.sh
    

Teraz zdefiniowane polecenie uruchamia się jednorazowo w ciągu jednej minuty od zalogowania.

Jacob Vlijm
źródło