Standardbefehle unter Ubuntu-Server

Dieser Blog-Artikel kuratiert gängige Standardbefehle unter Ubuntu Server 22.04 LTS bzw. Ubuntu Server 20.04 LTS.

Einleitung

Linux-Serversysteme werden vor allem über die Kommandozeile bedient. Nach dem erfolgreichen Anmelden per SSH blinkt einem fröhlich der Eingabe-Cursor an und wartet darauf, dass Du einen passenden Befehl eingibst. Für Linux-Anfänger ist es oft schwer sich zurechtzufinden. Aber auch die vermeindlichen Profis haben nicht immer alle Befehle und deren Konfigurationsparameter im Kopf.

Dieser Blog-Artikel macht es sich zur Aufgabe, eine Liste gängiger Standardbefehle unter Ubuntu zu kuratieren, ohne Anspruch auf Vollständigkeit. Bitte beachte, dass die meisten Befehle nur exemplarisch vorgestellt werden können. Manche von ihnen besitzen unglaublich viele Parameter, daher ist stets auch der Verweis auf die passende Einzeldokumentation des Befehls hinterlegt.

Allgemeines

Fangen wir zunächst mit einigen grundlegenden Befehlen an.

whoami

Der Befehl whoami gibt den Namen des Benutzers aus, mit dem Du Dich angemeldet hast.

Beispiel: Wer bin ich?

~$ whoami
frank

man

Der Befehl man ist das lokale Anzeigeprogramm für das Referenzhandbuch von Ubuntu (den sogenannten manual pages, kurz manpages).

Beispiel: Manpages für whoami

~$ man whoami
WHOAMI(1)                               User Commands                               WHOAMI(1)

NAME
       whoami - print effective userid

SYNOPSIS
       whoami [OPTION]...

DESCRIPTION
       Print the user name associated with the current effective user ID.  Same as id -un.

       --help display this help and exit

       --version
              output version information and exit

AUTHOR
       Written by Richard Mlynarik.

REPORTING BUGS
       GNU coreutils online help: <https://www.gnu.org/software/coreutils/>
       Report any translation bugs to <https://translationproject.org/team/>

COPYRIGHT
       Copyright  © 2020 Free Software Foundation, Inc.  License GPLv3+: GNU GPL version 3 or
       later <https://gnu.org/licenses/gpl.html>.
       This is free software: you are free to change and redistribute it.  There is  NO  WAR‐
       RANTY, to the extent permitted by law.

SEE ALSO
       Full documentation <https://www.gnu.org/software/coreutils/whoami>
       or available locally via: info '(coreutils) whoami invocation'

GNU coreutils 8.32                      February 2022                               WHOAMI(1)

whatis

Der Befehl whatis gibt die Kurzbeschreibung eines Befehls aus. Voraussetzung ist, dass dieser Befehl in den Manpages verzeichnet ist.

Beispiel: Kurzbeschreibung für whoami

~$ whatis whoami
whoami (1)           - print effective userid

whereis

Der Befehl whereis gibt für einen Befehl dessen Binärpfad, den Quellcodepfad (soweit vorhanden) und den Pfad zur lokalen Manpages-Datei aus.

Beispiel: Wo befindet sich whoami?

~$ whereis whoami
whoami: /usr/bin/whoami /usr/share/man/man1/whoami.1.gz

history

Der Befehl history listet die letzten Befehle auf, die Du in der Kommandozeile eingetippt hast.

Beispiel: Meine letzten Befehle

~$ history
    1 whoiam
    2 man whoami
    3 whatis whoami
    4 whereis whoami

clear

Der Befehl clear löscht die aktuelle Anzeige der Kommandozeile. Ganz praktisch, wenn zuvor sensible Daten sichtbar waren.

Beispiel:

~$ clear

exit

Der Befehl exit schließt Deine aktuelle Ubuntu-Session. Du musst Dich in der Regel danach wieder neu anmelden (z.B. per SSH).

Beispiel:

~$ exit

reboot

Der Befehl reboot startet Deinen Ubuntu-Server neu. Du musst Dich danach wieder neu anmelden (z.B. per SSH).

Beispiel:

~$ sudo reboot

Paketverwaltung

Eine typische Ubuntu-Server-Installation umfasst zunächst einmal nur die notwendigsten Dienste und Werkzeuge. Es ist Deine Aufgabe als Administrator neue Software zu installieren, zu aktualisieren oder zu entfernen. Dafür stellt Ubuntu einen Paketmanager namens APT (Advanced Package Tool) zur Verfügung. Der zentrale Befehl lautet apt. Im Folgenden werden die wichtigsten Optionen kurz vorgestellt.

apt update

Der Aufruf von apt update lädt die aktuellen Paketinformationen aller konfigurierten Quellen herunter. Diese Informationen dienen als Grundlage für andere Befehle (z.B. um Paket-Upgrades durchzuführen).

Beispiel: Paketinformationen aktualisieren

~$ sudo apt update 
Hit:1 http://archive.ubuntu.com/ubuntu jammy InRelease
Hit:2 http://archive.ubuntu.com/ubuntu jammy-updates InRelease
Hit:3 http://archive.ubuntu.com/ubuntu jammy-backports InRelease
Hit:4 http://archive.ubuntu.com/ubuntu jammy-security InRelease
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
58 packages can be upgraded. Run 'apt list --upgradable' to see them.

apt install

Der Aufruf von apt install installiert ein neues Softwarepaket.

Beispiel: Installation des Texteditors nano

~$ sudo apt install nano
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  nano
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Suggested packages:
  hunspell
The following NEW packages will be installed:
  nano
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 280 kB of archives.
After this operation, 881 kB of additional disk space will be used.
Get:1 http://archive.ubuntu.com/ubuntu jammy/main amd64 nano amd64 6.2-1 [280 kB]
Fetched 280 kB in 0s (738 kB/s)
Selecting previously unselected package nano.
(Reading database ... 76355 files and directories currently installed.)
Preparing to unpack .../archives/nano_6.2-1_amd64.deb ...
Unpacking nano (6.2-1) ...
Setting up nano (6.2-1) ...
update-alternatives: using /bin/nano to provide /usr/bin/editor (editor) in auto mode
update-alternatives: using /bin/nano to provide /usr/bin/pico (pico) in auto mode
Processing triggers for man-db (2.10.2-1) ...
Processing triggers for install-info (6.8-4build1) ...

apt remove

Der Aufruf von apt remove entfernt ein bereits installiertes Softwarepaket.

Beispiel: Deinstallation des Texteditors nano

~$ sudo apt remove nano
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following packages will be REMOVED:
  nano
0 upgraded, 0 newly installed, 1 to remove and 0 not upgraded.
After this operation, 881 kB disk space will be freed.
Do you want to continue? [Y/n] y
(Reading database ... 76427 files and directories currently installed.)
Removing nano (6.2-1) ...
update-alternatives: using /usr/bin/vim.basic to provide /usr/bin/editor (editor) in auto mode
Processing triggers for install-info (6.8-4build1) ...
Processing triggers for man-db (2.10.2-1) ...

apt autoremove

Der Aufruf von apt autoremove entfernt alle nicht mehr benötigten Softwarepaket, die als Abhängigkeit installiert wurden.

Beispiel: Deinstallation aller zur Zeit nicht mehr benötigten Abhängigkeiten

~$ sudo apt autoremove 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

apt upgrade

Der Aufruf von apt upgrade überprüft, ob eine neuere Version eines Softwarepaket vorliegt. Ist dies der Fall, wird diese installiert.

Beispiel 1: Aktualisierung des Texteditors nano

~$ sudo apt upgrade nano
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
nano is already the newest version (6.2-1).
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

Beispiel 2: Aktualisierung aller Softwarepakete

~$ sudo apt upgrade 
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Calculating upgrade... Done
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

apt list

Der Aufruf von apt list gibt Informationen über ein installiertes Softwarepaket aus.

Beispiel 1: Ist der Texteditor nano installiert?

~$ sudo apt list nano
Listing... Done
nano/jammy,now 6.2-1 amd64 [installed,automatic]

Beispiel 2: Liste alle installierten Softwarepakete auf.

~$ sudo apt list --installed
Listing... Done
adduser/jammy,now 3.118ubuntu5 all [installed,automatic]
amd64-microcode/jammy,now 3.20191218.1ubuntu2 amd64 [installed,automatic]
apparmor/jammy-updates,now 3.0.4-2ubuntu2.1 amd64 [installed,automatic]
...

apt oder apt-get?

Manchmal siehst Du statt apt Aufrufe mit apt-get. Beide Befehle ähneln sich, sind aber nicht gleich. Der apt-Befehl ist eine Weiterentwicklung von apt-get. Er gilt als benutzerfreundlicher und integriert auch den Befehl apt-cache.

Anmerkung

Der apt-Befehl hat natürlich noch sehr viel mehr Optionen. Es können Befehle miteinander kombiniert werden, einige können auf alle installierte Softwarepakete angewandt werden, etc. Es existieren unheimlich viele Tutorials zu apt, dieses hier gefällt mir ganz gut: Using APT to Manage Packages in Debian and Ubuntu.

Benutzer und Gruppen

Jeder Benutzer von Ubuntu besitzt eine Identität im System, d.h. jeder Benutzer bekommt ein eigenes Benutzerkonto. Benutzer werden zudem in Gruppen organisiert. Bei den folgenden Befehle dreht sich alles um Benutzer und Gruppen.

who

Der Befehl who listet alle am System angemeldeten Benutzer auf.

Beispiel: Wer ist gerade angemeldet?

~$ who
frank    pts/0        2022-06-27 09:23 (172.19.114.176)

id

Der Befehl id gibt für einen Benutzer die eindeutige UID (User ID), die GID (Group ID) seiner Hauptgruppe sowie GIDs zusätzlicher Gruppen, sofern zugehörig, aus.

Beispiel 1: Informationen über mich

~$ id
uid=1000(frank) gid=1000(frank) groups=1000(frank),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd)

Beispiel 2: Informationen über den Benutzer root

~$ id root
uid=0(root) gid=0(root) groups=0(root)

getent passwd

Der Befehl getent passwd listet alle oder auch nur bestimmte Benutzer auf:

Beispiel 1: Alle Benutzer

~$ getent passwd
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
...

Beispiel 2: Ein bestimmter Benutzer

~$ getent passwd frank
frank:x:1000:1000:Frank Stueber:/home/frank:/bin/bash

getent group

Der Befehl getent group listet alle oder auch nur bestimmte Gruppen auf:

Beispiel 1: Alle Gruppen

~$ getent group
root:x:0:
daemon:x:1:
bin:x:2:
...

Beispiel 2: Eine bestimmte Gruppe

~$ getent group frank
frank:x:1000:

adduser

Der Befehl adduser erstellt einen neuen Benutzer im System.

Beispiel: Neuen Benutzer matthias anlegen

~$ sudo adduser matthias
Adding user `matthias' ...
Adding new group `matthias' (1001) ...
Adding new user `matthias' (1001) with group `matthias' ...
Creating home directory `/home/matthias' ...
Copying files from `/etc/skel' ...
New password:
Retype new password:
passwd: password updated successfully
Changing the user information for matthias
Enter the new value, or press ENTER for the default
        Full Name []: Matthias Stueber
        Room Number []: 200
        Work Phone []: 030-1234567
        Home Phone []: 030-7654321
        Other []:
Is the information correct? [Y/n] y

addgroup

Der Befehl addgroup erstellt eine neue Gruppe im System.

Beispiel: Neue Gruppe marketing anlegen

~$ sudo addgroup marketing
Adding group `marketing' (GID 1003) ...
Done.

usermod

Der Befehl usermod erlaubt das Ändern eines Benutzerkontos.

Beispiel 1: Den Benutzer matthias der Gruppe marketing hinzufügen.

~$ sudo usermod -aG marketing matthias 

Wird ein Benutzer einer weiteren Gruppe zugeordnet, muss dieser sich erst ab- und wieder neu anmelden, bevor die neue Gruppenzugehörigkeit aktiv wird.

Beispiel 2: Den Benutzernamen von matthias in mattia ändern.

~$ sudo usermod -l mattia matthias 

Es wird lediglich der Benutzername umbenannt, das Home-Verzeichnis z.B. nicht.

chfn

Der Befehl chfn erlaubt das Ändern von Benutzereigenschaften (z.B. den Anzeigename).

Beispiel 1: Meine Basiseigenschaften ändern.

~$ chfn
Password:
Changing the user information for frank
Enter the new value, or press ENTER for the default
        Full Name: Frank Stueber
        Room Number []: 100
        Work Phone []: 030-1234567
        Home Phone []: 030-7654321

Beim Aufruf von chfn ohne weiter Parameter wirst Du immer erst nach Deinem Kennwort gefragt.

Beispiel 2: Meinen Anzeigename ändern.

~$  sudo chfn -f "Francois Stueber"

passwd

Der Befehl passwd erlaubt das Ändern von Benutzerkennwörtern.

Beispiel: Mein eigenes Kennwort ändern.

~$ passwd
Changing password for frank.
Current password:
New password:
Retype new password:
passwd: password updated successfully

Beim Aufruf von passwd muss man sich zunächst mit dem aktuellen Kennwort authentifizieren. Erst danach kann man ein neues Kennwort vergeben.

deluser

Der Befehl deluser löscht einen Benutzer aus einer Gruppe oder dem System.

Beispiel 1: Den Benutzer matthias löschen

~$ sudo deluser matthias

Beispiel 2: Den Benutzer matthias inklusive seines Home-Verzeichnisses löschen.

~$ sudo deluser --remove-home matthias

Beispiel 3: Den Benutzer matthias aus der Gruppe marketing entfernen, ihn selbst aber nicht löschen.

~$ sudo deluser matthias marketing

delgroup

Der Befehl delgroup löscht eine Gruppe aus dem System.

Beispiel: Die Gruppe marketing löschen

~$ sudo delgroup marketing
Removing group `marketing' ...
Done.

su

Der Befehl su erlaubt es, Befehle unter einer anderen Benutzerkennung auszuführen.

Beispiel: Wechsel zum Benutzer matthias

~$ su matthias
Password:

Mit Hilfe von exit gelangst Du wieder in Deine vorherige Sitzung zurück.

Systeminformationen

Weiter geht es mit dem Abfragen von Systeminformationen.

lsb_release

Der Befehl lsb_release liefert Informationen über die installierte Linux-Distribution zurück.

Beispiel 1: Zeige alle verfügbaren Informationen an.

~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 22.04 LTS
Release:        22.04
Codename:       jammy

Die erste Ausgabezeile No LSB modules are available. bedarf einer Erklärung. Die Linux Standard Base (LSB) war der Versuch mehrerer Linux-Distributionen, Standards zu entwickeln, um die Kompatibilität zwischen den verschiedenen Linux-Distributionen zu erhöhen. In diesem Kontext wurden eine Reihe von Bibliotheken und Werkzeuge standardisiert und sind unter dem Label LSB Modules zusammengefasst. Spätestens seit 2015 ist die ganze Initiative eingeschlafen und wird nicht mehr aktiv weiter verfolgt. Geblieben ist vor allem der Befehl lsb_release. Unter Ubuntu sind standardmäßig keine LSB-Module installiert, daher die zitierte Ausgabezeile. Wer möchte, kann mittels

~$ sudo apt install lsb-core

die LSB-Module nachträglich installieren.

Beispiel 2: Wichtigte Informationen ohne LSB-Hinweis

~$ lsb_release -cdr
Description:    Ubuntu 22.04 LTS
Release:        22.04
Codename:       jammy

uname

Der Befehl uname liefert weitere Systeminformationen (u.a. Linux-Kernel-Name und -Version sowie den Hostnamen) zurück.

Beispiel:

~$ uname -a
Linux gagarin22 5.15.0-25-generic #25-Ubuntu SMP Wed Mar 30 15:54:22 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

date

Der Befehl date zeigt das aktuelle Systemdatum sowie die aktuelle Systemzeit an.

Beispiel:

~$ date
Di 21. Jun 11:12:51 CEST 2022

uptime

Der Befehl uptime zeigt an, wie lange Dein Ubuntu-Server seit dem letzten Neustart aktiv ist.

Beispiel:

~$ uptime
 09:32:25 up 18:02,  1 user,  load average: 0,00, 0,01, 0,05

free

Der Befehl free gibt den genutzten und noch verfügbaren Hauptspeicher aus.

Beispiel:

~$ free -h
               total        used        free      shared  buff/cache   available
Mem:           3.8Gi       338Mi       2.9Gi       1.0Mi       616Mi       3.2Gi
Swap:             0B          0B          0B

df

Der Befehl df gibt den genutzten und noch verfügbaren Speicher im Dateisystem aus.

Beispiel:

~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
tmpfs                              390M  1.6M  388M   1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv  9.8G  2.9G  6.4G  31% /
tmpfs                              1.9G     0  1.9G   0% /dev/shm
tmpfs                              5.0M     0  5.0M   0% /run/lock
/dev/sda2                          1.8G  125M  1.5G   8% /boot
tmpfs                              390M  4.0K  390M   1% /run/user/1000

neofetch

Wer einen kompakten Überblick über alle Systeminformationen bekommen möchte, ohne einzelne Befehle aufzurufen, dem sei die Anwendung Neofetch ans Herz gelegt.

Du musst sie zunächst installieren:

~$ sudo apt install neofetch

Und dann kannst Du Neofetch auch schon nutzen:

neofetch Ausgabe

neofetch Ausgabe

Die Ausgabe von Neofetch kannst Du anpassen (siehe GitHub-Wiki).

getconf

Der Befehl getconf liefert eine lange Liste an Informationen zur aktuellen Systemkonfiguration zurück.

Beispiel:

~$ getconf -a
LINK_MAX                           32000
_POSIX_LINK_MAX                    32000
MAX_CANON                          255
_POSIX_MAX_CANON                   255
MAX_INPUT                          255
_POSIX_MAX_INPUT                   255
...

procfs

Das process information pseudo-filesystem (kurz procfs) ist kein Befehl, sondern ein Pseudo-Dateisystem, das als Interface zum Auslesen von Linux-Kernel-Informationen dient. Hier findest Du jede noch so obskure Systeminformation. Die Informationen verteilen sich auf eine Vielzahl von Dateien, die Du beispielsweise mit dem cat-Befehl auslesen kannst. Eine ausführliche Dokumentation findest Du in den Manpages unter proc. Es folgen ein paar Beispiele.

Beispiel 1: Umfangreiche Informationen zur CPU

~$ cat /proc/cpuinfo

Beispiel 2: Umfangreiche Informationen zum Hauptspeicher

~$ cat /proc/meminfo

Beispiel 3: Die höchste Prozess-Identifikationsnummer (PID), die vergeben werden kann

~$ cat /proc/sys/kernel/pid_max

Dateioperationen

Jetzt schauen wir uns typische Operationen auf Dateisystemebene an. Bitte beachte, dass unter Linux bei Datei- und Verzeichnisnamen zwischen Groß- und Kleinschreibung unterschieden wird. Die Datei example.txt ist nicht dieselbe Datei wie Example.txt.

pwd

Der Befehl pwd gibt den Pfad des aktuellen Arbeitsverzeichnisses aus.

Beispiel:

~$ pwd
/home/frank

cd

Der Befehl cd wechselt das aktuelle Arbeitsverzeichnis.

Beispiel 1: Wechsle in das Verzeichnis home.

~$ cd /home
/home$

Beispiel 2: Wechsle eine Ebene höher.

/home$ cd ..
/$

Beispiel 3: Wechsle zurück in das vorherige Verzeichnis.

~$ cd -
/home
/home$

Beispiel 4: Wechsle in Dein persönliches Home-Verzeichnis.

/home$ cd
~$

ls

Der Befehl ls listet den Inhalt des aktuellen Arbeitsverzeichnisses auf.

Beispiel 1: Inhalt von /home auflisten

/home$ ls
frank

Beispiel 2: Wer es detaillierter haben möchte…

/home$ ls -l
drwxr-xr-x 5 frank frank 4096 Jun 17 17:14

dir

Der Befehl dir macht im Prinzip das Gleiche wie ls, ist aber kein Alias (also lediglich ein anderer Name für das gleiche Werkzeug). Die Gründe für die Existenz von dir und die Unterschiede zu ls sind in diesem Forumsbeitrag ausführlich erklärt.

Beispiel: Inhalt von /home auflisten

/home$ dir
frank

stat

Der Befehl stat gibt detaillierte Informationen zu einer vorhandenen Datei oder einem vorhandenen Verzeichnis aus.

Beispiel: Dateistatus für example.txt anzeigen

~$ stat example.txt
File: example.txt
  Size: 18              Blocks: 8          IO Block: 4096   regular file
Device: a410b661h/2752558689d   Inode: 263240      Links: 1
Access: (0664/-rw-rw-r--)  Uid: ( 1000/frank)   Gid: ( 1000/frank)
Access: 2022-06-21 13:17:40.777464098 +0200
Modify: 2022-06-21 13:17:46.569538081 +0200
Change: 2022-06-21 13:17:46.569538081 +0200
 Birth: -

touch

Der Befehl touch ändert die Zeitstempel von Dateien und Verzeichnissen. Es können nur der Zeitpunkt des letzten Zugriffs (access time) und der Zeitpunkt der letzten inhaltlichen Änderung (modification time) geändert werden.

Beispiel: Zeitstempel der Datei example.txt ändern

~$ touch -t 202206211200 example.txt

Hier werden beide Zeitpunkte zusammen auf den 21.06.2022 12:00 gesetzt. Existiert die Datei example.txt noch nicht, wird sie automatisch erstellt. Um die Änderung zu überprüfen, kannst Du wieder den stat-Befehl verwenden.

cp

Der Befehl cp kopiert Dateien oder Verzeichnisse.

Beispiel 1: Datei example.txt als example.copy.txt kopieren

~$ cp example.txt example.copy.txt

Beispiel 2: Datei example.txt ins Verzeichnis Beispiele kopieren

~$ cp example.txt Beispiele

Beispiel 3: Verzeichnis Beispiele inklusive Inhalt als Verzeichnis Beispiele.Copy kopieren

~$ cp -r Beispiele Beispiele.Copy

Beispiel 4: Verzeichnisinhalt Beispiele ins Verzeichnis Beispiele.Copy kopieren

~$ cp -a Beispiele/. Beispiele.Copy

mv

Der Befehl mv verschiebt Dateien oder Verzeichnisse bzw. benennt sie um.

Beispiel 1: Datei example.txt umbenennen in beispiel.txt

~$ mv example.txt beispiel.txt

Beispiel 2: Datei example.txt ins Verzeichnis Beispiele verschieben

~$ mv example.txt Beispiele

rm

Der Befehl rm löscht Dateien und Verzeichnisse.

Beispiel 1: Die Datei example.txt löschen.

~$ rm example.txt

Beispiel 2: Das Verzeichnis Beispiele samt Inhalt rekursiv löschen.

~$ rm -r Beispiele

Beispiel 3: Nur den Inhalt von Verzeichnis Beispiele rekursiv löschen.

~$ rm -r Beispiele/*

shred

Der Befehl shred überschreibt den Inhalt einer Datei mit zufällig generierten Zeichen, um sie unkenntlich zu machen.

Beispiel 1: Die Datei example.txt unkenntlich machen.

~$ shred example.txt

Beispiel 2: Die Datei example.txt unkenntlich machen und anschließend löschen.

~$ shred -u example.txt

mkdir

Der Befehl mkdir erstellt neue Verzeichnisse.

Beispiel 1: Neues Verzeichnis Beispiele erstellen

~$ mkdir Beispiele

Beispiel 2: Neues Verzeichnis Texte inklusive Unterverzeichnis Beispiele erstellen

~$ mkdir -p Texte/Beispiele

rmdir

Der Befehl rmdir löscht leere Verzeichnisse.

Beispiel: Das Verzeichnis Beispiele löschen

~$ rmdir Beispiele

namei

Der Befehl namei folgt einem Pfadnamen bis zum Endpunkt.

Beispiel 1: Dem Verzeichnis /home/frank folgen

~$ namei /home/frank
f: /home/frank
 d /
 d home
 d frank

Beispiel 2: Dem Verzeichnis /home/frank folgen und dabei Informationen über Eigentümer und Zugriffsrechte ausgeben

~$ namei -om /home/frank
f: /home/frank
 drwxr-xr-x root  root  /
 drwxr-xr-x root  root  home
 drwxr-xr-x frank frank frank

Dateiinhalte

Wir bleiben beim Thema Dateien. Wir wollen jetzt mit Dateiinhalten arbeiten.

cat

Der Befehl cat leitet den Inhalt von Dateien um (z.B. auf den Bildschirm oder in eine andere Datei).

Beispiel 1: Dateiinhalt ausgeben

~$ cat example.txt
Hallo Ubuntu!

Hier wird der Inhalt der Textdatei example.txt ausgegeben. Dieser lautet “Hallo Ubuntu!”

Beispiel 2: Dateiinhalte verknüpfen

~$ cat example1.txt example1.txt > result.txt

Hier wird der Inhalt der Textdatei example1.txt mit dem Inhalt der Textdatei example1.txt verknüpft und in eine neue Textdatei mit Namen result.txt geschrieben.

Beispiel 3: Neue Datei erstellen

~$ cat > new.txt

Hier wird der eine neue leere Datei new.txt erstellt, die auf Deine Eingabe wartet. Wenn Du jetzt anfängst zu Tippen, wird der Text in diese neue Datei geschrieben. Mit Strg + D speicherst Du die Datei und schließt den Vorgang ab.

more

Der Befehl more ist ein Hilfswerkzeug, das lange Dateiinhalte (z.B. große Log-Dateien) seitenweise anzeigt.

Beispiel: Anzeige einer großen Log-Datei

~$ sudo more /var/log/syslog
Jun 22 11:37:00 gagarin22 systemd-modules-load[522]: Inserted module 'msr'
Jun 22 11:37:00 gagarin22 systemd-modules-load[522]: Inserted module 'ipmi_devintf'
Jun 22 11:37:00 gagarin22 lvm[513]:   1 logical volume(s) in volume group "ubuntu-vg" monitored
Jun 22 11:37:00 gagarin22 systemd[1]: Starting Flush Journal to Persistent Storage...
Jun 22 11:37:00 gagarin22 systemd[1]: Finished Create Static Device Nodes in /dev.
Jun 22 11:37:00 gagarin22 multipathd[540]: --------start up--------
--More--(1%)

Hier wird die zentrale Log-Datei /var/log/syslog angezeigt. Es wird dir zunächst die erste Seite der Logeinträge angezeigt. Eine Seite umfasst alle Einträge, die zusammen auf den Bildschirm passen. Das sind hier gerade mal ein Prozent des Gesamtinhalts. Mit der Eingabetaste kannst Du Zeile für Zeile weiter runterscrollen. Mit der Leerzeichentaste kannst Du Seite für Seite weiter runterscrollen. Mit Q kannst Du die Anzeige verlassen.

less

Der Befehl less ist die flexiblere Variante von more.

Beispiel: Anzeige einer großen Log-Datei

~$ sudo less /var/log/syslog
Jun 22 11:37:00 gagarin22 systemd-modules-load[522]: Inserted module 'msr'
Jun 22 11:37:00 gagarin22 systemd-modules-load[522]: Inserted module 'ipmi_devintf'
Jun 22 11:37:00 gagarin22 lvm[513]:   1 logical volume(s) in volume group "ubuntu-vg" monitored
Jun 22 11:37:00 gagarin22 systemd[1]: Starting Flush Journal to Persistent Storage...
Jun 22 11:37:00 gagarin22 systemd[1]: Finished Create Static Device Nodes in /dev.
Jun 22 11:37:00 gagarin22 multipathd[540]: --------start up--------
/var/log/syslog

Hier wird wieder die zentrale Log-Datei /var/log/syslog angezeigt. Allerdings kannst Du jetzt mit den Pfeiltasten und mit Bild↓ und Bild↑ bidirektional durch die Log-Einträge navigieren. Mit Q kannst Du den Anzeigemodus verlassen.

Der Befehl head gibt den ersten Teil einer Textdatei aus.

Beispiel 1: Anzeige der ersten zwei Zeilen

~$ sudo head -n 2 /var/log/syslog
Jun 22 11:37:00 gagarin22 systemd-modules-load[522]: Inserted module 'msr'
Jun 22 11:37:00 gagarin22 systemd-modules-load[522]: Inserted module 'ipmi_devintf'

Beispiel 2: Anzeige der ersten 16 Zeichen

~$ sudo head -c 16 /var/log/syslog
Jun 22 11:37:00  

tail

Der Befehl tail ist das Gegenstück zu head und gibt den letzten Teil einer Textdatei aus.

Beispiel 1: Anzeige der letzten zwei Zeilen

~$ sudo tail -n 2 /var/log/syslog
Jun 29 08:39:34 gagarin22 systemd[1]: Started Time & Date Service.
Jun 29 08:40:04 gagarin22 systemd[1]: systemd-timedated.service: Deactivated successfully.

Beispiel 2: Anzeige der letzten 26 Zeichen

~$ sudo tail -c 26 /var/log/syslog
Deactivated successfully.

grep

Der Befehl grep extrahiert Inhalte von Textdateien durch Vergleich von Suchmustern.

Beispiel: Anzeige aller Zeilen mit “Finished Rotate log files”

~$ sudo grep "Finished Rotate log files" /var/log/syslog
Jun 27 09:10:09 gagarin22 systemd[1]: Finished Rotate log files.
Jun 28 09:09:07 gagarin22 systemd[1]: Finished Rotate log files.
Jun 29 08:12:28 gagarin22 systemd[1]: Finished Rotate log files.

Der Befehl grep ist ziemlich mächtig. Du kannst auch reguläre Ausdrücke zur Suche einsetzen.

Texteditoren

Bisher haben wir uns nur Inhalte von Dateien anzeigen lassen. Jetzt wollen selber Textdateien (z.B. Konfigurationsdateien) anlegen oder bestehende ändern. Dazu benötigen wir einen Texteditor.

Vim

Der Texteditor Vim (das Vim steht für Vi IMproved, also einer verbesserten Version eines älteren Texteditors namens Vi) ist standardmäßig bei Ubuntu Server dabei.

Gestartet wird er wie folgt:

~$ vim example.txt

Wer grafische Texteditoren gewöhnt ist, wird bei Vim erst einmal komisch aus der Wäsche schauen, da dessen Bedienung alles andere als intuitiv ist. Ich verweise hier auf die kompakte Einführung Vim 101: A Beginner’s Guide to Vim.

GNU nano

Der Texteditor nano sieht ähnlich spartanisch wie VIM aus, ist aber wesentlich intuitiver zu bedienen. Er ist leider nicht in allen Fällen unter Ubuntu Server vorinstalliert. Das lässt sich aber bei Bedarf ganz einfach per apt-Befehl nachholen:

~$ sudo apt install nano

Gestartet wird er wie folgt:

~$ nano example.txt

Es folgt eine kurze Übersicht zu den wichtigsten Tastaturkürzeln.

Tastaturkombination Aktion
Pfeiltaste Im Text navigieren
Pos1 An Anfang der aktuellen Textzeile springen
Ende Ans Ende der aktuellen Textzeile springen
Bild↑ Ein Seite nach oben springen
Bild↓ Ein Seite nach unten springen
Umschalt + Pfeiltaste Text markieren
Strg + K Markierten Text bzw. die aktuelle Textzeile ausschneiden
Alt + 6 Markierten Text bzw. die aktuelle Textzeile kopieren
Strg + U Ausgeschnittenen oder kopierten Text an aktueller Position einfügen
Alt + U Undo
Alt + E Redo
Strg + S Aktuellen Textinhalt speichern
Strg + X nano verlassen

Willst Du nano verlassen, wirst Du bei nicht gespeicherten Änderungen “Save modified buffer?” gefragt. In diesem Fall hast Du folgende Möglichkeiten:

Tastaturkombination Aktion
Y Änderungen speichern und nano schließen
N Änderungen verwerfen und nano schließen
Strg + C Vorgang abbrechen und zu nano zurückkehren

Es gibt natürlich noch viel mehr zu nano zu erzählen, all das findest Du u.a. in der nano-Dokumentation.

Prozessverwaltung

Auf einem Ubuntu Server laufen zu jederzeit eine Vielzahl aktiver Prozesse. Diese verbrauchen Ressourcen (CPU-Zeit, Speicher, Dateien etc.) und bleiben manchmal auch hängen. Jeder Prozess ist durch seine Prozess-Identifikationsnummer (PID) eindeutig adressierbar.

top

Der Befehl top zeigt alle laufenden Ubuntu-Prozesse an. Die Anzeige aktualisiert sich dabei stetig. Mit Strg + C beendest Du die Anzeige wieder.

Beispiel:

~$ top
top - 19:42:59 up 2 min,  2 users,  load average: 0.48, 0.37, 0.15
Tasks: 246 total,   1 running, 245 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.2 us,  0.0 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
MiB Mem :   3889.8 total,   3304.7 free,    293.2 used,    291.9 buff/cache
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   3363.2 avail Mem

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND
     27 root      20   0       0      0      0 I   0.3   0.0   0:00.52 kworker/0:2-events
   1035 root      20   0       0      0      0 I   0.3   0.0   0:00.11 kworker/1:4-events
   1275 frank     20   0   10612   4244   3376 R   0.3   0.1   0:00.05 top
      1 root      20   0  100772  11524   8272 S   0.0   0.3   0:12.19 systemd
      2 root      20   0       0      0      0 S   0.0   0.0   0:00.10 kthreadd
      3 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_gp
      4 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 rcu_par_gp
      5 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 netns
      6 root      20   0       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0-events
      7 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 kworker/0:0H-events_highpri
      8 root      20   0       0      0      0 I   0.0   0.0   0:00.01 kworker/0:1-cgroup_destroy
      9 root      20   0       0      0      0 I   0.0   0.0   0:00.00 kworker/u256:0-events_unbound
     10 root       0 -20       0      0      0 I   0.0   0.0   0:00.00 mm_percpu_wq
     11 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_rude_
     12 root      20   0       0      0      0 S   0.0   0.0   0:00.00 rcu_tasks_trace
     13 root      20   0       0      0      0 S   0.0   0.0   0:00.07 ksoftirqd/0
     14 root      20   0       0      0      0 I   0.0   0.0   0:00.13 rcu_sched
     15 root      rt   0       0      0      0 S   0.0   0.0   0:00.00 migration/0
     16 root     -51   0       0      0      0 S   0.0   0.0   0:00.00 idle_inject/0
     17 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/0
     18 root      20   0       0      0      0 S   0.0   0.0   0:00.00 cpuhp/1
...	 

Mit Umschalt + F kannst Du auswählen, welche Spalten Du angezeigt bekommen möchtest und nach welcher Spalte sortiert werden soll.

ps

Der Befehl ps macht einen Snapshot (zu Deutsch: Schnappschuss) von laufenden Ubuntu-Prozessen und zeigt diesen an.

Beispiel 1: Alle durch mich erzeugten Prozesse auflisten.

~$ ps
    PID TTY          TIME CMD
   1266 pts/0    00:00:00 bash
   1692 pts/0    00:00:00 ps

Beispiel 2: Alle Prozesse im System hierarchisch auflisten.

~$ ps -ejH
    PID    PGID     SID TTY          TIME CMD
      2       0       0 ?        00:00:00 kthreadd
      3       0       0 ?        00:00:00   rcu_gp
      4       0       0 ?        00:00:00   rcu_par_gp
      5       0       0 ?        00:00:00   netns
      7       0       0 ?        00:00:00   kworker/0:0H-events_highpri
     10       0       0 ?        00:00:00   mm_percpu_wq
...	 

kill

Der Befehl kill sendet ein Beendigungssignal an einen oder mehrere laufende Prozesse.

Beispiel 1: Dem Prozess mit der PID 891 ein Signal (SIGTERM) zur Beendigung senden.

~$ sudo kill 891

Beispiel 2: Den Prozess mit der PID 891 auf die harte Tour beenden (SIGKILL).

~$ sudo kill -9 891

Beispiel 3: Die Liste aller Beendigungssignale anzeigen.

~$ kill -l
 1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL     10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX

Netzwerkbefehle

Ein Ubuntu Server ist in der Regel immer Teil eines Netzwerks. Die folgenden Befehle gehören zum Standard-Repertoire eines jeden Netzwerkadministrators.

hostname

Der Befehl hostname gibt den Hostnamen Deines Ubuntu Server zurück bzw. konfiguriert ihn neu. Der Hostname ist die eindeutige Bezeichnung des Servers im Netzwerk.

Beispiel 1: Eigenen Hostnamen abfragen

~$ hostname
gagarin22

Beispiel 2: Eigenen Hostnamen neu setzen

~$ sudo hostname armstrong22

ping

Der Befehl ping sendet eine ICMP Echo-Anfrage (ICMP ECHO_REQUEST) an ein Gerät im Netzwerk. Damit kann die Erreichbarkeit eines Gerätes getestet werden.

Beispiel: Echo-Anfrage an google.de

~$ ping google.de
PING google.de (216.58.212.163) 56(84) bytes of data.
64 bytes from ams15s22-in-f3.1e100.net (216.58.212.163): icmp_seq=1 ttl=117 time=14.7 ms
64 bytes from ams15s22-in-f163.1e100.net (216.58.212.163): icmp_seq=2 ttl=117 time=14.5 ms
64 bytes from ams15s22-in-f3.1e100.net (216.58.212.163): icmp_seq=3 ttl=117 time=14.6 ms
^C
--- google.de ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 14.545/14.613/14.662/0.049 ms

Der ping-Befehl hat eine Besonderheit. Er endet nicht von selbst, sondern muss per Strg + C aktiv unterbrochen werden. In der Zwischenzeit werden immer wieder Echo-Abfragen an das Zielgerät (in unserem Fall der Google-Server) gesendet. Erst nach Abbruch werden die Daten aller Echo-Anfragen analysiert und als Statistik ausgegeben (siehe die letzten beiden Zeilen in der Ausgabe).

nslookup

Der Befehl nslookup erlaubt es, DNS-Lookups durchzuführen. Ein DNS-Lookup ist das Abfragen eines oder mehrerer DNS-Einträge bei einem DNS-Server. Es gibt unterschiedliche Typen von DNS-Einträgen, die sogenannten DNS Record Types.

Beispiel: Alle verfügbaren DNS-Einträge für google.de

~$ nslookup -type=any google.de
Server:         85.214.7.22
Address:        85.214.7.22#53

Non-authoritative answer:
google.de       mail exchanger = 0 smtp.google.com.
google.de       nameserver = ns3.google.com.
google.de       nameserver = ns2.google.com.
google.de       nameserver = ns4.google.com.
google.de       nameserver = ns1.google.com.
Name:   google.de
Address: 2a00:1450:400e:810::2003
Name:   google.de
Address: 142.251.36.35

Authoritative answers can be found from:

dig

Der Befehl dig ist eine neuere Alternative zu nslookup

Beispiel: Alle verfügbaren DNS-Einträge für google.de

~$ dig google.de any

; <<>> DiG 9.16.1-Ubuntu <<>> google.de any
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37292
;; flags: qr rd ra; QUERY: 1, ANSWER: 7, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: d37aae5e75b3c5d51209ac8062bb0891175cb2360439512d (good)
;; QUESTION SECTION:
;google.de.                     IN      ANY

;; ANSWER SECTION:
google.de.              155     IN      MX      0 smtp.google.com.
google.de.              11959   IN      NS      ns3.google.com.
google.de.              11959   IN      NS      ns1.google.com.
google.de.              11959   IN      NS      ns2.google.com.
google.de.              11959   IN      NS      ns4.google.com.
google.de.              230     IN      AAAA    2a00:1450:400e:810::2003
google.de.              200     IN      A       142.251.36.35

;; Query time: 0 msec
;; SERVER: 85.214.7.22#53(85.214.7.22)
;; WHEN: Di Jun 28 15:56:33 CEST 2022
;; MSG SIZE  rcvd: 213

whois

Der Befehl whois erlaubt die Abfrage darüber, wer einen bestimmten Internet-Domänennamen registriert hat. Grundlage ist das WHOIS Protocol (RFC 3912).

Beispiel 1: google.com

~$ whois google.com
   Domain Name: GOOGLE.COM
   Registry Domain ID: 2138514_DOMAIN_COM-VRSN
   Registrar WHOIS Server: whois.markmonitor.com
   Registrar URL: http://www.markmonitor.com
   Updated Date: 2019-09-09T15:39:04Z
   Creation Date: 1997-09-15T04:00:00Z
   Registry Expiry Date: 2028-09-14T04:00:00Z
   Registrar: MarkMonitor Inc.
   Registrar IANA ID: 292
   Registrar Abuse Contact Email: abusecomplaints@markmonitor.com
   Registrar Abuse Contact Phone: +1.2086851750
   Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited
   Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited
   Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited
   Domain Status: serverDeleteProhibited https://icann.org/epp#serverDeleteProhibited
   Domain Status: serverTransferProhibited https://icann.org/epp#serverTransferProhibited
   Domain Status: serverUpdateProhibited https://icann.org/epp#serverUpdateProhibited
   Name Server: NS1.GOOGLE.COM
   Name Server: NS2.GOOGLE.COM
   Name Server: NS3.GOOGLE.COM
   Name Server: NS4.GOOGLE.COM
   DNSSEC: unsigned
   URL of the ICANN Whois Inaccuracy Complaint Form: https://www.icann.org/wicf/
   ...

Beispiel 2: google.de

~$ whois google.de
% Restricted rights.
%
% Terms and Conditions of Use
%
% The above data may only be used within the scope of technical or
% administrative necessities of Internet operation or to remedy legal
% problems.
% The use for other purposes, in particular for advertising, is not permitted.
%
% The DENIC whois service on port 43 doesn't disclose any information concerning
% the domain holder, general request and abuse contact.
% This information can be obtained through use of our web-based whois service
% available at the DENIC website:
% http://www.denic.de/en/domains/whois-service/web-whois.html
%
%

Domain: google.de
Nserver: ns1.google.com
Nserver: ns2.google.com
Nserver: ns3.google.com
Nserver: ns4.google.com
Status: connect
Changed: 2018-03-12T21:44:25+01:00

Die Unterschiede zwischen Beispiel 1 und 2 sind signifikant. Während die Abfrage nach google.com viele Details preisgibt, resultiert die Abfrage nach google.de in einer recht spartanischen Ausgabe. Aufgrund der europäischen Datenschutz-Grundverordnung (DSGVO) wird die Menge der im Whois angezeigten Informationen zu europäischen Domänen stark eingeschränkt.

ip

Der Befehl ip gibt Informationen zur Netzwerkinfrastrultur zurück. Der ip-Befehl ist mit sehr vielen Optionen ausgestattet und kann nicht nur Informationen ermitteln sondern auch aktiv in die Netzwerkonfiguration eingreifen. Das folgende ip Command Cheat Sheet (Spickzettel) von Red Hat gibt einen guten Überblick.

Beispiel: Die IP-Adressen aller Netzwerkschnittstellen anzeigen

~$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:2f:1f:87 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 192.168.178.41/24 metric 100 brd 192.168.178.255 scope global dynamic ens33
       valid_lft 863712sec preferred_lft 863712sec
    inet6 fe80::20c:29ff:fe2f:1f87/64 scope link
       valid_lft forever preferred_lft forever

finger

Der Befehl finger liefert Informationen zu Benutzern.

Beispiel 1: Informationen über mich

~$ finger
Login     Name            Tty      Idle  Login Time   Office     Office Phone
frank     Frank Stueber   pts/0          Jun 27 15:09 (172.19.114.176)

Beispiel 2: Informationen über root

~$ finger -s root
Login     Name               Tty      Idle  Login Time   Office     Office Phone
root      root                *     *  No logins

netstat

Der Befehl netstat liefert Informationen zu Netzwerkverbindungen zurück.

Beispiel 1: Ausgabe aller TCP-Sockets

~$ netstat -at
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0      0 0.0.0.0:ssh             0.0.0.0:*               LISTEN
tcp        0      0 localhost:domain        0.0.0.0:*               LISTEN
tcp        0     44 gagarin22:ssh           Frank:57473             ESTABLISHED
tcp6       0      0 [::]:ssh                [::]:*                  LISTEN

Beispiel 2: Ausgabe der nur aktiv verbundenen TCP-Sockets

~$ netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State
tcp        0     36 gagarin22:ssh           Frank:57473             ESTABLISHED

ss

Der Befehl ss ist eine neuere Alternative zu netstat.

Beispiel 1: Ausgabe aller TCP-Sockets

~$ ss -at
State      Recv-Q     Send-Q          Local Address:Port             Peer Address:Port     Process
LISTEN     0          4096            127.0.0.53%lo:domain                0.0.0.0:*
LISTEN     0          128                   0.0.0.0:ssh                   0.0.0.0:*
ESTAB      0          36             192.168.178.41:ssh            192.168.178.28:57473
LISTEN     0          128                      [::]:ssh                      [::]:*

Beispiel 2: Ausgabe der nur aktiv verbundenen TCP-Sockets

~$ ss -t
State     Recv-Q     Send-Q          Local Address:Port            Peer Address:Port      Process
ESTAB     0          36             192.168.178.41:ssh           192.168.178.28:57473

traceroute

Der Befehl traceroute ermittelt, über welche Router und Internetknoten Datenpakete bis zum abgefragten Rechner gelangen.

Beispiel: Nachverfolgung für google.de

~$ traceroute google.de
traceroute to google.de (142.251.36.35), 30 hops max, 60 byte packets
 1  10.169.30.173 (10.169.30.173)  0.042 ms  0.022 ms  0.021 ms
 2  425.ae4.core-b1.as6724.net (85.214.0.112)  0.291 ms  0.258 ms  0.240 ms
 3  110.ae14.bb-rt1-2.h20.r22.rs.ber.de.as6724.net (85.214.2.90)  11.749 ms  11.717 ms  11.691 ms
 4  ae-1-88.bb-a.ak.ber.de.oneandone.net (212.227.112.110)  0.452 ms ae-17-88.bb-b.fr7.fra.de.net.ionos.com (212.227.112.122)  10.610 ms ae-0-88.bb-a.ak.ber.de.oneandone.net (212.227.112.104)  0.384 ms
 5  ae-13-0.bb-a.nkf.ams.nl.net.ionos.com (212.227.120.227)  16.915 ms  16.906 ms  16.983 ms
 6  * * *
 7  108.170.252.83 (108.170.252.83)  13.292 ms  13.305 ms 108.170.251.145 (108.170.251.145)  10.935 ms
 8  142.251.66.239 (142.251.66.239)  13.046 ms 142.251.66.241 (142.251.66.241)  13.148 ms 142.251.66.239 (142.251.66.239)  13.118 ms
 9  ams17s12-in-f3.1e100.net (142.251.36.35)  11.038 ms  11.070 ms 108.170.234.10 (108.170.234.10)  14.375 ms

nmap

Der Befehl nmap ermöglicht das Erkunden von Netzwerken und das Durchführen von Sicherheitsprüfungen.

Beispiel: Scan für google.de

~$ nmap google.de
Starting Nmap 7.80 ( https://nmap.org ) at 2022-06-28 16:35 CEST
Nmap scan report for google.de (142.251.36.35)
Host is up (0.012s latency).
Other addresses for google.de (not scanned): 2a00:1450:400e:810::2003
rDNS record for 142.251.36.35: ams17s12-in-f3.1e100.net
Not shown: 998 filtered ports
PORT    STATE SERVICE
80/tcp  open  http
443/tcp open  https

Nmap done: 1 IP address (1 host up) scanned in 4.90 seconds

Artikelhistorie

  • 29.06.2022
    • Erstveröffentlichung
  • 31.08.2022
    • Abschnitt “Identitätsverwaltung” in “Benutzer und Gruppen” umbenannt und erweitert
Das könnte dich auch interessieren:
  1. Ubuntu Server 22.04 installieren
  2. Ubuntu Server 20.04 installieren
  3. Dateirechte unter Ubuntu
  4. HTTPS unter nginx/Ubuntu
  5. Postfix unter Ubuntu-Server
Teile diesen Artikel
comments powered by Disqus