Полезные мелочи Линукса. Часть 1

Папа-линуксоид  и сын пошли в зоопарк.

Проходя мимо клеток с пингвинами, сын

    радостно прыгает и кричит:

- Папа, смотри - ЛИНУКСЫ!

Полезные мелочи Линукса

     Я хочу поделиться маленькими хитростями, которые облегчают жизнь линуксоиду.

1. Всем людям, кто хоть раз использовал Linux известно, что при работе с FAT32 из-под Linux русские имена файлов ну просто нечитаемы, да еще и все файлы имеют атрибут "запускаемый". Все это очень просто можно убрать, достаточно подредактировать файлик /etc/fstab:

/dev/hda1  /mnt/win  vfat  noexec,rw,vmask002,codepage=866,iocharset=koi8-r,gid=100 0 0

Здесь:

"/dev/hda1"              - расположение виндового раздела у вас на винте (в данном

                                  случае это первый primary раздел на первом винчестере);

"/mnt/win"                - директория, к которой подключается виндовый раздел;

"vfat"                       - сигнатура, обозначающая использование FAT/FAT32;

"rw"                        - подключаем как read/write;

"codepade=866"     - используем "родную" для FAT32 кодовую страницу;

"iocharset=koi8-r"   - а для отображения на экране - koi8-r.

Все остальные параметры я расшифровывать не буду, но они требуются для этой фичи.

 

2. Как всем известно (или не известно) в Linux постоянно ведутся логи всех событий. Обычно они располагаются в /var/log. Но после недель работы вдруг обнаруживаешь, что места на винте стало как-то меньше, хотя вроде бы ничего нового не ставил =8-X . Оказывается, что Linux не очищает логи автоматически, а оставляет эту работу на могучие плечи пользователя. Следующий маленький скриптик очищает файлы в указанном в командной строке каталоге файлы до нулевой длины. Задание каталога в командной строке является небольшой универсализацией - а вдруг у вас несколько каталогов, которые необходимо очищать. Итак, создаем файлик с именем "clrlog" (без кавычек, ессно) и пишем в него следующее:

#!/bin/bash

if [ $1!="" ]

then

for i in $1/*

  do

    if [ -f $i ]

      then

        echo -n > $i

    fi

done

fi

После чего записываем его в каталог /bin. Для запуска можно написать еще один скриптик, к примеру "Kill_Log", который тоже помещаем в /bin. В него пишем строки типа:

./clrlog /var/log

./clrlog <любой_другой_очишаемый_каталог>

и т.д.

3. После установки какого-либо дистрибутива Linux (к примеру RedHat 7.0, Mandrake 7.1), в графической системе X-Window нет возможности переключиться на русскую раскладку клавиатуры, либо она повешена на клавишу типа CapsLock, а если вам не нравится ваша раскладка - это не всем приятно. Недавно на сайте IPLabs Linux Team я прочитал решение этой проблемы, и хочу его, рассказать. Исправляется все это дело в файлике /etc/XF86Config (или /etc/X11/XF86Config). Он содержит инфу о настройках X-Window системы и создается любым конфигуратором X: Xconfigurator, XF86Setup, SaX, xf86config (XF86Setup и SaX спросят вас о типе клавиатуры - выберите русскую). Там же надо добавить пути к русским KOI8 - шрифтам в секцию Files, если это необходимо. Далее смотрим содержимое секции Keyboard, точнее говоря - на переменные, начинающиеся с Xkb. Переменной XkbDisable не должно быть в Файле, либо вы ее аккуратно закомментариваете, ставя в начале строки с перепенной символ #. Должна присутствовать переменная XkbModel. Значение переменной XkbLayout устанавливаем в "ru":

XkbLayout  "ru"

  Строку с переменной XkbOptions пока закомментарим. Далее убеждаемся, что Вашем домашнем каталоге нет файла .Xmodmap. А также проверим, что при запуске X не начнут автоматически выполняться программы типа xruskb и kikbd. Настройка, точнее ее основная часть, закончена. Запустите xterm в X и убедитесь, что нажатие на CapsLock и удержание правой клавиши Alt переключает группы Рус/Lat.

  Но, скорее всего, вас не удовлетворит текущая раскладка клавиатуры - цифры в верхнем ряду набираются при нажатом Shift. Если это действительно так, то тогда делаем следующее: помещаем в каталог /usr/X11R6/lib/X11/xkb/symbols раскладку ru1 для обычной клавиатуры и rums - для клавиатуры с клавишами MS, а затем исправляем строчку XkbLayout в XF86Config, указав вместо ru - ru1 или ru-ms. Если же и эти раскладки вас не устраивают, - поправьте файлы раскладок, с их синтасксисом разобраться совсем несложно.

  Если вы не удовлетворены клавишей CapsLock в качестве переключателя раскладок, то следует изменить строчку XkbLayout, добавив после названия раскладки слово basic в скобках, например:

XkbLayout "ru-ms(basic)"

и определbnm переменную XkbOptions. Она может принимать следующие значения (все они описаны в файле /usr/X11R6/lib/X11/xkb/symbols/rules/xfree86.lst):

grp:toggle                  - переключение правым Alt,

grp:shift_toggle         - двумя клавишами shift,

grp:ctrl_shift_toggle  - ctrl+shift,

grp:ctrl_alt_toggle     - ctrl+alt.

Например, строка

XkbOptions "grp:shift_toggle"

задает переключение Рус/Lat двумя клавишами shift. Наконец, если вам очень уж хочется, чтобы при переключении раскладок загоралась лампочка ScrollLock, то можно сделать и это (главное - захотеть ;-).  Посмотрим в каталог /usr/X11R6/lib/X11/xkb/compat. Там должен быть файлик group_led.  Затем загружаем в любой редактор файл /usr/X11R6/lib/X11/xkb/rules/xfree86 и  находим в нем первое вхождение слова complete, оно должно быть под словом compat. Заменяем это вхождение complete на group_led и сохраняем измененный файл. При очередном запуске X лампочка ScrollLock будет сигнализировать о переключении  алфавитов.

4. Один из способов, как увеличить свободное место на винчестере - это использование утилиты Strip. Да-да, именно ее. Как известно, при компиляции программы в Linux в выходной файл записывается так называемый debug-info, чтобы в случае сбоя этой программы можно было посмотреть, где был сбой. Но для "рядового" пользователя Linux это незачем. Тогда делаем так:

strip -s *

И из всех запускаемых файлов и библиотек в текущей директории будет удалена debug-info. На практике, 800-меговый Linux удалось укоротить почти на 150Mb. Кому как, а для нескольких (десятков) mp3 как раз хватит.

5. В Linux возможна одновременная pабота в full screen и в X-Window. Переключаться можно так: Ctrl-Alt-F# (из иксов в текстовый режим) или Alt-F# (обратно, только нужно найти свободную консоль).

2. Сделать автоматический старт X-Window при загрузке компьютера или отключить это можно так: нужно изменить RunLevel v уровень запуска Linux. Для этого исправляем файл /etc/inittab. Находим в нем строчку

id::initdefault:

и  исправляем ее. Вместо там написана цифра, мы заменяем ее на одну из следующих:

3 v текстовый режим, без автостарта X Window;

5 v автостарт графического режима.

3. Настроить звук в Linux можно программкой sndconfig. Она после своего запуска определяет тип вашей звуковой карточки, а после проигрывает парочку звуков, спрашивая, хорошо ли было слышно звук. В случае неудачи позволяет выбрать настройки вручную. После всего этого она подправляет конфигурационный файл.

6. Если в Midnight Commander у вас не отображаются или не вводятся русские буквы, то проверьте, стоят ли у вас следующие опции: меню Options, Display bits, параметры ?Full 8-bit Output¦, ?Full 8-bit input¦.

7. Многих интересует вопрос: как загружается Linux-система? Очень коротко процесс загрузки можно описать так: ядро монтирует корневую файловую систему, и запускает первый процесс init, разыскав его исполняемый файл в нескольких стандартных местах. Этот процесс читает свой конфигурационный файл /etc/inittab и запускает все остальные процессы согласно инструкциям из этого файла. Обычно в inittab прописывается запуск процессов *getty, управляющих терминалами, виртуальными консолями и последовательными линиями (то есть именно *getty ответственны за запуск login (сравниваюий имя и пароль, указанные пользователем, с тем, что прописано в /etc/passwd и в случае успеха запускающего соотв. shell), pppd, ifcico и т.д., что именно запускается и в каком случае - зависит от конкретного getty, наиболее универсальным считается mgetty.

Кроме того, здесь же прописываются скрипты, запускающиеся на различных так называемых "уровнях выполнения", из которых в свою очередь запускаются все остальные системные сервисы, осуществляется настройка сети, проверка файловой системы и так далее.

8. А знаете ли вы, что из под Linux можно запускать Windows-программы? Для этого нужно поставить Windows Emulator v Wine. Далее заходим в каталог с требуемой программкой и выполняем следующую команду:

wine <имя_программки>

Не стоит думать, что все Windows программы захотят так работать, но по крайней мере у меня свободно работал MS Word, а также Mortal Combat 4 (причем даже со звуком!).

9. Создавать и удалять новых пользователей можно так: добавление производится  командой  adduser, удаление - командой  deluser  или,  при удалении информации из /etc/passwd, руками в  редакторе. Замечу, что  также  имеется команда  addgroup  для  создания групп. Вся служебная  информация  по  пользователям  и  группам  хранится в файлах  /etc/passwd  и  /etc/group.

10. Спасательные дискеты. Многие пользователи применяют для запуска Linux загрузочные дискеты. Такая дискета содержит копию ядра Linux. Во многих дистрибутивах инсталляционные программы предоставляют возможность создать подобную дискету. Такая дискета вместе со спасательной дискетой, содержащей маленькую копию Linux и необходимый минимальный набор утилит, используются в качестве ремонтного набора, если вдруг вы что-либо сделали не так. Загрузочная и спасательные дискеты создаются программой rawrite (она находится в каталоге /dosutils компакт-диска Linux). Для этого нужны две отформатированные дискеты с метками boot и rescue соответственно. Вставьте дискету boot в дисковод A: и введите команду

            e:dosutils>rawrite

     Считаем, что CD-привод у вас является устройством E:, иначе измените букву привода на свою. После запуска появится приглашение ввести имя файла, который содержит образ необходимой дискеты. Введите e:imagesboot.img. Далее пойдет процесс записи образа на дискету. Если создание дискеты окончилось неудачно, повторите операцию с другой дискетой. Точно также создается спасательная дискета, только используется файл rescue.img.

     Использовать дискеты очень просто. Вставьте загрузочную дискету и перезагрузите систему. После теста системы появится приглашение. Если вам просто нужно загрузить установленный на компьютер Linux, то просто введите

            root=/dev/hda1

где после знака равенства должен быть прописан раздел, на котором стоит оная система. Если же требуется провести ремонтные операции с использованием спасательной дискеты, то надо ввести команду rescue. После ее ввода и загрузки ядра вас попросят вставить спасательную дискету и нажать любую клавишу. После загрузки спасательной дискеты вы увидите приглашение shell-а.

11. Выход из Linux. Работая с Linux, следует быть аккуратным при выходе из системы. Ни в коем случае нельзя просто выключить компьютер! Т.к. Linux хранит информацию файловой системы в оперативной памяти, то при отключении питания эта информация может потеряться и повредиться файловая система. В большинстве дистрибутивов реализован нормальный выход из Linux по нажатию комбинации клавиш Ctrl+Alt+Del. Но есть еще один способ выйти v использовать команду shutdown. Синтаксис команды имеет вид:

            /sbin/shutdown [flags] time [message]

где: flags v флаги команды, time v время выполнения отключения системы (формат: hh:mm, либо +m, где m v количество минут до останова системы, +0 обычно заменяется словом now), а message v сообщение, которое посылается всем пользователям, работающим в данный момент в системе. Основные флаги:

            -r         -          перезагрузка компьютера по завершению работы;

            -h         -          отключение компьютера по завершению работы.

     Данная команда запрещает регистрацию пользователей, посылает всем работающим на данный момент в системе пользователям предупреждающее сообщение, после чего выжидает заданное в параметре время и посылает всем процессам сигнал завершения работы. Затем вызывается команда halt или reboot (смотря что было передано в командной строке).

12. Основные команды управления файлами и каталогами. Подавляющее большинство команд оболочки Linux предназначено для простого манипулирования файлами и каталогами. Основные из них:

            ls v получение списка файлов текущего каталога;

            mkdir v создание каталога;

            cd v изменение текущего каталога;

            cp v копирование файлов и каталогов;

            mv v перемещение и переименование файлов и каталогов;

            rm v удаление файлов и каталогов;

            cat, more, less v просмотр содержимого файлов;

            find v поиск файлов.

     Подробную справку по каждой из команд можно получить, набрав в командной строке саму команду и параметр --help (именно два знака ?тире¦). А для тех, кто любит оболочки типа Norton Commander и DOS Navigator есть подобная вещь и под Linux v Midnight Commander. Запуск ее осуществляется командой mc.

13. Если подвисла программка, то не стоит перезагружать всю систему. Снять с выполнения вредную программу можно так: переключаемся на свободную консоль, используем команду ps для вывода списка текущих процессов в системе, ищем и запоминаем в самом левом столбце числовой идентификатор необходимой программы, и завершаем ее выполнение командой kill <идентификатор>.

14. Linux FTP-архивы. Linux детище Интернета, поэтому вполне понятно, что в Интернете можно почерпнуть максимум информации связанной с Linux. В приводимой ниже таблице перечислены FTP-узлы, в которых собраны архивы Linux.

Название узла

Каталог

tsx-11.mit.edu

/pub/linux

sunsite.unc.edu

/pub/Linux

nic.funet.fi

/pub/Linux

ftp.mcc.ac.uk

/pub/linux

ftp.dfv.rwth-aachen.de

/pub/linux

ftp.informatik.rwth-aachen.de

/pub/Linux

ftp.ibr.fr

/pub/linux

kirk.bond.edu.au

/pub/OS/Linux

ftp.uu.net

/systems/unix/linux

wuarchive.wustl.edu

/systems/linux

ftp.win.tue.nl

/pub/linux

ftp.stack.nl

/pub/Linux

ftp.ibr.cs.tu-bs.de

/pub/os/linux

ftp.denet.dk

/pub/os/Linux

15. Совет от LinuxFocus Как скопировать большой файл на несколько дискет? Конечно существует много вариантов. Но самый простой - с помощью "split" и "cat" - это стандартные команды UNIX.

split -b 1420k largefile

С помощью этой команды вы создадите файлы xaa, xab, ... размером 1420k. Скопируйте их на дискеты и соберите обратно командой :

cat xaa xab > largefile

Это еще к тому же многоплатформенное решение. Под DOS вы соберете эти файлы командой :

copy /b xaa + xab largefile /b

16. Shared Windows resourсes

Чтобы посмотреть список расшаренных ресурсов на Windows-машине, можно использовать следующие команды: "smbclient -I -L NAME_SERVER", или "nmblookup -r -A ", или "smbclient -N -L hostname -I ", или скрипт "smpfind".

17. Список пакетов

Чтобы вывести список всех установленных пакетов, используйте команду "rpm -qa" (не нужно указывать имя пакета). Чтобы найти все установленные пакеты, в названии которых содержится какое-нибудь слово (например, kde), используйте команду "rpm -qa | grep kde".

18.Если надо установить два или более пакетов, зависящих друг от друга,

то установите их одновременно: "rpm -ihv foo-1.1-3mdk.rpm libfoo-1.5-2mdk.rpm".

19.Хранение списка контрольных сумм md5

Хранение списка контрольных сумм md5 важных системных файлов может быть очень полезным. Например, если злоумышленники проникнут в вашу систему, вы сможете узнать, были ли оставлены backdoor'ы. Скрипт, создающий список контрольных сумм md5, может быть примерно таким:
#!/bin/sh md5sum /bin/* /sbin/* /usr/bin/* /usr/sbin/* /usr/X11R6/bin/* /etc/* > \ "/root/date +"%Y%m%d".md5" 2> /dev/null
Этот скрипт создает файл в директории /root, в названии которого присутствует сегодняшняя дата. Лучше всего - запустить этот скрипт сразу же после установки системы. Для того, чтобы сравнить контрольные суммы файлов, присутствующих в системе сейчас, с уже сохраненными, создайте примерно такой скрипт:
#!/bin/sh md5sum /bin/* /sbin/* /usr/bin/* /usr/sbin/* /usr/X11R6/bin/* /etc/* \ 2> /dev/null | diff $1 - | awk '$1=="<" {print $3}'
Формат запуска этого скрипта: checkmd5.sh /root/20020125.md5 (Если вы сохранили его под именем checkmd5.sh). Если какие-то файлы изменились, их имена будут выведены на экран. Рекомендуется хранить ваш файл с оригинальными контрольными суммами md5 в надежном месте (например, на другом компьютере), чтобы злоумышленники не смогли его изменить или удалить.

20. Изменение MAC-адреса сетевой карты

Если вы хотите изменить MAC-адрес вашей сетевой карты, используйте следующие две команды:
ifconfig eth0 down
ifconfig eth0 ether hw aa:bb:cc:dd:ee:ff
Где eth0 - ваша сетевая карта, а aa:bb:cc:dd:ee:ff - новый MAC-адрес. Теперь запустите скрипт запуска сети, или просто перезагрузитесь.

21. su

Никогда не входите в систему под именем root. Работайте с правами обычного пользователя, переключаясь в режим суперпользователя с помощью команды su только в случае необходимости. К тому же, посмотрев логи su, вы сможете контролировать, кто и когда работал в системе с правами root'а. Чтобы выйти из режима su, используйте команду exit. Чтобы временно перейти в режим нормального пользователя, наберите "suspend", а чтобы вернуться - "fg". Иксы упали и больше не запускаются Иксы упали и больше не запускаются. Выдается что-то вроде "can't find default font fixed". Причина - после падения X перестает работать сервис xfs ("service xfs status"). Решение - сначала нужно удалить /tmp и создать его заново (для этого нужно выполнить команды mv /tmp, mkdir /tmp и chmod 1777 /tmp). После этого - выполнить команду "service xfs start". И еще насчет падений и зависаний X - обычно это бывает из-за Wine и кривых драйверов :).

22. PATH #2

Обычно PATH для администратора и для обычных пользователей различаются (PATH администратора включает в себя /sbin и /usr/sbin, тогда как у пользователей этих каталогов нет). Поэтому пользователи не могут исполнять программы, расположенные в каталоге "sbin", если в командную строку не включить полный путь к исполняемому файлу. Также, если вы стали суперпользователем, выполнив команду su, вы наследуете PATH пользователя, и для выполнения программы, расположенной в sbin, вам все равно потребуется указывать полный путь.

23. Text: DOS -> UNIX


Самые простые способы преобразовать текстовый файл dos/windows в текстовый файл Unix:
1) "cat filename1 | tr -d "^V^M" > newfile".
2) "sed -e "s/^V^M//" filename > outputfilename".
3) Команда "dos2unix".
4) "col -bx dosfile > newfile".

24. Восстановление /dev/null

Если заменить /dev/null на обычный файл, система перестанет нормально функционировать. Чтобы восстановить /dev/null, нужно выполнить команды "mknod /dev/null c 1 3" и "chmod 666 /dev/null".

25. Удаление "корзины" из KDE 3.

Удалите каталог ~/KDesktop/Trash. Установите KDE Control Center->Look & Feel->Desktop->Paths->Trash в /dev/null и посмотрите, что не вы владелец. Перезапустите KDE. "Корзина" не работает, потому что вы - не владелец /dev/null. Наслаждайтесь чистым рабочим столом :).

26. CD burning.

Стираем так:
cdrecord -v blank=fast(или all) dev=<Ваш девайс>.

Образ делаем так:
mkisofs -r -J -o <имя_файла_образа.iso> <то_чего_в_образ_загоняем>

Пишем так:
cdrecord -v -eject speed=8 dev=<Ваш девайс> file.iso.

Если надо мультисессионный диск, то добавляем -multi.

Так же существует много графических оболочек, которые в своей работе используют эти же простые команды.