Aus SatriaWiki
Wechseln zu: Navigation, Suche
K (Quellen)
K (Mounten)
(10 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 27: Zeile 27:
 
=== Mounten ===
 
=== Mounten ===
 
Angenommen, das Verzeichnis /mnt/HDD existiert bereits (und ist leer), dann wird das RAID array wie folgt (schreibgeschützt, -r) hier rein gemounted:
 
Angenommen, das Verzeichnis /mnt/HDD existiert bereits (und ist leer), dann wird das RAID array wie folgt (schreibgeschützt, -r) hier rein gemounted:
 
 
<pre>mount -r /dev/md5 /mnt/HDD</pre>
 
<pre>mount -r /dev/md5 /mnt/HDD</pre>
  
 
Nun kann man auf den Inhalt des RAID arrays im Verzeichnis /mnt/HDD zugreifen.
 
Nun kann man auf den Inhalt des RAID arrays im Verzeichnis /mnt/HDD zugreifen.
 +
 +
Für ein automatisches Mounten beim booten, editiet man die /etc/fstab und fügt z.B. für eine CIFS Freigabe Folgendes hinzu:
 +
<pre>//<NAS-IP>/nfs /mnt/remote_nfs cifs username=user,password=secret,file_mode=0777,dir_mode=0777 0 0</pre>
 +
 +
== Ein Dateisystem beschreibbar remounten ==
 +
sudo mount -o remount,rw /partition/identifier /mount/point
  
 
== Prozesse im Hintergrund ==
 
== Prozesse im Hintergrund ==
Zeile 39: Zeile 44:
  
 
==== Variante 1 ====
 
==== Variante 1 ====
<pre>nohup cp /target /destination &</pre>
+
<pre>nohup cp /source /target &</pre>
  
 
==== Variante 2 ====
 
==== Variante 2 ====
 
Ohne nohup soll das auch so gehen:
 
Ohne nohup soll das auch so gehen:
  
<pre>cp /target /destination & >/dev/null 2>/dev/null ; disown; </pre>
+
<pre>cp /source /target & >/dev/null 2>/dev/null ; disown; </pre>
 +
 
 +
==== Variante 3 ====
 +
Eine wohl noch bessere Möglichkeit ist <code>setsid</code>:
 +
 
 +
<pre>setsid cp /source /target</pre>
  
 
=== Bereits laufende Tasks ===
 
=== Bereits laufende Tasks ===
Zeile 54: Zeile 64:
 
disown
 
disown
 
</pre>
 
</pre>
 +
 +
== Shell-Tricks ==
 +
=== Dateinamen aus Pfad ermitteln ===
 +
Hierfür gibt es eine built-in Funktion:
 +
<pre>
 +
Pfad=/Test/Datei.Ext
 +
Dateiname=$(basename "$Pfad")
 +
</pre>
 +
liefert ''Datei.Ext''
 +
 +
=== Extension aus Dateinamen ermitteln ===
 +
<pre>
 +
Dateiname=Datei.Name.Ext
 +
Extension=${Dateiname##*.}
 +
</pre>
 +
liefert ''Ext''
  
 
== Absturz via Shell ==
 
== Absturz via Shell ==
Zeile 60: Zeile 86:
 
Wer die Zeile erklären kann, bitte posten :)
 
Wer die Zeile erklären kann, bitte posten :)
 
<pre>:(){ :|:& } ;:</pre>
 
<pre>:(){ :|:& } ;:</pre>
 +
 +
== WLAN konfigurieren ==
 +
(Bezieht sich auf Raspbian)
 +
 +
=== wpa_supplicant.conf ===
 +
Mit diesem Befehl fügt man WLAN Konfigurationen zum System hinzu:
 +
<pre>
 +
sudo -i
 +
wpa_passphrase "WLAN-NAME" "WLAN-PASSWORT" >> /etc/wpa_supplicant/wpa_supplicant.conf
 +
</pre>
 +
Der PSK wird unverschlüsselt und verschlüsselt in diese Datei geschrieben. Der (auskommentierte) unverschlüsselte Teil kann und sollte gelöscht werden.
 +
 +
Für versteckte WLANs muss dem eintrag noch ein <code>scan_ssid=1</code> hinzugefügt werden!
 +
 +
Außerdem sollte <code>country=DE</code> korrekt gesetzt werden.
 +
 +
Danach sieht die Datei dann in etwa so aus:
 +
<pre>
 +
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
 +
update_config=1
 +
country=DE
 +
 +
network={
 +
        ssid="WLAN_SSID"
 +
        scan_ssid=1
 +
        psk=3458f3thjg89dg89765t95jh4kttljgl934053ujlke83455
 +
}
 +
</pre>
 +
 +
=== /etc/network/interfaces ===
 +
Diese Datei solle ungefähr so aussehen:
 +
<pre>
 +
auto lo
 +
iface lo inet loopback
 +
 +
auto eth0
 +
iface eth0 inet dhcp
 +
 +
allow-hotplug wlan0
 +
iface wlan0 inet dhcp
 +
  wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
 +
</pre>
 +
Testweise mit dem WLAN verbinden kann man sich so:
 +
<pre>sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf</pre>
 +
 +
Nach einem Neustart sollte sich Raspbian aber dann von selbst verbinden.
 +
 +
WLAN Verbindung prüfen:
 +
<pre>sudo systemctl status wpa_supplicant@wlan0.service</pre>
 +
 +
=== mode DORMANT ===
 +
Mit
 +
<pre>ip l</pre>
 +
kann man sich den Status aller Netzwerkadapter anzeigen lassen. Es kann vorkommen, dass bei wlan0 "mode DORMANT" steht, was so etwas wie "inaktiv" bedeutet.
 +
 +
Aktiviern lässt es sich so:
 +
<pre>ip link set wlan0 mode default</pre>
  
 
== Quellen ==
 
== Quellen ==
Zeile 67: Zeile 150:
  
 
https://serverfault.com/questions/344509/ssh-run-command-in-background-disconnect
 
https://serverfault.com/questions/344509/ssh-run-command-in-background-disconnect
 +
 +
https://www.tecmint.com/keep-remote-ssh-sessions-running-after-disconnection/
 +
 +
https://www.elektronik-kompendium.de/sites/raspberry-pi/1912221.htm

Version vom 12. Februar 2021, 13:30 Uhr

Linux-Version ermitteln

Es gibt verschiedene Kommandos, die über die verwendete Linuxversion Aufschluss geben:

uname -a
cat /proc/version
cat /etc/*release

RAID Laufwerk(e) mounten

Gerätenamen ermitteln

Mit

cat /proc/partitions

und / oder mit

fdisk -l

kann herausgefunden werden, wie die Festplatte bzw. die Partition heißt, die man mounten möchte. Normalerweise heißen sie /dev/sda oder /dev/sdb, und die Partitionen dann /dev/sda1, /dev/sda2 usw.

Assemblen

RAID Partitionen müssen in Linux "assembled" werden. Auch eine einzelne (degraded) Partition. Das geht mit dem Kommando:

mdadm --assemble /dev/md5 /dev/sda3 --run

angenommen, man möchte die einzelne Partition sda3 in das device md5 assemblen. (Normalerweise würde man aber 2 Partitionen (bei RAID 1) zusammen in das device md5 assemblen!)

Mounten

Angenommen, das Verzeichnis /mnt/HDD existiert bereits (und ist leer), dann wird das RAID array wie folgt (schreibgeschützt, -r) hier rein gemounted:

mount -r /dev/md5 /mnt/HDD

Nun kann man auf den Inhalt des RAID arrays im Verzeichnis /mnt/HDD zugreifen.

Für ein automatisches Mounten beim booten, editiet man die /etc/fstab und fügt z.B. für eine CIFS Freigabe Folgendes hinzu:

//<NAS-IP>/nfs /mnt/remote_nfs cifs username=user,password=secret,file_mode=0777,dir_mode=0777 0 0

Ein Dateisystem beschreibbar remounten

sudo mount -o remount,rw /partition/identifier /mount/point

Prozesse im Hintergrund

Um auch unter SSH vom Multitasking zu profitieren oder sich sogar ausloggen zu können (SSH disconnect), gibt es verschiedene Möglichkeiten.

Einen Task starten

Wenn man ein Kommando ausführt, von dem man schon vorher weiß, dass es unabhängig von der session laufen soll, gibt es den Befehl nohup, der das zu startende Programm im Hintergrund ausführt. Ein Kopiervorgang z.B. würde so gestartet werden:

Variante 1

nohup cp /source /target &

Variante 2

Ohne nohup soll das auch so gehen:

cp /source /target & >/dev/null 2>/dev/null ; disown; 

Variante 3

Eine wohl noch bessere Möglichkeit ist setsid:

setsid cp /source /target

Bereits laufende Tasks

Ein Task, der bereits läuft und die SSH "blockiert", weil auf das Beenden gewartet wird, kann wie folgt in den Hintergrund verschoben und unabhängig von der SSH session gemacht werden:

Ctrl.+Z
bg
disown

Shell-Tricks

Dateinamen aus Pfad ermitteln

Hierfür gibt es eine built-in Funktion:

Pfad=/Test/Datei.Ext
Dateiname=$(basename "$Pfad")

liefert Datei.Ext

Extension aus Dateinamen ermitteln

Dateiname=Datei.Name.Ext
Extension=${Dateiname##*.}

liefert Ext

Absturz via Shell

Gitb man folgenden Befehls-String in eine Linux-Console ein, friert das System augenblicklich ein. Es kann durchaus auch eine Console im Fenster sein.

Wer die Zeile erklären kann, bitte posten :)

:(){ :|:& } ;:

WLAN konfigurieren

(Bezieht sich auf Raspbian)

wpa_supplicant.conf

Mit diesem Befehl fügt man WLAN Konfigurationen zum System hinzu:

sudo -i
wpa_passphrase "WLAN-NAME" "WLAN-PASSWORT" >> /etc/wpa_supplicant/wpa_supplicant.conf

Der PSK wird unverschlüsselt und verschlüsselt in diese Datei geschrieben. Der (auskommentierte) unverschlüsselte Teil kann und sollte gelöscht werden.

Für versteckte WLANs muss dem eintrag noch ein scan_ssid=1 hinzugefügt werden!

Außerdem sollte country=DE korrekt gesetzt werden.

Danach sieht die Datei dann in etwa so aus:

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=DE

network={
        ssid="WLAN_SSID"
        scan_ssid=1
        psk=3458f3thjg89dg89765t95jh4kttljgl934053ujlke83455
}

/etc/network/interfaces

Diese Datei solle ungefähr so aussehen:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

allow-hotplug wlan0
iface wlan0 inet dhcp
   wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Testweise mit dem WLAN verbinden kann man sich so:

sudo wpa_supplicant -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf

Nach einem Neustart sollte sich Raspbian aber dann von selbst verbinden.

WLAN Verbindung prüfen:

sudo systemctl status wpa_supplicant@wlan0.service

mode DORMANT

Mit

ip l

kann man sich den Status aller Netzwerkadapter anzeigen lassen. Es kann vorkommen, dass bei wlan0 "mode DORMANT" steht, was so etwas wie "inaktiv" bedeutet.

Aktiviern lässt es sich so:

ip link set wlan0 mode default

Quellen

https://homeforum.zyxel.com/discussion/679/new-nas-old-hdds-how-to

https://askubuntu.com/questions/8653/how-to-keep-processes-running-after-ending-ssh-session

https://serverfault.com/questions/344509/ssh-run-command-in-background-disconnect

https://www.tecmint.com/keep-remote-ssh-sessions-running-after-disconnection/

https://www.elektronik-kompendium.de/sites/raspberry-pi/1912221.htm