Betriebssysteme über die Kommandozeile administrieren: Rechte, Prozesse und Aufgabenplanung

https://bildung.social/@oerinformatik/

https://oer-informatik.de/kommandozeile-administration

Kommandozeile, PATH, Wildcards, xcopy, chmod, sudo, NTFS, icacls, taskkill, kill, schtasks, cron

tl/dr; (ca. 27 min Lesezeit): Viele Verwaltungsaufgaben erledigst Du an Windows- und Linux-Systemen am schnellsten über die Kommandozeile. Du lernst, wie Du Befehlsbeschreibungen liest, warum ein Programm „nicht gefunden“ wird (PATH), wie Du mit Platzhaltern Dateien kopierst und verschiebst und wie XCOPY gezielt sichert. Danach liest Du Linux-Rechte in der Ausgabe von ls -l, setzt sie mit chmod und verstehst, wann sudo nötig ist. Für Windows ermittelst Du effektive NTFS-Rechte aus Gruppenmitgliedschaften und vergibst Rechte mit icacls. Zum Schluss beendest Du hängende Prozesse und planst Aufgaben mit schtasks und cron [AI-Assisted]. (Zuletzt geändert am 28.10.2026)

Dieser Artikel ist Teil einer Artikelreihe zu Hardware und Systemen: Betriebssysteme: Aufbau, Systemstart, Updates / Betriebssysteme über die Kommandozeile administrieren / Systeme härten / Skripte zur Systemautomatisierung / Übungsaufgaben zur Administration über die Kommandozeile

Schon fit in diesem Thema? Nutze die Kann-Liste und die Leitfragen unter dem Artikel als Checkliste, ob Du die relevanten Kompetenzen bereits hast.

Dieser Artikel baut auf der Kann-Liste des Artikels Betriebssysteme: Aufbau, Systemstart, Updates und Patchmanagement auf.

Als Grundlagen der Administration über die Kommandozeile kann ich nach Durchlesen des Artikels…

  • … CMD, PowerShell und Bash am Eingabeprompt erkennen und mir die Hilfe zu einem Befehl anzeigen lassen.

  • … eine Syntaxbeschreibung mit Platzhaltern, optionalen Teilen und Alternativen lesen, auch wenn sie auf Englisch ist.

  • … die Platzhalter * und ? verwenden, um mehrere Dateien mit einem Befehl zu kopieren oder zu verschieben.

  • … die Rechte r, w und x für Eigentümer, Gruppe und andere aus der Ausgabe von ls -l ablesen und benennen.

Darüber hinaus kann ich als Kernwissen für alle Fachrichtungen…

  • … erläutern, warum ein Programmaufruf an der Kommandozeile mit „nicht gefunden“ scheitert, und zwei Lösungen angeben (Pfadangabe, Umgebungsvariable PATH).

  • … einen XCOPY- oder robocopy-Befehl für eine Sicherung anhand einer Parameterliste erstellen und die Wirkung des Archivattributs erläutern.

  • … Linux-Rechte mit chmod in Oktal- und symbolischer Schreibweise setzen, die Ziffern eines chmod-Befehls beschreiben und rekursiv auf Verzeichnisse anwenden.

  • … die Ursache der Meldung „Keine Berechtigung“ erläutern und dabei beachten, dass Linux für den Eigentümer nur die Eigentümerrechte auswertet.

  • … die Funktion von sudo erläutern und begründen, warum Administratoren nicht dauerhaft als root arbeiten.

  • … die effektiven NTFS-Rechte eines Benutzers aus seinen Gruppenmitgliedschaften ermitteln (Rechte addieren sich, Verweigern hat Vorrang) und Rechte mit icacls gewähren.

  • … ein hängendes Programm unter Windows und Linux grafisch und per Befehl beenden (taskkill, kill) und den Unterschied zwischen sanftem und erzwungenem Beenden erläutern.

  • … einen zeitgesteuerten Programmstart mit schtasks vervollständigen und eine crontab-Zeile erstellen.

Wer Server betreut, verbringt viel Zeit in einem Fenster mit blinkendem Cursor. Das hat gute Gründe: Ein Befehl lässt sich dokumentieren, wiederholen, per Fernwartung (SSH, Remotedesktop) ausführen und in ein Skript übernehmen. Viele Server haben gar keine grafische Oberfläche. Dieser Artikel zeigt die Befehle, mit denen Du in der Systembetreuung am häufigsten arbeitest: Dateien bewegen, Rechte vergeben, Prozesse beenden und Aufgaben planen – jeweils für Windows und Linux.

Die Mindmap zeigt die Themen des Artikels im Überblick:

Mindmap der Administration über die Kommandozeile: Shells, Programm finden, Dateien, Linux-Rechte, NTFS-Rechte, Prozesse und Aufgabenplanung (mit KI erstellt)

Die Kommandozeile: CMD, PowerShell und Bash

Ein Kommandozeileninterpreter (Shell) liest Deine Eingabe, sucht das passende Programm und startet es. Am Eingabeprompt erkennst Du, mit welcher Shell Du arbeitest:

Shells am Eingabeprompt erkennen
Prompt (Beispiel) Shell Typisch für
C:\Users\emre> Eingabeaufforderung (CMD) ältere Windows-Befehle wie copy, xcopy, schtasks
PS C:\Users\emre> PowerShell Windows-Verwaltung mit Cmdlets wie Get-Process
emre@stream01:~$ Bash (normales Benutzerkonto) Linux-Server und -Clients
root@stream01:~# Bash als root Linux mit vollen Administratorrechten

Die PowerShell versteht auch die meisten CMD-Befehle. Windows-Befehle unterscheiden nicht zwischen Groß- und Kleinschreibung (MOVE = move), Linux dagegen schon (Bericht.txt und bericht.txt sind zwei Dateien).

Hilfe zu einem Befehl lesen

Niemand kennt alle Parameter auswendig. Wichtiger ist, eine Befehlsbeschreibung schnell zu lesen:

  • Windows (CMD): xcopy /? oder help xcopy; PowerShell: Get-Help Copy-Item
  • Linux: chmod --help (Kurzfassung) oder man chmod (Handbuchseite, mit q verlassen)

Hilfetexte und Herstellerdokumentationen sind oft auf Englisch und verwenden eine feste Schreibweise:

Schreibweise von Syntaxbeschreibungen
Schreibweise Bedeutung Beispiel
<Name> oder kursiv Platzhalter, den Du ersetzt /tn <taskname> → /tn "Bericht senden"
[…] optionaler Teil XCOPY Quelle [Ziel]
a \| b entweder a oder b [/A \| /M]
… darf wiederholt werden chmod MODUS DATEI...

Mit dieser Übersicht kannst Du auch einen Befehl vervollständigen, den Du noch nie benutzt hast: Pflichtteile übernehmen, die passenden optionalen Parameter auswählen, Platzhalter durch die Werte aus der Situation ersetzen.

Warum ein Programm „nicht gefunden“ wird: die Umgebungsvariable PATH

Ein typisches Bild: Das Sicherungsprogramm qsicher.exe liegt in C:\Werkzeuge\QSicher und startet per Doppelklick im Explorer problemlos. An der Eingabeaufforderung dagegen erscheint:

C:\Users\emre>qsicher
Der Befehl "qsicher" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Die Shell sucht ein Programm, das Du nur mit seinem Namen aufrufst, im aktuellen Verzeichnis (nur CMD) und in den Verzeichnissen, die in der Umgebungsvariable PATH stehen – der Reihe nach. C:\Werkzeuge\QSicher steht dort nicht, also findet die Shell das Programm nicht. Unter Linux lautet die Meldung entsprechend qsicher: Befehl nicht gefunden (command not found). Linux sucht dabei nie im aktuellen Verzeichnis; ein Skript im aktuellen Ordner startest Du deshalb mit ./skript.sh.

Lösungen:

  1. Vollständigen Pfad angeben: C:\Werkzeuge\QSicher\qsicher.exe; enthält der Pfad Leerzeichen, in Anführungszeichen: "C:\Program Files\PostgreSQL 17\bin\psql.exe".
  2. In das Verzeichnis wechseln (cd C:\Werkzeuge\QSicher) und das Programm dort aufrufen (nur in der CMD ohne .\; in der PowerShell und unter Linux mit .\ bzw. ./).
  3. Verzeichnis dauerhaft in den PATH aufnehmen: unter Windows über Systemeigenschaften → Umgebungsvariablen (für den Benutzer oder systemweit), unter Linux z. B. in ~/.bashrc mit export PATH="$PATH:/opt/qsicher/bin". Die Änderung gilt erst in einer neu geöffneten Konsole.

Mit where qsicher (Windows) bzw. which qsicher (Linux) prüfst Du, ob und wo die Shell ein Programm findet. Den aktuellen Inhalt zeigen echo %PATH% (CMD), $env:Path (PowerShell) und echo $PATH (Bash).

Vorsicht mit dem Befehl setx PATH "%PATH%;C:\Werkzeuge\QSicher": Er schreibt Benutzer- und Systempfad zusammen in den Benutzerpfad und kürzt sehr lange Werte ab. Die grafische Variante ist sicherer.

Dateien mit Platzhaltern kopieren und verschieben

Platzhalter (Wildcards) stehen für Teile eines Dateinamens. Unter Windows und Linux gelten dieselben beiden Grundzeichen:

Platzhalter für Dateinamen
Platzhalter Bedeutung Beispiel trifft z. B.
* beliebig viele Zeichen (auch keins) system*.log system20261103.log, system.log
? genau ein Zeichen *2026111?.log lager20261110.log … lager20261119.log

Unter Linux kommen Zeichenklassen hinzu: bericht_[0-3]?.txt trifft z. B. bericht_07.txt und bericht_31.txt, also zweistellige Nummern, deren erste Ziffer 0 bis 3 ist.

Die wichtigsten Befehle im Vergleich:

Dateibefehle unter Windows und Linux
Aufgabe Windows (CMD) Linux (Bash)
Dateien kopieren copy C:\log\*.log X:\debug cp /var/log/app/*.log /mnt/debug/
Verzeichnisbaum kopieren xcopy, besser robocopy cp -r, rsync -a
verschieben/umbenennen move mv
löschen del, Verzeichnisse rmdir /s rm, Verzeichnisse rm -r
Verzeichnis anlegen mkdir mkdir -p

Beispiel: Ein Programm legt seine Protokolle nach dem Schema BereichJJJJMMTT.log in D:\logs ab, z. B. lager20261031.log oder bestellung20261103.log.

  • Alle Protokolle des Bereichs lager nach D:\logs\lager verschieben: move D:\logs\lager*.log D:\logs\lager
  • Alle Protokolle vom 10. bis 19. November 2026 kopieren: copy D:\logs\*2026111?.log X:\debug – die 1 legt die Zehnerstelle des Tages fest, das Fragezeichen steht für genau die letzte Ziffer.
  • Alle Protokolle von jedem Monatsersten 2026: *2026??01.log – die beiden Fragezeichen stehen für den Monat.

Der Trick besteht darin, das Namensschema Zeichen für Zeichen anzusehen: Was ist fest, was ändert sich, und wie viele Zeichen sind es?

Gezielt sichern mit XCOPY und robocopy

xcopy kopiert ganze Verzeichnisbäume und kann Dateien nach Datum oder Archivattribut auswählen. Das Archivattribut setzt Windows bei jeder Änderung einer Datei; ein Sicherungsprogramm erkennt daran, was seit der letzten Sicherung neu ist.

Ausgewählte Parameter von XCOPY
Parameter Wirkung
/S Unterverzeichnisse kopieren, aber keine leeren
/E alle Unterverzeichnisse kopieren, auch leere
/A nur Dateien mit gesetztem Archivattribut; Attribut bleibt gesetzt
/M nur Dateien mit gesetztem Archivattribut; Attribut wird danach zurückgesetzt
/D:MM-TT-JJJJ nur Dateien, die an oder nach diesem Datum geändert wurden (amerikanische Reihenfolge Monat-Tag-Jahr!)
/C bei Fehlern weiterkopieren
/V jede kopierte Datei überprüfen
/Y vorhandene Zieldateien ohne Rückfrage überschreiben
xcopy D:\Projekte S:\Projekte-Sicherung\ /M /E /C /V

kopiert alle seit der letzten Sicherung geänderten Dateien samt (auch leerer) Unterverzeichnisse, prüft sie und setzt das Archivattribut zurück. Beim nächsten Lauf werden nur die dann geänderten Dateien kopiert – das entspricht einer inkrementellen Sicherung. Mit /A bliebe das Attribut stehen: Jeder Lauf kopiert alles seit der letzten Vollsicherung, also differenziell. Mehr dazu im Artikel Datensicherung.

/C sorgt dafür, dass die Sicherung nicht an der ersten Problemdatei abbricht, etwa wenn eine Datei gerade geöffnet und gesperrt ist, wenn Leserechte fehlen oder ein Lesefehler auf dem Datenträger auftritt. Die betroffenen Dateien fehlen dann in der Sicherung – das Protokoll muss also ausgewertet werden.

Der Ziel-Backslash (S:\Projekte-Sicherung\) verhindert die Rückfrage, ob das Ziel eine Datei oder ein Verzeichnis ist. Microsoft empfiehlt für neue Sicherungsskripte robocopy (z. B. robocopy D:\Projekte S:\Sicherung /E /Z /LOG:C:\log\sicherung.txt), das abgebrochene Übertragungen fortsetzen und Rechte mitkopieren kann.

Benutzer, Gruppen und Rechte unter Linux

Jede Datei gehört unter Linux genau einem Eigentümer (user) und genau einer Gruppe (group). Für drei Personenkreise gibt es je drei Rechte:

  • u – Eigentümer (user), g – Mitglieder der Gruppe (group), o – alle anderen (others), a – alle drei (all)
  • r – lesen (read), w – schreiben (write), x – ausführen (execute)

Die Ausgabe von ls -l lesen

emre@stream01:/srv/barcamp$ ls -l
-rw-r----- 1 svenja orga    2148 11. Mär 20:15 helferliste.ods
drwxrwx--- 3 emre   technik 4096 11. Mär 16:20 schnitt
lrwxrwxrwx 1 root   root      18 10. Mär 17:05 vorlagen -> /srv/vorlagen/2027

Die erste Spalte besteht aus zehn Zeichen:

Aufbau der Rechteangabe
Stelle 1 2–4 5–7 8–10
Bedeutung Dateityp Eigentümer Gruppe andere
drwxrwx--- d Verzeichnis rwx rwx ---
-rw-r----- - normale Datei rw- r-- ---

Weitere Dateitypen sind l (symbolischer Link, die Rechte des Links selbst spielen keine Rolle) und c/b (Gerätedateien). Dahinter folgen Anzahl der Verweise, Eigentümer, Gruppe, Größe, Änderungszeit und Name.

Bei Verzeichnissen bedeuten die Rechte etwas anderes als bei Dateien:

Rechte bei Dateien und Verzeichnissen
Recht bei einer Datei bei einem Verzeichnis
r Inhalt lesen Liste der Einträge anzeigen (ls)
w Inhalt ändern Einträge anlegen, umbenennen, löschen
x als Programm ausführen hineinwechseln (cd) und auf Einträge zugreifen

Ob jemand eine Datei löschen darf, entscheidet also das w des Verzeichnisses, nicht das der Datei.

Oktalschreibweise

Jedes Recht hat einen Wert: r = 4, w = 2, x = 1. Die Summe je Personenkreis ergibt eine Ziffer von 0 bis 7, drei Ziffern beschreiben alle Rechte:

Oktalziffern und Rechte
Ziffer Rechte Ziffer Rechte
0 --- 4 r--
1 --x 5 r-x
2 -w- 6 rw-
3 -wx 7 rwx

644 bedeutet also: Eigentümer rw- (4+2), Gruppe r--, andere r--. 770 bedeutet: Eigentümer und Gruppe alles (bei einem Verzeichnis: auflisten, Einträge anlegen und löschen, hineinwechseln), andere nichts.

Die Grafik zeigt das Zusammenrechnen am Beispiel einer Datei start.sh mit den Rechten -rwxr-xr--:

Rechteangabe -rwxr-xr– zerlegt in Eigentümer, Gruppe und andere; r = 4, w = 2, x = 1 ergeben die Oktalziffern 7, 5 und 4 (mit KI erstellt)

Rechte setzen mit chmod

chmod (change mode) ändert die Rechte; das darf nur der Eigentümer oder root.

Beispiele für chmod
Schreibweise Befehl Wirkung
oktal chmod 660 helferliste.ods rw-rw----: alle drei Personenkreise neu gesetzt
symbolisch chmod ug+x schnitt-export.sh Ausführungsrecht für Eigentümer und Gruppe ergänzt, Rest bleibt
symbolisch chmod go-w bericht.txt Schreibrecht für Gruppe und andere entzogen
symbolisch chmod u=rw,g=rw,o= bericht.txt wie 660
rekursiv chmod -R 770 /srv/barcamp/schnitt Verzeichnis und alles darin

Die oktale Schreibweise setzt immer alle Rechte neu; die symbolische ändert nur die genannten. chmod +x skript.sh ohne Personenkreis gibt das Ausführungsrecht allen.

Eine Falle beim rekursiven Setzen: chmod -R 770 gibt auch allen Dateien im Verzeichnis das Ausführungsrecht. Wer das vermeiden will, nutzt das große X – es setzt x nur bei Verzeichnissen und bei Dateien, die schon für irgendwen ausführbar sind: chmod -R u=rwX,g=rwX,o= /srv/barcamp/schnitt.

Eigentümer und Gruppe änderst Du mit chown (z. B. sudo chown emre:technik datei) bzw. chgrp; einen Benutzer nimmst Du mit sudo usermod -aG technik svenja in eine Gruppe auf (wirksam nach erneuter Anmeldung).

Warum „Keine Berechtigung“ und warum die Gruppe dann nicht hilft

Linux prüft die Rechte in fester Reihenfolge und wertet nur den ersten passenden Personenkreis aus:

  1. Ist der Benutzer der Eigentümer? → Es gelten nur die Eigentümerrechte.
  2. Sonst: Ist er Mitglied der Gruppe der Datei? → Es gelten nur die Gruppenrechte.
  3. Sonst gelten die Rechte für andere.
Ablauf der Rechteprüfung unter Linux: zuerst Eigentümer, sonst Gruppe, sonst andere – die erste zutreffende Stufe entscheidet (mit KI erstellt)

Beispiel: -r--rw---- 1 emre helfer ... raumplan.csv. Emre ist Eigentümer, die Eigentümerrechte sind r--. Er kann die Datei öffnen, beim Speichern bekommt er aber „Keine Berechtigung“ (Permission denied) – obwohl die Gruppe helfer schreiben darf. Ihn zusätzlich in die Gruppe helfer aufzunehmen, ändert nichts, denn als Eigentümer wird er gar nicht mehr nach der Gruppe beurteilt. Die Lösung ist, dem Eigentümer das fehlende Recht zu geben: chmod u+w raumplan.csv oder chmod 660 raumplan.csv. Weil Emre Eigentümer ist, darf er das selbst.

root und sudo

Der Benutzer root (Benutzerkennung 0) darf auf einem Linux-System alles; für ihn gelten die Dateirechte praktisch nicht. Wer dauerhaft als root arbeitet, richtet mit einem Tippfehler (rm -rf / tmp statt rm -rf /tmp) großen Schaden an, und Schadsoftware, die er versehentlich startet, erhält sofort volle Rechte.

Deshalb arbeitet man als normaler Benutzer und stellt nur einzelnen Befehlen sudo (substitute user do) voran:

emre@stream01:~$ sudo systemctl restart nginx
[sudo] Passwort für emre:

sudo führt diesen einen Befehl mit den Rechten von root aus. Dafür gibt Emre sein eigenes Passwort ein; ob und welche Befehle er so ausführen darf, legt der Administrator in der Datei /etc/sudoers fest (meist über die Gruppe sudo bzw. wheel). Jeder Aufruf wird protokolliert. Das ist das Prinzip der minimalen Rechte (Least Privilege), das im Artikel Systeme härten ausführlicher beschrieben ist. Unter Windows entspricht dem die Benutzerkontensteuerung: Eine Konsole mit Administratorrechten öffnest Du über Rechtsklick → Als Administrator ausführen.

NTFS-Rechte unter Windows

Unter Windows legt das Dateisystem NTFS für jede Datei und jeden Ordner eine Zugriffssteuerungsliste (Access Control List, ACL) an. Darin stehen Benutzer und Gruppen mit ihren Rechten. Die Standardberechtigungen bauen aufeinander auf:

NTFS-Standardberechtigungen
Berechtigung erlaubt
Lesen Dateien öffnen und Inhalte, Attribute und Rechte ansehen
Lesen, Ausführen wie Lesen, zusätzlich Programme starten
Schreiben Dateien und Ordner anlegen, Inhalte überschreiben und anhängen – aber nicht löschen
Ändern Lesen, Ausführen, Schreiben und Löschen
Vollzugriff wie Ändern, zusätzlich Berechtigungen ändern und Besitz übernehmen

Für Ordner kommt „Ordnerinhalt anzeigen“ hinzu. Die Rechte eines Ordners werden standardmäßig an die enthaltenen Dateien und Unterordner vererbt.

Effektive Rechte ermitteln

Ein Benutzer ist meist in mehreren Gruppen. Seine effektiven Rechte ergeben sich so:

  1. Erlaubnisse addieren sich. Wer über Gruppe A „Lesen, Ausführen“ und über Gruppe B „Schreiben“ hat, darf lesen, Programme ausführen und schreiben (aber immer noch nicht löschen).
  2. Verweigern hat Vorrang. Ist ein Recht für eine seiner Gruppen ausdrücklich verweigert, hilft keine Erlaubnis aus einer anderen Gruppe.
  3. Liegt ein Ordner auf einer Netzwerkfreigabe, gelten zusätzlich die Freigabeberechtigungen; wirksam ist die jeweils strengere der beiden.

Ein Beispiel für den Ordner D:\Freigaben\Personal:

Beispiel einer NTFS-Rechtetabelle
Gruppe Vollzugriff Ändern Lesen, Ausführen Lesen Schreiben
IT-Administration erlaubt
Personalleitung erlaubt
Lohnbuchhaltung erlaubt
Sekretariat erlaubt
Werkstudierende verweigert

Löschen dürfen nur IT-Administration und Personalleitung (Vollzugriff bzw. Ändern). Ein Mitarbeiter, der in Lohnbuchhaltung und Sekretariat ist, darf lesen, Programme ausführen und schreiben, aber nicht löschen. Eine Werkstudentin in denselben beiden Gruppen darf zwar lesen und Programme ausführen, aber trotz der Gruppe Sekretariat nicht schreiben, weil das Schreiben für Werkstudierende verweigert ist. Ist der Ordner zusätzlich im Netzwerk freigegeben und hat dort „Jeder“ nur die Freigabeberechtigung „Lesen“, darf auch die Personalleitung über die Freigabe nur lesen – lokal am Server gilt weiter ihr Ändern-Recht.

Rechte per Kommandozeile: icacls

Mit icacls zeigst Du ACLs an und änderst sie:

icacls D:\Freigaben\Personal
icacls D:\Freigaben\Personal /grant Datenschutz:(OI)(CI)R
icacls D:\Freigaben\Personal /grant:r Personalleitung:(OI)(CI)M
icacls D:\Freigaben\Personal /remove Praktikum
icacls D:\Freigaben\Personal /deny Werkstudierende:(OI)(CI)W

Die erste Zeile zeigt die ACL an. Die zweite gibt der Gruppe Datenschutz das Leserecht auf den Ordner, alle Dateien darin und auch auf später angelegte Unterordner, die dritte setzt die ausdrücklichen Rechte der Personalleitung auf „Ändern“, die vierte entfernt alle Einträge der Gruppe Praktikum, die fünfte verweigert den Werkstudierenden das Schreiben.

Die Kürzel lauten F (Vollzugriff), M (Ändern), RX (Lesen, Ausführen), R (Lesen), W (Schreiben) und D (Löschen). (OI) (object inherit) und (CI) (container inherit) sorgen dafür, dass Dateien und Unterordner das Recht erben. /grant ergänzt ein Recht; /grant:r ersetzt die bisherigen ausdrücklichen Rechte dieses Benutzers. Die PowerShell bietet dafür Get-Acl und Set-Acl.

Prozesse anzeigen und beenden

Ein laufendes Programm ist für das Betriebssystem ein Prozess mit einer eindeutigen Prozessnummer (Process ID, PID). Ein Programm kann aus mehreren Prozessen bestehen.

Prozesse unter Windows und Linux
Aufgabe Windows Linux
grafisch Task-Manager (Strg+Umschalt+Esc) Systemüberwachung der Desktopumgebung
Prozesse anzeigen tasklist, PowerShell Get-Process ps aux, laufend: top oder htop
nach Name filtern tasklist /FI "IMAGENAME eq kassenbuch.exe" pgrep -a ffmpeg, ps aux \| grep ffmpeg
beenden taskkill /PID 4711 oder taskkill /IM kassenbuch.exe kill 2318
erzwungen beenden taskkill /IM kassenbuch.exe /F kill -9 2318
alle mit diesem Namen taskkill /IM name.exe /F pkill name bzw. killall name

Sanft vor hart. kill 2318 schickt dem Prozess das Signal SIGTERM (15): „Bitte beende Dich.“ Der Prozess kann noch Daten speichern, Dateien schließen und temporäre Dateien aufräumen. Reagiert er nicht, weil er hängt, erzwingt kill -9 2318 (SIGKILL) das Ende: Das Betriebssystem entfernt den Prozess sofort, ungespeicherte Daten gehen verloren. Unter Windows entspricht taskkill ohne /F der freundlichen Aufforderung, /F (force) dem erzwungenen Beenden.

Sanft vor hart: zuerst SIGTERM mit kill bzw. taskkill, reagiert der Prozess nicht, SIGKILL mit kill -9 bzw. taskkill /F (mit KI erstellt)

Wer darf? Einen Prozess beenden darf nur sein Eigentümer – also der Benutzer, unter dem er läuft – oder ein Administrator. Ein anderer Benutzer erhält unter Linux Vorgang nicht zulässig (Operation not permitted) und muss sudo kill 2318 verwenden; unter Windows braucht man für Prozesse anderer Benutzer eine Konsole mit Administratorrechten.

Läuft das Programm als Dienst, ist ein Neustart über die Dienstverwaltung sauberer: sudo systemctl restart stream-relay bzw. Restart-Service Spooler oder net stop/net start.

Aufgaben zeitgesteuert ausführen

Regelmäßige Arbeiten – Sicherungen, Berichte, Aufräumen – lässt Du vom Betriebssystem starten. Ausführlicher und mit Skriptbeispielen beschreibt das der Artikel Skripte zur Systemautomatisierung; hier geht es um die Befehle selbst.

Windows: schtasks

Die Aufgabenplanung (Task Scheduler) steuerst Du an der Kommandozeile mit schtasks:

Wichtige Parameter von schtasks
Parameter Bedeutung
/Create neue Aufgabe anlegen (außerdem /Query, /Run, /End, /Change, /Delete)
/tn <Name> eindeutiger Name der Aufgabe (task name); mit Leerzeichen in Anführungszeichen
/tr <Programm> auszuführendes Programm mit vollständigem Pfad (task run)
/sc <Typ> Zeitplan (schedule): MINUTE, HOURLY, DAILY, WEEKLY, MONTHLY, ONCE, ONSTART, ONLOGON
/d <Tage> Wochentage bei WEEKLY, z. B. MON,WED,FRI
/st <hh:mm> Startzeit im 24-Stunden-Format
/ru <Konto> Konto, unter dem die Aufgabe läuft (run as user)
schtasks /Create /tn "Bericht senden" /tr D:\Werkzeuge\bericht.exe /sc DAILY /st 16:10

legt eine Aufgabe an, die das Programm täglich um 16:10 Uhr startet. Typische Fehler: Name mit Leerzeichen ohne Anführungszeichen, Programm ohne vollständigen Pfad (die Aufgabenplanung startet nicht in Deinem Arbeitsverzeichnis) oder Uhrzeit im 12-Stunden-Format. Mit schtasks /Query /tn "Bericht senden" prüfst Du das Ergebnis, mit schtasks /Run /tn "Bericht senden" startest Du die Aufgabe zum Test sofort.

Linux: cron

Der Dienst cron liest für jeden Benutzer eine Tabelle, die Du mit crontab -e bearbeitest (anzeigen: crontab -l). Jede Zeile enthält fünf Zeitfelder und den Befehl:

  # Minute Stunde  Tag  Monat  Wochentag  Befehl
  10      16      *    *      *          /opt/werkzeuge/bericht.sh
  15      7       *    *      1,3,5      /usr/local/bin/aufnahme-pruefen.sh
  0       */2     *    *      *          /usr/local/bin/cache-leeren.sh

* heißt „jeder Wert“, 1-5 ist ein Bereich (Wochentag 1 = Montag, 0 und 7 = Sonntag), 1,3,5 eine Liste, */2 „jeder zweite Wert“. Die erste Zeile läuft täglich um 16:10 Uhr, die zweite montags, mittwochs und freitags um 7:15 Uhr, die dritte alle zwei Stunden zur vollen Stunde. Moderne Systeme bieten zusätzlich systemd-Timer, die verpasste Läufe nachholen können.

Aufbau einer Crontab-Zeile mit Wertebereichen der fünf Zeitfelder am Beispiel 10 16 * * * /opt/werkzeuge/bericht.sh (mit KI erstellt)

Typische Falle: Ein Skript läuft im Terminal, aber nicht per cron. Cron startet Befehle mit einer sehr kurzen Umgebung; der PATH enthält meist nur /usr/bin:/bin, und Einstellungen aus ~/.bashrc werden nicht gelesen. Programme in anderen Verzeichnissen führen dann zu command not found. Abhilfe: im Skript vollständige Pfade verwenden oder am Anfang des Skripts bzw. der Crontab den PATH setzen (PATH=/usr/local/bin:/usr/bin:/bin:/opt/streamtools/bin). Außerdem muss das Skript ausführbar sein (z. B. chmod 755 aufnahme-pruefen.sh).

Typische Aufgabenformen

In Aufgaben zu diesem Thema tauchen immer wieder dieselben Formen auf:

  • Befehl vervollständigen: Eine Befehlszeile mit Lücke (copy ____ X:\debug, chmod ___ -R /pfad, SCHTASKS ____) wird anhand einer – oft englischen – Parameterliste ergänzt. Lies die Situation Wort für Wort und hake jede Anforderung (Name, Pfad, Zeit, Zeitplan) im Befehl ab.
  • Ausgabe deuten: Aus ls -l, ps oder einer Fehlermeldung werden Rechte, Prozessnummern oder die Ursache eines Problems abgelesen.
  • Ziffern beschreiben: Zu chmod 751 wird je Ziffer die Wirkung für Eigentümer, Gruppe und andere beschrieben – mit den Rechten in Worten, nicht nur als rw-.
  • Ursache und Lösung erläutern: z. B. „nicht gefunden“ (PATH) oder „Keine Berechtigung“ (Rechte); erwartet werden die Ursache und ein konkreter Lösungsvorschlag.
  • Rechtetabelle auswerten: Aus Gruppenrechten und Mitgliedschaften werden die effektiven Rechte einer Person ermittelt.

Leitfragen

  1. Woran erkennst Du am Eingabeprompt, ob Du in CMD, PowerShell oder Bash arbeitest und ob Du root bist?

CMD zeigt nur den Pfad mit > (C:\Users\emre>), die PowerShell stellt PS voran. Die Bash zeigt meist benutzer@rechner:verzeichnis und endet bei normalen Benutzern mit $, bei root mit #, siehe Abschnitt „Die Kommandozeile“.

  1. Was bedeuten in einer Syntaxbeschreibung eckige Klammern, spitze Klammern und der senkrechte Strich?

[…] kennzeichnet einen optionalen Teil, <…> einen Platzhalter, den Du durch einen Wert ersetzt, a | b eine Auswahl zwischen a und b. … bedeutet, dass ein Teil wiederholt werden darf, siehe Abschnitt „Hilfe zu einem Befehl lesen“.

  1. Ein Programm startet per Doppelklick, an der Eingabeaufforderung erscheint aber „Der Befehl ist entweder falsch geschrieben oder konnte nicht gefunden werden“. Warum, und was hilft?

Die Shell sucht Programme, die nur mit Namen aufgerufen werden, in den Verzeichnissen der Umgebungsvariable PATH; das Programmverzeichnis steht dort nicht. Lösungen: Programm mit vollständigem Pfad aufrufen, in das Verzeichnis wechseln oder das Verzeichnis dauerhaft in den PATH aufnehmen (wirksam in einer neuen Konsole), siehe Abschnitt „PATH“.

  1. Mit welchem Muster kopierst Du aus Protokollen nach dem Schema BereichJJJJMMTT.log alle Dateien vom 1. bis 9. April 2026?

*2026040?.log: Der Stern steht für die beliebig lange Bereichsbezeichnung, das Fragezeichen für genau eine Ziffer (Tag 01 bis 09), z. B. copy D:\logs\*2026040?.log X:\debug, siehe Abschnitt „Platzhalter“.

  1. Worin unterscheiden sich die XCOPY-Parameter /A und /M, und was bewirkt /C?

Beide kopieren nur Dateien mit gesetztem Archivattribut. /A lässt das Attribut stehen (jeder Lauf kopiert alles seit der letzten Vollsicherung, differenziell), /M setzt es zurück (der nächste Lauf kopiert nur Neues, inkrementell). /C setzt das Kopieren bei Fehlern fort, z. B. wenn eine Datei geöffnet ist, Rechte fehlen oder ein Lesefehler auftritt, siehe Abschnitt „XCOPY“.

  1. Beschreibe die Wirkung von chmod 754 start.sh für jede Ziffer.

7 (4+2+1): Der Eigentümer darf lesen, schreiben und ausführen. 5 (4+1): Die Gruppe darf lesen und ausführen. 4: Alle anderen dürfen nur lesen, siehe Abschnitt „Oktalschreibweise“.

  1. Das Skript ----rwx--- 1 svenja technik start-stream.sh lässt sich von Svenja weder öffnen noch ausführen. Hilft es, sie in die Gruppe technik aufzunehmen?

Nein. Für die Eigentümerin wertet Linux nur die Eigentümerrechte aus, und die sind leer (---). Svenja muss sich als Eigentümerin die Rechte geben, z. B. mit chmod u+rwx start-stream.sh oder chmod 770 start-stream.sh, siehe Abschnitt „Keine Berechtigung“.

  1. Was bewirkt sudo, und warum arbeitet man nicht einfach dauerhaft als root?

sudo führt einen einzelnen Befehl mit root-Rechten aus, nachdem sich der Benutzer mit seinem eigenen Passwort ausgewiesen hat; erlaubt ist das nur, wenn es in /etc/sudoers festgelegt ist, und jeder Aufruf wird protokolliert. Dauerhaft als root zu arbeiten widerspricht dem Prinzip der minimalen Rechte: Tippfehler und Schadsoftware hätten sofort volle Wirkung, siehe Abschnitt „root und sudo“.

  1. Eine Mitarbeiterin ist in einer Gruppe mit „Lesen, Ausführen“ und in einer mit „Schreiben“; einer dritten Gruppe ist „Schreiben“ verweigert. Was darf sie?

Ohne die dritte Gruppe würden sich die Erlaubnisse zu Lesen, Ausführen und Schreiben addieren (Löschen wäre nicht dabei). Ist sie auch in der dritten Gruppe, hat das Verweigern Vorrang: Sie darf nur noch lesen und Programme ausführen, aber nicht schreiben, siehe Abschnitt „Effektive Rechte“.

  1. Wie beendest Du ein hängendes Programm unter Windows und Linux, und warum zuerst „sanft“?

Grafisch über den Task-Manager bzw. die Systemüberwachung, per Befehl mit taskkill /PID <PID> oder taskkill /IM <name.exe> bzw. kill <PID>. Erst wenn der Prozess darauf nicht reagiert, erzwingt man das Ende mit taskkill … /F bzw. kill -9 <PID>. Das sanfte Beenden (SIGTERM) lässt dem Programm Zeit, Daten zu speichern und aufzuräumen, siehe Abschnitt „Prozesse“.

  1. Vervollständige: Das Programm d:\tools\export.exe soll als Aufgabe „Nacht Export“ täglich um 23:45 Uhr starten.

schtasks /Create /tn "Nacht Export" /tr d:\tools\export.exe /sc DAILY /st 23:45; der Name enthält ein Leerzeichen und steht deshalb in Anführungszeichen, siehe Abschnitt „schtasks“.

  1. Ein Skript läuft im Terminal fehlerfrei, per cron meldet es aber command not found. Woran liegt das?

Cron startet Befehle mit einer minimalen Umgebung; der PATH aus ~/.bashrc gilt dort nicht. Im Skript vollständige Pfade verwenden oder den PATH im Skript bzw. in der Crontab setzen, siehe Abschnitt „cron“.


Hinweis zur Nachnutzung als Open Educational Resource (OER)

Dieser Artikel und seine Texte, Bilder, Grafiken, Code und sonstiger Inhalt sind - sofern nicht anders angegeben - lizenziert unter CC BY 4.0. Nennung gemäß TULLU-Regel bitte wie folgt: “Betriebssysteme über die Kommandozeile administrieren: Rechte, Prozesse und Aufgabenplanung” von oer-informatik.de (H. Stein), Lizenz: CC BY 4.0. Der Artikel wurde unter https://oer-informatik.de/kommandozeile-administration veröffentlicht, die Quelltexte sind in weiterverarbeitbarer Form verfügbar im Repository unter https://gitlab.com/oer-informatik/it-systeme/administration. Erstellt mit KI-Assistenz; von mir umfassend redaktionell überarbeitet, geprüft und freigegeben. Stand: 28.10.2026.

[Kommentare zum Artikel lesen, schreiben] / [Artikel teilen] / [gitlab-Issue zum Artikel schreiben]

Kommentare gerne per Mastodon, Verbesserungsvorschläge per gitlab issue (siehe oben). Beitrag teilen: