J'essaie d'exécuter une commande à un moment donné. 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 sur "Ctrl + D" pour configurer le délai ... Comment faire cela dans un script?
Toutes les suggestions les bienvenues.
Merci d'avance,
Vous pouvez essayer ceci:
at 1843 <<_EOF_
php /run/this/script.php
_EOF_
edit si vous voulez exécuter Firefox, essayez ceci:
at 1843 <<_EOF_
DISPLAY=:0.0 /usr/bin/firefox
_EOF_
Vous pouvez renvoyer votre commande dans at
en tant qu'entrée:
echo "/usr/bin/php /run/this/script.php" | at 18:43
Dans bash
ou zsh
vous pouvez dire
at 1843 <<< 'php /run/this/script.php'
A défaut, vous devez utiliser un document here:
at 1843 <<EOF
php /run/this/script.php
EOF
Vous voudrez peut-être aussi rechercher dans cron
des tâches planifiées régulièrement; l’entrée crontab
ressemblerait à
43 18 * * * php /run/this/script.php
(EDIT: whoops, aide à rappeler quelle version de at
. Je pense que cela aurait pu ê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 autorisations pour installer un nouveau logiciel. J'utilise donc des scripts combinant bash et awk afin de réaliser le at fonctionnalité comme suit:
#! /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]