IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Shell et commandes GNU Discussion :

Ajouter une entrée cron depuis un script


Sujet :

Shell et commandes GNU

  1. #1
    Nouveau candidat au Club
    Inscrit en
    Septembre 2005
    Messages
    1
    Détails du profil
    Informations forums :
    Inscription : Septembre 2005
    Messages : 1
    Par défaut Ajouter une entrée cron depuis un script
    Bonjour,

    J'ai besoin depuis un script BASH d'ajouter un le lancement d'une commande depuis CRON. est ce que quelqu'un aurait un astuce?

    J'ai fais le test en manuel et je comprends le fonctionnement. Par contre depuis un script je ne voie pas.

  2. #2
    Expert confirmé Avatar de frp31
    Homme Profil pro
    Ingénieur systèmes et réseaux
    Inscrit en
    Juillet 2006
    Messages
    5 196
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Juillet 2006
    Messages : 5 196
    Par défaut
    est ecrit dans le man ....
    faut passer par un fichier de surcharge et hop ca merge avec l existant
    attention aux droits et a surcharger le cron du bon user

  3. #3
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    18 270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 18 270
    Par défaut
    tu appelles ta commande cron depuis ton script.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par michaelkael1 Voir le message
    J'ai besoin depuis un script BASH d'ajouter un le lancement d'une commande depuis CRON. est ce que quelqu'un aurait un astuce?

    J'ai fait le test en manuel et je comprends le fonctionnement. Par contre depuis un script je ne vois pas.
    Bah, suffit de simuler l'appui sur le clavier dans un script en input. Par exemple en imaginant que l'éditeur de crontab soit vi, suffit de mettre en input toutes les commandes "vi"...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    crontab -e <<_EOT_
    :$
    o
    mn hh jj mm js script
    :wq!
    _EOT_
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    mais pourquoi vouloir modifier un fichier crontab depuis un script ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  6. #6
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (crontab -l; echo "59 23 * * * commande arg1 arg2 >/dev/null 2>&1") | crontab -

  7. #7
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    le passage par un sous-interpréteur (entre parenthèses) n'est pas indispensable : une liste entre accolades fonctionne aussi.
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  8. #8
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    mais pourquoi vouloir modifier un fichier crontab depuis un script ?
    Dans un script d'installation par exemple.

  9. #9
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    le passage par un sous-interpréteur (entre parenthèses) n'est pas indispensable : une liste entre accolades fonctionne aussi.
    C'est vrai. Ca permet de gagner quelques précieuses microsecondes ...

  10. #10
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Citation Envoyé par jlliagre
    Dans un script d'installation par exemple.
    n'aurait-on pas plus vite fait, alors, de créer directement le fichier sous /var/spool/cron/crontabs/ ?
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  11. #11
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 357
    Par défaut
    Bonjour,

    @N_BaH: La commande crontab est setuid root, donc il est plus simple de passer par crontab que de créer le fichier dans /var/spool/cron/ sinon, il faudrait être root pour créer le fichier et il faudrait aussi prendre en considération la politique de sécurité de crontab (mask, owner, utilisateur autorisé à utilisé crontab, ...)

  12. #12
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par N_BaH Voir le message
    n'aurait-on pas plus vite fait, alors, de créer directement le fichier sous /var/spool/cron/crontabs/ ?
    Au risque d'écraser les entrées existantes ...

    De toute façon, les modifications de la crontab doivent être faites à l'aide de la commande crontab, pas en modifiant directement le fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $ man -s 5 crontab
    ...
    Each user can have their own crontab, and though these are files in /var/spool/cron/crontabs, they are not intended to be edited directly.
    ...

  13. #13
    Modérateur
    Avatar de N_BaH
    Profil pro
    Inscrit en
    Février 2008
    Messages
    7 664
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 7 664
    Par défaut
    Citation Envoyé par jlliagre
    Dans un script d'installation[...]
    Citation Envoyé par disedorgue
    [...]il faudrait être root pour créer le fichier[...]

    vous faites vos installations sans être root ? et je parle bien de créer le fichier, et non d'«ajouter un le lancement d'une commande depuis CRON».
    N'oubliez pas de consulter les cours shell, la FAQ, et les pages man.

  14. #14
    Expert confirmé Avatar de disedorgue
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Décembre 2012
    Messages
    4 357
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Décembre 2012
    Messages : 4 357
    Par défaut
    Bah oui, pourquoi être root pour installer un soft qui peut aussi avoir besoin d'une crontab ?
    De plus, il y a un check du fichier par crontab lors de la création (cohérence des champs,...)

  15. #15
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par N_BaH Voir le message

    vous faites vos installations sans être root ?
    Ce n'est pas le problème, mais pourquoi pas, s'il s'agit par exemple d'une installation d'un logiciel dans la homedir d'un utilisateur.
    et je parle bien de créer le fichier, et non d'«ajouter un le lancement d'une commande depuis CRON».
    1: tu postules que le fichier n'existe pas mais ce n'est pas garanti. Michaelkael1 à écrit "ajouter le lancement d'une commande depuis CRON", ce qui laisse penser que la crontab existe déjà.
    2: un fichier crontab ne doit pas être créé par une script d'installation de logiciel, ce dernier doit passer par la commande crontab. C'est la "best practice", ça évite de perdre les modifications si quelqu'un d'autre est en train de faire la même chose, comme l'a déjà écrit disdorgue, il y a un contrôle de cohérence, un peu comme visudo ou vipw, et aussi c'est portable. Même si elles le font probablement toutes, une implémentation cron n'est pas obligée de stocker ses crontab dans /var/spool/cron/crontabs/<username>.

  16. #16
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (crontab -l; echo "59 23 * * * commande arg1 arg2 >/dev/null 2>&1") | crontab -
    Ca j'ai bien aimé (récupérer tout le contenu initial pour y rajouter sa propre ligne et renvoyer le tout au crontab pour qu'il l'intègre). Je ne comprends d'ailleurs pas le "-1".

    On est malheureusement obligé de passer par crontab car c'est le seul outil qui permette à un "non root" d'écrire où il faut et en plus, en dehors du contrôle multiple auquel je ne crois pas trop (je vois mal un second user écrire dans mon crontab en même temps que moi), ça réarme le daemon crond pour qu'il prenne en compte la modif. Sinon il faut lui envoyer un signal HUP. Bon c'est faisable mais puisque crontab le fait déjà...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  17. #17
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Citation Envoyé par Sve@r Voir le message
    Je ne comprends d'ailleurs pas le "-1".
    Il n'y a pas de "-1", c'est "-l" :


    ça réarme le daemon crond pour qu'il prenne en compte la modif. Sinon il faut lui envoyer un signal HUP.
    Pas avec les cron usuels, qui vérifient toutes les minutes si le répertoire contenant les fichiers crontab a été modifié et relisent les fichiers mis à jours le cas échéant.

  18. #18
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 839
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 839
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par jlliagre Voir le message
    Je parlais de ton "-1" en appréciation, je connais bien entendu l'option "-l" de crontab
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  19. #19
    Modérateur
    Avatar de jlliagre
    Homme Profil pro
    Ingénieur support avancé & développement
    Inscrit en
    Juin 2007
    Messages
    2 695
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur support avancé & développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 695
    Par défaut
    Ah, je n'avais pas vu ce "-1". Il ne vient sûrement pas de moi (j'ai vérifié que je n'avais pas cliqué par erreur). Bon, je met "+1" pour corriger cette injustice ...

Discussions similaires

  1. [LDAP] Ajouter une entrée
    Par pascale86 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 26/06/2007, 11h52
  2. Réponses: 2
    Dernier message: 08/03/2007, 10h50
  3. Ajouter une entrée dans le menu contextuel de windows
    Par ero-sennin dans le forum Delphi
    Réponses: 9
    Dernier message: 06/12/2006, 16h02
  4. appler une page web depuis un script cgi
    Par Bestop dans le forum Réseau/Web
    Réponses: 5
    Dernier message: 26/08/2006, 11h09
  5. Réponses: 2
    Dernier message: 15/08/2005, 20h54

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo