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.
@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/
„$ 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.
Odpowiedzi:
Najpierw włóż skrypt
/usr/bin
i 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/
Tutaj
Exec=sudo example
lubExec=sudo example.sh
uruchamia skrypt jako root z/usr/bin
Daj uprawnienia do wykonywania do pliku .desktop.Teraz skrypt działa podczas uruchamiania.
źródło
Inna możliwość:
Utwórz plik w
$HOME/.config/upstart/my-upstart-script.conf
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
sudo
bez hasła:Jak uruchomić aplikację przy użyciu sudo bez hasła?
Jak uruchomić określone polecenia sudo bez hasła?
źródło
/home/yourusername/.config/upstart/
. Otwórz swojego dyrektora domowego w nautilus, naciśnij Ctrl + H i powinieneś zobaczyć katalog .configAby uruchomić polecenie jako root , po zalogowaniu jest jeszcze jedna prosta sztuczka:
To zajmuje dwa kroki:
/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:
Ustawić
Dwa małe skrypty:
Jeden do utworzenia pliku wyzwalającego podczas logowania:
a raz dwa uruchom polecenie:
create_trigger.sh
irun_command.sh
.Dodaj następujące polecenie do aplikacji startowych (Dash> Aplikacje startowe> Dodaj)
Dodaj następujący wiersz do
/etc/crontab
pliku (sudo nano /etc/crontab
):Teraz zdefiniowane polecenie uruchamia się jednorazowo w ciągu jednej minuty od zalogowania.
źródło