79 votes

Comment configurer cron pour qu'il exécute un fichier une seule fois à un moment précis ?

Comment puis-je configurer cron pour exécuter un fichier une seule fois à un moment précis ? Une des alternatives est at mais il n'est pas accessible à tous les utilisateurs des plans d'hébergement standard. C'est pourquoi je me demandais s'il était possible de le faire à l'aide de cron ?

0 votes

J'ai essayé de lancer $at = shell_exec('at'); sur un serveur LAMP standard et il renvoie NULL. Je suppose donc qu'il ne fonctionne pas (qu'il n'a pas de droits) par défaut.

1voto

dj_segfault Points 6407

Votre commentaire suggère que vous essayez d'appeler ceci à partir d'un langage de programmation. Si c'est le cas, votre programme peut-il faire bifurquer un processus enfant qui appelle sleep puis effectue le travail ?

Pourquoi ne pas demander à votre programme de calculer le nombre de secondes avant l'heure d'exécution souhaitée, et de faire appel à shell_exec("sleep ${secondsToWait) ; myCommandToRun");

0 votes

Vous avez raison : j'essaie de l'exécuter à partir de PHP. Que se passe-t-il si la valeur de secondsToWait est [ ] 60*60*24*30, c'est-à-dire 30 jours ? Cela ne risque-t-il pas de tuer le serveur ? (et j'ai besoin de lancer plus d'un travail ; des centaines [mais ils doivent être exécutés à des moments différents])

0 votes

Vous n'avez rien dit dans votre question sur le fait que le temps est dans un mois. Bien sûr, cela change les choses.

0voto

alexandre1985 Points 535

at est la voie correcte.

Si vous n'avez pas le at dans la machine et que vous n'avez pas non plus les privilèges d'installation sur celle-ci, vous pouvez mettre quelque chose comme ceci sur cron (peut-être avec le crontab commande) :

* * * 5 * /path/to/comand_to_execute; /usr/bin/crontab -l | /usr/bin/grep -iv command_to_execute | /usr/bin/crontab - 

il exécutera votre commande une fois et la supprimera de cron après cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X