Größe von Ordner ermitteln

PMachmal sucht man nach Speicherfressern. Dann kann man sich über die folgende Zeile die Größe aller Unterordner des angegebenen Ordners (hier am Beispiel „var“) anzeigen lassen:

find /var/ -maxdepth 1 -type d -exec du -sh '{}' ';'

Diese sucht im angegebenen Ordner nach Unterordnern aber nur eine Ebene und führt für jedes Ergebnis eine Größenberechnung per „du“ durch.

Prozesse mit hoher CPU-Last ermitteln

Da die Ausgabe von „top“ nicht immer die gewünschten Informationen liefert, kann man sich die Prozesse mit hoher CPU-Last auch über „ps“ mit Sortierung anzeigen lassen:

ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10

Damit werden alle Prozesse, aber nur die angegebenen Parameter angezeigt, nach Spalte aufsteigend sortiert und die letzten 10 Zeilen wiedergegeben. (Danke an René)

Wer möchte, kann sich das ganze auch als Alias in seine .bashrc eintragen.

alias topten='ps -eo pcpu,pid,user,args | sort -k 1 -r | head -10'

Unterordner packen und löschen

Die folgende Befehlszeile sucht im aktuellen Ordner alle Unterordner (keine Dateien) und packt diese als <Ordnername>.tar.gz und löscht den Originalordner.

for Ordner in $(find -maxdepth 1 -type d); do if [ $Ordner != "." ]; then tar -czf $Ordner.tar.gz $Ordner; rm -rf $Ordner; fi; done;

Automatischen Start des X-Managers deaktivieren

Manch einer (wie ich z.B.) betreibt Server auf denen er ab und zu auch mal eine grafische Oberfläche benötigt. Trotzdem soll der Display-Manager nicht ständig laufen. Ist ja auch ein Server. Deswegen deaktivere ich den Dienst mit

update-rc.d -f gdm remove
Removing any system startup links for /etc/init.d/gdm ...
    /etc/rc0.d/K01gdm
    /etc/rc1.d/K01gdm
    /etc/rc2.d/S30gdm
    /etc/rc3.d/S30gdm
    /etc/rc4.d/S30gdm
    /etc/rc5.d/S30gdm
    /etc/rc6.d/K01gdm

für den Gnome Desktop Manger. Für KDE-Fans gilt das gleiche (kdm). Wenn ich die grafische Oberfläche jetzt doch brauche, kann ich ihn immer noch mit

/etc/init.d/gdm start

starten.

Prozessor gezielt auslasten

Mit diesem Befehl kann man künstlich die Systemlast erhöhen. Beim Aufruf begibt sich dieser durch das angehängte „&“ direkt in den Hintergrund und kann mit „fg“ wieder zurückgeholt werden. Bei einem Mehrkernprozessor können bzw. müssen mehrere Prozesse dieser Art gestartet werden um dieses auszulasten. Kombiniert mit einem „nice“ Wert kann die erzeugte Auslastung manipuliert werden, bei laufendem Prozess kann dieses manipulieren auch mit „renice“ weiter verfeinert bzw. angepasst werden.

cat /dev/zero | gzip > /dev/null &

Dateien rekursiv in Verzeichnissen zählen

Damit kann man alle Dateien in einem Verzeichnis zählen inklusive der enthaltenen Unterordnern.

find <Ordner> -type f | wc -l

Wenn man zwei Ordner z.B. mit gleichem Namen hat (durch rsync), kann man das auch zum Vergleichen nutzen:

Ordner=<OrdnerName> && find <Pfad1>$Ordner -type f | wc -l && find <Pfad2>$Ordner -type f | wc -l

Alle Unterordner eines Verzeichnisses packen

Manchmal muss man schnell und einfach Platz sparen. Oder man muss alle Unterordner eines Verzeichnisses sichern/archivieren.

Unter Windows kann man das gut mit der frei Software 7-zip erledigen.

Im folgenden Script werden alle Unterordner über eine for-Schleife ermittelt. In dieser wird dann der Pack-Befehl ausgeführt und zusätzlich der Löschbefehl für den entsprechenden Ordner. Die Verknüpfung mit „&&“ ist erforderlich, da die Windows-for-Schleife nur eine Zeile verarbeien kann. 🙁

@echo off
REM Ziel des Backup-Archives
SET ArbeitsOrdner=C:OrdnerEnthaltendesVerzeichnis
REM Block fuer Packer-Konfiguration
set ZIPExe=C:Programme7-Zip7z.exe
set ZipFileExt=7z
set ZipFilePWD=
REM -r = rekursiv, -mhe = Header-Verschlüsselung, -ms=off = kein Solid-Modus, -mx9 = Kompressionsstufe 9, -p = Passwort
set globalParams=-r -mhe -mx9 -ms=off

REM Für alle Ordner im Arbeitsordner, Pack-Befehl aufrufen && Alte Dateien löschen
for /D %%i in (%ArbeitsOrdner%*) do (
  "%ZIPExe%" a -t%ZipFileExt% "%%i.%ZipFileExt%" %globalParams% "%%i" && rmdir /S /Q %%i
)

Geplanten Task per Kommando-Zeile anlegen

Wenn man viele einzelne „Geplante Tasks“ benötigt, kann man sich diese auch per Kommandozeile anlegen:

SCHTASKS /CREATE /RU "NT AUTHORITYSYSTEM" /SC EINMAL /SD tt/mm/jjjj /ST 07:15 /TN MeinAutomatischErstellterTask /TR MeinAuszuführenderBefehl

Diese Zeile erstellt lokal einen neuen Task für den Benutzer „SYSTEM“. Dieser benötigt kein Passwort und ist für lokale Arbeiten super geeignet. Der Task wird nur einmal gestartet, nämlich um 7:15 Uhr. Warum dann aber einen Task? Weil man den dann für eine bestimmte Zeit terminieren und sich dann abmelden kann. Es muss also keine User-Session bestehen bleiben. Das Datum muss nicht angegeben werden, da standardmäßig der aktuelle Datum eingetragen wird. Wenn der Zeitpunkt der Ausführung vor dem Zeitpunkt der Erstellung liegt, gibt es eine Warnung, der Task wird aber trotzdem angelegt.

Weitere Optionen für das Erstellen kann man sich auch anzeigen lassen:

SCHTASKS /CREATE /?

Windows-Updates hinter einem Proxy

Obwohl ich unseren Proxyserver in den Optionen meines Internet Explorer eingetragen habe, bietet mir Windows nie neue Updates an.

Der Systemdienst für automatische Updates läuft nicht im Kontext des eigenen Benutzerkontos, sondern mit Systemrechten. Die benutzerspezifischen Proxy-Einstellungen gelten daher für den Systemdienst zunächst nicht und das Windows Update versucht vergeblich, eine direkte Verbindung zum Update-Server herzustellen.

Windows Vista/7 findet in der Grundeinstellung seinen Update-Server hinter einem Proxy nicht. Hier kommt man mit netsh zum Ziel: Einfach eine Eingabeaufforderung mit Administratorrechten (Rechtsklick/„Als Administrator ausführen“) öffnen und mit der Eingabe netsh in den speziellen Befehlsmodus des Programms wechseln . Anschließend überträgt der Befehl

winhttp import proxy source=ie

die Proxy-Einstellung des Internet Explorer in die Komponente WinHTTP, die für den Update-Dienst den Internetzugriff regelt.