lut 9 2007

rsync i “Bad file descriptor (9)” na freeBSD

Postanowiłem przybliżyć nieco problem związany z rsync.
Podczas synchronizacji widać oraz w logach widzimy błędy identyczne do następujących

[3193] rsync: readlink “jakis_plik” (in intranet) failed: Bad file descriptor (9)
[3193] rsync: recv_generator: failed to stat “jakis_plik” (in intranet): Bad file descriptor (9)
[3197] rsync: stat “jakis_plik” (in intranet) failed: Bad file descriptor (9)
[3197] rsync error: some files could not be transferred (code 23) at main.c(977) [sender=2.6.9]

Czasami nie zawsze pojawiają się tego typu błędy, aczkolwiek administrator widząc readlink … Bad file descriptor (9) zastanawia się czy przypadkiem nie ma uszkodzonego dysku i czy nie jest to błąd odczytu pliku…

W pewnym sensie jest to prawda, bowiem przy konfigurowaniu rsynca należy pamiętać aby system plików (filesystem type) na obu serwerach, a dokładniej na partycjach (źródłowej i docelowej) był dokładnie taki sam.

Mój problem polegał na tym, że zamontowana partycja na serwerze źródłowym posiadała likuksowy system plików ext2fs (subtype=131), a partycja, a raczej rsyncowy moduł docelowy – system plików freebsd (subtype=165).

Stąd te błędy. Korekte systemu plików mozna zrobić “w locie” bez konieczności restartowania serwera, a co ważniejsze – utraty danych (przynajmniej u mnie wszystko pozostało bez zmian).
Dla pewności proponowałbym zrobić uprzednio kopię zapasową danych znajdujących się na partycji, której chcemy zmienić system plików –> przezorny zawsze ubezpieczony.

Zmianę systemu plików dokonujemy następująco:

sysinstall –> configure –> fdisk

Po zamianie ext2fs –> freebsd, wszystko śmiga jak należy i zapominamy o błędach typu bad file descriptor.


lut 8 2007

mc i problem z subshell_pty

Od pewnego czasu (w sumie nie wiem jak to się stało), przy uruchamianiu Midnight Commandera dostaję następujący komunikat:

freeBSD# mc
read (subshell_pty…): No such file or directory (2)

Co jest grane?
Otóż dziwnym trafem ustawienia aplikacji mówią nam, że jest problem z tzw. subshell (podpowłoka).
Error i brak możliwości usuchomienia programu występuje nawet po reinstalacji mc.
Najszybszym rozwiązaniem jest uruchamianie Midnight Commandera bez subshella w następujący sposób:

mc -u

Innym rozwiązaniem jest ponowne skompilowanie mc bez shubshella.
Polecam również manuala:

man mc