web-dev-qa-db-fra.com

Exécuter Python au démarrage sous Ubuntu

J'ai un court script Python qui doit s'exécuter au démarrage - Ubuntu 13.10. J'ai essayé tout ce à quoi je peux penser mais que je n'arrive pas à l'exécuter. Le script:

#!/usr/bin/python
import time
with open("/home/username/Desktop/startup.txt", 'a') as f:
    f.write(str(time.time()) + " It worked!")

(Le script actuel est un peu différent, car je l'utilise uniquement à des fins de test, mais vous voyez l'idée.)

J'ai essayé tout ce qui suit, sans succès:

  • Mettez la commande python startuptest.py dans crontab, comme @reboot python /home/username/Documents/startuptest.py, en tant qu’utilisateur régulier et en tant que Sudo

  • Mettez la commande python /home/username/Documents/startuptest.py dans /etc/rc.local

  • Ouvrir les applications de démarrage d'Ubuntu et y placer la commande

  • Fait tout ce qui précède, en plaçant la commande dans un script Shell et en l'appelant à la place

Rien ne fonctionne. J'ai l'impression de rater quelque chose de simple. Des idées? (Le script fonctionne correctement si je lance simplement la commande depuis un terminal.)

39
crypto

Mettez ceci dans /etc/init (Utilisation /etc/systemd dans Ubuntu 15.x)

mystartupscript.conf

start on runlevel [2345]
stop on runlevel [!2345]

exec /path/to/script.py

En plaçant ce fichier de configuration ici, vous vous connectez au service pstart d'ubuntu qui exécute des services au démarrage.

le démarrage/arrêt manuel se fait avec Sudo service mystartupscript start et Sudo service mystartupscript stop

29
RickyA

Instructions

  • Copiez le fichier python dans/bin:

    Sudo cp -i /path/to/your_script.py /bin

  • Ajouter un nouveau travail cron:

    Sudo crontab -e

    Faites défiler vers le bas et ajoutez la ligne suivante (après tout le #'s):

    @reboot python /bin/your_script.py &

    Le signe "&" en fin de ligne signifie que la commande est exécutée en arrière-plan et que le système ne s’arrête pas de démarrer.

  • Essaye-le:

    Sudo reboot

Exemple pratique:

  • Ajoutez ce fichier sur votre bureau: test_code.py (exécutez-le pour vérifier qu'il fonctionne pour vous)

    from os.path import expanduser
    import datetime
    
    file = open(expanduser("~") + '/Desktop/HERE.txt', 'w')
    file.write("It worked!\n" + str(datetime.datetime.now()))
    file.close()
    
  • Exécutez les commandes suivantes:

    Sudo cp -i ~/Desktop/test_code.py /bin

    Sudo crontab -e

  • Ajoutez la ligne suivante et enregistrez-la:

    @reboot python /bin/test_code.py &

  • Maintenant, redémarrez votre ordinateur et vous devriez trouver un nouveau fichier sur votre bureau: HERE.txt

18
João Cartucho

Si vous êtes sur Ubuntu, vous n'avez pas besoin d'écrire d'autre code que votre code de fichier Python, ). Voici les étapes: -

  • Ouvrez le tableau de bord (la première icône dans la barre latérale).
  • Puis tapez Applications de démarrage et ouvrez cette application.
  • Ici, cliquez sur le bouton Ajouter à droite.
  • Remplissez les détails et dans la zone de commande, recherchez votre fichier Python et cliquez sur OK.
  • Testez-le par Redémarrage du système. Terminé . Prendre plaisir !!
6
Aditya Agarwal

Créez le fichier ~/.config/autostart/MyScript.desktop avec

[Desktop Entry]
Encoding=UTF-8
Name=MyScript
Comment=MyScript
Icon=gnome-info
Exec=python /home/your_path/script.py
Terminal=false
Type=Application
Categories=

X-GNOME-Autostart-enabled=true
X-GNOME-Autostart-Delay=0

Ça m'aide!

3
id614515

Dans des situations similaires, j’ai bien fait de mettre quelque chose comme ceci dans /etc/rc.local:

cd /path/to/my/script
./my_script.py &
cd -
echo `date +%Y-%b-%d_%H:%M:%S` > /tmp/ran_rc_local  # check that rc.local ran

Cela a fonctionné sur plusieurs versions de Fedora et sur Ubuntu 14.04 LTS, pour les scripts python et Perl).

1
jazcap53