Salut a tous,
J'aurai aimé savoir comment lancer tout les jours a la même heure un script en tant que l'utilisateur de apache (nobody) mais en faisant en sorte que si ce programme est déjà lancé le script ne s'execute pas !
Auriez-vous une idée de comment faire ?!
Merci d'avance
cordialement,
# Méthode sauvage
Posté par bmc . Évalué à 4.
1) vérifier que le fichier mon_script.lock n'existe pas ; s'il existe, on se tire
2) créer le fichier mon_script.lock si on ne s'est pas tiré
3) traitements
4) effacer le fichier mon_script.lock
Attention à bien effacer le fichier quand tu sors, y compris lors de sorties anormales (genre si un traitement foire, il faut que ton fichier s'efface, sinon le traitement ne se lancera plus).
[^] # Re: Méthode sauvage
Posté par iznogoud . Évalué à 5.
Du coup, si tu as fait un kill sauvage, et que tu relances ton programme, il arrive en 1
vérifie le fichier, son contenu, et si le PID correspond bien à ce que tu veux.
Et voilà, c'est la fête.
Et ça évite d'utiliser un ps. Si d'autres processus doivent être renseignés de l'état de ton programme, ils peuvent savoir si il est ou non lancé facilement.
# simple hein ?
Posté par Babelouest (site web personnel) . Évalué à 2.
tu édites le crontab de l'utilisateur nobody (en root, crontab -u nobody -e) et tu places le cron que tu veux lancer quotidiennement :
pour le lancer à 3h par exemple
0 3 * * * /chemin/vers/ton/script
et bien sur ton script en question ne se contente pas de lancer la commande qui va bien mais vérifie avant tout si cette meme commande n'est pas deja lancée...
un peu comme ca :
bon c'est pas testé, c'est gruiiiik mais c'est l'idée
[^] # Re: simple hein ?
Posté par dab . Évalué à 4.
#! /bin/sh
if ! ps --no-headers -C commande_a_lancer > /dev/null;
then commande_a_lancer;
fi;
[^] # Re: simple hein ?
Posté par totof2000 . Évalué à 4.
[^] # Re: simple hein ?
Posté par CoinKoin . Évalué à 2.
Voir le man de kill pour plus de détails.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.