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
Antwort bewerten Vielen Dank für Deine Bewertung

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^^





Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von 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 

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von 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

Was möchtest Du wissen?