linux - para - Ejecutar un comando en un momento específico
linea de comandos ubuntu (5)
El comando at no se instala de manera predeterminada en los sistemas en los que trabajo (Ubuntu, RHEL) y no tengo permisos para instalar software nuevo, así que uso scripts que combinan bash y awk para lograr la funcionalidad at de la siguiente manera:
#! /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]
Estoy tratando de ejecutar un comando en un momento específico. He mirado el comando "at", pero no sé cómo hacerlo funcionar ...
Esto es lo que hago:
at 1843 (Enter)
php /run/this/script.php (Ctrl+D)
Pero, ¿cómo hago esto en un script de bash? Quiero decir, necesito presionar enter y "Ctrl + D" para configurar el retraso ... ¿Cómo hacer esto en un script?
Cualquier sugerencia de bienvenida.
Gracias por adelantado,
En bash
o zsh
puedes decir
at 1843 <<< ''php /run/this/script.php''
Si falla, debe usar un documento aquí:
at 1843 <<EOF
php /run/this/script.php
EOF
Es posible que también desee consultar cron
para los trabajos programados regularmente; la entrada crontab
se vería como
43 18 * * * php /run/this/script.php
(EDIT: whoops, ayuda a recordar qué versión de at
. Creo que puede haber sido un mod local).
Podrías probar esto:
at 1843 <<_EOF_
php /run/this/script.php
_EOF_
Edita si lo que quieres hacer es ejecutar Firefox, prueba esto:
at 1843 <<_EOF_
DISPLAY=:0.0 /usr/bin/firefox
_EOF_
Puede hacer eco de su comando en como entrada:
echo "/usr/bin/php /run/this/script.php" | at 18:43
echo "php /run/this/script.php" | at 18:43