Comment démarrer le PC à une heure fixe chaque matin et exécuter le programme python

Chaque matin, j'ai analysé le mouvement des cours de la veille et préparé un environnement pour exécuter un programme qui envoie automatiquement les résultats par e-mail. Je vais résumer ce que j'ai fait jusqu'à ce que je puisse démarrer le programme automatiquement.

procédure

  1. Installez Ubuntu dans les partitions
  2. Définissez le système d'exploitation de démarrage par défaut sur Ubuntu avec le chargeur de démarrage
  3. Configurez le BIOS pour qu'il démarre à l'heure spécifiée chaque matin
  4. Créez un script shell pour démarrer python dans /etc/profile.d/
  5. Créez un script shell à arrêter après l'exécution
  6. Donner l'autorisation d'exécution au fichier
  7. Paramètres de démarrage normal

Débit réel

Installer Ubuntu dans les partitions

Il est séparé du système d'exploitation qui est généralement utilisé pour un fonctionnement stable. J'ai utilisé Gparted pour installer environ 200 Go d'Ubuntu à partir du disque dur de 2 To que j'utilisais pour le stockage de données. (* Soyez prudent lors du partitionnement d'un disque dur qui contient déjà des données, car il y a un risque de corruption des données)

Ubuntu https://www.ubuntulinux.jp/download Gparted http://www.gigafree.net/system/drive/gparted.html

Procédure d'installation, etc. omise

OS de démarrage par défaut sur Ubuntu avec chargeur de démarrage

Lorsque Ubuntu est installé, un chargeur de démarrage appelé GRUB est également installé, modifiez donc les paramètres GRUB et définissez le système d'exploitation de démarrage par défaut sur Ubuntu. Cependant, en gros, Ubuntu devrait être la valeur par défaut, donc si vous n'installez pas 3 systèmes d'exploitation ou plus ou n'utilisez pas d'autres chargeurs de démarrage, il restera tel quel.

Configuré pour démarrer à l'heure spécifiée chaque matin dans le BIOS

La méthode change en fonction du BIOS, et il y en a qui ne peuvent pas être démarrés automatiquement, mais dans mon environnement, c'était comme suit. IMG.jpg

Je ne pouvais pas spécifier le jour, donc je n'ai spécifié que l'heure. Il n'y a rien de spécial à faire le samedi et le dimanche, mais j'ai fait un compromis en déterminant le jour dans le programme python et en le fermant les samedis et dimanches ...

Créez un script shell pour démarrer python dans /etc/profile.d/

Dans le cas de Linux, il semble que vous devriez placer le fichier que vous souhaitez exécuter en premier lorsque le système d'exploitation démarre dans /etc/profile.d/. Est-ce le dossier de démarrage de Windows?

Tout d'abord, j'ai l'autorisation de créer un fichier, comme suit

$ cd /etc/profile.d/
$ sudo gedit auto_start.sh

Le script shell est le suivant

auto_start.sh


#!/bin/sh
cd "Entrez le chemin vers le fichier python"
python analysis.py

Vous pouvez exécuter python directement en spécifiant le chemin absolu sans se déplacer avec cd ici, mais si vous le faites, la destination de sauvegarde csv dans le programme python et le chemin relatif géré lors de l'importation de plusieurs fichiers seront / etc. Il sera traité en fonction de /profile.d/. Par conséquent, j'ai pu éviter un tel problème en déplaçant le répertoire actuel vers le dossier du fichier cible, puis en l'exécutant.

Cependant, si vous faites cela, le répertoire actuel lorsque vous démarrez le terminal sera le dossier du fichier python, vous devez donc le restaurer correctement à la fin.

auto_start.sh


#!/bin/sh
cd "Entrez le chemin vers le fichier python"
python analysis.py
cd

Créer un script shell à arrêter après l'exécution

Exécutez le script shell suivant pour l'arrêter.

shutdown.sh


#!/bin/sh
sudo shutdown -h now

Cependant, cela seul ne fonctionne pas. L'utilisation normale de la commande sudo nécessite que l'utilisateur entre manuellement le mot de passe. Cela rend inutile l'automatisation, de sorte que la commande shutdown élimine le besoin de saisir un mot de passe.

Modifiez-y le fichier de configuration sudo. (* Bien sûr, c'est un acte terrible, donc à vos risques et périls)

$ sudo gedit /etc/sudoers

Et ajoutez le contenu suivant à la fin du fichier.

/etc/sudoers


"Nom d'utilisateur" ALL=(ALL) NOPASSWD:/sbin/shutdown -h now

Après cela, vous pouvez appeler ce script shell une fois le traitement cible terminé du côté python.

analysis.py


import subprocess

#Chose que tu veux faire

subprocess.call("./shutdown.sh")

Donner l'autorisation d'exécution au fichier

Maintenant que nous avons créé le fichier, donnez l'autorisation d'exécution au fichier de script shell et au fichier python. Sinon, vous obtiendrez une erreur indiquant que vous n'avez pas l'autorisation lors de l'exécution automatique.

$ cd /etc/profile.d/
$ sudo chmod a+x auto_start.sh
$ cd "Chemin vers le fichier python"
$ sudo chmod a+x analysis.py
$ sudo chmod a+x shutdown.sh

Paramètres de démarrage normal

Même lors de la connexion pour la maintenance, ce sera un problème si le processus est exécuté et même arrêté, alors évitez cela.

Spécifiez l'heure avec python

Dans le cas de mon programme, il commence à 8h00 tous les matins et le traitement est terminé à 8h30, donc j'essaie d'exécuter le traitement uniquement lorsqu'il est dans ce délai.

analysis.py


import datetime
d = datetime.datetime.today()

if (d.hour == 8) and (0 <= d.minute <= 30):
    #Chose que tu veux faire
    #Arrêter le processus

Lorsque vous souhaitez éviter uniquement l'arrêt

$ sudo shutdown -c

finalement

Puisqu'il s'agit d'un usage personnel, il existe de nombreux endroits où le manque de connaissances est compensé de force. Si quelqu'un connaît un meilleur moyen, je l'apprécierais si vous pouviez m'apprendre.

Recommended Posts

Comment démarrer le PC à une heure fixe chaque matin et exécuter le programme python
Comment arrêter le programme jusqu'à une date et une heure spécifiques en python
Comment démarrer la première projection
Comment démarrer un serveur WEB simple qui peut exécuter des cgi de php et python
Comment insérer un processus spécifique au début et à la fin de l'araignée avec la tremblante
Comment démarrer par lots un programme Python créé avec le notebook Jupyter
Comment obtenir la différence de date et d'heure en secondes avec Python
[Python] Comment ouvrir deux fichiers ou plus en même temps
Je veux créer un lecteur de musique et enregistrer de la musique en même temps
Un programme qui envoie une quantité fixe de courrier à un moment spécifié par Python
Réfléchissez à la programmation de Python sur votre iPad
python Spécifie la fonction à exécuter lorsque le programme se termine
Tâches au démarrage d'un nouveau projet python
Comment exécuter une commande à l'aide d'un sous-processus en Python
Comment tester unitaire une fonction contenant l'heure actuelle à l'aide de Freezegun en Python
[Mac] Un moyen très simple d'exécuter des commandes système en Python et de générer les résultats
[C / C ++] Passez la valeur calculée en C / C ++ à une fonction python pour exécuter le processus et utilisez cette valeur en C / C ++.
Exécutez le programme sans créer d'environnement Python! !! (Comment démarrer avec Google Colaboratory)
Comment exécuter un fichier Python à une invite de commande Windows 10
Comment exécuter un programme Python à partir d'un script shell
Comment mélanger une partie de la liste Python (au hasard.shuffle)
Comment utiliser la méthode __call__ dans la classe Python
Créer un environnement Python et transférer des données vers le serveur
Comment obtenir la dernière (dernière) valeur d'une liste en Python
Comment écrire une classe méta qui prend en charge à la fois python2 et python3
Comment exécuter des commandes et des scripts shell externes en python
Un moyen simple de visualiser le temps pris en Python et un moyen plus intelligent de l'améliorer
[Python] Un programme pour trouver le nombre de pommes et d'oranges qui peuvent être récoltées
Je veux obtenir des informations de fstab à la destination de la connexion ssh et exécuter la commande
Déterminez le format de la date et de l'heure avec Python et convertissez-le en Unixtime
Je souhaite enregistrer l'heure d'exécution et conserver un journal.
Comment déterminer l'existence d'un élément sélénium en Python
[Introduction à Python] Comment fractionner une chaîne de caractères avec la fonction split
Comment obtenir des abonnés et des abonnés de Python à l'aide de l'API Mastodon
Comment vérifier la taille de la mémoire d'une variable en Python
[Python] Comment obtenir le premier et le dernier jour du mois
Comment créer une caméra de surveillance (caméra de sécurité) avec Opencv et Python
[Introduction à Python] Comment utiliser l'opérateur in dans l'instruction for?
Comment vérifier la taille de la mémoire d'un dictionnaire en Python
[Python3] Définition d'un décorateur qui mesure le temps d'exécution d'une fonction
Ecrire un programme qui abuse du programme et envoie 100 e-mails
La route pour installer Python et Flask sur un PC hors ligne
Comment envoyer une requête à l'API DMM (FANZA) avec python
[Introduction à Python] Comment utiliser l'opérateur booléen (et ・ ou ・ non)
[Python] Un programme qui fait pivoter le contenu de la liste vers la gauche
Comment afficher les octets de la même manière en Java et Python
Comment obtenir la version Python
Comment lire des entrées standard ou des fichiers variables en même temps comme la commande coller en Python
Comment saisir une chaîne de caractères en Python et la sortir telle quelle ou dans la direction opposée.
[Python Kivy] Comment obtenir le chemin du fichier par glisser-déposer
[Python] Comment spécifier la position d'affichage de la fenêtre et la taille de matplotlib
Comment diviser et traiter une trame de données à l'aide de la fonction groupby
[Python] Qu'est-ce qu'un argument formel? Comment définir la valeur initiale
[Introduction à Python] Quelle est la différence entre une liste et un taple?
Comment écrire le bon shebang dans les scripts Perl, Python et Ruby
[Python] Explique comment utiliser la fonction range avec un exemple concret
[Python] Un programme qui calcule le nombre de chaussettes jumelées