Exécuter une commande à un moment précis

J’essaie d’exécuter une commande à un moment précis. J’ai regardé la commande “at”, mais je ne sais pas comment le faire fonctionner …

Voici ce que je fais:

at 1843 (Enter) php /run/this/script.php (Ctrl+D) 

Mais comment puis-je faire cela dans un script bash? Je veux dire, je dois appuyer sur Entrée et “Ctrl + D” pour configurer le délai … Comment faire cela dans un script?

Toutes les suggestions sont les bienvenues.

Merci d’avance,

Vous pourriez essayer ceci:

 at 1843 <<_eof_ php /run/this/script.php _EOF_ 

éditez si ce que vous voulez faire est de lancer Firefox, essayez ceci:

 at 1843 <<_eof_ DISPLAY=:0.0 /usr/bin/firefox _EOF_ 

Vous pouvez faire écho à votre commande en tant qu’entrée:

 echo "/usr/bin/php /run/this/script.php" | at 18:43 

En bash ou zsh vous pouvez dire

 at 1843 <<< 'php /run/this/script.php' 

A défaut, vous devez utiliser un document ici:

 at 1843 < 

Vous pourriez également vouloir regarder cron pour les travaux régulièrement programmés; l'entrée crontab ressemblerait

 43 18 * * * php /run/this/script.php 

(EDIT: whoops, aide à rappeler quelle version de at . Je pense que cela pourrait être un mod local.)

echo "php /run/this/script.php" | at 18:43

La commande at n’est pas installée par défaut sur les systèmes sur lesquels je travaille (Ubuntu, RHEL) et je ne dispose pas des permissions pour installer un nouveau logiciel. J’utilise donc des scripts combinant bash et awk pour atteindre la fonctionnalité

 #! /bin/bash res="" while [ ! $res ]; do res=$( date | awk -v hour=$1 -v min=$2 '{ split($4, tmp, ":" ); if( (tmp[1] == hour) && (tmp[2] == min) ) { print "ok"; } else { print ""; } }' ) done 

./atReplacement.sh $ HOUR $ MIN; [OTHER_COMMANDS]