
Solo tengo un usuario SFTP y quiero que pueda ver el espacio disponible.
Quiero hacer un cron
archivo que se ejecute cada 30 minutos, para eliminar el archivo antiguo y colocar el archivo nuevo para mostrar el espacio libre en el disco.
Podría simplemente poner df -h > df.txt
, pero no quiero hacer eso. Quiero un archivo vacío, con un nombre de archivo como:, 3.1G.available
y luego, en el script de Shell, eliminar *.available
y crear el nuevo archivo, que se ejecuta mediante cron.
Gracias de antemano.
Respuesta1
Comencemos con el df
comando, usando la -h
opción para dar uso al tamaño en formato legible por humanos (gigabytes en este caso)
$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 226G 2.4G 213G 2% /
udev 1.7G 4.0K 1.7G 1% /dev
tmpfs 691M 324K 690M 1% /run
none 5.0M 0 5.0M 0% /run/lock
none 1.7G 0 1.7G 0% /run/shm
Ahora usemos grep
para limitar la salida de ese comando solo a la partición que nos interesa:sda1
$ df -h | grep 'sda1'
/dev/sda1 226G 2.4G 213G 2% /
Se ve bien. Sigamos reduciéndolo solo a la columna 'Disponible', usandoawk
$ df -h | grep 'sda1' | awk '{print $4}'
213G
Que funcionará. Ahora incluiremos nuestro comando entre comillas invertidas, para que la salida se devuelva al shell. Luego usaremos el touch
comando para crear un archivo vacío usando el resultado del comando que hemos creado, junto con la cadena '.available'
$ touch `df -h | grep 'sda1' | awk '{print $4}'`.available
$ ls
213G.available
¡Ahí tienes!
Respuesta2
De otra manera
touch `df -h --output='avail' / | tail -1`.available