Benutzer-Werkzeuge

Webseiten-Werkzeuge


systemadmin

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.

Link zu der Vergleichsansicht

Beide Seiten, vorherige ÜberarbeitungVorherige Überarbeitung
Nächste Überarbeitung
Vorherige Überarbeitung
systemadmin [2022/01/06 10:16] – [Installationen] techgurusystemadmin [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 /media/BackupA/Backup/System/ronni /home/ronni   ln -s /media/BackupA/Backup/System/ronni /home/ronni
Zeile 54: Zeile 54:
 == Neuen Hauptbenutzer anlegen: ronni == == Neuen Hauptbenutzer anlegen: ronni ==
  
-  useradd -c Multimedia -d /media/BackupA/Backup/System/ronni -s /bin/bash -u 2511 ronni+  useradd -c Multimedia -d /home/ronni -m -s /bin/bash -u 2511 ronni
      
   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.
  
 <code> <code>
Zeile 102: Zeile 102:
 ln -s /home/ronni/Desktop/Ablage/Programme/wolpcwecker /usr/local/bin/ ln -s /home/ronni/Desktop/Ablage/Programme/wolpcwecker /usr/local/bin/
 </code> </code>
 +
 +
 +== Switch User ==
 +
 +Falls ein Nutzer keine Login-Shell hat(/etc/passwd /usr/sbin/nologin), kann man sich trotzdem einloggen
 +mit dem su-Kommando wird noch der Parameter ''--shell=/bin/bash'' übergeben.
 +
 +  su - mysql --shell=/bin/bash
  
  
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 "/usr/bin/zypper lr"   ansible all -u ansible -b -a "/usr/bin/zypper lr"
Zeile 302: Zeile 311:
 Einen Patch auf allen Entwicklungssystemen ausrollen: Einen Patch auf allen Entwicklungssystemen ausrollen:
  
-  ansible all -i inventoryfiles/entwicklung -m shell -b -a 'zypper in -y -t patch SUSE-SLE-SERVER-12-SP4-2020-555=1+  ansible all -i inventoryfiles/entwicklung -m shell -b -a 'zypper in -y -t patch SUSE-SLE-SERVER-12-SP4-2020-555=1'
  
 ==== Ansible Variablen ==== ==== Ansible Variablen ====
Zeile 524: Zeile 533:
 </code> </code>
  
-oder Alternativ als Nutzer der die Log-Datei schreiben soll mit dem Befehl ''crontab -e'' die Zeile oben eintragen.+oder Alternativ als Nutzer der die Log-Datei schreiben soll mit dem Befehl ''crontab -e'' die Zeile oben eintragen aber den Nutzernamen dann weg lassen. 
 + 
 +Eine etwas komplexere Crontab welche alle 15 Minuten in der Zeit von 6 Uhr - 18 Uhr ausgeführt wird: 
 +<code> 
 +# Synchronisiert zwischen Master und Slave DHCP 
 +0,15,30,45 6,7,8,9,10,11,12,13,14,15,16,17,18 * * 1-5 ansible /bin/bash /usr/local/sbin/dhcpdns_sync.sh > /var/adm/log/dhcpdns_sync.lg 2>&
 +</code>
  
 Im unteren Abschnitt ein weiteres Beispiel für Cron Einträge in die Datei ''/etc/cron.d/suse-repos''. Hier bedeutet die erste Zeile, jeden Dienstag (2=Dienstag) um 22:21 Uhr soll er das ''wget'' Kommando ausführen. Der zweite Eintrag, jeden Montag (1=Montag) um 22:26 Uhr soll er das ''wget'' Kommando ausführen. Usw. 6 steht für Samstag. Der vorletzte Eintrag sagt das 9:49 Uhr alle 3 Tage (*/3) der wget Befehl aufgerufen werden soll. Im letzten Eintrag sehen wir im Feld Day of the week eine 0, diese steht für Sonntag. Alle Einträge werden als Benutzer //repo// ausgeführt. Im unteren Abschnitt ein weiteres Beispiel für Cron Einträge in die Datei ''/etc/cron.d/suse-repos''. Hier bedeutet die erste Zeile, jeden Dienstag (2=Dienstag) um 22:21 Uhr soll er das ''wget'' Kommando ausführen. Der zweite Eintrag, jeden Montag (1=Montag) um 22:26 Uhr soll er das ''wget'' Kommando ausführen. Usw. 6 steht für Samstag. Der vorletzte Eintrag sagt das 9:49 Uhr alle 3 Tage (*/3) der wget Befehl aufgerufen werden soll. Im letzten Eintrag sehen wir im Feld Day of the week eine 0, diese steht für Sonntag. Alle Einträge werden als Benutzer //repo// ausgeführt.
Zeile 553: Zeile 568:
   @reboot root /home/ts2/teamspeak2-server_startscript start >> /dev/null   @reboot root /home/ts2/teamspeak2-server_startscript start >> /dev/null
      
 +
 +
 +=== Benutzer Crontab ===
 +
 +Jeder Nutzer hat seine eigene crontab wo er eigene Programme eintragen kann. Diese können dann zu gewünschten Zeiten ausgeführt werden ohne das man root fragen muss.
 +
 +Anzeigen lassen kann man sich deren Inhalt mit ''crontab -l''.
 +Editieren kann man den Inhalt mit ''crontab -e''.
 +
 +Bei besonders wiederborstigen Startskripten muss auch mal eine ''.profile'' oder ''.bashrc'' eingebunden werden, wenn das zu startende Programm bestimmte Umgebungsvariablen erwartet. Cron weiß nämlich nichts von den Werten die in diesen Userprofil-Dateien bzw. führt diese nicht beim Starten aus.
 +
 +In der Benutzer Crontab braucht man keinen Nutzername angeben, da ja klar ist als welcher Nutzer es läuft.
 +
 +<code>
 +# Dienste Start / Stop per Cron
 +40 13 * * * . $HOME/.profile; /usr/sap/T01/SYS/exe/nuc/linuxx86_64/stopsap >/var/adm/log/sap/saporaclestop.lg 2>&1
 +45 13 * * * . $HOME/.profile; /usr/sap/T01/SYS/exe/nuc/linuxx86_64/startsap >/var/adm/log/sap/saporaclestart.lg 2>&1
 +</code>
  
 ==== at-job ==== ==== at-job ====
Zeile 684: Zeile 717:
  
   su username =anderen User anmelden   su username =anderen User anmelden
 +  
 +  unlink /oradata2 =einen Link löschen, hier den Link/Verknüpfung /oradata2 entfernen
 +  
   watch ifconfig ls ps -A =überwacht die angegebenen Kommandos, aktualisiert alle 2s.   watch ifconfig ls ps -A =überwacht die angegebenen Kommandos, aktualisiert alle 2s.
   dmesg =zeigt System Startprotokoll   dmesg =zeigt System Startprotokoll
Zeile 689: Zeile 725:
   vmstat -2                             =zeigt alle 2 Sekunden eine neue Zeile mit aktualisierten Infos   vmstat -2                             =zeigt alle 2 Sekunden eine neue Zeile mit aktualisierten Infos
  
-  expr 2 + 3 = ERGEBNIS =rechnen auf der Shell:+  echo $((7*4)) =Rechnen direkt mit der Bash ohne Hilfsprogramm. 
 +  expr 2 + 3 =rechnen auf der Shell:
   expr length ZEICHENKETTE        =Länge der ZEICHENKETTE z.B. 200=3 aaaa=4 1=1   expr length ZEICHENKETTE        =Länge der ZEICHENKETTE z.B. 200=3 aaaa=4 1=1
   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 695: Zeile 732:
  
 Kernel Module suchen: Kernel Module suchen:
 +
   find /lib/modules/$(uname -r) -iname "*kvm*" -print   find /lib/modules/$(uname -r) -iname "*kvm*" -print
  
 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/laden: Modul-Datei *.ko aktivieren/laden:
 +
   insmod /lib/modules/$(uname -r)/kernel/net/ipv6/ipv6.ko   insmod /lib/modules/$(uname -r)/kernel/net/ipv6/ipv6.ko
  
-Es gibt "insmodum Module hinzuzufügen und "rmmodum Module zu entfernen Der "modprobeBefehl +Es gibt ''insmod'' um Module hinzuzufügen und ''rmmod'' um Module zu entfernen Der ''modprobe'' Befehl 
-vereinigt beide Befehle und ist moderner.+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, und entfernen mit -r Modulname   modprobe -r modul =Hinzufügen, und entfernen mit -r Modulname
Zeile 715: 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 /sys/PFAD-NAME =gibt alles SYSFS_attributes für den gewählten Hardware-Pfad aus   udevinfo -ap /sys/PFAD-NAME =gibt alles SYSFS_attributes für den gewählten Hardware-Pfad aus
- 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 /dev/Gerätedatei)   udevinfo -a -p $(udevinfo -q path -n /dev/Gerätedatei)
  
Zeile 722: Zeile 764:
   tail -n 400 /var/log/auth.log =System Sicherheit bei Servern, Authentifizierungs log   tail -n 400 /var/log/auth.log =System Sicherheit bei Servern, Authentifizierungs log
   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 /etc/file.txt =Informationen über Datei: Inode, letzte Änderung/Zugriff von welchen Benutzer+  stat /etc/file.txt =Info über Datei: Inode, letzte Änderung/Zugriff/Modifiziert/Benutzer
   file /Desktop/e-Funktionen.svg =/Desktop/e-Funktionen.svg: SVG Scalable Vector Graphics image   file /Desktop/e-Funktionen.svg =/Desktop/e-Funktionen.svg: SVG Scalable Vector Graphics image
  file gibt Infos zum Dateityp an  file gibt Infos zum Dateityp an
Zeile 728: Zeile 770:
   /etc/cron.d/ =Systemweite Crontab, Benutzername mit angeben bei Befehlen   /etc/cron.d/ =Systemweite Crontab, Benutzername mit angeben bei Befehlen
   crontab -u wwwrun -l =crontab vom Benutzer wwwrun anzeigen   crontab -u wwwrun -l =crontab vom Benutzer wwwrun anzeigen
-  /usr/local/etc/rotatelogs/ =Verzeichnis für logrotate Konfiguration, die zu individuellen Zeiten +  /usr/local/etc/rotatelogs/ =Verzeichnis für logrotate Konfiguration, die zu individuellen Zeiten ausgeführt werden sollen. 
- ausgeführt werden sollen. +   
- In /etc/crontab kann das logrotate -f /usr/local/etc/rotatelogs/logkonfig ausgeführt werden mit den +   
- gewünschten Zeiten. Z.B.: +In ''/etc/crontab'' kann das ''logrotate -f /usr/local/etc/rotatelogs/logkonfig'' ausgeführt werden mit den gewünschten Zeiten. Z.B.: 
- 50 5 * * *     root  /usr/sbin/logrotate -f /usr/local/etc/rotatelogs/elan-process >/dev/null 2>&+ 
- 55 5 * * *     root  /usr/sbin/logrotate -f /usr/local/etc/rotatelogs/apache2-vhosts >/dev/null 2>&1+  50 5 * * *     root  /usr/sbin/logrotate -f /usr/local/etc/rotatelogs/elan-process >/dev/null 2>&
 +  55 5 * * *     root  /usr/sbin/logrotate -f /usr/local/etc/rotatelogs/apache2-vhosts >/dev/null 2>&1
  
   grep -ri Linux /boot/grub/* =Durchsucht das Verz. /boot/grub/* rekursiv nach dem Wort "Linux"   grep -ri Linux /boot/grub/* =Durchsucht das Verz. /boot/grub/* rekursiv nach dem Wort "Linux"
Zeile 746: Zeile 789:
   egrep '192\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}' *   egrep '192\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}\.[[:digit:]]{1,3}' *
  
-Auf grafischer Oberfläche Programme als root starten 
-KDE mit "kdesu" 
-Gnome mit "gksu" z.B.: 
-  gksu wireshark    wird auch oft standardmäßig mit gksu -u root /usr/bin/wireshark aufgerufen. 
  
 +Auf grafischer Oberfläche Programme als root starten; KDE mit "kdesu" und Gnome mit "gksu" z.B.:
 +
 +  gksu wireshark
 +  
 +wird auch oft standardmäßig mit ''gksu -u root /usr/bin/wireshark'' aufgerufen.
 +
 +
 +=== Konfiguration Rechner ausschalten ===
  
-=== Rechner ausschalten ohne root Rechte ohne sudo ===+Ohne root Rechte ohne sudo
  
 Adding suid mode to ''/sbin/shutdown'' oder in meinen test ''/sbin/halt'' Adding suid mode to ''/sbin/shutdown'' oder in meinen test ''/sbin/halt''
Zeile 821: Zeile 868:
   find / -xdev -iname *kde* =durchsucht keine anderen Partitionen, xdev muss vorne stehen   find / -xdev -iname *kde* =durchsucht keine anderen Partitionen, xdev muss vorne stehen
   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 "tabular/reports" =findet z.B. den Verz.-Baum /usr/tabular/reports   find /usr/ -print0 | grep -FzZ "tabular/reports" =findet z.B. den Verz.-Baum /usr/tabular/reports
   find . -wholename "*benutser/groupxyz*"          =findet z.B. den Verz.-Baum benutser/groupxyz   find . -wholename "*benutser/groupxyz*"          =findet z.B. den Verz.-Baum benutser/groupxyz
Zeile 838: Zeile 886:
   find Desktop/ -type f \( -name "*.pl" -o -name "*.py" \) -exec basename {} \;   find Desktop/ -type f \( -name "*.pl" -o -name "*.py" \) -exec basename {} \;
   cp -v `find Desktop/Ablage/ -type f \( -name "*.pl" -o -name "*.py" -o -name "*.sh" \)` /home/tux/Downloads/   cp -v `find Desktop/Ablage/ -type f \( -name "*.pl" -o -name "*.py" -o -name "*.sh" \)` /home/tux/Downloads/
 +
 +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 846: 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, SerienNr, OS-Version, Kernel... Informationen über das verwendete System Abrufen. ComputerModel, SerienNr, OS-Version, Kernel...
Zeile 856: 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, zu kenne um Infos abzufragen.
 +
 +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 919: 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 remote-add'' …. Bis auf die Option ''--user'' zwischen flatpak und dem Subkommando (remote-add, install, list) sind die Befehle identisch.
 +
 +  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 ''--delete-data''.
 +
 +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, geben Sie ''flatpak uninstall --unused'' ein.
  
  
Zeile 972: Zeile 1066:
  
   sed -i 's/15\.1/leap\/15\.2/g' /etc/zypp/repos.d/*   sed -i 's/15\.1/leap\/15\.2/g' /etc/zypp/repos.d/*
 +  
 +Update von 15.4 auf 15.5, testen! aus computerbase.de/forum
 +
 +  sudo zypper --releasever=15.5 dup
  
 ==== RPM Tool ==== ==== RPM Tool ====
Zeile 982: Zeile 1080:
 rpm -ql groupwise                                        =Inhalt eines installierten Pakets anzeigen rpm -ql groupwise                                        =Inhalt eines installierten Pakets anzeigen
 rpm -qf /usr/share/groupwise.txt =Zu welchen Paket gehört die Datei rpm -qf /usr/share/groupwise.txt =Zu welchen Paket gehört die Datei
 +rpm -qR paketname.rpm                                    =Alle Paket-Abhängigkeiten anzeigen
 rpm -Uvh paketname.rpm          =Installation von Paketen rpm -Uvh paketname.rpm          =Installation von Paketen
 rpm -Uvh http://download.linphone.com/linphone-suse.rpm  =Download und Installations übers Web rpm -Uvh http://download.linphone.com/linphone-suse.rpm  =Download und Installations übers Web
Zeile 1092: Zeile 1190:
   dpkg-deb --extract nagios-images_0.3_all.deb /root/nagios/    =Paket entpacken ins angegebene Ziel-Verzeichnis   dpkg-deb --extract nagios-images_0.3_all.deb /root/nagios/    =Paket entpacken ins angegebene Ziel-Verzeichnis
   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 /usr/share/groupwise.txt =Zu welchen Paket gehört die Datei   dpkg -S /usr/share/groupwise.txt =Zu welchen Paket gehört die Datei
   dpkg -i paketname.deb =Installation von Paketen   dpkg -i paketname.deb =Installation von Paketen
Zeile 1227: Zeile 1325:
  
  
-===== systemd =====+===== systemD =====
  
-Systemd übernimmt eine Vielzahl an Funktionen. Es steuert u.a. das Verhalten der Dienste beim Start des Rechners. Mit systemd lassen sich Dienste beenden, neu starten und es lässt sich der aktuelle Dienst Status abfragen.+SystemD übernimmt eine Vielzahl an Funktionen. Es steuert u.a. das Verhalten der Dienste beim Start des Rechners. Mit systemd lassen sich Dienste beenden, neu starten und es lässt sich der aktuelle Dienst Status abfragen. 
 + 
 +Zum Anzeigen der systemD Units und mit ''egrep'' Anzeigen/Suchen nach 3 bestimmten systemD Units. 
 + 
 +  systemctl list-units | egrep 'logstash|kiban|elasticsearch' 
 + 
 +Oder noch besser mit list-unit-files, denn sonst wird nichts alles aufgelistet wenn die Dienst Unit nicht geladen ist:  
 +  systemctl list-unit-files| egrep 'ssh|nfs-utils|autofs' 
 + 
 +weitere Beispiele:
  
-  systemctl list-units 
   systemctl list-unit-files   systemctl list-unit-files
   systemctl status sshd.service   systemctl status sshd.service
Zeile 1268: 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
-   
-<code> 
- rcconf =runlevel Konfiguration (Prog. Dienst aus-abwählen) 
- update-rc.d =install and remove System-V style init script links 
- Hinzufügen oder entfernen von Diensten zu Runleveln 
- update-rc.d nagios3 defaults =bringt Dienste wieder in den default runlevel 
- update-rc.d nagios defaults 30 18 =start an 30. und 18. Stelle? 
- update-rc.d -f nagios3 remove =die Verweise in den Runlevel-Ordnern noch zusätzlich entfernen, 
- damit nach ein Reboot nicht automatisch wieder Nagios3 startet. 
- invoke-rc.d nagios start =startet nagios Dienst 
-</code> 
- 
- 
-==== 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 1306: Zeile 1392:
 </code> </code>
  
-Nach Änderungen oder Neuerstellen von ServiceUnits muss einmal ''systemctl daemon-reload'' ausgeführt werden.+Weiteres Beispiel:
  
 +<code>
 +[Unit]
 +Description=archiva-dienst
 +After=network.target
 +
 +[Service]
 +Type=simple
 +ExecStart=/srv/archiva/bin/archiva.sh start
 +ExecStop=/srv/archiva/bin/archiva.sh stop
 +User=archiva
 +# Group=archiva - Gruppe muss auch existieren! Group=users könnte funktionieren
 +
 +[Install]
 +WantedBy=multi-user.target
 +</code>
 +
 +:!: Nach Änderungen oder Neuerstellen von ServiceUnits muss einmal ''systemctl daemon-reload'' ausgeführt werden.
 +
 +
 +==== Instanziierte Dienste (xyz@.service) ====
 +Ein instanziierter Dienst ist eine @.service-Datei, die für mehrere Instanzen der gleichen Anwendung genutzt werden kann.
 +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, das als Platzhalter für die Instanz dient.
 +
 +🔹 Beispiel: Redis mit Instanzen
 +
 +Redis nutzt ''/usr/lib/systemd/system/redis@.service'' als Template.
 +Wenn du ''redis@default'' startest, dann verwendet Systemd ''redis@.service'' und ersetzt das ''@default'' mit default.
 +Dadurch weiß Redis, dass es die Konfigurationsdatei ''/etc/redis/default.conf'' nutzen soll.
 +
 +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. ''OnCalendar=20:00''. Ein weitere Beispiel wäre eine Zeit zu definieren für jede Stunde um Minute 5 mit: ''OnCalendar=*:05''. Oder einfach für jeden Stunde wie im unteren Beispiel:
  
-Füge Startlinks (die mit “S99…” beginnen) in ''/etc/rc4.d'' und ''/etc/rc5.d'' ein, füge außerdem Stoplinks (die mit “K01…” beginnen) in den anderen rc.xd-Verzeichnissen ein. Apache wird also bei Runlevel-Wechseln zuletzt gestartet und zuerst wieder beendet. 
  
 <code> <code>
- update-rc.d apache2 start 99 4 5 stop 01 0 1 2 3 6+[Unit] 
 +Description=Timer für Daten Empfangen 
 + 
 +[Timer] 
 +OnCalendar=hourly 
 +Persistent=true 
 + 
 +[Install] 
 +WantedBy=timers.target 
 +</code> 
 + 
 +Auch nach den neu definieren von Timern muss ''systemctl daemon-reload'' ausgeführt werden. 
 +   
 + 
 +   
 +   
 +   
 +==== journalctl ==== 
 + 
 +Die folgende ''journalctl'' Option ''--no-pager'' ist gut damit nicht alles jeweils per Seite anzeigt wird, sondern es wird gleich alles komplett aufgelistet. So wie man es von ''cat'' kennt. Das ist gut um per ''grep'' besser nach bestimmten Schlüsselwörtern zu suchen, da so der gesamte Journal zu Verfügung steht. 
 + 
 +  journalctl --no-pager 
 +   
 +oder besser mit eingebauten grep von ''journalctl'' 
 + 
 +  journalctl --since="2022-07-08 11:17:01" --grep "dhcp" 
 +   
 +   
 +Um nur zwischen zwei bestimmten Zeit Abschnitten zu suchen / Von - Bis: 
 +   
 +  journalctl --since="2022-07-08 11:17:01" --until="2022-07-08 11:47:01" --no-pager 
 + 
 +Um sich alle Kernel Meldungen von heute anzuzeigen: 
 + 
 +  journalctl -k --since "today" 
 +   
 + 
 +==== ältere Vorgänger InitV ==== 
 + 
 +<code> 
 + rcconf =runlevel Konfiguration (Prog. Dienst aus-abwählen) 
 + 
 + update-rc.d =install and remove System-V style init script links 
 + Hinzufügen oder entfernen von Diensten zu Runleveln 
 + update-rc.d nagios3 defaults =bringt Dienste wieder in den default runlevel 
 + update-rc.d -f nagios3 remove =die Verweise in den Runlevel-Ordnern noch zusätzlich entfernen, 
 + damit nach ein Reboot nicht automatisch wieder Nagios3 startet. 
 + invoke-rc.d nagios start =startet nagios Dienst 
  
  insserv -r nagios3 =neu, das gleiche wie update-rc.d, entfernt nagios3 von allen runleveln  insserv -r nagios3 =neu, das gleiche wie update-rc.d, entfernt nagios3 von allen runleveln
Zeile 1327: Zeile 1506:
 </code> </code>
  
-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 1375: Zeile 1554:
   swapoff -a   swapoff -a
  
 +
 +Mit ''parted'' eine SWAP-Partition anlegen, hier ist als File system type **linux-swap** die Richtige Angabe. 
  
 Möchte man die SWAP-Partition vergrößern, funktioniert es genauso mit den Partitionierungs-Tools wie bei einem gewöhnliches Filesystem. Anschließend ist aber kein ''resize'' nötig, sondern lediglich das Kommando ''mkswap'' mit Angabe der swap Partition auszuführen. Möchte man die SWAP-Partition vergrößern, funktioniert es genauso mit den Partitionierungs-Tools wie bei einem gewöhnliches Filesystem. Anschließend ist aber kein ''resize'' nötig, sondern lediglich das Kommando ''mkswap'' mit Angabe der swap Partition auszuführen.
Zeile 1567: Zeile 1748:
 Welche Programme greifen auf die ALSA Geräte Datei ''/dev/snd/'' zu: Welche Programme greifen auf die ALSA Geräte Datei ''/dev/snd/'' zu:
  
-  iglu:~> lsof /dev/snd/*+  lsof /dev/snd/*
      
 <code> <code>
Zeile 1579: Zeile 1760:
  
  
-  iglu:~> fuser /dev/snd/*+  fuser /dev/snd/*
  
 <code> <code>
Zeile 1591: Zeile 1772:
 3285 ?        SLl  256:08 rhythmbox 3285 ?        SLl  256:08 rhythmbox
 </code> </code>
- 
  
 ==== Drucker ==== ==== Drucker ====
Zeile 1666: 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 ''usb-devices'', dieser zeigt in seiner Ausgabe auch die MaxStromaufnahme an.
 ===== Programmierung ===== ===== Programmierung =====
  
Zeile 1707: Zeile 1890:
  
  
-==== Shell-Skripte schreiben ====+===== Bash Shell-Skripte =====
  
 +=== Grundlagen ===
 Zur Anzeige aller Variablen dient der Befehl ''env''. Zur Anzeige aller Variablen dient der Befehl ''env''.
 +
 +=== 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.
 +
 +<code>
 +RESULT="${RAW_OUTPUT//$MULTIWERT/$REALWERT}"
 +RESULT2="${RESULT//$MULTIWARN/$REALWARN}"
 +RESULT3="${RESULT2//$MULTIKRIT/$REALKRIT}"
 +</code>
 +
 +
 +=== 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="C:\ " auf der Konsole schafft eine vertraute Atmosphäre, +ein ''PS1="C:\ "'' auf der Konsole schafft eine vertraute Atmosphäre, diesen Spuk kann man wieder leicht rückgängig machen mit: 
-diesen Spuk kann man wieder leicht rückgängig machen mit:+ 
 +<code>
 PS1="${USER}@${HOST}:${PWD}> " PS1="${USER}@${HOST}:${PWD}> "
 PS1="C:\> " =PS1 Variable ändern in DOS-Style PS1="C:\> " =PS1 Variable ändern in DOS-Style
 PS1="\h:\w> " =PS1 Variable Standard PS1="\h:\w> " =PS1 Variable Standard
 +</code>
 +
 +
 +=== 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 1787: Zeile 1998:
   find /opt/xprogram/archiv/ -type f -iname "*.gz" | xargs -i gzip -d {}   find /opt/xprogram/archiv/ -type f -iname "*.gz" | xargs -i gzip -d {}
  
 +
 +=== SHELL Variablen bearbeiten ===
 +
 +Im folgenden Beispiel wird innerhalb der Variablen VAR das Wort Kent durch Saajan ersetzt.
 +
 +<code>
 +VAR="Eric and Kent are good friends."
 +RESULT="${VAR//Kent/Saajan}"
 +echo $RESULT 
 +Eric and Saajan are good friends.
 +</code>
 ==== Installationen ==== ==== Installationen ====
 Die Betriebssystem Installation Die Betriebssystem Installation
Zeile 1799: 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 "mount /dev/sda4 /media/sda4anschließend das /dev +starten. Die Linux-System Partition mounten ''mount /dev/sda4 /media/sda4'' anschließend das /dev 
-Verzeichnis in die System Partition mounten "mount -o bind /dev /media/sda4/dev+Verzeichnis in die System Partition mounten ''mount -o bind /dev /media/sda4/dev''
 (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 "chroot /media/sda4 und hier die beiden Befehle ausführen:+Dann die System Partition betreten ''chroot /media/sda4''  und hier die beiden Befehle ausführen:
  
 <code> <code>
Zeile 1810: Zeile 2032:
 </code> </code>
  
-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'' eingeben. In der nun geöffneten 
-Grub-Konsole: find /boot/grub/stage1 --> liefert z.B. (hd0,5) dann eingeben: +Grub-Konsole: ''find /boot/grub/stage1'' --> liefert z.B. (hd0,5) dann eingeben: 
-root (hd0,5) + 
-setup (hd0)+  root (hd0,5) 
 +  setup (hd0)
  
 alt alt
-In der Datei /boot/grub/menu.lst kann man hinter der kernel Zeile +In der Datei ''/boot/grub/menu.lst'' kann man hinter der kernel Zeile 
-des Betriebsystems vga=791 = 1024x768 oder vga=794 = 1024 x 1280 "+des Betriebsystems ''vga=791 = 1024x768 oder vga=794 = 1024 x 1280''
 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 /boot/grub/grub.cfg vorgenommen, sondern durch das Anpassen +Anpassungen grub2 werde nicht direkt an ''/boot/grub/grub.cfg'' vorgenommen, sondern durch das Anpassen 
-der Datei /etc/default/grub. Anschließend wird update-grub ausgeführt.+der Datei ''/etc/default/grub''. Anschließend wird ''update-grub'' ausgeführt.
  
 GRUB Bootoptionen GRUB Bootoptionen
Zeile 1915: Zeile 2138:
 </code> </code>
  
 +Anschließend nun den Branch (oftmals main oder master) festlegen/ändern mit:
  
-Nun das Projekt auf dem Git-Server anlegen. Oftmals gibt es auf dem Git-Server ein Webinterface wo es einen Menü-Punkt //New Repository// gibt. +  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 1922: Zeile 2148:
   git remote add origin https://git.example.net/ronni/teamcity-role.git   git remote add origin https://git.example.net/ronni/teamcity-role.git
   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 1975: Zeile 2203:
   git clone git@gitrepo.fritz.box:ronni/ronnis_postfix.git   git clone git@gitrepo.fritz.box:ronni/ronnis_postfix.git
  
 +
 +=== 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://user1proxy:geheim@webproxy.example.org:8000
 +  git config --global https.proxy http://user1proxy:geheim@webproxy.example.org:8000
  
  
Zeile 2007: Zeile 2243:
  
   /usr/bin/kcmshell5 --list   /usr/bin/kcmshell5 --list
 +  
 + 
 +Mit dem Standard Dateimanager ''Dolphin'' ist es einfach auf anderen Rechner im Netzwerk zuzugreifen, zum Beispiel per SSH(sftp/fish). Beim Zugriff auf einem Netzwerkordners eines entfernten Server hatte ich eine Fehlermeldung //"Communication with the local password server failed"//. Mit dem folgenden Kommando kann man einen Überblick bekommen wo der Fehler her kommt:
 +
 +  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 2129: Zeile 2376:
 ===== Dateisystem ===== ===== Dateisystem =====
  
-  fsck =checkt Dateisystem nach Fehlern! +  mkfs.ext4 /dev/sdk1    =ein neues ext4 Dateisystem anlegen auf der Partition /dev/sdk1 
-  fsck.ext3 =checkt ext2/ext3 Dateisysteme nach Fehlern und behebt diese. +  fsck          =checkt Dateisystem nach Fehlern! 
-  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 /dev/sda3 --> /dev/sda3: LABEL="SicherA" UUID="265f37e3-be53-4d7b-84ff-b412674d385f" TYPE="ext3"   blkid /dev/sda3 --> /dev/sda3: LABEL="SicherA" UUID="265f37e3-be53-4d7b-84ff-b412674d385f" TYPE="ext3"
 +
 +Viele Anzeige Möglichkeiten mit ''lsblk''. Hier lassen sich die gesuchten Informationen mit ''--output'' filtern und nach Wunsch sortieren.
 +
 +  lsblk --output HCTL,PATH,MOUNTPOINT
 +  
 +Auch das Partitionslabel anzeigen welches ich immer bei der Erstellung einer neuen Partiton mit ''parted'' angebe. Nicht verwechseln mit dem LABEL, welches ich nicht gesetzt habe und daher die Spalte leer bleibt.
 +
 +  lsblk --output HCTL,PATH,MOUNTPOINT,LABEL,UUID,PARTLABEL
 +
 +Oder nur speziel Informationen bezüglich scsi komptibler Geräte anzeigen, ähnlich dem ''lsscsi'' Kommando.
 +
 +  lsblk --scsi
 +  NAME HCTL       TYPE VENDOR   MODEL                     REV SERIAL                   TRAN
 +  sda  0:0:0:   disk ATA      WL160GSA872B             3E01 WOCL25001237066          sata
 +  sr0  3:0:0:   rom  TSSTcorp TSSTcorpDVD-ROM SH-D163C SB02 TSSTcorpDVD-ROM_SH-D163C sata
 +
  
 Setze maximale Mount-Anzahl auf 60 Setze maximale Mount-Anzahl auf 60
Zeile 2163: Zeile 2429:
 ==== parted ==== ==== parted ====
  
-Man kann es ganz kurz machen und auf der ''parted'' Kommando-Shell alles in einer Zeile eingeben. Hier ein Beispiel, wenn eine Partition auf einer Festplatte angelegt werden soll und diese 100% der Kapazität nutzen soll.+Hier einige Beispiele, wenn eine Partition auf einer Festplatte angelegt werden soll und diese 100% der Kapazität nutzen soll.
  
 Das Programm ''parted'' mit Angabe der entsprechenden Festplatte starten: Das Programm ''parted'' mit Angabe der entsprechenden Festplatte starten:
Zeile 2174: Zeile 2440:
  
  
-=== Parted von der Kommandozeile ===+=== parted von der Kommandozeile ===
  
 Auch direkt von der Bash lassen sich alle Kommandos aus der ''parted'' Kommando-Shell als Parameter verwenden.  Auch direkt von der Bash lassen sich alle Kommandos aus der ''parted'' Kommando-Shell als Parameter verwenden. 
Zeile 2194: Zeile 2460:
  
  
-Weitere Beispiele direkt von der Bash/Kommandozeile:+Weitere Beispiele direkt von der Bash/Kommandozeile, falls **Partition Tableunknown:** 
 +Option **-a** macht ein alignment der Partition
  
-  parted /dev/sdb1 mklabel gpt mkpart P1 ext4 1MiB 429GB +  parted -a optimal /dev/sdb mklabel gpt mkpart var_lib_mysql  0% 100%
-  parted /dev/sdb1 mklabel gpt mkpart ZCM42 ext4 1 429GB+
      
-Eine neue Partition anlegen, es muss hier noch mit ''mkfs.ext4 /dev/sdk1'' ein neues Dateisystem angelegt werdendie Option -a macht ein alignment der Partition:+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/msdos**. Falls schon eine Partitionstabelle existiertdann verkürzt sich der Kommando wie folgt 
 + 
 +  parted -a optimal /dev/sdb mkpart backup_hd 0% 100%
  
   parted -a optimal /dev/sdk mkpart primary 0% 100%   parted -a optimal /dev/sdk mkpart primary 0% 100%
Zeile 2205: Zeile 2480:
  
  
-Im folgenden das schrittweise Anlegen einer 300GB Partition mit ''parted'' auf die Festplatte ''/dev/sdb'':+Im folgenden das schrittweise Anlegen einer 300GB Partition mit ''parted'' auf die Festplatte ''/dev/sdb'': //Dieses schrittweise Vorgehen hilft auch wenn man vorher einen Fehler gemacht hat, z.B. bei Start/Anfang 0 eingegeben hat statt 1// :!:
  
   parted /dev/sdb   parted /dev/sdb
  
 <code> <code>
-(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) mkpart primary                                                   +(parted) mklabel SUSERepo                                                 
 File system type?  [ext2]? xfs                                             File system type?  [ext2]? xfs                                            
 Start?                                                                     Start?                                                                    
Zeile 2247: Zeile 2523:
 (parted) quit                                                              (parted) quit                                                             
 </code> </code>
 +
 +
 +=== Partition umbenennen ===
 +
 +Um den Namen einer Partition mit ''parted'' zu ändern, kannst man den Befehl **name** verwenden. Im folgenden wird der Name einer Partition in //opt_oracle// geändert:
 +
 +  parted /dev/sdg name <partitionnummer> opt_oracle
 +  parted /dev/sdg name 1 opt_oracle
 +  
 +Ersetze <partitionnummer> durch die Nummer der Partition, die du umbenennen möchtest. Du kannst die Partitionnummer mit dem Befehl print anzeigen:
 +
 +  parted /dev/sdd print
 +  
 +Dies wird eine Liste der Partitionen auf der Festplatte ''/dev/sdd'' anzeigen. Finde die Nummer der Partition /oraexp in der Liste und verwende dann diese Nummer im name-Befehl.
  
  
Zeile 2255: Zeile 2545:
  
 Mit ''print'' zunächst Informationen anzeigen lassen: Mit ''print'' zunächst Informationen anzeigen lassen:
 +
 +:!: Hier nun aufpassen das das komplette Device angegeben wird **/dev/sdb** statt **/dev/sdb1** :!:
  
 <code> <code>
Zeile 2328: Zeile 2620:
  
  
 +=== parted rescue ===
 +
 +Das partitionierungs Programm ''parted'' verfügt auch über eine **rescue** Option mit der sich verloren gegangene Partitionen suchen und wiederherstellen lassen. Der Aufruf kann direkt auf der Bash Kommandozeile mit ''parted /dev/sdc rescue 0 100%'' erfolgen oder innerhalb von ''parted''.
 +
 +
 +==== 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/Wartung ===
 +
 +  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://wiki.ubuntuusers.de/Befehle_Btrfs-Dateisystem/
 +  * https://linuxhint.com/defragment-btrfs-filesystem/
 +  
 +  
 +=== 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 ''parted''.
 +
 +  * Server oder VM wird mit einem Livesystem gestartet
 +  * Das Programm ''parted'' starten mit den Aufruf ''parted /dev/xpy''
 +  * Innerhalb von ''parted'' mit **print** die verfügbaren Partitionen und verfügbare Diskgröße anzeigen lassen
 +  * 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 2545: Zeile 2887:
   rsync -auv --exclude=/ISO_Images --exclude=/Multimedia/Spiele --exclude=/Multimedia/Musik --exclude=/Multimedia/Videos --exclude=/Multimedia/Freizeit/Ronald_bearbeitet --exclude=/Anwendungen --delete-excluded --delete --progress /srv/nfs/USBDisk/Sicher/ /mnt/Sicher   rsync -auv --exclude=/ISO_Images --exclude=/Multimedia/Spiele --exclude=/Multimedia/Musik --exclude=/Multimedia/Videos --exclude=/Multimedia/Freizeit/Ronald_bearbeitet --exclude=/Anwendungen --delete-excluded --delete --progress /srv/nfs/USBDisk/Sicher/ /mnt/Sicher
   /   /
 +
 +Hier wird nur das gesichert was ausdrücklich im rsync_include.file enthalten ist:
 +  rsync -auv --delete --include-from=/srv/nfs/USBDisk/rsync_include.file --progress /srv/nfs/USBDisk/Sicher/ /mnt/Sicher/
 +
  
 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/synchronisiert werden soll. 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/synchronisiert werden soll.
Zeile 2613: Zeile 2959:
 64 bytes from fe80::e2cb:4eff:fe35:b162: icmp_seq=2 ttl=64 time=0.095 ms 64 bytes from fe80::e2cb:4eff:fe35:b162: icmp_seq=2 ttl=64 time=0.095 ms
 </code> </code>
 +
 <code> <code>
 Ein ping an ff02::fb MDNS Standard query Ein ping an ff02::fb MDNS Standard query
Zeile 2621: Zeile 2968:
 </code> </code>
  
-Eine IPv6 Adresse(site local address) an eth0 vergeben:+Eine IPv6 Adresse(site local address)=ist veraltete!!! an eth0 vergeben: 
   ip -6 addr add fec0::1/64 dev eth0   ip -6 addr add fec0::1/64 dev eth0
  
Zeile 2633: Zeile 2981:
  
 <code> <code>
-neutron@thor:~$ route -A inet6                                                                                                        +tux@iglu:~$ route -A inet6                                                                                                        
 Kernel-IPv6-Routentabelle                                                                                                              Kernel-IPv6-Routentabelle                                                                                                             
 Destination                    Next Hop                 Flag Met Ref Use If                                                          Destination                    Next Hop                 Flag Met Ref Use If                                                         
Zeile 2651: Zeile 2999:
  
 <code> <code>
-thor:~# ip -6 route show+iglu:~# ip -6 route show
 fe80::/64 dev eth1  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0 fe80::/64 dev eth1  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 0
 </code> </code>
Zeile 2659: Zeile 3007:
  
 <code> <code>
-thor:~ # nmap -6 fe80::7ec5:37ff:fefc:e794%br0+iglu:~ # nmap -6 fe80::7ec5:37ff:fefc:e794%br0
  
 Starting Nmap 6.25 ( http://nmap.org ) at 2013-09-23 12:47 CET Starting Nmap 6.25 ( http://nmap.org ) at 2013-09-23 12:47 CET
Zeile 2737: Zeile 3085:
  
  
-Kommando ip link zeigt die verfügbaren Netzwerk Schnittstellen+Kommando ''ip link'' zeigt die verfügbaren Netzwerk Schnittstellen
 <code> <code>
 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN  1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN 
Zeile 2753: Zeile 3101:
   ssh -6 tux@fec0::1   ssh -6 tux@fec0::1
   scp -6 tux@[fec0:a::10]:/media/extern/pmagic-5.10.iso /media/lokal   scp -6 tux@[fec0:a::10]:/media/extern/pmagic-5.10.iso /media/lokal
-   
   ssh -6 tux@fe80::21fb:fef6:72bc:b912%wlan0   ssh -6 tux@fe80::21fb:fef6:72bc:b912%wlan0
  
Zeile 2783: Zeile 3130:
  
   lsof -i -P -n|egrep -i "tcp|udp"   lsof -i -P -n|egrep -i "tcp|udp"
 +  
 +zeigt nur IPv6 Dienste an
 +
 +  lsof -i6 -n|egrep -i "tcp|udp"
      
 welcher Dienst lauscht an Port 25 welcher Dienst lauscht an Port 25
Zeile 2801: Zeile 3152:
     inet6 fe80::204:4bff:fe80:8003/64 scope link      inet6 fe80::204:4bff:fe80:8003/64 scope link 
        valid_lft forever preferred_lft forever        valid_lft forever preferred_lft forever
-<code> 
 </code> </code>
 +<code>
   ip -6 addr show vmnet8   ip -6 addr show vmnet8
   4: vmnet8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000   4: vmnet8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
Zeile 2808: Zeile 3159:
        valid_lft forever preferred_lft forever        valid_lft forever preferred_lft forever
 </code> </code>
 +
 Gültigkeitsbereich:Standort bei fec0 Gültigkeitsbereich:Standort bei fec0
 Gültigkeitsbereich:Global bei fc80 und weitere Gültigkeitsbereich:Global bei fc80 und weitere
  
  
-==== Netzwerk Informationen ====+===== Netzwerk Informationen =====
  
 Welche Rechner sind in meinem Netzwerk IP und MAC Adresse? Welche Rechner sind in meinem Netzwerk IP und MAC Adresse?
 Man kann ein Shell Skript schreiben, direkt auf der Konsole als Befehl: Man kann ein Shell Skript schreiben, direkt auf der Konsole als Befehl:
  
-  thor:~# for IP in $(seq 1 50); do+  iglu:~# for IP in $(seq 1 50); do
   > ping -c1 -W2 192.168.1.$IP   > ping -c1 -W2 192.168.1.$IP
   > done   > done
  
-Dann mit "arp -noder "ip neighdie Rechner anzeigen lassen ( ohne -n dauert es zu lange).+Dann mit ''arp -n'' oder ''ip neigh'' die Rechner anzeigen lassen ( ohne -n dauert es zu lange).
  
 oder auch von der Konsole zu starten: oder auch von der Konsole zu starten:
Zeile 2827: Zeile 3179:
   for ((i=1;i<20;i++));do ping -c2 172.16.19.$i;arp -a | tr "()" " | cut -d" " -f3,6 | sort; done   for ((i=1;i<20;i++));do ping -c2 172.16.19.$i;arp -a | tr "()" " | cut -d" " -f3,6 | sort; done
  
 +
 +==== nmap ====
  
 oder: oder:
Zeile 2836: Zeile 3190:
  
 Operating System fingerprinting and port scanning: Operating System fingerprinting and port scanning:
 +
   nmap -P0 -O <IP address>   nmap -P0 -O <IP address>
   Starting Nmap 4.20 ( http://insecure.org ) at 2007-01-08 11:05 CET   Starting Nmap 4.20 ( http://insecure.org ) at 2007-01-08 11:05 CET
Zeile 2854: Zeile 3209:
 For instance, the following command will report which IP-based services are running on the device, For instance, the following command will report which IP-based services are running on the device,
 and which version of the service is being used: and which version of the service is being used:
-nmap -P0 -sV <IP address>  + 
 +  nmap -P0 -sV <IP address>  
   Starting Nmap 4.20 ( http://insecure.org ) at 2007-01-08 11:06 CET     Starting Nmap 4.20 ( http://insecure.org ) at 2007-01-08 11:06 CET  
   Interesting ports on 192.168.2.1:     Interesting ports on 192.168.2.1:  
Zeile 2870: Zeile 3226:
  
  
-== Die 5 meist genutzen Standard Ports scannen ==+== Die 5 meist genutzten Standard Ports scannen ==
  
   nmap --top-ports 5 194.94.81.54   nmap --top-ports 5 194.94.81.54
Zeile 2880: Zeile 3236:
  
 genauer: genauer:
 +
   nmap -P0 -sV -p T:80 77.92.77.11   nmap -P0 -sV -p T:80 77.92.77.11
   PORT   STATE SERVICE VERSION   PORT   STATE SERVICE VERSION
Zeile 2896: Zeile 3253:
  
 == UDP Scan == == UDP Scan ==
 +
   nmap -sU 192.168.1.2   nmap -sU 192.168.1.2
  
Zeile 2946: 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.it.rodgau.de [172.18.10.80] 1812 (radius) : Connection refused+  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 ''-s'' die Source IP gewählt werden: Bei zwei Netzwerkkarten wird die default Route genutzt. Möchte man die Verbindung der anderen Karte prüfen, muss mit dem Schalter ''-s'' die Source IP gewählt werden:
Zeile 3010: 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
  
-''ss'' ist vergl. mit netstat+''ss'' ist vergleichbar mit ''netstat''
  
 Oft wird ''ss'' mit den folgenden Optionen verwendet -tar, t = TCP, a = Alle Socket anzeigen und -r löst Hostnamen auf. Oft wird ''ss'' mit den folgenden Optionen verwendet -tar, t = TCP, a = Alle Socket anzeigen und -r löst Hostnamen auf.
Zeile 3022: Zeile 3382:
   ss -tar   ss -tar
  
 +Möchte man alle Verbindungen zu einem bestimmten Rechner mit ''ss'' im Auge behalten, so verwendet man die
 +**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 ''netstat''
 +
 +Anzeigen aller tcp-Verbindungen ohne lauschende TCP-Ports
  
   netstat -t   netstat -t
Zeile 3031: Zeile 3414:
   * -n Namensauflösung aktivieren   * -n Namensauflösung aktivieren
   * -l Empfangsbereite Serversockets auflisten   * -l Empfangsbereite Serversockets auflisten
-  * +
 Sollte immer ausreichen: Sollte immer ausreichen:
 +
   netstat -tau   netstat -tau
  
 <code> <code>
-thor:/home/neutron# arp -n+iglu:/home/harry# arp -n
 Address                  HWtype  HWaddress           Flags Mask            Iface Address                  HWtype  HWaddress           Flags Mask            Iface
 192.168.2.1              ether   00:1a:2a:24:28:68                       eth0 192.168.2.1              ether   00:1a:2a:24:28:68                       eth0
-thor:/home/neutron# route -n+ 
 +iglu:/home/harry# route -n
 Kernel-IP-Routentabelle Kernel-IP-Routentabelle
 Ziel            Router          Genmask         Flags Metric Ref    Use Iface Ziel            Router          Genmask         Flags Metric Ref    Use Iface
Zeile 3048: 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 3064: Zeile 3447:
   tcpdump -n port 53   tcpdump -n port 53
  
 +Auf beiden Netzwerkkarten mitschneiden ''-i any'':
 +  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 3108: Zeile 3493:
  
  
 +Filter für eine bestimmte DNS Anfrage
 +
 +  dns.qry.name == "turn01.chat.example.com"
  
 ==== Netzwerkinformationen bearbeiten ==== ==== Netzwerkinformationen bearbeiten ====
Zeile 3178: Zeile 3566:
 ==== Netzwerkkarte einrichten: ==== ==== Netzwerkkarte einrichten: ====
  
-Ein Netzwerk kann mit den Kommando ''ip'' temporär konfigurieren werden.+Ein Netzwerk kann mit den Kommando ''ip'' temporär konfiguriert werden.
  
 +aus Arch Linux Wiki:
 +  ip link set up dev eth0
 +  ip link set eth0 up  <-- kürzer :)
 +  ip addr add 139.96.30.100/24 dev eth0
 +
 +aus eigener Erfahrung:
   ip addr add 172.19.0.52/24 dev eth0   ip addr add 172.19.0.52/24 dev eth0
      
Zeile 3195: Zeile 3589:
   ifdown eth0   ifdown eth0
   ifup eth0   ifup eth0
 +  
 +Netzwerkkarte deaktivieren auf DOWN setzen:
 +
 +  ip link set usb0 down
  
  
Zeile 3257: Zeile 3655:
   ifconfig wlan0 up   ifconfig wlan0 up
  
-Manchmal ist es nötig die Wlan Karte freizuschalten, da diese durch einen Software Schalter gesperrt sein kann.+besser/aktueller: 
 + 
 +  ip link set wlan0 up 
 + 
 +Manchmal ist es nötig die WLAN Karte freizuschalten, da diese durch einen Software Schalter gesperrt sein kann.
  
 <code> <code>
Zeile 3418: Zeile 3820:
 Neueres Tool ist ''bluetoothctl'' ermöglicht das Anzeigen von Informationen über den Bluetooth Controllers und das Auflisten der Verbundenen oder sich in Reichweite befindlichen Bluetooths Geräten.  Neueres Tool ist ''bluetoothctl'' ermöglicht das Anzeigen von Informationen über den Bluetooth Controllers und das Auflisten der Verbundenen oder sich in Reichweite befindlichen Bluetooths Geräten. 
  
 +Neben bluetoothctl sind aktuell in Debian Bookworm auch noch diese Tools vorhanden:
  
 +  * bluemoon
 +  * hcitool
  
 +Unter Suse 15.5 gibt es noch die folgenden Tools
 +
 +<code>
 +btmon 
 +Bluetooth monitor ver 5.65
 += Note: Linux version 5.14.21-150500.55.73-default (x86_64)                                                                                                    0.774708
 += Note: Bluetooth subsystem version 2.22
 +</code>
 ===== GPG ===== ===== GPG =====
  
Zeile 3489: Zeile 3902:
  
 Wenn der passwortlose Login scheitert, sollte man zuerst überprüfen, ob die Rechte für ''authorized_keys'' richtig gesetzt wurden. Weiterhin könnten die Rechte des Ordners ~/.ssh falsch sein. Dieser sollte keine Schreibberechtigung für 'group' und 'other' haben. Wenn der passwortlose Login scheitert, sollte man zuerst überprüfen, ob die Rechte für ''authorized_keys'' richtig gesetzt wurden. Weiterhin könnten die Rechte des Ordners ~/.ssh falsch sein. Dieser sollte keine Schreibberechtigung für 'group' und 'other' haben.
 +
 +
 +=== Probleme bei Verlust des public Keys ===
 +
 +Falls der SSH public Key verloren geht, kann man sich diesen mit dem Kommando ''ssh-keygen'' neu erstellen lassen. Man benötigt dafür natürlich den private-Key.
 +
 +  ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
 +  
 +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 3511: 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:/media/archiv/Archiv/Musik /home/neutron/Musik/+  sshfs loki@192.168.1.3:/media/archiv/Archiv/Musik /home/tux/Musik/
  
 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/Dolphin: mit Konqueror/Dolphin:
Zeile 3536: 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:
 <code> <code>
-neutron@thor:/$ scp eject fli4l@192.168.1.1:/usr/bin/eject+:/$ scp eject fli4l@192.168.1.1:/usr/bin/eject
 fli4l@192.168.1.1's password: fli4l@192.168.1.1's password:
 eject                                         100%   17KB  17.0KB/  00:00 eject                                         100%   17KB  17.0KB/  00:00
 </code> </code>
-2. Beispiel für das kopieren einer Datei mit scp, von einen entferneten Rechner auf meinen Rechner:+2. Beispiel für das kopieren einer Datei mit scp, von einem entfernten Rechner auf meinen Rechner:
 <code> <code>
-Neutron@thor:/$ scp fli4l@192.168.1.1:/etc/inittab /home/Neutron/Desktop+:/$ scp fli4l@192.168.1.1:/etc/inittab /home/tux/Desktop
 fli4l@192.168.1.1's password: fli4l@192.168.1.1's password:
 inittab                                       100%  121     0.1KB/  00:00 inittab                                       100%  121     0.1KB/  00:00
 </code> </code>
-3. Beispiel für das kopieren eines kompletten Verzeichnis mit scp, von einen entferneten Rechner auf meinen Rechner:+3. Beispiel für das kopieren eines kompletten Verzeichnis mit scp, von einem entfernten Rechner auf meinen Rechner:
 <code> <code>
-neutron@thor:~$ scp -r fli4l@192.168.1.1:/boot /home/neutron/Desktop+:~$ scp -r fli4l@192.168.1.1:/boot /home/tux/Desktop
 fli4l@192.168.1.1's password: fli4l@192.168.1.1's password:
 ldlinux.sys                                   100% 7836     7.7KB/  00:01 ldlinux.sys                                   100% 7836     7.7KB/  00:01
Zeile 3623: Zeile 4045:
  
   nfsservername:/media/massstorage/NFSpublic  /media/NFSpublic  nfs4  rw,nosuid 0 0   nfsservername:/media/massstorage/NFSpublic  /media/NFSpublic  nfs4  rw,nosuid 0 0
-   + 
-  + 
 + 
 +=== Automount - autofs.service === 
 + 
 +Die NFS Partition immer nur dann einhängen, wenn diese benötigt wird. Dies hat sich bisher super bewährt. Auch bei Problemen wenn das Netzwerk beim booten nicht zur Verfügung steht und sonst die NFS-Partition nicht eingebunden wird. Mit dem ''autofs.service'' und den entsprechenden Eintrag in der ''/etc/fstab'' wird die NFS-Partition eingehängt sobald auf diese zugegriffen wird. 
 + 
 +Sicherstellen das der autofs.service läuft: 
 + 
 +  systemctl enable autofs.service 
 + 
 +Einträge in der ''/etc/fstab'' setzen: 
 + 
 +<code> 
 +nfsserver:/media/massstorage/NFSpublic               /media/NFSpublic        nfs4   noauto,x-systemd.automount,x-systemd.idle-timeout=300,rw,user  0  0 
 +</code> 
      
 === Fehler vermeiden === === Fehler vermeiden ===
Zeile 3644: Zeile 4081:
 Oftmals möchte der NFS Mount vor der Verfügbarkeit der Namensauflösung bzw. des Netzwerks starten. Hier hilft es beim Raspberry Pi OS mit ''raspi-config'' //Wait for Network at Boot// zu aktivieren. Bei Suse hilft hier ''systemctl enable systemd-networkd-wait-online.service'' zu aktivieren oder einen Eintrag für den NFS-Server in die ''/etc/hosts'' zu setzen. Oftmals möchte der NFS Mount vor der Verfügbarkeit der Namensauflösung bzw. des Netzwerks starten. Hier hilft es beim Raspberry Pi OS mit ''raspi-config'' //Wait for Network at Boot// zu aktivieren. Bei Suse hilft hier ''systemctl enable systemd-networkd-wait-online.service'' zu aktivieren oder einen Eintrag für den NFS-Server in die ''/etc/hosts'' zu setzen.
  
-   
 ===== SAMBA ===== ===== SAMBA =====
  
Zeile 4139: Zeile 4575:
   openssl x509 -in /var/lib/icinga2/certs/ca.crt -text   openssl x509 -in /var/lib/icinga2/certs/ca.crt -text
  
 +
 +Den privaten Schlüssel anzeigen lassen mit:
 +
 +  openssl rsa -in yourPrivateKey.key -text -noout
  
 ===== Leistung und Geschwindigkeit ===== ===== Leistung und Geschwindigkeit =====
Zeile 4219: Zeile 4659:
  
  
 +===== Logging =====
  
 +Als root kann man für eine oder auch mehrere neue zu rotierende Log-Datei eine neue Konfigurationsdatei unter ''/etc/logrotate.d/'' anlegen, nennen wir sie z.B. apache-logs. In dieser Datei kann man nun die Konfiguration für eine oder aber auch mehrere Dateien vornehmen:
 +
 +<code>
 +/var/log/apache2/meinweb1-access.log {
 +    size=100M
 +    rotate 52
 +    compress
 +    delaycompress
 +    missingok
 +    notifempty
 +    create 640 root root
 +    maxage 365
 +}
 +  
 +/var/log/apache2/meinweb1-error.log  {
 +    size=100M
 +    rotate 52
 +    compress
 +    delaycompress
 +    missingok
 +    notifempty
 +    create 640 root root
 +    maxage 365
 +}
 +</code>
 +
 +Hier die Erklärung der einzelnen Parameter:
 +
 +  * **size=100M:** Rotation erfolgt, wenn die Datei 100MB überschreitet
 +  * **rotate 52:** Behält bis zu 52 rotierte Dateien (für wöchentliche Rotation über ein Jahr)
 +  * **compress:** Komprimiert die rotierten Log-Dateien mit gzip
 +  * **delaycompress:** Komprimiert erst ab der zweiten Generation (nützlich für Apache)
 +  * **missingok:** Keine Fehlermeldung, wenn Log-Datei fehlt
 +  * **notifempty:** Keine Rotation, wenn Datei leer ist
 +  * **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 /etc/logrotate.d/apache-wpad
 +  
 +Um die Konfiguration sofort anzuwenden:
 +
 +  logrotate -f /etc/logrotate.d/apache-wpad
 +
 +
 +=== Konfig für Nutzer ohne root-Rechte ===
 +
 +Falls Nutzer, ohne root-Berechtigungen, ihre eigenen Log-Dateien mit logrotate steuern sollen kann man ein eigenes Verzeichnis für die Logrotate Konfig erstellen. Z.B. ''/usr/local/etc/rotatelogs/'' Verzeichnis für logrotate Konfiguration, die zu individuellen Zeiten ausgeführt werden.
 +
 +Der Nutzer kann sich mit ''crontab -e'' seine eigenen Zeiten einrichten ab wann die Logs zu rotieren sind. Oder als Systemweite Einstellung in ''/etc/cron.d/logging''. Die Crontab könnte wie folgt aussehen:
 +
 +  50 5 * * *     root  /usr/sbin/logrotate -f /usr/local/etc/rotatelogs/jboss-process >/dev/null 2>&1
 +  55 5 * * *     root  /usr/sbin/logrotate -f /usr/local/etc/rotatelogs/apache2-vhosts >/dev/null 2>&1
 +  
 ===== Archivierung und Komprimierung ===== ===== Archivierung und Komprimierung =====
  
Zeile 4288: Zeile 4785:
   tar xfvz archiv.tar.gz "logs/opensuse irc_#suse.log"   tar xfvz archiv.tar.gz "logs/opensuse irc_#suse.log"
  
-Komprimierte tar.gz und tar.bz2 Dateien kann man sich mit zless, zgrep bzw. bzless, bzgrep ansehen.+Komprimierte xz, tar.gz und tar.bz2 Dateien kann man sich mit xzless, zgrep bzw. bzless, bzgrep ansehen.
  
  
systemadmin.1641460589.txt.gz · Zuletzt geändert: 2022/01/06 10:16 von techguru