Linux/Tipps/Allgemein: Unterschied zwischen den Versionen
→rsync Fehler 24 (some files vanished before they could be transferred)
Thomas (Diskussion | Beiträge) |
Thomas (Diskussion | Beiträge) |
||
(29 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
Zeile 112: | Zeile 112: | ||
====Wer hat offene Dateien in einem Verzeichnis?==== | ====Wer hat offene Dateien in einem Verzeichnis?==== | ||
lsof +D /dir | lsof +D /dir | ||
====Anzahl der offenen Dateien==== | |||
lsof | awk '{ print $2 " " $1; }' | sort -rn | uniq -c | sort -rn | head -20 | |||
====Wie findet man zum Löschen vorgemerkte (aber noch offene) Dateien?==== | ====Wie findet man zum Löschen vorgemerkte (aber noch offene) Dateien?==== | ||
Zeile 218: | Zeile 221: | ||
Optional Devices und tmp der aktuellen Installation binden: | Optional Devices und tmp der aktuellen Installation binden: | ||
mount --bind /dev/ <anderes Root-Verzeichnis>/dev/ | mount --bind /dev/ <anderes Root-Verzeichnis>/dev/ | ||
mount --bind /dev/pts <anderes Root-Verzeichnis>/dev/pts | |||
mount --bind /tmp/ <anderes Root-Verzeichnis>/tmp/ | mount --bind /tmp/ <anderes Root-Verzeichnis>/tmp/ | ||
Dann: | Dann: | ||
Zeile 229: | Zeile 233: | ||
export HOME=/root | export HOME=/root | ||
export TERM=xterm | export TERM=xterm | ||
Optional proc, sysfs und usbfs mounten (proc muss z.B. gemountet werden zum Kernel, Java oder htop compilieren): | Optional /dev/shm, proc, sysfs und usbfs mounten (proc muss z.B. gemountet werden zum Kernel, Java oder htop compilieren, /dev/shm für Python): | ||
mount -t tmpfs none /dev/shm | |||
mount -t proc proc /proc | mount -t proc proc /proc | ||
mount -t sysfs sys /sys | mount -t sysfs sys /sys | ||
mount -t usbfs usbfs /proc/bus/usb | mount -t usbfs usbfs /proc/bus/usb | ||
Vor dem Verlassen des chroots sollte man diese Verzeichnisse wieder unmounten. | |||
====NFS-Optionen herausfinden==== | ====NFS-Optionen herausfinden==== | ||
Zeile 292: | Zeile 298: | ||
'''/etc/bash/bashrc''': | '''/etc/bash/bashrc''': | ||
export HISTTIMEFORMAT="%F %T " | export HISTTIMEFORMAT="%F %T " | ||
====JPEG-Bilder drehen entsprechend den EXIF-Informationen==== | |||
jhead -autorot *.jpg | |||
oder | |||
exifautotran *.jpg | |||
Danach noch das Filedatum wieder auf das Aufnahmedatum setzen: | |||
exiftool '-DateTimeOriginal>FileModifyDate' <DIRECTORY> | |||
====XFS defragmentieren==== | |||
Abfrage: | |||
xfs_db -c frag -r /device | |||
Defragmentieren: | |||
xfs_fsr -v /mountpoint | |||
====Externe USB-Festplatte fährt von selbst immer wieder hoch==== | |||
Das kann an '''udisks''' liegen. | |||
'''/etc/udev/rules.d/80-udisks.rules''': | |||
KERNEL=="sd*[!0-9]", ATTR{removable}=="0", ENV{ID_BUS}=="usb", ENV{DEVTYPE}=="disk", ENV{UDISKS_DISABLE_POLLING}="1", ENV{UDISKS_IGNORE}="1", ENV{ID_ATA_FEATURE_SET_SMART_ENABLED}="0" | |||
Wenn das nicht reicht, dann könnte es noch an KDE liegen. | |||
'''/etc/portage/package.use''': | |||
kde-base/kdelibs -udisks | |||
Dann: | |||
emerge -1 kdelibs | |||
====ALSA Audioausgabe auf 2 Geräte gleichzeitig==== | |||
Quelle: http://www.avsforum.com/t/1269302/simultaneous-multiple-outputs-with-alsa#post_19060197 | |||
Beispiel mit Intel Audio Onboard (ASRock P67 Performance) und HDMI-Audio (5.1) über Nvidia-Grafikkarte (Zotac GeForce GT 630 ZONE Edition). | |||
'''~/.asoundrc''': | |||
pcm.!default { | |||
type plug | |||
slave { | |||
pcm multi | |||
} | |||
ttable.0.0 1.0 | |||
ttable.1.1 1.0 | |||
ttable.0.2 1.0 | |||
ttable.1.3 1.0 | |||
ttable.2.4 1.0 | |||
ttable.3.5 1.0 | |||
ttable.4.6 1.0 | |||
ttable.5.7 1.0 | |||
} | |||
pcm.multi { | |||
type multi | |||
slaves.a.pcm "hw:0,0" | |||
slaves.a.channels 2 | |||
slaves.b.pcm "hw:1,3" | |||
slaves.b.channels 6 | |||
bindings.0.slave a | |||
bindings.0.channel 0 | |||
bindings.1.slave a | |||
bindings.1.channel 1 | |||
bindings.2.slave b | |||
bindings.2.channel 0 | |||
bindings.3.slave b | |||
bindings.3.channel 1 | |||
bindings.4.slave b | |||
bindings.4.channel 2 | |||
bindings.5.slave b | |||
bindings.5.channel 3 | |||
bindings.6.slave b | |||
bindings.6.channel 4 | |||
bindings.7.slave b | |||
bindings.7.channel 5 | |||
} | |||
ctl.!default { | |||
type hw | |||
card 0 | |||
} | |||
Stereo-Ausgabe auf Onboard und Nvidia 3: | |||
pcm.!default { | |||
type plug | |||
slave { | |||
pcm multi | |||
} | |||
ttable.0.0 1.0 | |||
ttable.1.1 1.0 | |||
ttable.0.2 1.0 | |||
ttable.1.3 1.0 | |||
} | |||
pcm.multi { | |||
type multi | |||
slaves.a.pcm "hw:0,0" | |||
slaves.a.channels 2 | |||
slaves.b.pcm "hw:1,3" | |||
slaves.b.channels 2 | |||
bindings.0.slave a | |||
bindings.0.channel 0 | |||
bindings.1.slave a | |||
bindings.1.channel 1 | |||
bindings.2.slave b | |||
bindings.2.channel 0 | |||
bindings.3.slave b | |||
bindings.3.channel 1 | |||
} | |||
ctl.!default { | |||
type hw | |||
card 0 | |||
} | |||
Stereo-Ausgabe auf Onboard und Nvidia 3 '''und''' 7: | |||
pcm.!default { | |||
type route; | |||
slave.pcm "multi"; | |||
slave.channels 6; | |||
ttable.0.0 1.0; | |||
ttable.1.1 1.0; | |||
ttable.0.2 1.0; | |||
ttable.1.3 1.0; | |||
ttable.0.4 1.0; | |||
ttable.1.5 1.0; | |||
} | |||
pcm.multi { | |||
type multi | |||
slaves.a.pcm "hw:0,0" | |||
slaves.a.channels 2 | |||
slaves.b.pcm "hw:1,3" | |||
slaves.b.channels 2 | |||
slaves.c.pcm "hw:1,7" | |||
slaves.c.channels 2 | |||
bindings.0.slave a | |||
bindings.0.channel 0 | |||
bindings.1.slave a | |||
bindings.1.channel 1 | |||
bindings.2.slave b | |||
bindings.2.channel 0 | |||
bindings.3.slave b | |||
bindings.3.channel 1 | |||
bindings.4.slave c | |||
bindings.4.channel 0 | |||
bindings.5.slave c | |||
bindings.5.channel 1 | |||
} | |||
ctl.!default { | |||
type hw | |||
card 0 | |||
} | |||
KDE4 kommt nicht damit klar, den Sound auf 2 Soundkarten zu schicken (klingt verzerrt). Für den Fall kann man mehrere ALSA-Devices einrichten und KDE auf eines ausgeben lassen, das nur ein Hardware-Device verwendet. In diesem Beispiel ist '''ALSA:default''' nur eine Soundkarte und '''ALSA:all''' sind alle Soundkarten. Letzteres verwendet man dann bei Programmen, die damit umgehen können (z.B. MythTV). | |||
pcm.!default { | |||
type hw | |||
card 0 | |||
device 0 | |||
} | |||
pcm.all { | |||
type route; | |||
slave.pcm "multi"; | |||
slave.channels 6; | |||
ttable.0.0 1.0; | |||
ttable.1.1 1.0; | |||
ttable.0.2 1.0; | |||
ttable.1.3 1.0; | |||
ttable.0.4 1.0; | |||
ttable.1.5 1.0; | |||
} | |||
pcm.multi { | |||
type multi | |||
slaves.a.pcm "hw:0,0" | |||
slaves.a.channels 2 | |||
slaves.b.pcm "hw:1,3" | |||
slaves.b.channels 2 | |||
slaves.c.pcm "hw:1,7" | |||
slaves.c.channels 2 | |||
bindings.0.slave a | |||
bindings.0.channel 0 | |||
bindings.1.slave a | |||
bindings.1.channel 1 | |||
bindings.2.slave b | |||
bindings.2.channel 0 | |||
bindings.3.slave b | |||
bindings.3.channel 1 | |||
bindings.4.slave c | |||
bindings.4.channel 0 | |||
bindings.5.slave c | |||
bindings.5.channel 1 | |||
} | |||
ctl.!default { | |||
type hw | |||
card 0 | |||
} | |||
Alternative mit Verwendung der Alsa Devicenamen statt Hardwaredevices (wurde benötigt bei einer Asus Grafikkarte, '''aplay -L''' listet die Devicenamen): | |||
pcm.all { | |||
type route; | |||
slave.pcm "multi"; | |||
slave.channels 4; | |||
ttable.0.0 1.0; | |||
ttable.1.1 1.0; | |||
ttable.0.2 1.0; | |||
ttable.1.3 1.0; | |||
} | |||
pcm.multi { | |||
type multi | |||
slaves.a.pcm "hw:0,0" | |||
slaves.a.channels 2 | |||
slaves.b.pcm "hdmi:CARD=NVidia,DEV=3" | |||
slaves.b.channels 2 | |||
bindings.0.slave a | |||
bindings.0.channel 0 | |||
bindings.1.slave a | |||
bindings.1.channel 1 | |||
bindings.2.slave b | |||
bindings.2.channel 0 | |||
bindings.3.slave b | |||
bindings.3.channel 1 | |||
} | |||
====X11 Forwarding==== | |||
Auf dem Server (auf dem die Applikation läuft) die sshd config anpassen:<br> | |||
'''vi /etc/ssh/sshd_config''' | |||
X11Forwarding yes | |||
Dann: | |||
/etc/init.d/sshd restart | |||
Auf dem Client (auf dem die GUI angezeigt werden soll): | |||
ssh -Y user@server <Applikation> | |||
====Private ID3-Tags von MP3-Dateien entfernen==== | |||
eyeD3 --remove-frame PRIV <Datei> | |||
====Alle Dateien ohne Besitzer oder ohne Gruppe finden==== | |||
find / -nouser | |||
find / -nogroup | |||
====MySQL komplett sichern==== | |||
Backup: | |||
mysqldump -u root -p --all-databases --skip-lock-tables > alldb.sql | |||
Restore: | |||
mysql -u root -p < alldb.sql | |||
====Datumswerte in JPEG-Bildern entfernen==== | |||
Alle Werte abfragen: | |||
exiftool -a -s -G -time:all file.jpg | |||
Alle Werte entfernen: | |||
exiftool -alldates= -gpsdatestamp= -gpstimestamp= -MetadataDate= file.jpg | |||
====rsync Fehler 24 (some files vanished before they could be transferred)==== | |||
Anscheinend ist die einzige Abhilfe ein Wrapper-Script: | |||
#!/bin/sh | |||
rsync "$@" | |||
e=$? | |||
if test $e = 24; then | |||
exit 0 | |||
fi | |||
exit $e | |||
====Applikationen öffnen Links in Firefox, obwohl Chrome als Standardbrowser eingestellt ist==== | |||
xdg-mime default google-chrome.desktop x-scheme-handler/http | |||
xdg-mime default google-chrome.desktop x-scheme-handler/https |