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 mitchmodund verstehst, wannsudonötig ist. Für Windows ermittelst Du effektive NTFS-Rechte aus Gruppenmitgliedschaften und vergibst Rechte miticacls. Zum Schluss beendest Du hängende Prozesse und planst Aufgaben mitschtasksundcron[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 -lablesen 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
chmodin Oktal- und symbolischer Schreibweise setzen, die Ziffern eineschmod-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
sudoerläutern und begründen, warum Administratoren nicht dauerhaft alsrootarbeiten.… die effektiven NTFS-Rechte eines Benutzers aus seinen Gruppenmitgliedschaften ermitteln (Rechte addieren sich, Verweigern hat Vorrang) und Rechte mit
icaclsgewä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
schtasksvervollständigen und einecrontab-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:
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:
| 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 /?oderhelp xcopy; PowerShell:Get-Help Copy-Item - Linux:
chmod --help(Kurzfassung) oderman chmod(Handbuchseite, mitqverlassen)
Hilfetexte und Herstellerdokumentationen sind oft auf Englisch und verwenden eine feste Schreibweise:
| 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:
- 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". - 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../). - Verzeichnis dauerhaft in den PATH aufnehmen: unter Windows über Systemeigenschaften → Umgebungsvariablen (für den Benutzer oder systemweit), unter Linux z. B. in
~/.bashrcmitexport 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 | 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:
| 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
lagernachD:\logs\lagerverschieben:move D:\logs\lager*.log D:\logs\lager - Alle Protokolle vom 10. bis 19. November 2026 kopieren:
copy D:\logs\*2026111?.log X:\debug– die1legt 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.
| 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:
| 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:
| 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:
| 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--:
Rechte setzen mit chmod
chmod (change mode) ändert die Rechte; das darf nur der Eigentümer oder root.
| 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:
- Ist der Benutzer der Eigentümer? → Es gelten nur die Eigentümerrechte.
- Sonst: Ist er Mitglied der Gruppe der Datei? → Es gelten nur die Gruppenrechte.
- Sonst gelten die Rechte für andere.
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:
| 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:
- 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).
- Verweigern hat Vorrang. Ist ein Recht für eine seiner Gruppen ausdrücklich verweigert, hilft keine Erlaubnis aus einer anderen Gruppe.
- 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:
| 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.
| 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.
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:
| 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.
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,psoder einer Fehlermeldung werden Rechte, Prozessnummern oder die Ursache eines Problems abgelesen. - Ziffern beschreiben: Zu
chmod 751wird je Ziffer die Wirkung für Eigentümer, Gruppe und andere beschrieben – mit den Rechten in Worten, nicht nur alsrw-. - 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
- Woran erkennst Du am Eingabeprompt, ob Du in CMD, PowerShell oder Bash arbeitest und ob Du
rootbist?
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“.
- 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“.
- 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“.
- Mit welchem Muster kopierst Du aus Protokollen nach dem Schema
BereichJJJJMMTT.logalle 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“.
- Worin unterscheiden sich die XCOPY-Parameter
/Aund/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“.
- Beschreibe die Wirkung von
chmod 754 start.shfü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“.
- Das Skript
----rwx--- 1 svenja technik start-stream.shlässt sich von Svenja weder öffnen noch ausführen. Hilft es, sie in die Gruppetechnikaufzunehmen?
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“.
- Was bewirkt
sudo, und warum arbeitet man nicht einfach dauerhaft alsroot?
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“.
- 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“.
- 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“.
- Vervollständige: Das Programm
d:\tools\export.exesoll 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“.
- Ein Skript läuft im Terminal fehlerfrei, per
cronmeldet es abercommand 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“.
Links und weitere Informationen
zum Nachschlagen (Windows-Befehle): Microsoft Learn: Windows-Befehle (Übersicht), darin xcopy, icacls, taskkill und schtasks create
zum Nachschlagen (Linux): Handbuchseiten chmod(1), sudo(8), kill(1) und crontab(5)
Grundlagen: Betriebssysteme: Aufbau, Systemstart, Updates und Patchmanagement
Weiterführend: Skripte zur Systemautomatisierung, Systeme härten, Datensicherung
Zum Üben: Übungsaufgaben zur Administration über die Kommandozeile
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]
