script que compara fechas

Imagen de maschino
0 puntos

Buenas..

En teoria esto deberia ser un script muy simple, pero se me esta complicando demasiado. Estoy generando un script que compruebe que existe un fichero y que tiene menos de 6 horas y dependiendo de eso hacer o dejar de hacer tareas varias. Consigo capturar la hora del sistema y la hora del fichero, pero no se compararlo.

En windows script esta la funcion datediff, pero en linux no consigo nada de nada...

como podria hacerlo??? Me imagino que voy como el culo, pero por si acaso os pongo como capturo las horas

hora_semaforo=ls -la /tmp/fichero | cut -d " " -f 7

hora_actual=date |cut -d " " -f 4

Me imagino que habra una manera sencilla de comparar la fecha del sistema con la de un fichero, pero soy demasiado nuevo en esto.

 Una manita???

Imagen de joseluis
+1
0
-1

Prueba con lo siguiente:

#!/bin/bash

tiempo=$((60*60*6)) # 6 horas, si quieres seis días: 
                    # tiempo=$((60*60*24*6))

fichero=`stat -c %Y mi_fichero` # Fecha y hora en segundos de ultima actualizacion
ahora=`date +%s` # Fecha y hora actual en segundos

diferencia=$((${ahora} - ${fichero})) # Calculamos la diferencia

if [ ${diferencia} -gt ${tiempo} ]; then
  echo "Hace mas de ${tiempo} segundos que se actualizó"
else
  echo "Tan solo hace ${diferencia} segundos que se actualizó"
fi

Para ver más formatos de stat man stat y lo mismo para date (man date)


Fdo. El forense asesino alias Censor fundamentalista.

+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

Imagen de maschino
+1
0
-1

Muchas gracias,

Probare lo que comentas, pero creo que encontre la solucion algo mas sencilla con el comando find

find /ruta -name nombre fichero -mmin tiempo en minutos

luego solo compruebo si es verdadero o no la salida, aun asi me gusta tu solucion....

Por cierto, no sabras si hay alguna manera de hacer una pausa o parada durante x tiempo??? en plan:

wait 30 = esperar 30 minutos 

 

+1
0
-1
Imagen de slap
+1
0
-1

Tienes el comando:

sleep n

"n" es el tiempo en segundos que quieres que dure la pausa.

Saludos.
slap

+1
0
-1

Saludos.

0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://www.injiniero.es

Imagen de maschino
+1
0
-1

muy correcto...

 No me acordaba del comando, y mira que es simple...

Thanks compañero, ¿a que casi no se nota que no suelo hacer mucha programacion??  :P 

+1
0
-1