Wie fügt man verfügbaren Speicherplatz in einen Dateinamen ein?

Wie fügt man verfügbaren Speicherplatz in einen Dateinamen ein?

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.availableund diese dann im Shellskript löschen *.availableund die neue Datei erstellen – das von cron ausgeführt wird.

Dank im Voraus.

Antwort1

Beginnen wir mit dem dfBefehl und verwenden die -hOption, 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 grepdie 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 touchBefehl, 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

verwandte Informationen