Je veux exécuter un script dès que mon authentification lightdm réussit et que mon unité commence à se charger. et je veux exécuter mes scripts en tant qu'utilisateur root.
où se trouvent les scripts de démarrage dans Unity?
Je veux exécuter un script dès que mon authentification lightdm réussit et que mon unité commence à se charger. et je veux exécuter mes scripts en tant qu'utilisateur root.
où se trouvent les scripts de démarrage dans Unity?
Réponses:
Mettez d'abord votre script dans /usr/bin
et donnez la permission d'exécution.
Créez maintenant un fichier .desktop dans /home/[user-name]/.config/autostart/
lequel exécuter votre script qui s'exécute au démarrage.
Exemple: - Laissez votre nom de fichier de script est "exemple" ou "exemple.sh"
Créez un fichier .desktop avec gedit avec les lignes suivantes et enregistrez-le sous le nom de fichier.desktop dans /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
Ici Exec=sudo example
ou Exec=sudo example.sh
exécute votre script en tant que racine à partir de l' /usr/bin
autorisation d'exécution sur le fichier .desktop
Maintenant, Script s'exécute au démarrage.
Une autre possibilité:
Créez un fichier dans $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
Plus de détails sur Upstart :
http://ifdeflinux.blogspot.de/2013/04/upstart-user-sessions-in-ubuntu-raring.html
http://upstart.ubuntu.com/cookbook/
Infos pour courir sudo
sans mot de passe:
Comment exécuter une application avec sudo sans mot de passe?
Comment exécuter des commandes sudo spécifiques sans mot de passe?
/home/yourusername/.config/upstart/
. Ouvrez votre directeur de maison dans nautilus, appuyez sur Ctrl + H et vous devriez voir le répertoire .config
Pour exécuter une commande en tant que root , après la connexion, il existe une autre astuce simple:
Cela prend deux étapes:
/etc/crontab
), pour exécuter un petit script (exécutant votre commande) si et seulement si le fichier de déclenchement existe. Le fichier déclencheur étant supprimé par le même script, votre commande ne s'exécute qu'une seule fois.La séquence est alors:
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
La mise en place
Les deux petits scripts:
Un pour créer le fichier déclencheur lors de la connexion:
#!/bin/sh
touch $HOME/.trigger
et deux exécutent la commande:
#!/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
et run_command.sh
.Ajoutez la commande suivante à vos applications de démarrage (Dash> Applications de démarrage> Ajouter)
/path/to/create_trigger.sh
Ajoutez la ligne suivante au /etc/crontab
fichier ( sudo nano /etc/crontab
):
* * * * * root /path/to/run_command.sh
Maintenant, la commande définie s'exécute une seule fois dans la minute qui suit la connexion.