¿Por qué mi comando de cláusula 'at' ejecuta el shell inmediatamente e ignora el límite de tiempo?

¿Por qué mi comando de cláusula 'at' ejecuta el shell inmediatamente e ignora el límite de tiempo?

Escribí un shell llamadot.sh Su contenido es:

touch 88888

El comando que estoy usando es

sh t.sh | at 03:13Jun15

Después de ejecutar este comando, apareció este programa en mi pantalla:

warning: commands will be executed using /bin/sh
job 9 at Sun Jun 15 03:13:00 2014

Se muestra bastante claro que esto se ejecutará el domingo 15 de junio a las 03:13:00 de 2014.

Pero cuando reviso mi carpeta, encuentro que existe un archivo 88888 allí. Lo quité y probé de nuevo, sigue siendo el mismo resultado.

¿Cuáles son los problemas aquí? ¿Sería algo bash/sh? ¿Porque vi que dice que se ejecutará mediante /bin/sh?

Respuesta1

atlee comandos de la entrada estándar o de un archivo si especifica la -fbandera. Lo que sh t.sh | at [time]hace es:

1. execute the shell script t.sh *right now*; 
2. pipe the output of the shell script to at. 

Pero el script no tiene salida, por lo que no hay nada que ejecutar el domingo.

Lo que quieres es at 03:13Jun15 -f t.sh.

información relacionada