systemadmin
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige ÜberarbeitungVorherige ÜberarbeitungNächste Überarbeitung | Vorherige Überarbeitung | ||
systemadmin [2022/06/15 16:51] – [Kommandos] pulsar | systemadmin [2025/04/30 10:28] (aktuell) – [systemD] techguru | ||
---|---|---|---|
Zeile 42: | Zeile 42: | ||
Das Heimatverzeichnis des Hauptbenutzer auf Sicherungs-Partition verlegen. Die Verlinkungen können dann entfallen. Bis auf OpenSuse .kde4 und Ubuntu .kde Unterschied | Das Heimatverzeichnis des Hauptbenutzer auf Sicherungs-Partition verlegen. Die Verlinkungen können dann entfallen. Bis auf OpenSuse .kde4 und Ubuntu .kde Unterschied | ||
- | Dann aus Kompatibilitäts- Gründen das Heimatverz. auf der Sicherungs-Partition mit dem Standard Heimatverzeichnis verlinken. | + | Dann aus Kompatibilitäts-Gründen das Heimatverz. auf der Sicherungs-Partition mit dem Standard Heimatverzeichnis verlinken. |
ln -s / | ln -s / | ||
Zeile 54: | Zeile 54: | ||
== Neuen Hauptbenutzer anlegen: ronni == | == Neuen Hauptbenutzer anlegen: ronni == | ||
- | useradd -c Multimedia -d /media/ | + | useradd -c Multimedia -d /home/ |
| | ||
groupadd -g 800 backup | groupadd -g 800 backup | ||
Zeile 82: | Zeile 82: | ||
Symbolische links für Ordner im Heimatverz. anlegen. Ordner darf vorher nicht im Verkn. Verz. existieren. | Symbolische links für Ordner im Heimatverz. anlegen. Ordner darf vorher nicht im Verkn. Verz. existieren. | ||
- | Am besten ist es den Ordner vorher ins Sicher Laufwerk zu verschieben und dann mit Verkn. Verz. Verknuepfen. | + | Am besten ist es den Ordner vorher ins Sicher Laufwerk zu verschieben und dann mit Verkn. Verz. Verknüpfen. |
< | < | ||
Zeile 102: | Zeile 102: | ||
ln -s / | ln -s / | ||
</ | </ | ||
+ | |||
+ | |||
+ | == Switch User == | ||
+ | |||
+ | Falls ein Nutzer keine Login-Shell hat(/ | ||
+ | mit dem su-Kommando wird noch der Parameter '' | ||
+ | |||
+ | su - mysql --shell=/ | ||
Zeile 167: | Zeile 175: | ||
=== Beispiele ohne Playbooks und Roles === | === Beispiele ohne Playbooks und Roles === | ||
+ | Kommando als remote User ansible ausführen, ssh-key vom Remote Nutzer muss im ~/.ssh hinterlegt sein. | ||
ansible all -u ansible -b -a "/ | ansible all -u ansible -b -a "/ | ||
Zeile 302: | Zeile 311: | ||
Einen Patch auf allen Entwicklungssystemen ausrollen: | Einen Patch auf allen Entwicklungssystemen ausrollen: | ||
- | ansible all -i inventoryfiles/ | + | ansible all -i inventoryfiles/ |
==== Ansible Variablen ==== | ==== Ansible Variablen ==== | ||
Zeile 524: | Zeile 533: | ||
</ | </ | ||
- | oder Alternativ als Nutzer der die Log-Datei schreiben soll mit dem Befehl '' | + | oder Alternativ als Nutzer der die Log-Datei schreiben soll mit dem Befehl '' |
+ | |||
+ | Eine etwas komplexere Crontab welche alle 15 Minuten in der Zeit von 6 Uhr - 18 Uhr ausgeführt wird: | ||
+ | < | ||
+ | # Synchronisiert zwischen Master und Slave DHCP | ||
+ | 0,15,30,45 6, | ||
+ | </ | ||
Im unteren Abschnitt ein weiteres Beispiel für Cron Einträge in die Datei ''/ | Im unteren Abschnitt ein weiteres Beispiel für Cron Einträge in die Datei ''/ | ||
Zeile 710: | Zeile 725: | ||
vmstat -2 | vmstat -2 | ||
- | expr 2 + 3 = ERGEBNIS =rechnen auf der Shell: | + | |
+ | | ||
expr length ZEICHENKETTE | expr length ZEICHENKETTE | ||
expr index ZEICHENKETTE I =gibt hier 3 zurück, Index in ZKETTE, wo eines der ZEICHEN auftritt, sonst 0 | expr index ZEICHENKETTE I =gibt hier 3 zurück, Index in ZKETTE, wo eines der ZEICHEN auftritt, sonst 0 | ||
Zeile 716: | Zeile 732: | ||
Kernel Module suchen: | Kernel Module suchen: | ||
+ | |||
find / | find / | ||
Suchen nach SUID/SGUID Dateien: | Suchen nach SUID/SGUID Dateien: | ||
+ | |||
find / -type f -perm +6000 -exec ls -l {} \; | find / -type f -perm +6000 -exec ls -l {} \; | ||
find / -perm /4000 | find / -perm /4000 | ||
Suchen nach toten Links: | Suchen nach toten Links: | ||
+ | |||
find -L . -type l | find -L . -type l | ||
Modul-Datei *.ko aktivieren/ | Modul-Datei *.ko aktivieren/ | ||
+ | |||
insmod / | insmod / | ||
- | Es gibt "insmod" | + | Es gibt '' |
- | vereinigt beide Befehle | + | vereinigt beide Befehle |
modprobe --show-depends nvidia =zeigt Abhängigkeiten vom nvidia Modul | modprobe --show-depends nvidia =zeigt Abhängigkeiten vom nvidia Modul | ||
modprobe -r modul =Hinzufügen, | modprobe -r modul =Hinzufügen, | ||
Zeile 736: | Zeile 757: | ||
depmod -a =überprüft alle vorhandenen Module und aktualisiert die Einträge | depmod -a =überprüft alle vorhandenen Module und aktualisiert die Einträge | ||
udevinfo -ap / | udevinfo -ap / | ||
- | Kombinination, zeigt direkt die Informationen für eine Gerätedatei an. | + | Kombination, zeigt direkt die Informationen für eine Gerätedatei an. |
udevinfo -a -p $(udevinfo -q path -n / | udevinfo -a -p $(udevinfo -q path -n / | ||
Zeile 743: | Zeile 764: | ||
tail -n 400 / | tail -n 400 / | ||
last =zeigt an wer sich zuletzt und wann und wie lange eingeloggt hat | last =zeigt an wer sich zuletzt und wann und wie lange eingeloggt hat | ||
- | stat / | + | stat / |
file / | file / | ||
file gibt Infos zum Dateityp an | file gibt Infos zum Dateityp an | ||
Zeile 749: | Zeile 770: | ||
/ | / | ||
crontab -u wwwrun -l =crontab vom Benutzer wwwrun anzeigen | crontab -u wwwrun -l =crontab vom Benutzer wwwrun anzeigen | ||
- | / | + | / |
- | ausgeführt werden sollen. | + | |
- | In / | + | |
- | gewünschten Zeiten. Z.B.: | + | In '' |
- | 50 5 * * * | + | |
- | 55 5 * * * | + | |
+ | 55 5 * * * | ||
grep -ri Linux / | grep -ri Linux / | ||
Zeile 767: | Zeile 789: | ||
egrep ' | egrep ' | ||
- | Auf grafischer Oberfläche Programme als root starten | ||
- | KDE mit " | ||
- | Gnome mit " | ||
- | gksu wireshark | ||
+ | Auf grafischer Oberfläche Programme als root starten; KDE mit " | ||
- | === Rechner ausschalten | + | gksu wireshark |
+ | |||
+ | wird auch oft standardmäßig mit '' | ||
+ | |||
+ | |||
+ | === Konfiguration | ||
+ | |||
+ | Ohne root Rechte ohne sudo | ||
Adding suid mode to ''/ | Adding suid mode to ''/ | ||
Zeile 842: | Zeile 868: | ||
find / -xdev -iname *kde* =durchsucht keine anderen Partitionen, | find / -xdev -iname *kde* =durchsucht keine anderen Partitionen, | ||
find . -type f -mtime -1 =findet alle Dateien(-type f) keine Ordner die nicht älter als ein Tag sind | find . -type f -mtime -1 =findet alle Dateien(-type f) keine Ordner die nicht älter als ein Tag sind | ||
+ | find . -type f -mtime +3 ls = Alle Dateien im aktuellen Verz. finden die älter als 3 Tage sind und Auflisten mit allen Informationen | ||
find /usr/ -print0 | grep -FzZ " | find /usr/ -print0 | grep -FzZ " | ||
find . -wholename " | find . -wholename " | ||
Zeile 859: | Zeile 886: | ||
find Desktop/ -type f \( -name " | find Desktop/ -type f \( -name " | ||
cp -v `find Desktop/ | cp -v `find Desktop/ | ||
+ | |||
+ | Nach Dateien nur im aktuellen Verzeichnis suchen (ohne Unterverzeichnisse) und hier nur Dateien auflisten welche keine Dateiendung haben( Also Dateien ohne Punkt im Namen). | ||
+ | |||
+ | find . -maxdepth 1 -type f ! -name " | ||
whereis programname =Zeigt Pfad zum Programm oder Verknüpfung | whereis programname =Zeigt Pfad zum Programm oder Verknüpfung | ||
Zeile 867: | Zeile 898: | ||
- | === System Informationen === | + | === Befehl als anderer Benutzer ausführen === |
+ | |||
+ | Hin und wieder möchte man einen Befehl als anderer Benutzer als sich selbst oder dem Root ausführen. In diesem Falle hilft die folgende Zeile weiter. | ||
+ | |||
+ | sudo -u BENUTZER BEFEHL | ||
+ | |||
+ | Hat man kein sudo zur Verfügung geht auch die folgende Zeile. | ||
+ | |||
+ | su BENUTZER -c BEFEHL | ||
+ | |||
+ | |||
+ | |||
+ | ==== System Informationen | ||
Informationen über das verwendete System Abrufen. ComputerModel, | Informationen über das verwendete System Abrufen. ComputerModel, | ||
Zeile 877: | Zeile 920: | ||
+ | === inxi === | ||
+ | |||
+ | inxi - Command line system information script for console and IRC | ||
+ | |||
+ | Mit inxi lassen sich mehr Informationen von den verschiedenesten kategorien abrufen. Es ist auf den | ||
+ | verbreitesten Linux Distis vorhanden und kompatible. Es ist damit also nicht nötig spezielle Suse oder | ||
+ | Debian spzifische Kommndos, für z.B. die Paketverwaltung, | ||
+ | |||
+ | Um z.B. Repository Infos abzurufen | ||
+ | |||
+ | inxi -r | ||
+ | |||
+ | Abfrage von Battery / Akku | ||
+ | |||
+ | inxi -B | ||
==== Befehle für Prozess Verwaltung ==== | ==== Befehle für Prozess Verwaltung ==== | ||
Zeile 940: | Zeile 998: | ||
a2enmod ssl | a2enmod ssl | ||
+ | |||
+ | |||
+ | |||
+ | ===== Flathub flatpak ===== | ||
+ | |||
+ | Distributions übergreifender Appstore. | ||
+ | Um Flatpak ohne Adminrechte zu nutzen, müssen Sie Flathub (oder eine andere Quelle) separat einrichten, diesmal als User-Installation: | ||
+ | |||
+ | flatpak --user install wesnoth | ||
+ | |||
+ | === Aufräumen === | ||
+ | |||
+ | Software mit Flatpak deinstallieren. Geben Sie dazu flatpak uninstall gefolgt von der Anwendungskennung oder einem Namensbestandteil ein. Mit letzterem zeigt Flatpak Ihnen eine Liste von Anwendungen und Runtimes, die mit dem Suchwort übereinstimmen. Per Ziffer wählen Sie aus, was deinstalliert werden soll. Die persönlichen App-Daten entfernt Flatpak nicht automatisch. Wollen Sie diese gleich mit loswerden, ergänzen Sie die Option '' | ||
+ | |||
+ | Was Flatpak ebenfalls standardmäßig nicht entfernt, sind überflüssige Runtimes. Es könnte ja sein, dass Sie später eine andere App installieren wollen, die die Runtime braucht und Speicherplatz ist in der Regel üppig vorhanden, während das Warten auf einen Download lästig ist. Um die ungenutzten Runtimes rauszuwerfen, | ||
Zeile 993: | Zeile 1066: | ||
sed -i ' | sed -i ' | ||
+ | | ||
+ | Update von 15.4 auf 15.5, testen! aus computerbase.de/ | ||
+ | |||
+ | sudo zypper --releasever=15.5 dup | ||
==== RPM Tool ==== | ==== RPM Tool ==== | ||
Zeile 1003: | Zeile 1080: | ||
rpm -ql groupwise | rpm -ql groupwise | ||
rpm -qf / | rpm -qf / | ||
+ | rpm -qR paketname.rpm | ||
rpm -Uvh paketname.rpm | rpm -Uvh paketname.rpm | ||
rpm -Uvh http:// | rpm -Uvh http:// | ||
Zeile 1113: | Zeile 1190: | ||
dpkg-deb --extract nagios-images_0.3_all.deb / | dpkg-deb --extract nagios-images_0.3_all.deb / | ||
dpkg -l | more =Liste aller installierten Pakete | dpkg -l | more =Liste aller installierten Pakete | ||
- | dpkg -L programm Name =Liste der Dateien eines installierten Pakets | + | dpkg -L paketname =Liste der Dateien eines installierten Pakets |
dpkg -S / | dpkg -S / | ||
dpkg -i paketname.deb =Installation von Paketen | dpkg -i paketname.deb =Installation von Paketen | ||
Zeile 1248: | Zeile 1325: | ||
- | ===== systemd | + | ===== systemD |
- | Systemd | + | SystemD |
+ | |||
+ | Zum Anzeigen der systemD Units und mit '' | ||
+ | |||
+ | systemctl list-units | egrep ' | ||
+ | |||
+ | Oder noch besser mit list-unit-files, | ||
+ | systemctl list-unit-files| egrep ' | ||
+ | |||
+ | weitere Beispiele: | ||
- | systemctl list-units | ||
systemctl list-unit-files | systemctl list-unit-files | ||
systemctl status sshd.service | systemctl status sshd.service | ||
Zeile 1289: | Zeile 1374: | ||
Zur Analyse des Bootverhaltens lassen sich auch Grafiken zeichnen | Zur Analyse des Bootverhaltens lassen sich auch Grafiken zeichnen | ||
systemd-analyze plot > plot.svg | systemd-analyze plot > plot.svg | ||
- | | ||
- | < | ||
- | | ||
- | | ||
- | Hinzufügen oder entfernen von Diensten zu Runleveln | ||
- | | ||
- | | ||
- | | ||
- | damit nach ein Reboot nicht automatisch wieder Nagios3 startet. | ||
- | | ||
- | </ | ||
- | |||
- | |||
- | ==== journalctl ==== | ||
- | |||
- | Diw folgende journalctl Option ist gut damit journalctl nicht alles jeweils per Seite anzeigt sondern alles komplett aufgelistet wird. So wie man es von einer Textdatei kennt. Das ist gut um besser nach bestimmten Schlüsselwörtern zu suchen, da so der gesamte Journal zu Verfügung steht. | ||
- | |||
- | journalctl --no-pager | ||
- | |||
- | |||
==== Eigene Service Unit schreiben ==== | ==== Eigene Service Unit schreiben ==== | ||
Zeile 1327: | Zeile 1392: | ||
</ | </ | ||
- | Nach Änderungen oder Neuerstellen von ServiceUnits muss einmal '' | + | Weiteres Beispiel: |
+ | < | ||
+ | [Unit] | ||
+ | Description=archiva-dienst | ||
+ | After=network.target | ||
+ | |||
+ | [Service] | ||
+ | Type=simple | ||
+ | ExecStart=/ | ||
+ | ExecStop=/ | ||
+ | User=archiva | ||
+ | # Group=archiva - Gruppe muss auch existieren! Group=users könnte funktionieren | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=multi-user.target | ||
+ | </ | ||
+ | |||
+ | :!: Nach Änderungen oder Neuerstellen von ServiceUnits muss einmal '' | ||
+ | |||
+ | |||
+ | ==== Instanziierte Dienste (xyz@.service) ==== | ||
+ | Ein instanziierter Dienst ist eine @.service-Datei, | ||
+ | Statt einer einzigen Konfiguration gibt es mehrere Instanzen, die unterschiedliche Konfigurationsdateien oder Parameter haben können. | ||
+ | Der Trick ist das @-Zeichen in der Service-Datei, | ||
+ | |||
+ | 🔹 Beispiel: Redis mit Instanzen | ||
+ | |||
+ | Redis nutzt ''/ | ||
+ | Wenn du '' | ||
+ | Dadurch weiß Redis, dass es die Konfigurationsdatei ''/ | ||
+ | |||
+ | Man kann hier mehrere Servcies mit verschiedenen Konfig-Dateien laufen lassen und hat aber nur eine SystemD Service-Datei. | ||
+ | |||
+ | |||
+ | ==== Systemd Timer ==== | ||
+ | |||
+ | Es sozusagen das neuere Cron oder wenn kein CronD installiert ist. Oder es wird auch oft einfach als alternative genutzt. | ||
+ | |||
+ | Wie funktioniert die Verknüpfung zwischen Timer und Service? | ||
+ | Die Verknüpfung erfolgt über den Namen. Wenn dein Timer z. B. mein-skript.timer heißt, sucht systemd automatisch nach einer Service-Datei mit demselben Namen, also mein-skript.service | ||
+ | |||
+ | Zum auflisten von Timern | ||
+ | |||
+ | systemctl list-timers | ||
+ | | ||
+ | |||
+ | Aufbau eines SystemD Timers. In der Timer Datei kann man die Uhrzeit angeben um welche Zeit der Service gestartet werden soll, z.B. '' | ||
- | Füge Startlinks (die mit “S99…” beginnen) in ''/ | ||
< | < | ||
- | | + | [Unit] |
+ | Description=Timer für Daten Empfangen | ||
+ | |||
+ | [Timer] | ||
+ | OnCalendar=hourly | ||
+ | Persistent=true | ||
+ | |||
+ | [Install] | ||
+ | WantedBy=timers.target | ||
+ | </ | ||
+ | |||
+ | Auch nach den neu definieren von Timern muss '' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== journalctl ==== | ||
+ | |||
+ | Die folgende '' | ||
+ | |||
+ | journalctl --no-pager | ||
+ | |||
+ | oder besser mit eingebauten grep von '' | ||
+ | |||
+ | journalctl --since=" | ||
+ | |||
+ | |||
+ | Um nur zwischen zwei bestimmten Zeit Abschnitten zu suchen / Von - Bis: | ||
+ | |||
+ | journalctl --since=" | ||
+ | |||
+ | Um sich alle Kernel Meldungen von heute anzuzeigen: | ||
+ | |||
+ | journalctl -k --since " | ||
+ | |||
+ | |||
+ | ==== ältere Vorgänger InitV ==== | ||
+ | |||
+ | < | ||
+ | | ||
+ | |||
+ | update-rc.d =install and remove System-V style init script links | ||
+ | Hinzufügen oder entfernen von Diensten zu Runleveln | ||
+ | | ||
+ | | ||
+ | damit nach ein Reboot nicht automatisch wieder Nagios3 startet. | ||
+ | | ||
| | ||
Zeile 1348: | Zeile 1506: | ||
</ | </ | ||
- | create the system startup links for libvirtd: z.B. nach der Installation einer Software kann man so chkconf nutzen. | ||
- | chkconfig --add libvirtd | ||
+ | create the system startup links for libvirtd: z.B. nach der Installation einer Software kann man so chkconf nutzen. | ||
+ | chkconfig --add libvirtd | ||
===== Hardware ===== | ===== Hardware ===== | ||
Zeile 1396: | Zeile 1554: | ||
swapoff -a | swapoff -a | ||
+ | |||
+ | Mit '' | ||
Möchte man die SWAP-Partition vergrößern, | Möchte man die SWAP-Partition vergrößern, | ||
Zeile 1588: | Zeile 1748: | ||
Welche Programme greifen auf die ALSA Geräte Datei ''/ | Welche Programme greifen auf die ALSA Geräte Datei ''/ | ||
- | | + | lsof /dev/snd/* |
| | ||
< | < | ||
Zeile 1600: | Zeile 1760: | ||
- | | + | fuser /dev/snd/* |
< | < | ||
Zeile 1612: | Zeile 1772: | ||
3285 ? SLl 256:08 rhythmbox | 3285 ? SLl 256:08 rhythmbox | ||
</ | </ | ||
- | |||
==== Drucker ==== | ==== Drucker ==== | ||
Zeile 1687: | Zeile 1846: | ||
Zeigt eine schöne Übersicht: mit -c für Farben -I display interface information und -e display endpoint info | Zeigt eine schöne Übersicht: mit -c für Farben -I display interface information und -e display endpoint info | ||
lsusb.py -Ice | lsusb.py -Ice | ||
+ | | ||
+ | | ||
+ | Ein weiterer Kommando ist noch '' | ||
===== Programmierung ===== | ===== Programmierung ===== | ||
Zeile 1728: | Zeile 1890: | ||
- | ==== Shell-Skripte | + | ===== Bash Shell-Skripte |
+ | === Grundlagen === | ||
Zur Anzeige aller Variablen dient der Befehl '' | Zur Anzeige aller Variablen dient der Befehl '' | ||
+ | |||
+ | === Suchen ersetzen === | ||
+ | |||
+ | Ersetzen in der Ausgabe(RAW_OUTPUT) von MULTIWERT durch REALWERT | ||
+ | nacheinander wird jeder der 3 Werte in RAW_OUTPUT durch neue Werte ersetzt. | ||
+ | |||
+ | < | ||
+ | RESULT=" | ||
+ | RESULT2=" | ||
+ | RESULT3=" | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Eingabe Prombt shebang === | ||
Kleiner Spaß am Rande für Microsoft DOS/Windows Fans die Linux nutzen. | Kleiner Spaß am Rande für Microsoft DOS/Windows Fans die Linux nutzen. | ||
- | ein PS1=" | + | ein '' |
- | diesen Spuk kann man wieder leicht rückgängig machen mit: | + | |
+ | < | ||
PS1=" | PS1=" | ||
PS1=" | PS1=" | ||
PS1=" | PS1=" | ||
+ | </ | ||
+ | |||
+ | |||
+ | === Datums Differenz | ||
+ | |||
+ | Das Datum am besten zuvor im iso-8601 Format umwandeln | ||
+ | |||
+ | date --iso-8601 | ||
+ | |||
+ | Dann das Datum berechnen in dem mit dem Schalter %s das angegebene Datum in die Sekunden seit 1970(Unix Startzeit) umgerechnet wird. | ||
+ | |||
+ | date_diff=$(( ($(date -d $DATUMSVARIABLE +%s) - $(date +%s)) / (60*60*24) )) | ||
Zeile 1808: | Zeile 1998: | ||
find / | find / | ||
+ | |||
+ | === SHELL Variablen bearbeiten === | ||
+ | |||
+ | Im folgenden Beispiel wird innerhalb der Variablen VAR das Wort Kent durch Saajan ersetzt. | ||
+ | |||
+ | < | ||
+ | VAR=" | ||
+ | RESULT=" | ||
+ | echo $RESULT | ||
+ | Eric and Saajan are good friends. | ||
+ | </ | ||
==== Installationen ==== | ==== Installationen ==== | ||
Die Betriebssystem Installation | Die Betriebssystem Installation | ||
Zeile 1820: | Zeile 2021: | ||
Bootloader wieder herstellen, z.B. nach der Installation von MS Windows. Rechner mit Linux Live CD | Bootloader wieder herstellen, z.B. nach der Installation von MS Windows. Rechner mit Linux Live CD | ||
- | starten. Die Linux-System Partition mounten | + | starten. Die Linux-System Partition mounten |
- | Verzeichnis in die System Partition mounten | + | Verzeichnis in die System Partition mounten |
(sda4 kann auch anders heißen, je nachdem wo das Linux System installiert ist.). | (sda4 kann auch anders heißen, je nachdem wo das Linux System installiert ist.). | ||
- | Dann die System Partition betreten | + | Dann die System Partition betreten |
< | < | ||
Zeile 1831: | Zeile 2032: | ||
</ | </ | ||
- | evtl. hilfreich von Live CD starten, dort in der Konsole grub eingeben. In der nun geöffneten | + | evtl. hilfreich von Live CD starten, dort in der Konsole |
- | Grub-Konsole: | + | Grub-Konsole: |
- | root (hd0,5) | + | |
- | setup (hd0) | + | |
+ | setup (hd0) | ||
alt | alt | ||
- | In der Datei / | + | In der Datei '' |
- | des Betriebsystems | + | des Betriebsystems |
für die Bildschirmauflöung einstellen, die wärend des bootens oder auf der | für die Bildschirmauflöung einstellen, die wärend des bootens oder auf der | ||
System Konsole angezeigt wird. | System Konsole angezeigt wird. | ||
neu | neu | ||
- | Anpassungen grub2 werde nicht direkt an / | + | Anpassungen grub2 werde nicht direkt an '' |
- | der Datei / | + | der Datei '' |
GRUB Bootoptionen | GRUB Bootoptionen | ||
Zeile 1936: | Zeile 2138: | ||
</ | </ | ||
+ | Anschließend nun den Branch (oftmals main oder master) festlegen/ | ||
- | Nun das Projekt auf dem Git-Server anlegen. Oftmals gibt es auf dem Git-Server ein Webinterface wo es einen Menü-Punkt //New Repository// | + | git branch -M main |
+ | |||
+ | Nun das Projekt auf dem Git-Server anlegen. Oftmals gibt es auf dem Git-Server ein Webinterface wo es einen Menü-Punkt //New Repository// oder //New Project// gibt. Hier sollte man am besten ein komplett leeres Projekt ohne Dateien anlegen. Denn sonst meckert git rum das schon Dateien vorhanden sind wenn man ein bestehendes Verzeichnis hoch laden möchte. | ||
Auf der Konsole muss dann noch folgendes ausgeführt werden um die Dateien in die Versions Verwaltung zu integrieren. | Auf der Konsole muss dann noch folgendes ausgeführt werden um die Dateien in die Versions Verwaltung zu integrieren. | ||
Zeile 1943: | Zeile 2148: | ||
git remote add origin https:// | git remote add origin https:// | ||
git push -u origin master | git push -u origin master | ||
+ | |||
+ | Alternativ legt man das Projekt mit Dateien auf dem Webinterface des Git-Servers an und clont sich das Projekt dann dorthin wo man es haben möchte. | ||
Zeile 1996: | Zeile 2203: | ||
git clone git@gitrepo.fritz.box: | git clone git@gitrepo.fritz.box: | ||
+ | |||
+ | === Git mit Proxy === | ||
+ | |||
+ | Befindet man sich in einem Firmen Netz, müssen oft Proxys überwunden werden, bevor die Kommandos | ||
+ | mit dem Internet agieren können. | ||
+ | |||
+ | git config --global http.proxy http:// | ||
+ | git config --global https.proxy http:// | ||
Zeile 2028: | Zeile 2243: | ||
/ | / | ||
+ | | ||
+ | |||
+ | Mit dem Standard Dateimanager '' | ||
+ | |||
+ | dbus-monitor --session | ||
+ | | ||
+ | Bei diesem Fehler hatte es geholfen mit dem Standard Nutzer den Benutzer Prozess neu-zustarten: | ||
+ | |||
+ | systemctl --user restart dbus.service | ||
+ | systemctl --user restart dbus.socket | ||
+ | | ||
==== Knotes ==== | ==== Knotes ==== | ||
Zeile 2150: | Zeile 2376: | ||
===== Dateisystem ===== | ===== Dateisystem ===== | ||
- | fsck =checkt Dateisystem nach Fehlern! | + | |
- | fsck.ext3 =checkt ext2/ext3 Dateisysteme nach Fehlern und behebt diese. | + | |
- | e2fsck =checkt ext2/ext3 Dateisysteme nach Fehlern und behebt diese. | + | fsck.ext3 =checkt ext2/ext3 Dateisysteme nach Fehlern und behebt diese. |
+ | e2fsck =checkt ext2/ext3 Dateisysteme nach Fehlern und behebt diese. | ||
+ | |||
+ | === Informationen über die Massenspeicher Medien anzeigen === | ||
blkid / | blkid / | ||
+ | |||
+ | Viele Anzeige Möglichkeiten mit '' | ||
+ | |||
+ | lsblk --output HCTL, | ||
+ | | ||
+ | Auch das Partitionslabel anzeigen welches ich immer bei der Erstellung einer neuen Partiton mit '' | ||
+ | |||
+ | lsblk --output HCTL, | ||
+ | |||
+ | Oder nur speziel Informationen bezüglich scsi komptibler Geräte anzeigen, ähnlich dem '' | ||
+ | |||
+ | lsblk --scsi | ||
+ | NAME HCTL TYPE VENDOR | ||
+ | sda 0: | ||
+ | sr0 3: | ||
+ | |||
Setze maximale Mount-Anzahl auf 60 | Setze maximale Mount-Anzahl auf 60 | ||
Zeile 2184: | Zeile 2429: | ||
==== parted ==== | ==== parted ==== | ||
- | Man kann es ganz kurz machen und auf der '' | + | Hier einige Beispiele, wenn eine Partition auf einer Festplatte angelegt werden soll und diese 100% der Kapazität nutzen soll. |
Das Programm '' | Das Programm '' | ||
Zeile 2195: | Zeile 2440: | ||
- | === Parted | + | === parted |
Auch direkt von der Bash lassen sich alle Kommandos aus der '' | Auch direkt von der Bash lassen sich alle Kommandos aus der '' | ||
Zeile 2215: | Zeile 2460: | ||
- | Weitere Beispiele direkt von der Bash/ | + | Weitere Beispiele direkt von der Bash/ |
+ | Option **-a** macht ein alignment der Partition | ||
- | parted -a optimal /dev/sde mklabel gpt mkpart | + | parted -a optimal /dev/sdb mklabel gpt mkpart |
- | + | ||
- | parted /dev/sdb1 mklabel gpt mkpart P1 ext4 1MiB 429GB | + | |
- | parted /dev/sdb1 mklabel gpt mkpart ZCM42 ext4 1 429GB | + | |
| | ||
- | Beim folgenden Befehl funktioniert es nicht, wenn ich 100% hinten anhänge, dann fragt er nochmal nach wegen Partitionsgröße: | + | Die Angabe vom Dateisystem ist überflüssig: |
+ | Die Angaben von der genauen Partition /dev/sdb1 bzw. /dev/sdb2 **noch austesten**: | ||
+ | :!: | ||
+ | parted /dev/sdb1 mklabel gpt mkpart MONITORING 1MiB 429GB | ||
+ | parted /dev/sdb2 mklabel gpt mkpart GRAFANA 1 429GB | ||
+ | |||
+ | :!: | ||
+ | Hier muss man auch beachten ob nicht schon bereits eine Partition Table existiert **gpt/ | ||
- | parted /dev/sdc mklabel gpt mkpart | + | parted |
- | + | ||
- | Eine neue Partition anlegen, es muss hier noch mit '' | + | |
parted -a optimal /dev/sdk mkpart primary 0% 100% | parted -a optimal /dev/sdk mkpart primary 0% 100% | ||
Zeile 2232: | Zeile 2480: | ||
- | Im folgenden das schrittweise Anlegen einer 300GB Partition mit '' | + | Im folgenden das schrittweise Anlegen einer 300GB Partition mit '' |
parted /dev/sdb | parted /dev/sdb | ||
< | < | ||
- | (parted) mklabel oder mktabel | + | (parted) mklabel oder mktable |
New disk label type? msdos | New disk label type? msdos | ||
Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue? | Warning: The existing disk label on /dev/sda will be destroyed and all data on this disk will be lost. Do you want to continue? | ||
Yes/No? Yes | Yes/No? Yes | ||
+ | (parted) mkpart primary | ||
oder: | oder: | ||
| | ||
New disk label type? gpt | New disk label type? gpt | ||
- | (parted) | + | (parted) |
File system type? [ext2]? xfs | File system type? [ext2]? xfs | ||
Start? | Start? | ||
Zeile 2274: | Zeile 2523: | ||
(parted) quit | (parted) quit | ||
</ | </ | ||
+ | |||
+ | |||
+ | === Partition umbenennen === | ||
+ | |||
+ | Um den Namen einer Partition mit '' | ||
+ | |||
+ | parted /dev/sdg name < | ||
+ | parted /dev/sdg name 1 opt_oracle | ||
+ | | ||
+ | Ersetze < | ||
+ | |||
+ | parted /dev/sdd print | ||
+ | | ||
+ | Dies wird eine Liste der Partitionen auf der Festplatte ''/ | ||
Zeile 2282: | Zeile 2545: | ||
Mit '' | Mit '' | ||
+ | |||
+ | :!: Hier nun aufpassen das das komplette Device angegeben wird **/ | ||
< | < | ||
Zeile 2355: | Zeile 2620: | ||
+ | === parted rescue === | ||
+ | |||
+ | Das partitionierungs Programm '' | ||
+ | |||
+ | |||
+ | ==== BTRFS Kommandos ==== | ||
+ | |||
+ | Allgemeine Info über die BTRFS Partitionen | ||
+ | |||
+ | btrfs filesystem show | ||
+ | btrfs subvol list / | ||
+ | btrfs fi usage / | ||
+ | |||
+ | Den belegten Speicherplatz einer BTRFS Partition, hier /var anzeigen | ||
+ | |||
+ | btrfs filesystem df /var | ||
+ | |||
+ | |||
+ | === BTRFS Aufräumen/ | ||
+ | |||
+ | btrfs filesystem defragment /var | ||
+ | | ||
+ | Die Metadaten und Datei-Daten wieder optimiert auf dem Dateisystem anordnen | ||
+ | | ||
+ | btrfs balance start /tmp | ||
+ | | ||
+ | Man kann sich den aktuellen Status des balance Vorgangs auf einem 2. Terminal anzeigen lassen | ||
+ | |||
+ | btrfs balance status / eingeben. | ||
+ | | ||
+ | |||
+ | * https:// | ||
+ | * https:// | ||
+ | | ||
+ | | ||
+ | === BTRFS resize === | ||
+ | |||
+ | Nach dem eine virtuelle Festplatte vergrößert wurde oder auf einer Festplatte eine Partition entfernt wurde und der freie Speicherplatz dem BTRFS zugerechnet werden soll, muss dann auch das BTRFS nachträglich in seiner Größe angepasst werden. Hierfür verwenden wir das Programm '' | ||
+ | |||
+ | * Server oder VM wird mit einem Livesystem gestartet | ||
+ | * Das Programm '' | ||
+ | * Innerhalb von '' | ||
+ | * Mit **resize**, die zu erweiternde Partition auswählen, in meinem Fall die Nr.2 welches die Root Partition darstellt. | ||
+ | * Die Partiton um x GB erweitern oder 100% eingeben | ||
+ | * VM normal starten | ||
+ | |||
+ | Ist das richtige System wieder gestartet, wird noch der folgende Kommando aufgerufen | ||
+ | |||
+ | btrfs filesystem resize max / | ||
+ | | ||
| | ||
==== piCore ==== | ==== piCore ==== | ||
Zeile 2572: | Zeile 2887: | ||
rsync -auv --exclude=/ | rsync -auv --exclude=/ | ||
/ | / | ||
+ | |||
+ | Hier wird nur das gesichert was ausdrücklich im rsync_include.file enthalten ist: | ||
+ | rsync -auv --delete --include-from=/ | ||
+ | |||
Für besondere Fälle; Falls das Passwort mit übergeben werden muss. Z.B. wenn etwas Nachts automatisch als root Nutzer kopiert werden muss und man hier keinen SSH-key für konfigurieren mag. Den Kommando schon öfter genutzt in Verbindung mit at-jobs, wenn Nachts einmalig etwas kopiert/ | Für besondere Fälle; Falls das Passwort mit übergeben werden muss. Z.B. wenn etwas Nachts automatisch als root Nutzer kopiert werden muss und man hier keinen SSH-key für konfigurieren mag. Den Kommando schon öfter genutzt in Verbindung mit at-jobs, wenn Nachts einmalig etwas kopiert/ | ||
Zeile 2649: | Zeile 2968: | ||
</ | </ | ||
- | Eine IPv6 Adresse(site local address) an eth0 vergeben: | + | Eine IPv6 Adresse(site local address)=ist veraltete!!! |
ip -6 addr add fec0::1/64 dev eth0 | ip -6 addr add fec0::1/64 dev eth0 | ||
Zeile 2845: | Zeile 3164: | ||
- | ==== Netzwerk Informationen ==== | + | ===== Netzwerk Informationen |
Welche Rechner sind in meinem Netzwerk IP und MAC Adresse? | Welche Rechner sind in meinem Netzwerk IP und MAC Adresse? | ||
Zeile 2860: | Zeile 3179: | ||
for ((i=1; | for ((i=1; | ||
+ | |||
+ | ==== nmap ==== | ||
oder: | oder: | ||
Zeile 2983: | Zeile 3304: | ||
- | === Oder einfacher mit netcat (nc) === | + | ==== Oder einfacher mit netcat (nc) ==== |
netcat -v 172.18.10.80 1812 | netcat -v 172.18.10.80 1812 | ||
- | radius1.beta.rodgau.de | + | radius1.example.net [172.18.10.80] 1812 (radius) : Connection refused |
Bei zwei Netzwerkkarten wird die default Route genutzt. Möchte man die Verbindung der anderen Karte prüfen, muss mit dem Schalter '' | Bei zwei Netzwerkkarten wird die default Route genutzt. Möchte man die Verbindung der anderen Karte prüfen, muss mit dem Schalter '' | ||
Zeile 3047: | Zeile 3368: | ||
- | == einfach Informationen über aktuelle tcp Verbindungen: | + | ==== ss und netstat ==== |
+ | |||
+ | einfach Informationen über aktuelle tcp Verbindungen: | ||
socklist - Listet die geöffneten sockets | socklist - Listet die geöffneten sockets | ||
- | ss - another utility to investigate sockets | + | ss - socket statistics |
- | '' | + | '' |
Oft wird '' | Oft wird '' | ||
Zeile 3059: | Zeile 3382: | ||
ss -tar | ss -tar | ||
+ | Möchte man alle Verbindungen zu einem bestimmten Rechner mit '' | ||
+ | **dst** oder **src** Option: | ||
+ | |||
+ | watch ss dst 11.14.98.43 | ||
+ | | ||
+ | ss src 192.168.100.2 | ||
+ | |||
+ | Die gleichen Optionen gehen auch für Port Nummern oder Port Namen z.B. ssh: | ||
+ | |||
+ | ss src :56750 | ||
+ | | ||
+ | Hier werden alle lauschenden https Ports aufgelistet: | ||
+ | |||
+ | ss -l src :https | ||
+ | |||
+ | Und sogar eine Kombination ist möglich: | ||
+ | |||
+ | ss -a dst :5228 or src :mysql | ||
+ | |||
+ | |||
+ | Weiter geht es mit '' | ||
+ | |||
+ | Anzeigen aller tcp-Verbindungen ohne lauschende TCP-Ports | ||
netstat -t | netstat -t | ||
Zeile 3087: | Zeile 3433: | ||
- | === Verbindungen auflisten mit lsof === | + | ==== Verbindungen auflisten mit lsof ==== |
Derzeit sehr übersichtlich :-) | Derzeit sehr übersichtlich :-) | ||
lsof -i -n | lsof -i -n | ||
- | |||
- | |||
==== tcpdump ==== | ==== tcpdump ==== | ||
Zeile 3103: | Zeile 3447: | ||
tcpdump -n port 53 | tcpdump -n port 53 | ||
+ | Auf beiden Netzwerkkarten mitschneiden '' | ||
+ | tcpdump -i any -n -vv port 53 -w dnsproxy6 | ||
Den DHCP Netzwerkverkehr auf **beiden** DHCP-Ports überwachen | Den DHCP Netzwerkverkehr auf **beiden** DHCP-Ports überwachen | ||
Zeile 3147: | Zeile 3493: | ||
+ | Filter für eine bestimmte DNS Anfrage | ||
+ | |||
+ | dns.qry.name == " | ||
==== Netzwerkinformationen bearbeiten ==== | ==== Netzwerkinformationen bearbeiten ==== | ||
Zeile 3217: | Zeile 3566: | ||
==== Netzwerkkarte einrichten: ==== | ==== Netzwerkkarte einrichten: ==== | ||
- | Ein Netzwerk kann mit den Kommando '' | + | Ein Netzwerk kann mit den Kommando '' |
+ | |||
+ | aus Arch Linux Wiki: | ||
+ | ip link set up dev eth0 | ||
+ | ip link set eth0 up <-- kürzer :) | ||
+ | ip addr add 139.96.30.100/ | ||
+ | aus eigener Erfahrung: | ||
ip addr add 172.19.0.52/ | ip addr add 172.19.0.52/ | ||
| | ||
Zeile 3465: | Zeile 3820: | ||
Neueres Tool ist '' | Neueres Tool ist '' | ||
+ | Neben bluetoothctl sind aktuell in Debian Bookworm auch noch diese Tools vorhanden: | ||
+ | * bluemoon | ||
+ | * hcitool | ||
+ | Unter Suse 15.5 gibt es noch die folgenden Tools | ||
+ | |||
+ | < | ||
+ | btmon | ||
+ | Bluetooth monitor ver 5.65 | ||
+ | = Note: Linux version 5.14.21-150500.55.73-default (x86_64) | ||
+ | = Note: Bluetooth subsystem version 2.22 | ||
+ | </ | ||
===== GPG ===== | ===== GPG ===== | ||
Zeile 3536: | Zeile 3902: | ||
Wenn der passwortlose Login scheitert, sollte man zuerst überprüfen, | Wenn der passwortlose Login scheitert, sollte man zuerst überprüfen, | ||
+ | |||
+ | |||
+ | === Probleme bei Verlust des public Keys === | ||
+ | |||
+ | Falls der SSH public Key verloren geht, kann man sich diesen mit dem Kommando '' | ||
+ | |||
+ | ssh-keygen -y -f ~/ | ||
+ | | ||
+ | Es kann dann manchmal noch erforderlich sein, dass man den neu generierten id_rsa.pub Key noch erweitern muss. Den Public-Key mit einem Editor öffnen und bis an Ende der Zeile springen, nun ganz am Ende ein Leerzeichen und den nutzer@rechnername eintragen. | ||
Zeile 3558: | Zeile 3933: | ||
Als normaler Benutzer einbinden, evtl. Mitgliedschaft in der Gruppe fuse: | Als normaler Benutzer einbinden, evtl. Mitgliedschaft in der Gruppe fuse: | ||
- | sshfs loki@192.168.1.3:/ | + | sshfs loki@192.168.1.3:/ |
Um das entfernte System wieder auszuhängen: | Um das entfernte System wieder auszuhängen: | ||
- | fusermount -u /home/neutron/Musik | + | fusermount -u /home/tux/Musik |
mit Konqueror/ | mit Konqueror/ | ||
Zeile 3583: | Zeile 3958: | ||
1. Beispiel für das kopieren einer Datei mit scp von meinen Rechner auf einen entfernten Rechner: | 1. Beispiel für das kopieren einer Datei mit scp von meinen Rechner auf einen entfernten Rechner: | ||
< | < | ||
- | neutron@thor:/$ scp eject fli4l@192.168.1.1:/ | + | :/$ scp eject fli4l@192.168.1.1:/ |
fli4l@192.168.1.1' | fli4l@192.168.1.1' | ||
eject | eject | ||
</ | </ | ||
- | 2. Beispiel für das kopieren einer Datei mit scp, von einen entferneten | + | 2. Beispiel für das kopieren einer Datei mit scp, von einem entfernten |
< | < | ||
- | Neutron@thor:/$ scp fli4l@192.168.1.1:/ | + | :/$ scp fli4l@192.168.1.1:/ |
fli4l@192.168.1.1' | fli4l@192.168.1.1' | ||
inittab | inittab | ||
</ | </ | ||
- | 3. Beispiel für das kopieren eines kompletten Verzeichnis mit scp, von einen entferneten | + | 3. Beispiel für das kopieren eines kompletten Verzeichnis mit scp, von einem entfernten |
< | < | ||
- | neutron@thor:~$ scp -r fli4l@192.168.1.1:/ | + | :~$ scp -r fli4l@192.168.1.1:/ |
fli4l@192.168.1.1' | fli4l@192.168.1.1' | ||
ldlinux.sys | ldlinux.sys | ||
Zeile 4200: | Zeile 4575: | ||
openssl x509 -in / | openssl x509 -in / | ||
+ | |||
+ | Den privaten Schlüssel anzeigen lassen mit: | ||
+ | |||
+ | openssl rsa -in yourPrivateKey.key -text -noout | ||
===== Leistung und Geschwindigkeit ===== | ===== Leistung und Geschwindigkeit ===== | ||
Zeile 4280: | Zeile 4659: | ||
+ | ===== Logging ===== | ||
+ | Als root kann man für eine oder auch mehrere neue zu rotierende Log-Datei eine neue Konfigurationsdatei unter ''/ | ||
+ | |||
+ | < | ||
+ | / | ||
+ | size=100M | ||
+ | rotate 52 | ||
+ | compress | ||
+ | delaycompress | ||
+ | missingok | ||
+ | notifempty | ||
+ | create 640 root root | ||
+ | maxage 365 | ||
+ | } | ||
+ | | ||
+ | / | ||
+ | size=100M | ||
+ | rotate 52 | ||
+ | compress | ||
+ | delaycompress | ||
+ | missingok | ||
+ | notifempty | ||
+ | create 640 root root | ||
+ | maxage 365 | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | Hier die Erklärung der einzelnen Parameter: | ||
+ | |||
+ | * **size=100M: | ||
+ | * **rotate 52:** Behält bis zu 52 rotierte Dateien (für wöchentliche Rotation über ein Jahr) | ||
+ | * **compress: | ||
+ | * **delaycompress: | ||
+ | * **missingok: | ||
+ | * **notifempty: | ||
+ | * **create 640 root root:** Neue Log-Datei mit diesen Rechten erstellen | ||
+ | * **maxage 365:** Löscht automatisch Logs, die älter als 365 Tage sind | ||
+ | |||
+ | |||
+ | Sie können die Konfiguration testen mit: | ||
+ | |||
+ | logrotate -d / | ||
+ | | ||
+ | Um die Konfiguration sofort anzuwenden: | ||
+ | |||
+ | logrotate -f / | ||
+ | |||
+ | |||
+ | === Konfig für Nutzer ohne root-Rechte === | ||
+ | |||
+ | Falls Nutzer, ohne root-Berechtigungen, | ||
+ | |||
+ | Der Nutzer kann sich mit '' | ||
+ | |||
+ | 50 5 * * * | ||
+ | 55 5 * * * | ||
+ | | ||
===== Archivierung und Komprimierung ===== | ===== Archivierung und Komprimierung ===== | ||
Zeile 4349: | Zeile 4785: | ||
tar xfvz archiv.tar.gz " | tar xfvz archiv.tar.gz " | ||
- | Komprimierte tar.gz und tar.bz2 Dateien kann man sich mit zless, zgrep bzw. bzless, bzgrep ansehen. | + | Komprimierte |
systemadmin.1655304703.txt.gz · Zuletzt geändert: 2022/06/15 16:51 von pulsar