# Linuxwissen

immer genau das, was man fix mal braucht

# Proxmox, Swap optimieren

sysctl vm.swappiness=0   
swapoff -a   
swapon -a

bzw um dies rückgängig zu machen:

sysctl vm.swappiness=1   
swapoff -a   
swapon -a

(kann direkt auf der Konsole, ohne reboot, durchgeführt werden, der swapoff dauert ein wenig)

[https://www.technik22.de/d/624-proxmox-swap-optimieren](https://www.technik22.de/d/624-proxmox-swap-optimieren)

# Proxmox, Mount durchreichen

pct set 308 -mp0 /mnt/hdd1T/,mp=/mnt/

# Raspi

# Raspberry mit WLAN verbinden

[https://www.tecchannel.de/a/raspberry-pi-mit-wlan-ausstatten-so-geht-s,2076222,2](https://www.tecchannel.de/a/raspberry-pi-mit-wlan-ausstatten-so-geht-s,2076222,2)

# Meldungen zur SD-Karte ausgeben

```
dmesg | grep mmc
```

# MagicMirror script

import requests  
import os  
import time

url = 'http://10.0.1.122:8087/getPlainValue/'  
obj = 'javascript.0.Variablen.Magic\_Mirror.motion'

url2 = 'http://10.0.1.122:8087/set/'  
obj2 = 'javascript.0.Variablen.Magic\_Mirror.reset'

  
resp = requests.get(url+obj)  
\#print (resp.text)  
if (resp.text) == "true":  
 os.system('vcgencmd display\_power 1')  
elif (resp.text) == 'false':  
 os.system('vcgencmd display\_power 0')

resp = requests.get(url+obj2)  
\#print (resp.text)  
if (resp.text) == "true":  
 #print("true")  
 requests.get(url2+obj2+"?value=false")  
 os.system('sudo service kiosk.sh restart')  
elif (resp.text) == 'false':  
 #print("false")  
 None  
time.sleep(10)

resp = requests.get(url+obj)  
if (resp.text) == "true":  
 os.system('vcgencmd display\_power 1')  
elif (resp.text) == 'false':  
 os.system('vcgencmd display\_power 0')  
resp = requests.get(url+obj2)  
\#print (resp.text)  
if (resp.text) == "true":  
 #print("true")  
 os.system('sudo service kiosk.sh restart')  
elif (resp.text) == 'false':  
 #print("false")  
 None  
time.sleep(10)

resp = requests.get(url+obj)  
if (resp.text) == "true":  
 os.system('vcgencmd display\_power 1')  
elif (resp.text) == 'false':  
 os.system('vcgencmd display\_power 0')  
resp = requests.get(url+obj2)  
\#print (resp.text)  
if (resp.text) == "true":  
 #print("true")  
 os.system('sudo service kiosk.sh restart')  
elif (resp.text) == 'false':  
 #print("false")  
 None  
time.sleep(10)

resp = requests.get(url+obj)  
if (resp.text) == "true":  
 os.system('vcgencmd display\_power 1')  
elif (resp.text) == 'false':  
 os.system('vcgencmd display\_power 0')  
resp = requests.get(url+obj2)  
\#print (resp.text)  
if (resp.text) == "true":  
 #print("true")  
 os.system('sudo service kiosk.sh restart')  
elif (resp.text) == 'false':  
 #print("false")

None  
time.sleep(10)

resp = requests.get(url+obj)  
if (resp.text) == "true":  
 os.system('vcgencmd display\_power 1')  
elif (resp.text) == 'false':  
 os.system('vcgencmd display\_power 0')  
resp = requests.get(url+obj2)  
\#print (resp.text)  
if (resp.text) == "true":  
 #print("true")  
 os.system('sudo service kiosk.sh restart')  
elif (resp.text) == 'false':  
 #print("false")  
 None  
time.sleep(10)

resp = requests.get(url+obj)  
if (resp.text) == "true":  
 os.system('vcgencmd display\_power 1')  
elif (resp.text) == 'false':  
 os.system('vcgencmd display\_power 0')  
resp = requests.get(url+obj2)  
\#print (resp.text)  
if (resp.text) == "true":  
 #print("true")  
 os.system('sudo service kiosk.sh restart')  
elif (resp.text) == 'false':  
 #print("false")  
 None

# CLI

# User anlegen und zur sudogruppe hinzufügen

adduser <span style="color: rgb(224, 62, 45); background-color: rgb(0, 0, 0);">USERNAME</span>

/usr/sbin/usermod -aG sudo hubobel

usermod -aG sudo <span style="color: rgb(224, 62, 45); background-color: rgb(0, 0, 0);">USERNAME</span>

# Zeitzone im Terminal ändern

sudo dpkg-reconfigure tzdata

# Sprache im Terminal ändern

sudo dpkg-reconfigure locales

# Debian Version ermitteln

```none
cat /etc/debian_version
```

# fstab prüfen

die geänderte /etc/fstab neu einlesen:

```
systemctl daemon-reload
```

dann auf Fehler prüfen mittels:

```
findmnt --verify
```

# Debian point-Release upgraden

```
apt update
apt full-upgrade
```

# Postfix/Sendmail einrichten

```
apt install -y postfix libsasl2-modules mailutils
```

```
sudo nano /etc/postfix/sasl_passwd
```

```
[smtp.gmail.com]:587 carsten.richter77@googlemail.com:zymrushsucfjulri
```

```
sudo postmap /etc/postfix/sasl_passwd
```

```
sudo chown root:root /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
```

```
sudo chmod 0600 /etc/postfix/sasl_passwd /etc/postfix/sasl_passwd.db
```

```
sudo nano /etc/postfix/main.cf
```

```
  GNU nano 7.2                                                                                   /etc/postfix/main.cf                                                                                             
# See /usr/share/postfix/main.cf.dist for a commented, more complete version

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = $myhostname, localhost.$mydomain, localhost
relayhost =
mynetworks = 127.0.0.0/8
inet_interfaces = loopback-only
recipient_delimiter = +

compatibility_level = 2

relayhost = [smtp.gmail.com]:587

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +

inet_interfaces = loopback-only
inet_protocols = ipv4


smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_CApath = /etc/ssl/certs
smtpd_tls_CApath = /etc/ssl/certs
smtp_use_tls = yes
```

```
sudo systemctl restart postfix
```

```
sudo systemctl enable postfix
```

```
echo "This email confirms that Postfix is working" | mail -s "Testing Posfix" schneeschieben@hintergasse.de
```

Quelle: [https://blog.wermescher.com/gmail-e-mails-uber-linux-kommandozeile-mittels-postfix/](https://blog.wermescher.com/gmail-e-mails-uber-linux-kommandozeile-mittels-postfix/)

# Emailbenachrichtigung bei SSH-Login

[vorher Postfix/Sendmail konfigurieren](https://wiki.hintergasse.de/link/55#bkmrk-page-title)

```
sudo apt-get install finger
```

```
sudo nano /opt/ssh-login-mail.sh
```

```
#!/bin/bash
echo "Login auf $(hostname) am $(date +%Y-%m-%d) um $(date +%H:%M)" 
echo "Benutzer: $USER" 
echo 
finger
```

```
sudo nano /etc/profile
```

am Ende einfügen:

```
/opt/ssh-login-mail.sh | mail -s "SSH Login auf DEIN SERVERNAME" schneeschieben@hintergasse.de
```

(Servername ändern)

```
sudo chmod 755 /opt/ssh-login-mail.sh
```

# ioBroker

# npm updaten

[https://213.136.68.177/topic/22867/how-to-node-js-für-iobroker-richtig-updaten/985?lang=de](https://213.136.68.177/topic/22867/how-to-node-js-f%C3%BCr-iobroker-richtig-updaten/985?lang=de)

# States via http rufen

```
import requests<br></br><br></br>url = 'http://10.0.1.122:8087/getPlainValue/javascript.0.Variablen.Benutzer'<br></br><br></br>resp = requests.get(url)<br></br>print(resp.text)<br></br>
```

# Node.js updaten

## Vorgehensweise

### 1. Backup erstellen

Vorher immer sichern:

```
iob backup
```

<div class="relative w-full mt-4 mb-1" id="bkmrk-"><div class=""><div class="contents"><div class="relative"><div class="h-full min-h-0 min-w-0"><div class="h-full min-h-0 min-w-0"><div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"><div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"><div class="relative"><div class=""><div class="relative z-0 flex max-w-full"><div class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr" id="bkmrk--1"><div class="cm-scroller"></div></div></div></div></div></div></div></div></div><div class=""><div class="">  
</div></div></div></div></div></div>Zusätzlich bei Proxmox oder VM:

- Snapshot erstellen
- oder komplettes Backup

Das ist alte Schule — aber genau damit rettet man sich im Fehlerfall den Abend.

---

## 2. System aktualisieren

```
sudo apt update && sudo apt upgrade -y
```

<div class="relative w-full mt-4 mb-1" id="bkmrk--3"><div class=""><div class="contents"><div class="relative"><div class="h-full min-h-0 min-w-0"><div class="h-full min-h-0 min-w-0"><div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"><div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"><div class="relative"><div class=""><div class="relative z-0 flex max-w-full"><div class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr" id="bkmrk--4"><div class="cm-scroller"></div></div></div></div></div></div></div></div></div><div class=""><div class="">  
</div></div></div></div></div></div>Danach prüfen:

```
node -v
npm -v
```

<div class="relative w-full mt-4 mb-1" id="bkmrk--5"><div class=""><div class="contents"><div class="relative"><div class="h-full min-h-0 min-w-0"><div class="h-full min-h-0 min-w-0"><div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"><div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"><div class="relative"><div class=""><div class="relative z-0 flex max-w-full"><div class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr" id="bkmrk--6"><div class="cm-scroller"></div></div></div></div></div></div></div></div></div><div class=""><div class="">  
</div></div></div></div></div></div>---

## 3. Node.js 22 installieren

Der empfohlene Weg:

```
iob nodejs-update 22
```

<div class="relative w-full mt-4 mb-1" id="bkmrk--8"><div class=""><div class="contents"><div class="relative"><div class="h-full min-h-0 min-w-0"><div class="h-full min-h-0 min-w-0"><div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"><div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"><div class="relative"><div class=""><div class="relative z-0 flex max-w-full"><div class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr" id="bkmrk--9"><div class="cm-scroller"></div></div></div></div></div></div></div></div></div><div class=""><div class="">  
</div></div></div></div></div></div>Das Script:

- entfernt alte Node-Versionen sauber
- installiert passende npm-Version
- korrigiert Rechte
- prüft Abhängigkeiten

Genau dafür wurde es inzwischen optimiert.

---

## 4. Danach unbedingt prüfen

```
node -v
npm -v
iob diag
```

<div class="relative w-full mt-4 mb-1" id="bkmrk--11"><div class=""><div class="contents"><div class="relative"><div class="h-full min-h-0 min-w-0"><div class="h-full min-h-0 min-w-0"><div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"><div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"><div class="relative"><div class=""><div class="relative z-0 flex max-w-full"><div class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr" id="bkmrk--12"><div class="cm-scroller"></div></div></div></div></div></div></div></div></div><div class=""><div class="">  
</div></div></div></div></div></div>Typisch wäre aktuell etwa:

```
node v22.x
npm 10.x oder 11.x
```

<div class="relative w-full mt-4 mb-1" id="bkmrk--13"><div class=""><div class="contents"><div class="relative"><div class="h-full min-h-0 min-w-0"><div class="h-full min-h-0 min-w-0"><div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"><div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"><div class="relative"><div class=""><div class="relative z-0 flex max-w-full"><div class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr" id="bkmrk--14"><div class="cm-scroller"></div></div></div></div></div></div></div></div></div><div class=""><div class="">  
</div></div></div></div></div></div>---

## 5. ioBroker neu starten

```
iob restart
```

<div class="relative w-full mt-4 mb-1" id="bkmrk--16"><div class=""><div class="contents"><div class="relative"><div class="h-full min-h-0 min-w-0"><div class="h-full min-h-0 min-w-0"><div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"><div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"><div class="relative"><div class=""><div class="relative z-0 flex max-w-full"><div class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr" id="bkmrk--17"><div class="cm-scroller"></div></div></div></div></div></div></div></div></div><div class=""><div class="">  
</div></div></div></div></div></div>oder komplett:

```
sudo reboot
```

<div class="relative w-full mt-4 mb-1" id="bkmrk--18"><div class=""><div class="contents"><div class="relative"><div class="h-full min-h-0 min-w-0"><div class="h-full min-h-0 min-w-0"><div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"><div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"><div class="relative"><div class=""><div class="relative z-0 flex max-w-full"><div class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr" id="bkmrk--19"><div class="cm-scroller"></div></div></div></div></div></div></div></div></div><div class=""><div class="">  
</div></div></div></div></div></div>Ein kompletter Neustart ist oft die sauberere Variante.

# States via http setzen

http://10.0.1.122:8087/set/javascript.0.Variablen.Delta\_TOPVerbraucher?value=0815

# MagicMirror config.js

<span class="iob540">javascript.0.Variablen.Gewicht\_CR</span>

<span class="iob540">{ name: 'Gasverbrauch',  
 deviceStates: \[  
 { id: 'javascript.0.Variablen.Tagesverbrauch\_Gas', icon: 'fa-solid fa-fire-flame-simple', suffix: 'm³' },  
 {id: 'javascript.0.Variablen.Tagesverbrauch\_Gas\_Vortag', icon: 'fa-regular fa-calendar-days', suffix: 'm³' }  
 \]  
 },</span>

{ name: 'Gewicht',  
 deviceStates: \[  
 { id: '<span class="iob540">javascript.0.Variablen.Gewicht\_CR</span>', icon: 'fa-solid fa-scale-unbalanced-flip', suffix: 'kg' },

<span class="iob540">{id: '<span class="iob2470">javascript.0.Variablen.Gewicht\_CR\_delta</span>', icon: '<span class="iob2470">fa-solid fa-plus-minus</span>', suffix: 'kg' }</span>  
 \]  
 },

<span class="iob2470">javascript.0.Variablen.Gewicht\_CR\_delta</span>

<span class="iob2470">&lt;i class="fa-solid fa-plus-minus"&gt;&lt;/i&gt;</span>

# Paperless-ngx updaten

IP: 10.0.1.136  
User: hubobel  
Login nur noch mit sshkey möglich

```
cd /home/hubobel/paperless/paperless-ng/
```

```
docker-compose down
```

```
docker-compose pull
```

```
docker-compose up -d
```

# Wiki updaten

```
cd /var/www/bookstack/
```

```
sudo git pull origin release
```

```
sudo composer install --no-dev
```

```
sudo php artisan migrate
```

```
php artisan cache:clear
```

```
php artisan config:clear
```

```
php artisan view:clear
```

[https://www.bookstackapp.com/docs/admin/updates/](https://www.bookstackapp.com/docs/admin/updates/ "Quelle")

[PHP aktualisieren](https://wiki.hintergasse.de/link/54#bkmrk-page-title)

# hstr - Befehlshistorytool installieren

sudo apt install hstr

für root: hstr --show-configuration&gt;&gt;/root/.bashrc

für user: hstr --show-configuration&gt;&gt;~/.bashrc

# SSH Zugang & Key

sudo nano /etc/ssh/sshd\_config

- PermitRootLogin no
- PubkeyAuthentication yes
- AuthorizedKeysFile
- PasswordAuthentication no
- UsePAM no

sudo systemctl restart sshd

# Senkrechter Strich

Tastenkombination <kbd>Alt Gr</kbd> + <kbd>&lt;</kbd>

# Hostname ändern

First, run `sudo hostnamectl | grep hostname` and confirm that's the name of the PC you want to change.

Next, run `sudo hostnamectl set-hostname whatever` where *whatever* is the name you wish to use henceforth.

# Wifi-Treiber nachinstallieren

sudo apt install bcmwl-kernel-source

# Einstellung aus fstab ohne Neustart neu laden

Die einfachste Möglichkeit ist den **mount** Befehl wie folgt auszuführen.

```
$ sudo mount -a
```

Ein Nachteil davon ist jedoch, dass dabei bei den vorliegenden Sytemen nur die noch nicht eingehängten Dateisysteme eingehängt wurden. Eine weitere und zuverlässigere Lösung stellt die Erweiterung der Parameter für den **mount** Befehl dar. Dies könnte dann wie folgt aussehen.

```
$ sudo mount -o remount /
```

In diesem Beispiel wird das Root-Dateisystem mit den in der fstab angegebene Optionen neu eingehängt. Eine weitere Erleichterung brachte folgende Kombination von Befehlen. Dabei werden zunächst alle eingehängten Dateisystem aufgelistet und anschließend neu eingehängt. Es bietet sich an zunächst den letzten Teil wegzulassen und sich die auszuführenden Befehle genauer anzuschauen.

```
$ LANG=en mount | awk '{print "mount -o remount "$3}' | sudo sh
```

# unrar auf der CLI

```
unrar e tecmint.rar /home/tecmint/rarfiles
```

# große Dateien finden

sudo apt-get install ncdu

[https://www.mawa-solutions.com/faq/artikel/wie-findet-man-unter-linux-gro%C3%9Fe-verzeichnisse](https://www.mawa-solutions.com/faq/artikel/wie-findet-man-unter-linux-gro%C3%9Fe-verzeichnisse)

# PIP und Debian

Use Pip's `config` command to edit the above file:

```
python3 -m pip config set global.break-system-packages true
```

# Nginx Proxy Pfad mitgeben

```
location = /{return 301 $scheme://$http_host/weather/;}
```

/weather/ = .....

[![image.png](https://wiki.hintergasse.de/uploads/images/gallery/2025-03/scaled-1680-/image.png)](https://wiki.hintergasse.de/uploads/images/gallery/2025-03/image.png)

# NFS Mount

```
mount -t nfs -o soft 10.0.1.253:/volume3/Downloadstation /mnt/nas/Downloadstation/
```

um das mounten beim Systemstart/Boot automatisiert durchzuführen:

```
nano /etc/fstab
```

```
10.0.1.253:/volume3/Downloadstation  /mnt/nas/Downloadstation  nfs  soft,rw,nolock,_netdev  0  0
```

prüfen mittels:

```
mount -a
```

```
mount | grep Downloadstation
```

sollte ergeben:

```
10.0.1.253:/volume3/Downloadstation on /mnt/nas/Downloadstation type nfs (rw,soft,nolock,_netdev)
```

und im Pfad /mnt/nas/Downloadstation sollt verfügbar sein.

# PHP updaten

## **Für Linux (Ubuntu/Debian) mit Apache**

### 1. **Alte PHP-Version anzeigen**

```
php -v
```

### 2. **Repositories hinzufügen (z. B. Ondřej Surý PPA)**

```
sudo apt update
sudo apt install software-properties-common
sudo add-apt-repository ppa:ondrej/php
sudo apt update
```

### 3. **Neue PHP-Version installieren (z. B. PHP 8.3)**

```
sudo apt install php8.3
```

Optional auch die benötigten Module:

```
sudo apt install php8.3-cli php8.3-common php8.3-mbstring php8.3-xml php8.3-curl php8.3-mysql
```

### 4. **Apache oder Nginx umstellen**

<div class="contain-inline-size rounded-md border-[0.5px] border-token-border-medium relative bg-token-sidebar-surface-primary" id="bkmrk-"><div class="sticky top-9"><div class="absolute end-0 bottom-0 flex h-9 items-center pe-2"><div class="bg-token-sidebar-surface-primary text-token-text-secondary dark:bg-token-main-surface-secondary flex items-center rounded-sm px-2 font-sans text-xs">  
</div></div></div><div class="overflow-y-auto p-4" dir="ltr"></div></div>```
sudo a2dismod php7.4 # alte Version deaktivieren
sudo a2enmod php8.3 # neue aktivieren
sudo systemctl restart apache2
```

# Docker auf einem Raspberry Pi installieren

**per SSH Verbindung aufnehmen (Putty)**

<div class="ad-mobile-group-1" id="bkmrk-"><div class="ad ad--sticky" id="bkmrk--1"></div></div>**Docker installieren in Shell**

`curl -fsSL https://get.Docker.com -o get-Docker.sh`

`sudo sh get-Docker.sh`

`sudo usermod -aG docker $USER`

`newgrp docker`

`docker run hello-world`

`Quelle: <a href="https://www.heise.de/news/Wie-man-Docker-auf-dem-Raspberry-Pi-in-15-Minuten-einrichtet-7524692.html" rel="noopener" target="_blank" title="Quelle:">https://www.heise.de/news/Wie-man-Docker-auf-dem-Raspberry-Pi-in-15-Minuten-einrichtet-7524692.html</a>`

# Docker Logs Befehl

```
# Alle laufenden Container anzeigen, um die Container-ID zu erhalten
$ docker container ls

# Logs eines Containers anzeigen
$ docker logs <container_id>

# Logs in Echtzeit streamen
$ docker logs -f <container_id>

# Die letzten 100 Zeilen der Logs anzeigen
$ docker logs --tail 100 <container_id>

# Logs ab einem bestimmten Zeitpunkt anzeigen
$ docker logs --since="2025-05-20T10:00:00" <container_id>

# Logs bis zu einem bestimmten Zeitpunkt anzeigen
$ docker logs --until="2025-05-20T12:00:00" <container_id>

# Logs mit Zeitstempeln anzeigen
$ docker logs --timestamps <container_id>
```

# CPU und Sensorwerte

### Temperatur und Frequenz zusammen

```
watch -n2 '
echo "=== CPU ==="
grep "cpu MHz" /proc/cpuinfo | head
echo
sensors
'
```

### Aktuelle Frequenz aller Kerne live anzeigen

```
watch -n1 "grep 'cpu MHz' /proc/cpuinfo"
```

Aktualisiert jede Sekunde.

---

### Kompakter Überblick

```
watch -n1 "grep 'cpu MHz' /proc/cpuinfo | awk '{print \$4}'"
```

<div class="relative w-full mt-4 mb-1" id="bkmrk--3"><div class=""><div class="contents"><div class="relative"><div class="h-full min-h-0 min-w-0"><div class="h-full min-h-0 min-w-0"><div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"><div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"><div class="relative"><div class=""><div class="relative z-0 flex max-w-full"><div class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr" id="bkmrk--4"></div></div></div></div></div></div></div></div><div class=""><div class=""></div></div></div></div></div></div>Zeigt nur die Frequenzen an.

---

### Min/Max und aktuelle Policy

```
cpupower frequency-info
```

<div class="relative w-full mt-4 mb-1" id="bkmrk--6"><div class=""><div class="contents"><div class="relative"><div class="h-full min-h-0 min-w-0"><div class="h-full min-h-0 min-w-0"><div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"><div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"><div class="relative"><div class=""><div class="relative z-0 flex max-w-full"><div class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr" id="bkmrk--7"></div></div></div></div></div></div></div></div><div class=""></div></div></div></div></div>und danach einige Stunden beobachten:

```
watch -n5 sensors
```

<div class="relative w-full mt-4 mb-1" id="bkmrk--8"><div class=""><div class="contents"><div class="relative"><div class="h-full min-h-0 min-w-0"><div class="h-full min-h-0 min-w-0"><div class="border border-token-border-light border-radius-3xl corner-superellipse/1.1 rounded-3xl"><div class="h-full w-full border-radius-3xl bg-token-bg-elevated-secondary corner-superellipse/1.1 overflow-clip rounded-3xl lxnfua_clipPathFallback"><div class="relative"><div class=""><div class="relative z-0 flex max-w-full"><div class="q9tKkq_viewer cm-editor z-10 light:cm-light dark:cm-light flex h-full w-full flex-col items-stretch ͼd ͼr" dir="ltr" id="bkmrk--9"></div></div></div></div></div></div></div></div><div class=""></div></div></div></div></div>Oft sinken die Lastspitzen dann von 70–80 °C auf 50–60 °C, wodurch der Lüfter deutlich seltener hochdreht.