
Ich habe nur einen SFTP-Benutzer und möchte, dass dieser den verfügbaren Speicherplatz sehen kann.
Ich möchte ein Dienstprogramm erstellen cron
, das alle 30 Minuten ausgeführt wird, die alte Datei löscht und die neue Datei einfügt, um den freien Speicherplatz anzuzeigen.
Ich könnte einfach eingeben df -h > df.txt
, aber das möchte ich nicht. Ich möchte eine leere Datei mit einem Dateinamen wie: 3.1G.available
und diese dann im Shellskript löschen *.available
und die neue Datei erstellen – das von cron ausgeführt wird.
Dank im Voraus.
Antwort1
Beginnen wir mit dem df
Befehl und verwenden die -h
Option, die Größe in einem für Menschen lesbaren Format anzugeben (in diesem Fall Gigabyte).
$ 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
Lassen Sie uns nun grep
die Ausgabe dieses Befehls auf die Partition einschränken, die uns interessiert -sda1
$ df -h | grep 'sda1'
/dev/sda1 226G 2.4G 213G 2% /
Sieht gut aus. Lassen Sie uns die Auswahl weiter einschränken und nur noch die Spalte „Verfügbar“ verwenden.awk
$ df -h | grep 'sda1' | awk '{print $4}'
213G
Das wird funktionieren. Jetzt umschließen wir unseren Befehl mit Backticks, sodass die Ausgabe an die Shell zurückgegeben wird. Dann verwenden wir den touch
Befehl, um eine leere Datei mit der Ausgabe des von uns erstellten Befehls zusammen mit der Zeichenfolge „.available“ zu erstellen.
$ touch `df -h | grep 'sda1' | awk '{print $4}'`.available
$ ls
213G.available
Da haben Sie es!
Antwort2
Ein anderer Weg
touch `df -h --output='avail' / | tail -1`.available