linux

Stale NFS file handle

Ha Windows alatt megpróbálunk törölni egy olyan fájlt amit valamelyik másik program még használ, akkor hibaüzenetet kapunk, a fájl pedig marad a helyén. Linux/Unix alatt a fájl eltűnik a fájllistából, de ténylegesen csak akkor törlődik amikor az utolsó azt használó program is bezárta a fájlt.

NFS-en ez másképp van: a fájl rögtön törlődik. Ha valaki épp használja akkor a következő olvasásnál IOException-t fog kapni a fenti, Stale NFS file handle hibaüzenettel.

Forrás: Lucene in Action, 2nd edition

Ékezetek eltávolítása fájlnevekből

Alább egy rövid szkript, ami képes eltávolítani a fájlok neveiből az ékezeteket. Pontosabban kiírja az ehhez szükséges mv parancsokat a kimenetre.

Elboldogul a könyvtárakkal is, és azzal az esettel is, amikor több ékezetes könyvtár van egy útvonalon.

#!/bin/bash

# Ékezettelenítő, v1.0
# palacsint, http://palacsint.hu/, 2010. 08. 28.

remove_ekezet() {
    echo "$@" | sed y/áéíóöőúüűÁÉÍÓÖŐÚÜŰ/aeiooouuuAEIOOOUUU/
}

DIR=.
if [ $# -eq 1 ]
then
    DIR=$1
fi

find $DIR -type f -or -type d | while read SOURCE
do
    DEST=$(remove_ekezet "$SOURCE")

    SOURCE_BASENAME=$(basename "$SOURCE")
    DEST_BASENAME=$(basename "$DEST")

    if [ "$SOURCE_BASENAME" = "$DEST_BASENAME" ]
    then
        # a fajl neve nem valtozik
        continue
    fi

    SOURCE_DIRNAME=$(dirname "$SOURCE")

    # ÁÁÁ/ÉÉÉ/ÍÍÍ eset kezelése
    TRANSLATED_SOURCE_DIRNAME=$(remove_ekezet "$SOURCE_DIRNAME")
    CURRENT_SOURCE="${TRANSLATED_SOURCE_DIRNAME}/${SOURCE_BASENAME}"

    echo "mv \"${CURRENT_SOURCE}\" \"$DEST\""
done

Letöltés: ekezettelenito.sh

Fájlok épségének ellenőrzése .torrent fájl alapján

$ cfv -T -f checkthis.torrent

A futtatáshoz a cfv mellett a bittorrent vagy a bittornado csomagra is szükség van.

Azt érdemes még tudni, hogy a torrent fájlban nem fájlonként van egy-egy ellenőrzőösszeg (SHA1 egyébként), hanem csomagonként. Egy csomagba több fájl bájtjai is belelóghatnak. Így például ha egy kis fájl egyetlen bitje hibás, akkor emiatt valószínűleg több fájlt is hibásnak fog feltüntetni a cfv, mert a hibás bitet tartalmazó csomagba valószínűleg belelógnak más fájlok is.

Egy hasznos program

Kicsit megdöbbentem, amikor valamelyik nap észrevettem a kb. egy éve telepített Debian GNOME Rendszereszközök menüjében a következő menüpont:

A Floppy-formázó nevű program menüpontja a GNOME menüjében

Sose lehet tudni, mikor van rá szükség így 2010 táján... Már nem is emlékszem mikor volt utoljára floppy meghajtóm. Egyébként a gnome-utils csomag része, gfloppy néven.

Lesz fsck a következő újraindításnál?

Épp összedobtam a fenti problémára egy shell szkriptet, aztán találtam egy kész megoldást: showfsck. A karmic-os Ubuntu csomag működik Debian alatt is. Egyébkén ez is csak egy egyszerű shell szkript, a csomagból kiszedve valószínűleg más rendszerek alatt is gond nélkül futtatható.

Szerintem érdemes berakni crontabba, így minden újraindítás után kapunk egy levelet az aktuális helyzetről.

# cat /etc/cron.d/showfsck 
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

@reboot         root    /usr/sbin/showfsck

KOrganizer -> Evolution migráció

Fájl menü, Importálás, Előre, Egyetlen fájl importálása, Előre, Fájlnév: ~/.kde/share/apps/korganizer/std.ics, Megnyitás, Fájltípus: iCalendar fájlok, Előre, Előre, Importálás.

Ezen kívül a ~/.kde/share/apps/korganizer könyvtárban még volt néhány üres könyvtár. Ezekkel nem foglalkoztam. Elképzelhető, hogy csak valamilyen általam nem használt funkció miatt voltak csak üresek, és adott esetben ezeket külön kell migrálni.

SMART adatok rendszeres naplózása

A korábbi winchesterlistás bejegyzés továbbfejlesztett változata a következő két szkript. Az első a SMART értékeket fájlba naplózza, a második pedig e-mailben küldi őket. Debian alatt a /etc/cron.daily, cron.weekly, stb. mappába megfelelő helyük van.

smartlog:

#!/bin/bash
# smart data log script by palacsint, v1.0
# http://palacsint.hu/
# 2009. 11. 18.

DATE=$(date +%Y-%m-%d)
LOGDIR=/var/log/smart/
SMARTCTL=/usr/sbin/smartctl

if [ ! -x $SMARTCTL ]
then
    echo "error: $SMARTCTL not found"
    exit 1;
fi

#grep 0 /sys/block/{sd*,hd*}/removable | awk -F"/" '{print $4}' | while read DEVICE
grep 0 /sys/block/sd*/removable | awk -F"/" '{print $4}' | while read DEVICE
do
    DEVFILE=/dev/${DEVICE}
    if [ ! -b $DEVFILE ]
    then
	echo "${DEVFILE}: is not a block file"
	continue;
    fi

    LOGFILE="${LOGDIR}${DATE}-${DEVICE}.log"
    $SMARTCTL -a -d ata /dev/${DEVICE} > $LOGFILE
done

smartmail:

#!/bin/bash

# smart data mail script by palacsint, v1.0
# http://palacsint.hu
# 2009. 11. 18.

DATE=$(date +%Y-%m-%d)
SMARTCTL=/usr/sbin/smartctl
MAILADDR="miki@localhost"

if [ ! -x $SMARTCTL ]
then
    echo "error: $SMARTCTL not found"
    exit 1;
fi

#grep 0 /sys/block/{sd*,hd*}/removable | awk -F"/" '{print $4}' | while read DEVICE
grep 0 /sys/block/{sd*}/removable | awk -F"/" '{print $4}' | while read DEVICE
do
    DEVFILE=/dev/${DEVICE}
    if [ ! -b $DEVFILE ]
    then
	echo "${DEVFILE}: is not a block file"
	continue;
    fi

    $SMARTCTL -a -d ata /dev/${DEVICE} | mail -s "smartctl - ${DEVICE} - ${DATE}" $MAILADDR
done

Középtájon van egy kikommentezett sor, ami akkor hasznos, ha nem csak sd* lemezek vannak a rendszerben.

Szabad Szoftver Konferencia és Kiállítás 2009

Szintén pontokba szedve pár gondolat:

  • Ami eddig elkerülte a figyelmem: FLOSSZine. Magyar.
  • dd if=/dev/zero of=testfile bs=1 count=1 seek=1048576k - Így pillanatok alatt lesz egy 1 gigabájtos fájlunk, tele nullákkal, az ext3 ritka fájl tulajdonságának köszönhetően.
  • „állatkert ábra” – tagfelhő
  • Érdemes lehet az adatokat JSON-ban, kicsomagolva tárolni a gyorsabb olvasás végett.
  • Egy egész jó ötlet: http://fixme.hu/uds
  • Az LVM-et lehet snapshot-olni. Mentésekhez egész kényelmes lehet.

Akadozó stream-ek mentése

Egy apró shell szkript, amely mindenféle, időnként megszakadó stream felvételére használható.

#!/bin/bash

URL=$1
while true
do
    DATE=`date +%Y%m%d_%H_%M_%S_%N`
    mplayer -dumpstream "$URL" -dumpfile ${DATE}.dump
    sleep 2
done

A kimenete elég sok fájl lesz, de cserébe akár ssh-n, X nélkül is futtatható.

top, ps: használt processzor(mag) megjelenítése

Ha nincs kedved man-t olvasni, akkor a topban a következő gombokat kell megnyomni: f, j, enter.
Több proci esetén érdemes az 1-est is nyomkodni.

Ezután a W megnyomásával elmenthető a ~/.toprc fájlba az aktuális konfiguráció, így legközelebb már a fentieket sem kell bepötyögni.

Ugyanez ps-sel a következő:

ps -FA

A használt processzor azonosítóját a PSR oszlop tartalmazza.

Tartalom átvétel