2005.02_Sztuczki i kruczki_[TipsTriks].pdf
(
184 KB
)
Pobierz
439130243 UNPDF
dla początkujących
Sztuczki i kruczki
Grzegorz Niewęgłowski
Niespodziewane
“zawieszanie się” terminali?
Czy czasem zauważasz, że terminal tek-
stowy (np.
XTerm
lub zwykły linuksowy
terminal VGA) przestaje reagować? Zupeł-
nie, jakby został zamrożony, nie przyjmuje
żadnych naciśnięć klawiszy, nie aktualizu-
je wyświetlanego tekstu, a jedynym wyj-
ściem jest wyłączenie go? Jeśli tak, to być
może przypadkiem nacisnąłeś [
Ctrl
]+[
s
].
Aby odblokować terminal, trzeba naci-
snąć [
Ctrl
]+[
q
]. Takie pomyłki przytra-
fiają mi się stosunkowo często, więc
całkiem wyłączyłem swoim termina-
lom możliwość reagowania na [
Ctrl
]+
[
s
]. Można to zrobić wywołując polecenie
stty -ixon
, a jeśli dopiszesz je do plików
konfiguracyjnych swojej powłoki, np. do
~/.bashrc
czy
~/.bash_profile
, to unik-
niesz tego na stałe.
■
ją, aby wiersze tekstu były oddziela-
ne dwubajtową sekwencją <CR><LF>,
natomiast Linux zadowala się samym
<LF>. Linuksowe pliki bez konwer-
sji łatwo rozpoznać pod Windows
– wszystkie wiersze zwykle zosta-
ną sklejone w pojedynczy, długi ciąg,
a to skutecznie utrudnia czytanie
takiego tekstu.
Wiele edytorów potrafi na życze-
nie użytkownika konwertować teksty
między tymi standardami (np. w
VIM-ie
można zrobić to przez
:set fileformat
=unix
lub
:set fileformat=dos
przed
zapisem pliku), ale istnieją też (jak
przy kodowaniach) dedykowane pro-
gramy do tego celu. W razie potrzeby
(choćby przy obróbce wsadowej, gdy
trzeba konwertować wiele plików,
a okazuje się, że nie ma pod ręką
gotowego narzędzia) można wykorzy-
stać
SED-a
:
Łatwo jest zmienić nazwę jedne-
mu plikowi. Nawet dziesięć plików
można przemianować ręcznie. Ale gdy
są ich setki, na dodatek rozproszone
po całym drzewie katalogów? Można
wtedy próbować stworzyć jakiś auto-
mat działający rekursywnie, oparty na
pętlach
for..do..done
.
Można również
próbować połączyć
find, iconv
i
mv
,
ale takie rozwiązanie będzie pewnie
dalekie od ideału wydajności i obsłu-
gi błędów.
Rozwiązaniem może być skrypt
convmv
. Zwykle nie wchodzi on w skład
linuksowych dystrybucji, ale można go
łatwo pobrać z
http://j3e.de/linux/
convmv/
. Polecenie
convmv -r -i -f
utf-8 -t iso8859-2 –notest ~/katalog
spowoduje rekursywne przejście przez
~/katalog
, wyszukując nazwy plików
w
utf-8
i konwertując je na
iso8859-2
.
Opcja
-i
włącza dodatkowo tryb
interaktywny, w którym użytkownik
widzi dokładnie, które pliki będzie
próbował konwertować
convmv
. Skrypt
jest dobrze przygotowany na różne
sytuacje, co widać w obsługiwanych
przez niego opcjach. Dzięki niemu
konwersja nazw całego drzewka
plików nie stanowi już problemu,
a na pewno jest bezpieczniejsza niż
używanie napisanych na szybko skryp-
tów opartych na
iconv
i mv.
■
Konwertowanie strony kodowej
plików tekstowych
Istnieje sporo specjalnych narzędzi słu-
żących do konwertowania tekstu między
różnymi kodowaniami. Zamiast instalo-
wać do tego celu kolejny pakiet, można
posłużyć się poleceniem
iconv
. To stan-
dardowa część pakietu
Glibc
, więc powi-
nien znajdować się na każdym współ-
czesnym systemie linuksowym. Aby
przekonwertować tekst w
iso8859-2
do unikodowego
utf-8
, można użyć
takiego polecenia:
# sed 's:$:\r:' -i plik_unix.txt
# sed -e 's:\r::' -i plik_unix.txt
Pierwsze polecenie zamienia końce
znaków w
plik
_
unix.txt
na coś czytel-
nego pod Windows, a drugie zamie-
nia z powrotem końce linii na format
uniksowy (czyli powraca do stanu
wyjścia).
■
Konwertowanie kodowań nazw
plików
Rzadziej potrzebną funkcją jest kon-
wertowanie samych nazw plików, ale
przez to potrafi być ono dużo bardziej
kłopotliwe. Problem pojawia się przy
przestawianiu systemu z
iso8859-2
na
utf-8
, albo gdy używa się glo-
balnie iso8859-2, a jakaś nowomod-
na aplikacja (np.
ROX-Filer
) uparcie
tworzy pliki o nazwach zakodowanych
w
utf-8
... lub w innych sytuacjach, np.
przy niedbałym kopiowaniu plików
między systemami plików, używający-
mi różnych standardów kodowania.
# iconv -f iso8859-2 -t utf-8
S
<plik_w_iso.txt >plik_w_utf.txt
Cykliczne uruchamianie
polecenia w trybie tekstowym
Przydatnym (choć często niezna-
nym) poleceniem jest
watch
z pakie-
tu
ProcPS
. Pozwala on w regularnych
odstępach czasu (np. co sekundę) uru-
chamiać jakieś polecenie. Dzięki temu
można przykładowo obserwować
stale aktualizowaną zawartość jakie-
goś pliku z
/proc
lub wyjście pole-
cenia
ifconfig
. Najprostsze zastoso-
wanie to:
Windowsowe
cp1250
konwertuje się na
iso8859-2
analogicznie:
# iconv -f cp1250 -t iso8859-2
S
<plik_windows.txt >plik_iso.txt
Spis obsługiwanych kodowań można
obejrzeć przez
iconv –list
.
Pozostała tylko kwestia znaków
końca linii – DOS/Windows wymaga-
# watch ifconfig eth0
60
luty 2005
sztuczki i kruczki
dla początkujących
Ale to nie koniec możliwości. Można
np. spowolnić czas odświeżania do 1
minuty:
Jak odczytać temperaturę
procesora pod Linuksem?
Problem jest bardziej złożony – jak
w ogóle odczytać czujniki z płyty
głównej? Większość płyt ma wbudo-
wane stosowne czujniki monitorujące
parametry pracy – szalenie przydatne,
gdy mamy zamiar przetaktować proce-
sor lub podejrzewamy, że niestabilna
praca komputera to wina słabego wen-
tylatora lub przeciążonego zasilacza.
Nowe płyty główne często udostęp-
niają te dane jako część implementacji
ACPI, a Linux (w wersjach 2.6.x) umie je
odczytać i udostępnić przez pliki w
/proc
lub
/sys
. Wtedy trzeba je jakoś pokazać
użytkownikowi – dobrą nakładką może
być
GKrellM
, który, obok zintegrowa-
nych wykresów pokazujących obciąże-
nie procesora i sieci, umie podłączyć się
pod strumień informacji z czujników tem-
peratury.
Jeśli płyta nie obsługuje ACPI lub
obsługuje tylko szczątkowo, rozwiąza-
niem może być
pakiet
lm_sensors
– to
rozbudowany zestaw modułów jądra,
pozwalający odczytywać różne infor-
macje z płyty głównej, takie jak napię-
cia, obroty wiatraków czy temperatu-
ra. Niestety, pakiet ten może być kło-
potliwy w konfiguracji, co przy bogac-
twie chipsetów odczytujących tempe-
raturę utrudnia jego poprawne użycie.
Jeśli
lm_sensors
wchodzi w skład dys-
trybucji, której używasz, to dobrze
– moduły są już skompilowane, więc
wystarczy załadować ich odpowiedni
zestaw (pomocne będzie polecenie
sen-
sors-detect
, podpowiadające, jaka elek-
tronika została wykryta w komputerze),
a potem odczytywać dane poleceniem
sensors
(lub za pomocą
GkrellM
, gdyż
współpracuje on również z
lm_sen-
sors
). Pakiet
lm_sensors
jest stopniowo
integrowany w źródła jądra 2.6.x, ale
sądząc po obecnym postępie, jeszcze
długo potrwa zanim zostanie całkowi-
cie wchłonięty.
Jeśli nie mamy dojścia do goto-
wych paczek z
lm_sensors
, a nie
chcemy kłopotać się kompilowaniem
i instalowaniem go samodzielnie, to
możemy użyć programu
xmbmon
– to proste narzędzie bez żadnych
niestandardowych zależności, które
nie wymaga instalowania modułów
jądra ani tworzenia plików konfi-
guracyjnych. Ponadto, potrafi auto-
matycznie wykryć i obsłużyć całkiem
obszerny zestaw płyt głównych i chip-
setów. W skład tego pakietu wcho-
dzą dwa polecenia:
mbmon
oraz
xmbmon
.
Po uruchomieniu
mbmon
możemy
zobaczyć coś takiego:
# watch -n 60 ifconfig eth0
zlikwidować “tytuł” wyświetlany przez
watch
:
Temp.= 35.0, 48.0, 0.0;
Rot.= 0, 3214,0
Vcore = 1.66, 0.10;
Volt. = 3.55, 5.05, 12.59, -12.06, -5.14
# watch -n 60 -t ifconfig eth0
a nawet włączyć bardzo wygodny tryb
oznaczania zmian (
watch
będzie oznaczał
te fragmenty tekstu, które zmieniły się od
ostatniego uruchomienia):
Ten skondensowany odczyt czujni-
ków pokazuje temperaturę procesora,
tempo obrotu wiatraków oraz wysoko-
ści poszczególnych napięć na płycie.
Za pomocą opcji
mbmon
możemy
zmieniać format prezentowanych da-
nych, ale to kwestia gustu, więc poprze-
stanę na pokazaniu formatu domyśl-
nego.
Obserwując wzrost temperatu-
ry, spadek prędkości obrotów wiatra-
ka czy niebezpieczne obniżanie się
napięć, można zdiagnozować wiele
awarii maszyny lub przewidzieć te
dopiero nadchodzące. A zasilacz czy
wentylator lepiej jest wymieniać zanim
osiągną stadium krytyczne i pójdą
z dymem.
Niestety,
xmbmon
nie współpra-
cuje z
GkrellM,
ale dla zwolenników
graficznego interfejsu istnieje polece-
nie
xmbmon
, pokazujące swoje wyniki
w formie okienka z prostą grafiką.
Z omawianym tematem wiąże się
również odczytywanie temperatu-
ry dysku twardego – w końcu dyski
też się grzeją i przegrzanie może się
dla nich skończyć fatalnie. Niestety,
tutaj sprawa ma się gorzej niż z tem-
peraturą procesora, ale nie z winy
Linuksa, lecz samych producentów
sprzętu. Nadal stosunkowo niewiele
dysków ma wbudowane czujniki tem-
peratury, więc niewielu użytkowników
będzie mogło sprawdzić, jak miewa
się ich dysk. Można jednak spróbować
można – tutaj kluczowym słowem jest
SMART
, czyli system autodiagnosty-
ki dysku. Temperatura jest udostęp-
niana jako część danych
SMART
, więc
można ją odczytać za pomocą
Smart-
montools
(najpierw uruchamiając
smartd
, a następnie odczytując dane
dysku przez
smartcl -a /dev/hda
lub
smartctl -a /dev/hda|grep -i temp
,
aby nie przedzierać się przez nieistot-
ne dane).
■
# watch -n 60 -t -d ifconfig eth0
Większość tego (może z wyjątkiem
oznaczania zmian) dałoby się łatwo
wykonać za pomocą pętli
while
i pole-
ceń
clear
oraz
sleep
, ale
watch
jest już
prawdopodobnie zainstalowany w sys-
temie, więc dlaczego z niego nie sko-
rzystać? Obserwowanie wyniku jakie-
goś cyklicznie odświeżanego polecenia
przydaje się w najmniej spodziewanych
momentach.
■
Jakich bibliotek używa ten
program?
Prosta rzecz, ale często nieodzowna.
Jak sprawdzić, które biblioteki współ-
dzielone są wymagane przez dany pro-
gram? Często wystarczy uruchomić na
nim polecenie
ldd
, a pojawi się zesta-
wienie bibliotek, które byłyby łado-
wane przy uruchamianiu programu.
Nie uwzględnia ono niestety dodatko-
wych bibliotek czy wtyczek, które pro-
gram potem może ładować własno-
ręcznie (tego nie da się z góry przewi-
dzieć), ale w 99% przypadków wynik
ldd
będzie się pokrywał z rzeczywisty-
mi rezultatami.
Taka wiedza przydaje się przy dia-
gnozowaniu problemów z ładowa-
niem bibliotek dynamicznych –
ldd
,
obok listy samych bibliotek, wyświetla
ścieżki dostępu do nich (widać, gdzie
szuka bibliotek), a jeśli jakaś biblioteka
nie mogła zostać zlokalizowana, to
ldd
również powiadomi o tym użytkowni-
ka w sposób bardziej czytelny niż zro-
biłby to konsolidator (ang.
linker
) przy
próbie uruchamiania programu. Dzięki
ldd
można również odróżnić progra-
my budowane statycznie od tych dyna-
micznie.
■
www.lpmagazine.org
61
Plik z chomika:
SOLARIX33
Inne pliki z tego folderu:
2006.08_Sztuczki i kruczki_[TipsTriks].pdf
(1097 KB)
2006.07_Sztuczki i kruczki_[TipsTriks].pdf
(244 KB)
2006.06_Sztuczki i kruczki_[TipsTriks].pdf
(360 KB)
2006.05_Sztuczki i kruczki_[TipsTriks].pdf
(238 KB)
2006.04_Sztuczki i kruczki_[TipsTriks].pdf
(440 KB)
Inne foldery tego chomika:
Administracja
Aktualnosci
Audio
Bazy Danych
Bezpieczenstwo
Zgłoś jeśli
naruszono regulamin