Wo befinden sich die Startskripte für Unity Desktop?

11

Ich möchte ein Skript ausführen, sobald meine lightdm-Authentifizierung erfolgreich ist und meine Unity geladen wird. und ich möchte meine Skripte als Root-Benutzer ausführen.

Wo befinden sich Startskripte in Unity?

Shnd
quelle
Ich möchte das Skript ausführen, nachdem mein X geladen wurde.
Shnd
@Shnd X startet tatsächlich vor lightdm, da lightdm auch in X ausgeführt wird. Wenn Sie also etwas als Benutzer ausführen möchten, möchten Sie es wahrscheinlich "nach erfolgreicher Lightdm-Authentifizierung" oder mit anderen Worten "beim Starten des Desktops". Es ist auch möglich, ein Skript auszuführen, wenn Ihr Computer gerade bootet, unabhängig davon, ob Sie einen angemeldeten Benutzer haben oder nicht (das ist beispielsweise der Start von X). Dies ist eine völlig andere Frage. Wenn Sie etwas als Benutzer ausführen möchten, möchten Sie dies wahrscheinlich und die Antwort hängt von Ihrem Init-System ab.
Erikbwork

Antworten:

5

Fügen Sie zuerst Ihr Skript ein /usr/binund erteilen Sie die Ausführungsberechtigung.

Erstellen Sie nun eine .desktop-Datei, in /home/[user-name]/.config/autostart/der Ihr Skript ausgeführt wird, das beim Start ausgeführt wird.

Beispiel: - Lassen Sie Ihren Dateinamen des Skripts "Beispiel" oder "Beispiel.sh" sein.

Erstellen Sie mit gedit eine .desktop-Datei mit den folgenden Zeilen und speichern Sie sie als filename.desktop in /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

Hier Exec=sudo exampleoder Exec=sudo example.shführt Ihr Skript als Root aus. /usr/bin Geben Sie der .desktop-Datei die Ausführungsberechtigung.

Jetzt wird Script beim Start ausgeführt.

Pandya
quelle
1
Informationen
Pandya
Danke das funktioniert. Aber mit Emporkömmling können Sie das Gleiche vielleicht ein bisschen einfacher machen (siehe meine Antwort).
TuKsn
Dies wäre perfekt mit einem Link zur Spezifikation
4.
Ich denke nicht, dass die .desktop-Datei als ausführbar gekennzeichnet werden muss.
Julian
4

Andere Möglichkeit:

Erstellen Sie eine Datei in $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

Weitere Details zu Upstart :

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

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

Infos zum Ausführen sudo ohne Passwort:

Wie führe ich eine Anwendung mit sudo ohne Passwort aus?

Wie führe ich bestimmte sudo-Befehle ohne Passwort aus?

TuKsn
quelle
"$ HOME / .config / upstart" kein solches Verzeichnis auf meinem Computer.
Kalamalka Kid
1
@ KalamalkaKid Welche Ubuntu-Version verwendest du? Das Upstart-Verzeichnis sollte sich an dieser Stelle befinden /home/yourusername/.config/upstart/. Öffnen Sie Ihren Home Director in Nautilus, drücken Sie Strg + H und Sie sollten das Verzeichnis .config
TuKsn
2

Um einen Befehl auszuführen , wie Wurzel , nachdem Anmeldung, gibt es eine weiteren einfachen Trick:

Es dauert zwei Schritte:

  • Erstellen Sie einen Trigger - Datei auf Login
  • Erstellen Sie einen Cronjob, der von root ausgeführt wird (gesetzt in /etc/crontab), um ein winziges Skript auszuführen (Ihren Befehl ausführen), wenn und nur wenn die Triggerdatei vorhanden ist. Da die Triggerdatei von demselben Skript entfernt wird, wird Ihr Befehl nur einmal ausgeführt.

Die Reihenfolge ist dann:

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

Die Einrichtung

Die zwei kleinen Skripte:

Eine, um die Triggerdatei beim Anmelden zu erstellen:

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

und eins zwei führen den Befehl aus:

#!/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
  • Kopieren Sie beide Skripte in zwei leere Dateien und speichern Sie sie als create_trigger.shund run_command.sh.
  • Machen Sie beide aus praktischen Gründen ausführbar.
  • Fügen Sie Ihren Startanwendungen den folgenden Befehl hinzu (Dash> Startanwendungen> Hinzufügen).

    /path/to/create_trigger.sh
    
  • Fügen Sie der /etc/crontabDatei ( sudo nano /etc/crontab) die folgende Zeile hinzu :

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

Jetzt wird der definierte Befehl innerhalb einer Minute nach der Anmeldung einmal ausgeführt.

Jacob Vlijm
quelle