slacknews.org Всичко за Slackware

5юли/100

Оптимизиране на Firefox с tmpfs

1. Отворете браузъра и напишете about:config, съгласете се, че ще сте много внимателни.

2. Натиснете десен бутон и дайте New -> String.

3. Създайте променлива:

browser.cache.disk.parent_directory

4. На новата променлива задайте стойност:

/dev/shm/Firefox-Cache

5. Създайте директорията със съответните права:

install -dm700 /dev/shm/Firefox-Cache

След рестартиране на браузъра, той вече ще ползва /dev/shm/Firefox-Cache. Съдържанието на директорята няма да се запази след рестартиране на системата.

Possibly Related Posts:


4юли/100

Системни статистики с vmstat

vmstat е позната като програма за показване на статистики за виртуалната памет. Ние обаче може да я използваме и за други статистики.

Освен статистики за паметта, може да се изведат статистики за процесора, IO, Swap, Proc, системните прекъсвания. vmstat се използва много лесно. Без никакви допълнителни опции можем да я ползваме така:

vmstat [delay] [counts]

Нека да предположим, че искате да разпечатвате информация на екрана всяка секунда, 60 пъти (искате да вземете статистиките в продължение на една минута през интервал от 1 секунда):

vmstat 1 60

Изхода от командата ще изглежда така:

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 3  0  57768   5712   4696 174692    0    0     0   496  458 1636 19  2 77  2
 2  0  57768   5712   4696 174692    0    0     0     0  466 1687 25  1 74  0
 0  0  57768   5712   4696 174704    0    0     0     0  438  990  7  1 92  0
 2  0  57768   5712   4696 174704    0    0     0     0  459 1020  6  0 94  0
 2  0  57768   5712   4696 174704    0    0     0     0  429  965  7  0 93  0
 2  0  57768   5712   4704 174696    0    0     0    40  455 1039  3  0 97  0
...

Нека да погледнем към полетата:

Описание на полетата
 Procs
 r: Брой процеси, които чакат да се изпълнят.
 b: Брой процеси, които спят и не могат да се прекъсват.

   Memory
 swpd: Количеството виртуална памет, което се използва.
 free: Количество свободна памет.
 buff: Памет използвана за буфери.
 cache: Памет използвана за кеш.
 inact: Неактивна памет. (-a option)
 active: Активна памет. (-a option)

   Swap
 si: Показва колко виртуална памет е прочетена от диска (/s).
 so: Покзва колко виртуална памет е записана на диска. (/s).

   IO
 bi: Блокове прочетени от блоково устройство (блокове/s).
 bo: Блокове записани на блоково устройство (блокове/s).

   System
 in: Брой на прекъсванията в секунда, включително и прекъсванията за часовника.
 cs: Брой на смяната на контекста за секунда.

   CPU
Това са проценти от цялото време на процесора.
 us: Време, през което се изпълнява код, който не принадлежи на ядрото.
 sy: Време, през което се изпълнява код на ядрото. (системно време)
 id: Време, през което не се изпълнява нищо. Преди ядро 2.5.41, това включва и IO-wait времето.
 wa: Време, през което се чака за IO операции. Преди ядро 2.5.41, се включва в id.
 st: Време което е използвано от виртуалната машина.Преди ядро 2.6.11, не е установена стойност.

Обикновено се интересувам главно от две полета. Под Memory, полето free, което покзва колко неизползвана памет е останала. Под CPU, полето id, което показва колко е натоварен процесора. Ако стойностите в free или id стане много малка, това означава, че системата се е натоварила и трябва да се провери какво се случва.

vmstat е много удобна когато трябва да се прави отдалечено наблюдение. Може да се използва заедно със ssh по следния начин:

ssh username@domain.com "vmstat 60 99999"

vmstat не разпечатва датата или времето. Ако искате да си направите лог на статистиките заедно с времето, когато са взети, може да го постигнете по следния начин:

vmstat 1 1;for ((;;));do date; vmstat 10 2 | tail -n1;done

Командата ще разпечатва статистики на всеки 10 секунди.

Изхода ще изглежда по подобен начин.

procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0  57644   6096   8080 160828    0    1    30    31  441  137 11  1 86  1
Sat Dec  8 12:51:40 MYT 2007
 0  0  57644   6152   8092 160828    0    0     0    38  449  989  8  0 92  0
Sat Dec  8 12:51:50 MYT 2007
 0  0  57644   5864   8108 160828    0    0     0     8  443  980  5  0 95  0
Sat Dec  8 12:52:00 MYT 2007
...

vmstat може да извежда и статистики за използването на диска и др. Консултирайте се с man страниците за повече информация.

Possibly Related Posts:


25дек/090

drop_caches

Задаването на стойности на /proc/sys/vm/drop_caches кара ядрото да освободи кешовете, dirty страниците и inodes от паметта.

За да освободим кешовете:

echo 1 > /proc/sys/vm/drop_caches

За да освободим dirty страниците и inodes от паметта:

echo 2 > /proc/sys/vm/drop_caches

За да освободим кешовете, dirty страниците и inodes от паметта:

echo 3 > /proc/sys/vm/drop_caches

За да сме сигурни, че всичко ще бъде освободено трябва да изпълним командата "sync" преди да задаваме стойности на /proc/sys/vm/drop_caches.  Тази опция е добавена от версия на ядрото 2.6.16.

Possibly Related Posts:


27окт/090

Конфигуриране на ядрото: Поддръжка на мрежови протоколи

Менюто с мрежовите настройки съдържа опции за настройване на мрежовите протоколи. Може да включвате или да изключвате поддръжка на цели протоколи, или да настроите финно ядрото за определена роле, като рутер или пакетен филтър.

Packet and Socket Options

На много ниско ниво ядрото работи като позволява на дадени приложения да приемат или изпращат порции с данни(пакети), използвайки специални структури данни, познати като сокети. В повечето случаи програмите отварят сокети по подобен начин, на файловете. След това мрежовия протокол се грижи за това информацията да достигне до местоназначението или да бъде интерпретирана от програма след като бъде приета от получателя.

В някой случаи е желателно, или понякога нужно, да опбработваме мрежовата информация по друг начин, като да модифицираме стандартния пакет, или да променим или разширим стандартните пакетни операции. Някои от тези опции са толкова важни, че си имат собствени секции. Някой опции включват следното:

Packet Socket— Тази опция позволява на програмите да пропускат нормалното обратване на информацията. Повечето програми не се нуждаят от това, но някои инструменти за мрежова диагностика имат нужда от достъп до тази информация. Например tcpdump, който показва информация от ниско ниво за TCP/IP протокола, използва тези опции в ядрото. Включването на тези опции без да има нужда ще уголеми ядрото малко и може да позволи на натрапник да използва инстументи за анализ на протоколи, като tcpdump, които бихте искали да не могат да се ползват от натрапници. Пропускането на тази опция, също ще ви попречи да използвате тези инструменти.

Packet Socket: Mmapped IO— Това е подопция на сокетите, която, ако е активирана, може да повиши производителността на инструментите, котио използват връзки със сокети.

Unix Domain Sockets— Няколко важни програми в Линукс ползват мрежови протоколи, за да комуникират помежду си когато работят на един и същи компютър. Примери са syslogd (който се грижи за логовете) и X (X програмите използват мрежови протоколи, за да комуникират с X сървъра, който показва техните прозорци). Тези сокети позволяват мрежовата комунуикация дори ма компютри, на които липсва мрежов хардуер. Би трябвало да включите тази опция на всички стандартми Линукс машини. Само някои тясно специализирани устройства може да нямат нужда от тази опция.

Тези всички опции имат настойки по подразбиране, които са достатъчно уместни за повечето случаи.

Possibly Related Posts:


24окт/090

Конфигуриране на ядрото

За да конфигурирате ядрото, трябва да притежавате сорс кода. В Slackware той може да се инсталира заедно с ядрото. Може би бихте искали да започнете със страндартно ядро и да си го пачнете и конфигурирате по ваше желание. Проверете  http://www.kernel.org/ за последна верися на сорс кода на ядрото.
Сорс кода на ядрото обикновено се намира в /usr/src/linux, или в поддиректория на /usr/src името, на която включва версията на ядрото - /usr/src/linux-2.6.17. В този случай е добре да се прави връзка от с името /usr/src/linux, която да сочи до истинското място на сорс кода на ядрото. Това помага на другите програми да намерят кода в /usr/src/linux и да работят правилно и ви дава възможност да имате няколко версии на ядрото и само да сменяте на къде сочи линка.

След като разархивирате сорс кода на ядрото в /usr/src/linux, трябва да влезете в тази директория. След това трябва да изпълните команда за конфигуриране на ядрото. Има няколко възможности:

  • make config — Това е базовия инструмент за конфигурация. Той пита за всяка опция на ядрото поред, което може да е досадно. Ако направите грешка, обикновено трябва да се върнете от начало и да повторите всичко. По тези причини се използва много рядко.
  • make menuconfig— Тази процедура за конфигурация използва текстови менюта, което ви позволява да преглеждате опциите и да променяте само това, което има нужда. Този е често използван метод за конфигурация в текстов режим.
  • make xconfig— Този метод е подобен на make menuconfig, в единствената разлика, че използва GUI конфигурационни менюта. Може да кликате на зададени опции и след това да определяте дали и как да бъдат компилирани. Това е сравнително популярно средство за конфигуриране на ядрото, когато има възможност да се използва X графичната среда.

Всички тези методи предоставят начин за конфигуриране на едни и същи опции, организирани в категории(като някой категории имат подкатегории).

Possibly Related Posts:


15окт/090

Ограничаване на достъпа до команда в Линукс

Как да огранича достъпа до /usr/local/bin/start само за определени потребители на системата ? Отговорът на върпроса е, че трбва да използвате стандартните Линукс групи.

Стъпка 1: Създайте група за всички оторизирани потребители

Създайте групата:

#groupadd restrictedapp

Добавете потребители в тази група:

#usermod -aG {име_на_група} {потребителско_име}
#usermod -aG restrictedapp ivan
#usermod -aG restrictedapp petar

Където:

-a Добавя потребителя към групата

-G Списък с групи, към които да се добави потребителя

Стъпка 2: Ограничете достъпа

Вече имаме група с потребители, които трябва да могат да изпълняват командата. Сега трябва да използваме chgrp, за да сменим групата на самата програма:

#chgrp {група} {път_до_приложението}
#chgrp restrictedapp /usr/local/bin/start

Трябва да използваме командата chmod, за да ограничим достъпа на всички, които не са от групата restrictedapp да имат достъп до приложението.

#chmod 750 {път_до_приложението}
#chmod 750 /usr/local/bin/start

Стъпка 3: Тествайте

Пробвайте първо да изпълните комадата с потребител ivan:

#su - ivan
#/usr/local/bin/start
#exit

#su - valeri
#/usr/local/bin/start
bash: /usr/local/bin/start: Permission denied

Забележка:

Възможностите, които ви се предлагат от командите chmod, chgrp и usermod, не ви предлагат пълен контрол върху изпълнението на дадени приложения. По-добрия вариант би било да се въведат SELinux и ACL-и на файловата система.

Possibly Related Posts:


6окт/090

Взимане на част от текст с bash

Можем да вземем само част от даден текст много лесно с Bash. Нека да кажем, че имаме 1234567890 или abcdefghij. Може да го направим така :

num="1234567890";
echo ${num:5:7}

5 указва началото, а 7 колко символа да вземе.

Possibly Related Posts:


6окт/090

Когато rm се оплаква, че не може да трие

Има ограничение на командата rm, когато се опитате да триете много файлове с *. Например:

rm -rf something*

Ако има много файлове, които започват с something, rm няма да може да ги изтрие и ще изведе:

/bin/rm: Argument list too long.

Решението на проблема е да ползвате find, xargs и rm.

find . -name 'something*' -print0 | xargs -0 rm -rf

Проблема може да се разреши по още един начин:

find . -name 'something*' -exec rm -rf {} \;

Possibly Related Posts:


6окт/090

umask: създаване на нови файлове с определени права

Замисляли ли сте се, че всеки път като създаваме файлове в Линукс те се създават с определени права ? Нека да пробвам:

Lets see this:

touch testing
ls -l testing
-rw-r--r-- 1 test test 0 2008-03-08 01:14 testing

Файла не би трбвало да се създаде с права за изпълнение, както виждаме изхода от ls. Нека да дадем права за изпълненеи на файла.

chmod +x testing
ls -l testing
-rwxr-xr-x 1 test test 0 2008-03-08 01:16 testing

Както виждате в момента режима е 755(повече информация за правата върху файловете тук).

За да конторлираме как се създават новите файлове, може да използваме umask. Може да се каже, че umask е обратното на атрибитите на файла. Нека да кажем, че искате файловете да се създават винаги с 774 (-rwxrwxr–) атрибути, вашата umask ще е  003. Как разбрахме? 777 - 774 = 003.

За да проверим сегашната umask, който е в сила, просто напишете:

umask
0022

Първата стойност отпред 0 указва, че това това е осмична(в осмична бройна система) стойност, затова нашите атрибути по подразбиране за създаване на файлове са 755, но понеже атрибута за изпълнение не се слага по подразбиране стават 644, когато създаваме нови файлове.
Нека да сменим на 0003, което означава, чес искаме атрибутите да са 774 (rwxrwxr–).

umask 0003
touch testing2
ls -l testing2
-rw-rw-r-- 1 test test 0 2008-03-08 01:27 testing2

Атрибутите са 664, и като добавим правата за изпълнение получаваме:

chmod +x testing2
ls -l testing2
-rwxrwxr-- 1 test test 0 2008-03-08 01:27 testing2

Сега имаме 774, въпреки чеchmod +x , не добава права за изпълнение на всички други потребители. Това се дължи на umask, който ползваме. Разбирасе винаги може да го направите изпълним така с chmod o+x.

За какво да го използваме ?
Нампример нека да предположим, че имате потребител, чиито файлове трябва да могат да се четат от групата, на която той принадлежи, но файловете му да не могат да се променят или да се изпълняват. Освен това не позволяваме на всички други да му четат файловете. Това може да го постигнем с umask като въведем umask 0037 в неговия ~/.bashrc

Possibly Related Posts:


6окт/090

Права за достъп до файлове

chmod (change mode) е доста често използвана команда за администрация. Обикновено я ползваме, за да направим даден скрипт, написан на bash, python, perl изпълним.

За да на правил файл изпълним:

chmod +x myscript.sh

По подразбиране това ще промени атрибута за всички. Файловите атрибути са 3 вида:

u ( user - собственик на файла)
g ( групата, в която е потребителя)
o ( всичко останали потребители)
a ( всички гореспоменати)

Това означава, че горната команда е подобна на тази:

chmod a+x myscript.sh

По този начин ще позволим само на собственика на файла да го изпълнява:

chmod u+x myscript.sh

Може да премахвате атрибути от файл. Да кажем, че имате права за изпълняване от всички, но искате да не е изпълним от всички други (които не са потребителя или не са от неговата група):

chmod o-x myscript.sh

Освен атрибута за изпълнение, имаме атрибути за писане и четене. За тях важи горенаписаното.

Например искам да махна атрибутите за четене и писане на всички други потребители:

chmod o-rw myscript.sh

chmod може да се изпълнява и по друг начин. Може да използваме цифри за да укажем атрибутите, вместо символи.
Цифрите, които оказват атрибутите са показани по-долу:

execute = 1 (изпълнение)
write = 2 (писане)
read = 4 (четене)

В този ред на мисли ако са включени атрибутите за четене и писане имаме 2+4 = 6, а ако са включени за изпълнение и четене имаме 1+4 = 5.

За да може собственика на файла да има rwx атрибути, но групите, на които принадлежи, и всички останали да имат само rx, може да направим това:

chmod 755 myscript.sh

Така, 7= 4+2+1 (rwx) и 5 = 4+1 (rx).

Possibly Related Posts:


6окт/090

Къде се намират програмите ми и техните конфигурационни файлове ?

Когато искаме да намерим пълния път до дадена програма, обиконовенно използваме which.

Например, ако искаме да видим къде се намира mplayer, може да направим това:

which mplayer

Има още една команда, която освен, че ви показва пътя до бинарките, ви показва и пътя до сорс файловете, конфигурационите файлове и man страниците.

whereis mplayer

Ще върне това:

mplayer: /usr/bin/mplayer /etc/mplayer /usr/lib/mplayer /usr/X11R6/bin/mplayer /usr/bin/X11/mplayer /usr/share/mplayer
 /usr/share/man/man1/mplayer.1.gz

Това е интересна команда, но не винаги може да ви покаже всичко от което имате нужда. Но въпреки това whereis е доста добра команда за трсене на файлове, свързани с дадена бинарка. Разбира се има опции, които могат да се подават на whereis и да се променя начина, по който работи. За повече информация man whereis.

Possibly Related Posts:


6окт/090

Как да покажем споделените библиотеки, от които се нуждае програма ?

Почти всяка програма в Линукс използва споделени библиотеки, дори тези които са компилирани на ръка със gcc. Може да се окаже, че дадена програма компилирана на дадена дистрибуция може да не работи под друга или по-стара версия на същата, на която е била компилирана. Всичко това може да се дължи на липсващи споделени библиотеки.

Можем да използваме ldd за да разберем, от кои библиотеки има нужда нашата програма. Нека да приемем, че имаме програма която се казва по някакъв начин, matrix например. Може да разберем какви споделени библиотеки са й нужни като напишем:

ldd matrix

        linux-gate.so.1 =>  (0x00110000)
        libncurses.so.5 => /lib/libncurses.so.5 (0x00111000)
        libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x0793a000)
        libm.so.6 => /lib/libm.so.6 (0x0056e000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x0790d000)
        libc.so.6 => /lib/libc.so.6 (0x00413000)
        libdl.so.2 => /lib/libdl.so.2 (0x00599000)
        libtinfo.so.5 => /lib/libtinfo.so.5 (0x00ad0000)
        /lib/ld-linux.so.2 (0x003f4000)

Тук виждаме че използва libncurses.so.5. Този файл може да се намира в /usr/lib, /usr/share/lib, /lib или /usr/local/lib. Освен това, файла може да е връзка към истинския файл и да ви е нужна реалната .so библиотека.

Споделените библиотеки също биха могли да имат зависимости и да се нуждаят от други библиотеки. В този случай виждаме:

ldd -v matrix

...
        /lib/libncurses.so.5:
                libdl.so.2 (GLIBC_2.1) => /lib/libdl.so.2
                libdl.so.2 (GLIBC_2.0) => /lib/libdl.so.2
                libc.so.6 (GLIBC_2.1.3) => /lib/libc.so.6
                libc.so.6 (GLIBC_2.4) => /lib/libc.so.6
                libc.so.6 (GLIBC_2.3) => /lib/libc.so.6
                libc.so.6 (GLIBC_2.1) => /lib/libc.so.6
                libc.so.6 (GLIBC_2.3.4) => /lib/libc.so.6
                libc.so.6 (GLIBC_2.0) => /lib/libc.so.6
...

Вижда се, че libncurses има нужда от libc и libdl също.

Possibly Related Posts:


20сеп/093

Slackware по лесния начин

Дайте на човек Ubuntu, и той ще научи Ubuntu. Дайте на човек SUSE, и той ще научи SUSE. Ако дадете на човек Slackware, той ще научи Linux. Това гласи старата максима, обикновено използвана с насмешка, но все още важеща.

Ако някога сте се чудили какво прави Slackware толкова популярен сред Линукс ветераните ви представям малко съвети как да започнете и малко история.

Slackware е странно животно, което си живее докато другите дистрибуции се борят за популярност сред Линукс потребителите. Slackware не се опитва да обземе огромен дял от настолните компютри, нито има мигащи светлини, инструменти, които те държат за ръчичка докато правиш нещо, или пакетни мениджъри, които се променят със всяка следваща версия. Slackware ви предоставя една истинска GNU/Linux операционна система - само най-важното, без дългото компилиране на Linux From Scratch.

Има няколко причини Slackware да има закоравял фенове, обикновено хора, които ползват Линукс отдавна, но и начинаещи също. Четирите най-чести причини:

  • Изцяло се разработва от един човек.
  • Пакетите не се пачват до последно.
  • Съвсем е достатъчна за своята "дистросфера".
  • Много, много, много стабилна е.

Нека да погледнем по-отблизо. От първата си версия пусната през 1993, Slackware се разработва от един човек: родения в Калифорния, 42 годишен Патрик Волкердинг(Patrick Volkerding). В началото са му помагали разработчици, но сега е единствения, с изключение на феновете, които помагат за отстраняване на проблеми и пачване. Чрез продажбата на дискове със Slackware той си финансира работата върху проекта.

Имате въпрос? Обадете се на Пат. Имате предложение? Обадете се на Пат. Искате да съобщите за проблем? Обадете се на Пат. Той е "човека" в Slackware средите.

Неизвестния софтуер

Повечето дистрибуции взимат оригиналния код на програмите, след това започват да ги пачват и променят. Това може да промени програмата многократно - един, два, 10 пъти, колкото е нужно, за да може да работи с другия софтуер от дистрибуцията. Това не пречи на много потребители, но ако искате да сте сигурни, че ползвате това, което разработчика е написали имал в предвид, е по-добре да ползвате Slackware.

Това не означава, че няма пачове в Slackware, но една много голяма част от софтуера е непроменен и не ви оставя впечатлението, че получавате подменена версия на оригинала.

Има и още една страна на проблема. Независимо от какво са ви заблуждавали при избор на дистрибуция, Slackware има пакетна система. Тя е базирана на архиви (.tgz и .txz файлове), вместо оплетена система, базирана на зависимости, с допълнителни бази, съдържащи RPM и Deb файлове. Преимуществото е, че пакетите на Slackware много лесно се отварят, променя се нещо и пак се сглобяват.

Фокуса на дистрибуцията е простотата за изпълнение, което е довело до няколко жертви в историята на Slackware. Най-забележимата жертва е Gnome. През 2005, Пат решава, че работата за съставянето и интегрирането на голямото разнообразие от Gnome пакетите и техните зависимости е прекалено и казва:

"Please do not incorrectly interpret any of this as a slight against Gnome itself, which (although it does usually need to be fixed and polished beyond the way it ships from upstream more so than, say, KDE or Xfce) is a decent desktop choice."

Това предизвиква появата на допълнителни проекти от независими разработчици, като Dropline Gnome, който стартира малко след съобщението. Това е една много добра реализация на Gnome, но съобщението към разработчиците е явно: Ако искате вашия софтуер в Slackware, уверете се, че е подреден и неговата поддръжка е лесна.

Знайте си целите

Стигаме до третата точка: Slackware е стабилна дистрибуция, която не е много подходяща за начинаещи. Всъщност не е никак трудна за използване, но няма например графичен инсталатор или помощници, които да ви водят и обясняват всеки аспект от инсталацията. Хората, кото ползват Slackware, би трябвало да са имали срещи с командния ред и да са редактирали конфигурационни файлове, което води до максимата в началото: ако решите да използвате Slackware, няма да бъдете предпазен от работа от команден ред

Slackware Installer

Slackware Installer

.

Инсталатора на Slackware не е графичен, но с няколко натискания на Tab, Space и Enter много лесно получавате работеща система

Така може да научите основата на Линукс и, понеже дистрибуцията няма огромен брой нестандартни промени и пачове към софтуера, не се оказвате в положението да търсите къде се намират безбройните специфични за дистрибуцията конфигурационни файлове. Ако например научите всичко за Fedora, вие ще сте Fedora гуру (което е яко). Ако обаче се научите да работите със Slackware, ще имате познания, които са обши за много дистрибуции.

Slackware не се опитва да бъде най-добрата дистрибуция за всички новаци ползващи Линукс; опитва се да бъде най-добрата дистрибуция за тези, които знаят точно какво искат и какво не искат да има в дистрибуцията. (Например: Yast от SUSE, много мощен и полезен инструмент, който в същото време може да създаде адски много проблеми на напреднал потребител с промяната на конфигурационните файлове.)

Надеждност

Нека да разгледаме колко е стабилна Slackware. Без огромната поддръжка като при Debian, бихте си помислили, че Slackware е по-податлива към проблеми, но се оказва, че това не е така. Пат е консервативен, когато става дума за интегриране на нов софтуер.

Факта, че само един човек се грижи за всичко помага доста за стабилността. Наличието на много разработчици може да доведе до различия в качеството на пачовете, докато Пат изгражда всичко преди да пусне нова версия. Това води до широк и контролиран поглед над дистрибуцията. Със сигурност големите дистрибуции като Debian имат нужда от големи екипи и в този смисъл подхода работи добре, но за Slackware подхода, при който един човек прави всичко, върши също толкова добра работа.

Това е Slackware. Не е много лесен за начинаещите, е една от най-харесваните дистрибуции след 15 години. Средностатистическия потребител би трябвало я пробва поне веднъж. Само се пазете от друга мъдрост известна в Slackware средите: "Once you go Slack, you'll never go back."

Slackware Desktop

Slackware Desktop

Има KDE и Gnome пакети, но такава дистрибуция заслужава Xfce, според мен.

Slackware изисква най-малко 486 CPU и 48MB RAM, така че е полезен за възкресяване на стари компютри. Ако искате да се възползвате от допълнителните възможности е добре да имате 1GHz CPU и 256MB RAM. От сайта на Slackware може да свалите ISO-та на последната версия - имате нужда само от диск 1 и 2. Запишете ги на CD-R. На тях се съдържа основата на Slackware, Xfce и различни приложения. След това следвайте стъпките.

Инсталиране на Slackware

Slackware installation step 1

Slackware installation step 1

Пускане Slackware: Пуснете вашето PC с първия CD-R и ще видите информационен екран. Прочете какво пише за да знаете какво избирате. Въведете huge.s за по-стари машини или просто натиснете Enter, за да продължите. След това се логнете като root.
Slackware install step2

Slackware install step2

Оразмеряване на диска: Трябва да опразмерите твърдия си диск. Въведете cfdisk, за да се покажат партишъните. Препоръчвам поне 10GB за Линукс дял (номер 83) и още един дял с големина поне 512MB за swap (номер 82).
Slackware installation step3

Slackware installation step3

Пускане на сетъпа: Запишете промените и излезте от cfdisk. След това влезте в сетъпа. Изберете ADDSWAP и изберете swap патишъна, който сте създали по-рано.
Slackware installation step4

Slackware installation step4

Указване на root: Изберете партишъна, който искате да ползвате за root. Ще имате избор на файлови системи. Ако не знаете какво да изберете или не сте се сблъсквали с това досега е добре да изберете ext3. След това инсталатора ще ви попита за източник, от който да инсталира. Ако инсталирате от CD, изберете CD-ROM.
Slackware installation step5

Slackware installation step5

Избор на софтуер: Ще бъдете попитани какъв софтуер искате да инсталирате. Може да избирате със Space от списъка. Натиснете Enter, когато приключите със избора. (KDE не е на диск 1 или 2, затова ако не нямаме диск 3 не го избирайте тук. Може да го добавите по-късно).
Slackware installation step6

Slackware installation step6

Довършителни щрихи: Пакетите ще се инсталират и ако ви поиска диск 3, натиснете Cancel, ако го нямате. Сега ще бъдете попитани за резолюция на дисплея, настройки на мрежата и парола за root акаунта. Излезте от инсталатора и рестартирайте току що инсталирания си Slackware.

Графична среда

Slackware не ви казва какво да правите - не се опитва да познава какво искате да правите. Може да използвате дистрибуцията за сървър или за рутер. В тези случаи конзолната е перфектна като избор. Има възможност обаче да я използвате и за настолен компютър. Ето как да си пуснете графичната среда.

В конзолата се логнете като root с паролата, която сте въвели по време на инсталацията. За да подкарате X сървъра (графичния режим), въведете startx и ще се появи мениджъра на прозорци, който сте избрали по време на инсталацията. Отбележете, че работите като потребителя root в монета, така че всичко, което правите може сериозно да повреди вашата инсталация, затова бъдете много предпазливи.

Ако искате всеки път да се пуска графична среда отворете файла /etc/inittab с редактор по ваш избор (например Vi или Nano). Търсете за това:

id:3:initdefault:

Това указва runlevel-а по подразбиране, в който Slackware се пуска или с други думи какви услуги да се пускат. Над този ред трябва да има други коментирани редове, които обясняват другите runlevel-и. Забележете че runlevel 4 се използва за X11. Затова заменете 3 с 4 и като рестартирате ще имате графична среда.

Добавяне на нов потребител

Използването на която и да е дистрибуция като потребителя root е лоша идея особенно ако не знаете какво правите. Добре е да си направите нормален потребител, с ограничени права. Отворете терминал и напишете adduser. Ще ви бъде поискано име, домашна директория, shell, парола и други опции. На този момент има нужда само да въведете потребителско име и парола. Другите полета ще бъдат попълнени автоматично със стойности по подразбиране.

Управление на пакетите

Нека да разгледане пакетната система с повече детайли. Както споменахме по-рано, пакетите на Slackware са .tgz или .txz архиви с малко допълнителна информация в текстови файлове в архива. Може да ги разархивирате по обичайния начин (tar xfvz име_на_файл) и да видите какво има в тях. Разархивират се в / директорията, така че някой файлове ще отидат в /etc, /usr и т.н.

Освен това в пакета винаги има директория install, която указва на пакетната система на Slackware какво да прави при инсталация(doinst.sh) и какво прави пакета(slack-desc). Нормалните пакети на Slackware не съдържат информация за зависимости. Дистрибуцията приема, че вече знаете какво прави софтуера и какво му трябва, за да работи предварително. Това може да изглежда дразнещо в началото, но когато ви е писнало от дистрибуции, които свалят хиляди "препоръчителни" пакети със съмнителен произход за инсталиране на една програма, ще оцените контрола, който ви предоставя Slackware.

Ако имате пакет, който искате да инсталирате, най-лесния начин е:

installpkg filename.tgz

По-елегантно решение е да се използва pkgtool, който представлява интерфейс с менюта. С него може да преглеждате списък с пакети в директория или да изтривате пакети. Друг инструмент, който може да ползвате е slapt-get (http://software.jaos.org), който както загатва името приличан на apt-get на Debian/Ubuntu производните. Позволява ви да изтегляте пакети от различни източници в Интернет като официалните архиви на Slackware или www.linuxpackages.net, и включва базова поддръжка на зависимости, ако имате нужда от такива.

pkgtool

pkgtool

Като root, въведете pkgtool за да се покаже интерфейса за добавяне и премахване на пакети.

Допълнителна информация

Тук ще намерите книгата за Slackware. Това е PDF документ от 284 страници, който покрива инсталацията, конфигурацията и администрацията в дълбочина. Добре е да се прочете веднъж след като сте инсталирали дистрибуцията. Ето и цитат от книгата:

"We hope you'll lend it to all of your friends when they come asking about that cool Slackware operating system you're running. While this book may not be an edge-of-your seat novel, we certainly tried to make it as entertaining as possible. With any luck, we'll get a movie deal."

Possibly Related Posts:


19сеп/090

Основи на Линукс автоматизацията

Тази статия описва начина, по който могат да се изпълняват команди в определено време без да се налага на потребителя да ги въвежда. Програмите отговорни за това в линукс са cron и at.

Изпълняване на команди в точно определено време:

Ако нямате нужда командата да се изпълнява редовно може да използвате. Например може да ползвате :

at midnight

След като изпълните това ще си се покаже at командния ред( at>; ). Напишете командата, която искате да се изпълни. Например:

at>; who > who.out

Можете да въвеждате по една команда на ред. Когато сте готови натиснете Ctrl и D. Сега би трябвало да видте :

X         2006-05-26 00:00 a yourname

Където X е номера на вашата команда. Тази поредица от команди казва на вашата машина да изпълни в полунощ командата, която сте въвели.

Ако решите, че вече на искате да се изпълнява тази команда, може да използвате :

atrm X

X е номера на командата, която искате да не се изпълнява. atrm е командата, с която се премахват задачи зададени с at.

atrm поддържа много разновидности на въведеното време. Например може да ползвате: morning, noon, teatime, or midnight. "teatime" също работи и изпълнява команди в  4 следобед!

Ако ви се налага да изпълнявате една команда всеки ден от месеца например, може тогава не е удобно всеки ден да назначавате да се изпълнява. Cron ви позволява да изпълнявате команди по този начин. Освен това има една много важна разлика между cron и at. at може да се изпълнява само от root, a cron от всички потребители.

Може да има различни настройки за всеки потребител на системата. Преди да започнете каквото и да било трябва да се уверите, че cron работи като демон.

За да можем да създаваме задачи, трябва да разберем как работи Cron. Най-добрия начин е чрез примери.

Първо, всяка задача за cron има следния синтаксис:

Minute (0-59) Hour (0-23) Day of Month (1-31) Month (1-12 or Jan-Dec) Day of Week (0-6 or Sun-Sat) Command

Не е нужно да се указва всяко поле. Ако искате да укажете всеки месец например може да използвате *. Това е пример как може да използване *.

* * * * 5 who

Това ще изпълнява командата who всяка минута, от всеки час, от всеки месец от за всеки петък. Използваме 5 на мястото на ден от седмицата.

5 * * * * who

Това ще изпълнява командата who на всяка пета минута, от всеки час, от всеки месец, за всеки ден от седмицата. Тук използваме 5 на мястото на минутите.

Ако искате някаква команда да се изпълнява всяка вечер в полунощ?

0 0 * * * whо

Това ще изпълнява командата who в полунощ, всеки месец, за всички дни от седмицата. Тук 0 има на мястото за часове и минути и представлява полунощ.

За повече гъвкавост може да използваме / (наклонена черта). Например:

*/15 * * * * who

Този ред ще изпълнява командата who всеки 15 минути, от всеки час, от всеки месец, за всички дни от седмицата. Използване /15 на мястото на минутите за да покажем колко често трябва да се изпълнява задачата.

Има и други опции, но за да не усложняваме ще ги пропуснем.

Създаване на автоматична задача

За да можете да задавате задачи на cron процеса трябва да използвате crontab. Тази команда се въвежда на командния ред. Като изпълните командата тя отваря редактора по подразбиране на вашата дистрибуция и ви дава възможност да редактирате всички задачи за вашия потребител. Може да въведете това, което искате да изпълнявате :

Първо изпълнявате командата с параметър -е (edit):

crontab -e

След това въвеждате задачата:

*/15 * * * * yourcommand

Заменете yourcommand, с това което искате да изпълнявате. След това запазете файла и излезте от редактора. Трябва да видите нещо от сорта на:

crontab: installing new crontab

Току що създадохте задача, която ще се изпълни от вашия потребител в уреченото време(на всеки 15 минути от всеки час, от всяка седмица, от всеки месец, за всеки ден от седмицата).

Изчакайте да се изпълни командата. Ако се пуснали crond с възможност да записва задачите, които изпълнява, може да проверите какво става така :

tail -f /var/log/cron

Може да редактирате задачата по същия начин, по който я създадохте, само че редактирате файла и запазвате. За да изтриете всички задачи може да използвате:

crontab -r

Ако искате да изтриете само някои:

crontab -е

След това изтривате редовете, които не са нужни вече и запазвате.

Possibly Related Posts:


7сеп/090

Как да конфигурираме Squid да ползва refresh patterns

Squid може да бъде конфигуриран така че да удовлетворява дори най-взискателните конфигурации. При последните версии могат да се конфигурират поне 250 отделни параметъра. Стандартния конфигурационен файл се намира в /etc/squid.conf и заедно с коментарите достига 4600 реда. Конфигурирането на приложението може да се окаже предизвикателство дори за напреднали администратори.

Препоръчително е да имате голяма кеш, която няма да се напълни за по-малко от седмица. Добре е да се запълни за около месец. Разбира се големината на кеша е в зависимост от трафика който минава през мрежата. Колкото е по-голям кешът толкова е по-вероятно файла който се търси.

Трябва да имате рам памет около 1% от кеш паметта. Това означава че ако имате кеш 100GB трябва да имате 1GB рам, освен тази нужна за операционната система и Squid.
Със стандартните настройки максималната големина на обект който може да е в кешът е 4MB. Днес това е доста малко, затова ако клиентите ви използват доста медийни сайтове, с видеота и музика, може да увеличило това да кажем до 100MB.

Refresh patterns указват какво се запазва и какво се обслужва от кеша. По принцип бихте искали сървъра да казва на вашия squid какво и за колко време да кешира. Тези опции се изпращат като HTTP хедъри, които Squid разбира. За нещастие обаче повечето сървъри използват настройките по подразбиране и не може да се спести много трафик.

Refresh patterns са в следния формат:

refresh_pattern [-i] regex min percent max [options]

където min и max са минималното и максималното време в минути, а percent са проценти. Възможните опции са :

  • override-expire -- игнорира expire хедъра от уеб сървъра.
  • override-lastmod -- игнорира последния модифициран едър от уеб сървъра.
  • reload-into-ims -- reload заявката от клиента се трансформита в If-Modified-Since заявка.
  • ignore-reload -- игнорира client's no-cache или "reload from origin server" директивите. Заявката може да бъде изпълнена от кеша ако е възможно.
  • ignore-no-cache -- a no-cache directive from the Web server which makes an object non-cacheable is ignored.
  • ignore-no-store -- a no-store directive from the Web server which makes an object non-cacheable is ignored.
  • ignore-private -- a private directive from the Web server which makes an object non-cacheable is ignored.
  • ignore-auth -- objects requiring authorisation are non-cacheable. This option overrides this limitation.
  • refresh-ims -- a refresh request from a client is converted into an If-Modified-Since request.

Проверете в конфигурационния файл кои от тези опции са допустими във вашата версия на Squid.

Refresh patterns са ефективни ако няма expire хедър от уеб сървъра или refresh pattern-а съдържа override-expire опцията. Например:

refresh_pattern -i \.gif$ 1440 20% 10080.

Това означава:

  • Ако няма expire хедър за всичко обекти, чиито имена завършват на .gif or .GIF (това са картинки) тогава:
  • ако не са по стари от 1,440 минути(колко време обекта е бил в кеша), тогава обслужи обекта и спри
  • ако обекта е по стар от 10,080 минути, копирай го от уеб сървъра и спри
  • ако възрастта е между минималната и максималната стойност , използвай lm-factor за да определиш дали обекта е валиден. lm-factor е отношението между възрастта на обекта в кеша и периода за който се променя на уеб сървъра като процент. Така че ако обекта е бил създаден преди 10,000 минути на уеб сървъра и е бил в кеша за 1,800 минути lm-factor-а е 1,800/10,000 = 18%.
  • Ако lm-factor-а е по-малко от процента в нашия refresh pattern (20%) тогава обслужи обекта и спри
  • в противен случай копирай нова версия от уеб сървъра.

За обекти, които много рядко се променят под едно и също име(видео, картинки, звуци, изпълними файлове, архиви) може да накарате Squid да ги пази за по-дълго време в кеша:

refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private refresh_pattern -i \.(iso|avi|wav|mp3|mp4|mpeg|swf|flv|x-flv)$ 43200 90% 432000 override-expire ignore-no-cache ignore-no-store ignore-private refresh_pattern -i \.(deb|rpm|exe|zip|tar|tgz|ram|rar|bin|ppt|doc|tiff)$ 10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private refresh_pattern -i \.index.(html|htm)$ 0 40% 10080 refresh_pattern -i \.(html|htm|css|js)$ 1440 40% 40320 refresh_pattern . 0 40% 40320

Понякога, за нещастие от наша гледна точка, сървъри като youtube.com, правят всичко възможно за да предотвратят кеширане на тяхното съдържание. По-горните опции би трябвало да ви помогнат да преодолеете това тяхно поведение.

Refresh patterns се изпълняват за всички заявки от горе надолу докато се намери правило което съответства. Последното правило ще съответства на всички заявки, които не съответстват на нито едно правило.

По принцип Squid няма да кешира динамично съдържание. Динамичното съдържание отговаря на "cgi-bin" или "?". Тази опция се активира в по-новите версии на Squid чрез refresh_pattern (/cgi-bin/|\?) 0 0% 0.  Това ви дава възможност да определите кои сайтове имат динамично съдържание и кои могат да прескачат това правило. Ако направите следния refresh pattern:

refresh_pattern -i movies.com/.* 10080 90% 43200 refresh_pattern (/cgi-bin/|\?) 0 0% 0

Тогава дори в адреса на movies.com да има "?" съдържаните ще се кешира ако всички други условия са спазени.

Squid прави доста DNS заявки. По една dns заявка за всяка http заявка. Добра идея е да се инсталира кеширащ DNS сървър, за да се намали броя на DNS заявките.

Сайтове като Microsoft-ския windowsupdate.com, които се ползват от много компютри за да си обновяват операционните системи, са тези, които използват най-много трафик. За нещастие обаче тези сайтове не могат да се кешират понеже предлагат частични отговори (http код 206), които не могат да бъдат кеширани от Squid на този етап. В такъв случай бихте могли да ограничим трафика към тези сайтове в определен период.

Тук конфигурираме ограничение 64Kbps (8KBps), при който трафикът за windowsupdate.com по време на пиковите периоди от 10:00-16:00 ще е ограничен на 64Kbps.

acl winupdate dstdomain .windowsupdate.com acl peakperiod time 10:00-16:00 delay_pools 1 delay_class 1 1 # 64 Kbit/s delay_parameters 1 8000/8000 delay_access 1 allow winupdate peakperiod

След като направих гореспоменатите промени, Squid започна да кешира  до 26-37%, за разлика от 8% преди това.

Possibly Related Posts: