Wie kann ich mit einem .sh Script (CentOS 7/Linux) die Größe der Festplatte und wie viel von der Festplatte noch frei ist anzeigen lassen?

...komplette Frage anzeigen

3 Antworten

was ist ein .sh Script ? In Linux kann jede Datei <irgendetwas>.sh heißen, ob das nun ein Script für die bourn-Shell, die bash oder die tclsh oder ... oder eine Binärdatei oder ein Dokument ...   ist.

Hier ein Script zum Filtern einzelner Spalten aus dem Report von df :

#!/bin/bash
# \
exec tclsh "$0" "$@"
set opt [ lindex $argv 0 ]
set part [lindex $argv 1 ]
set dev [lindex $argv 2 ]

if { $opt == "" } { puts "Option für df fehlt: \nAnwendung:\n$argv0 Option (z.B. -h ) Spalten-Nummer(z.B. 4 ) \[Geräte-Datei (z.B. /dev/sda1)\] " ; exit }
if { $part == "" } { puts " Nummer der auszugebenden Spalte fehlt\nAnwendung:\n$argv0 Option (z.B. -h ) Spalten-Nummer(z.B. 4 ) \[Geräte-Datei (z.B. /dev/sda1)\] " ; exit }

proc select { string partNbr } {
set list [split $string {} ]
set length [llength $list ]
set i 0 ; set part 0
while { $i < $length } { while { [lindex $list $i ] == " " } { incr i }
incr part
if { $part == $partNbr } { set ret "" ; while { $i < $length && [lindex $list $i ] != " " } { append ret [lindex $list $i ] ; incr i }
return $ret
}
while { [lindex $list $i ] != " " } { incr i }
}
return ""
}
set df [eval exec df $opt ] ; set list [split $df \n ] ; set length [llength $list ]

set i 1 ; set ret ""
while { $i < $length } { lappend ret "[select [lindex $list $i] 1 ] [select [lindex $list $i ] $part ]" ; incr i }

set ret [lsort -unique $ret ] ; set i 0 ; set lenght [llength $ret ] ; while { $i < $length } { if { [lindex $ret $i ] != "" } {
if { $dev == "" || $dev == [lindex [split [lindex $ret $i ] ] 0 ] } { puts [lindex $ret $i ] } } ; incr i }

Kopiere den Inhalt in eine Datei, mache sie ausführbar und rufe deren Namen auf.

chmod 755 <name-der-datei>
./<name-der-datei> 

oder einige  Beispiele

./<name-der-datei> -h 4 
./<name-der-datei> -h 4 /dev/sdb1

sich selbst localhost123 nennen, aber dann nicht mal grundlagenkentnisse, .. haha. das sind mir die liebsten!

also du nutzt zum ermittteln des speicherplatzes "df -H", das schon mal nicht verkehrt.

Dich interessiert nur die Größe der Festplatte ud wieviel belegt ist:

hiermit bekommst du nur die erste Zeile ausgegeben, evtl musst den Teil noch erweitern, kp was du sonst noch für partitionen etc hast |xyz|abc...

df -H | grep -vE '^Filesystem|udev|tmpfs|cdrom'

Das ganze in einer variable würde dann so aussehn:

HDD=$(df -H | grep -vE '^Filesystem|udev|tmpfs|cdrom')

Ausgeben könntest den Quack dann mit z.B.

echo $HDD

Da du aber nur den zweiten Wert (Gesamtgröße) und den fünften Teil (% Belegung) haben möchtest, gibst du auch nur die aus, bzw speichserst nur die in der variable:


HDD_USED=$( df -H | grep -vE '^Filesystem|udev|tmpfs|cdrom' | awk '{ print $5 }')

HDD_ALL=$( df -H | grep -vE '^Filesystem|udev|tmpfs|cdrom' | awk '{ print $2 }')

echo "HDD gesamt: $HDD_ALL | davon belegt $HDD_USED"

...

den Rest solltest wohl alleine schaffen^^





localhost123 05.05.2016, 13:22

Du weißt aber schon, dass localhost nichts mit programmieren zu tun hat? Das ist schon echt hart...

0

Klar geht das. Du kannst jeden Befehl den du so in der Konsole nutzt, auch in einer Variable speichern und per echo ausgeben, oder in einer txt speichern und die via echo und cat ausgeben 

localhost123 29.04.2016, 13:06

Das weiß ich, aber wie sieht so ein Befehl denn aus? Ich habe bisher 'df -h' gemacht, aber das ist mir dann doch zu unübersichtlich..

0
Linuxhase 30.04.2016, 00:41
@localhost123

@localhost123

Ich habe bisher 'df -h' gemacht, aber das ist mir dann doch zu unübersichtlich..

Was bitte ist an:

df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda5 ext4 20G 14G 4,6G 76% /
devtmpfs devtmpfs 3,9G 0 3,9G 0% /dev
tmpfs tmpfs 3,9G 296K 3,9G 1% /dev/shm
tmpfs tmpfs 3,9G 2,2M 3,9G 1% /run
tmpfs tmpfs 3,9G 0 3,9G 0% /sys/fs/cgroup
/dev/sda6 ext4 6,4G 788M 5,3G 13% /var/log
/dev/sda1 fuseblk 30G 26G 3,5G 89% /windows
/dev/sdb5 ext4 851G 798G 12G 99% /home
/dev/sdb6 fuseblk 49G 24G 26G 48% /ntfs50
/dev/sdb2 ext4 9,8G 5,8G 3,5G 63% /tmp

unübersichtlich?

Erstelle doch mal eine, Deiner Meinung nach, Übersicht wie Du sie gerne hättest, dann kann man die Ausgaben von df, fdisk , lsblk oder anderen Programmen sicher entsprechend filtern lassen.

lsblk -p

Die Manpage ist immer mindestens einen Blick wert ;-)

Und es gibt ja auch diverse grafische Programme.

Linuxhase

0

Was möchtest Du wissen?