programa para paquetes linea instalar ejemplos ejecutar comandos comando basicos linux bash command at-job

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