Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #103, ИЮЛЬ 2007 г.

Tips'n'tricks юниксоида

Andrey Matveev

Хакер, номер #103, стр. 103-097-1

(andrushock@real.xakep.ru)

Доблестный юниксоид! Представляю твоему вниманию очередную подборку различных трюков, рекомендаций и советов, касающихся *nix-систем.

Shell

Вот так можно очень быстро создать пустой файл:

: > foobar.txt

Пример создания десяти файлов с именами от 1 до 10:

$ for i in $(seq 1 10); do touch $i.txt; done

Простейший калькулятор:

$ perl -l -e 'print 1024 * 1024 * 1024'

Включить NumLock на всех консолях при загрузке Linux-системы:

# vi /etc/rc.d/rc.local

for tty in /dev/tty[0-9]*; do

setleds -D +num < $tty

done

Завершаем работу с программой, работающей с каталогом /mnt:

# kill `lsof -t /mnt`

Выбрасываем пользователя из терминала p3 (при условии, что в качестве умолчального командного интерпретатора он использует bash):

# killall -t p3 -9 bash

Прерывание по таймеру (в данном случае через 60 секунд):

TIME=60

trap 'exit' ALRM

(sleep $TIME && kill -ALRM "$$") &

Не выводить предупреждения при компиляции фортрановских файлов:

$ f77 project.f 2>&1 | grep -v "^Warning"

Перенапраляем вывод нескольких команд:

$ { date; uptime; last; df -h } | mail -s "my report" andrushock@domain.ru

Сбросить характеристики терминала (достаточно одной команды, я просто привел различные варианты для всех *nix-систем):

$ clear

$ tput clear

$ tput reset

$ tput init

$ reset

$ stty sane

$ eval `resize`

Отсортировать файлы по увеличению их размера:

$ ls -l | sort +4n | tail

Копирование содержимого текущего каталога в /tmp с помощью tar:

$ tar -cf - . | (cd /tmp; tar -xf - )

Разбиваем большой файл, чтобы он поместился на дискету/компакт:

$ split -b 1400k bigfile.tar.gz bigfile.

$ split -b 700m bigfile.tar.gz bigfile.

Для восстановления архива из кусочков набираем:

$ cat bigfile.* > bigfile.tar.gz

Простой способ шифрования файлов (примечание: работает не на всех *nix-системах):

$ compress -c file | dd bs=3 skip=1 | crypt > encrypted

$ (compress -cf /dev/null; crypt < encrypted) | zcat > file

Распаковать библиотеку:

$ ar xv libfoobar.a

Посмотреть связанные объекты в библиотеке:

$ nm -g libfoobar.a

Найти пакеты, начинающиеся с определенной последовательности символов:

$ rpm -qa | grep ^kde

Чтобы определить, в каком rpm-пакете дистрибутива находится нужный файл, можно создать список файлов во всех rpm'ках в дистрибутиве и прогрепить полученный результат:

$ find /mnt/cdrom/Mandrake/RPMS -name "*.rpm" -exec rpm -qpil {} > ~/mandrake.lst \;

$ grep -B100 искомый_файл ~/mandrake.lst | less

FreeBSD

Корректное отключение sendmail в FreeBSD:

# vi /etc/rc.conf

sendmail_enable="NONE"

# vi /etc/crontab

#1 3 * * * root periodic daily

#15 4 * * 6 root periodic weekly

#30 5 1 * * root periodic monthly

Оптимизация под конкретную архитектуру при пересборке FreeBSD из исходников:

# vi /etc/make.conf

CFLAGS= -O2 -pipe -march=pentium4

COPTFLAGS= -O2 -pipe -march=pentium4

CPUTYPE?=pentium4

Пересборка FreeBSD:

# cd /usr/src

# make buildkernel && make buildworld && make installkernel

# reboot

# mergemaster -p

# cd /usr/src && make installworld

# mergemaster

Заводим отдельную учетную запись для демона:

# pw adduser -d /dev/null -s /usr/sbin/nologin -c "tinydns pseudouser" tinydns

Содержание  Вперед на стр. 103-097-2