Меню сайта |
|
|
|
"2Tab" - это двойное нажатие клавиши <Tab>
$ 2Tab - показать все возможные команды;
$ / 2Tab - показать структуру каталога;
$ * 2Tab - показать все подкаталоги;
$ ~ 2Tab - показать всех пользователей из /etc/passwd;
$ $ 2Tab - показать все переменные;
$ @ 2Tab - показать содержимое /etc/hosts |
~ - домашний каталог;
~user - домашний каталог пользователя user;
~+ - текущий каталог;
~- - предыдущий каталог;
=команда - полный путь до бинарника команды. |
$ zmodload zsh/zftp - загружаем модуль zftp;
$ zftp login anonymous "" - регистрируемся;
$ zftp binary - переходим в бинарный режим передачи файлов;
$ zftp cd pub/linux/kernel/v2.6 - переходим в нужный каталог;
$ zftp get a.tar.bz2 > b.tar.bz2 - получаем файл;
$ zftp close - закрываем соединение. |
Преобразовать обычный текста в формат PostScript можно с помощью утилиты a2ps. Её удобно использовать для печати обычных ASCII файлов (подробно о настройке lpd-фильтров печати и сетевой печати, отдельная страница этого сайта посвящена вопросам безопасности). Основная проблема с русскими буквами.
Чтобы появились русские буквы:
Смотрим, где a2ps ищет шрифты:
a2ps --list=defaults
Скачиваем русские шрифты i18n-fonts-0.1.tar.gz (или более новую версию, если она появилась). Эти шрифты можно найти на многих ftp-серверах, в частности, на ftp://ftp.enst.fr/pub/unix/a2ps/.
Распаковываем этот архив. Там есть две директории: afm и fonts. Копируем их содержимое в соответствующие директории, выданные командой a2ps --list=defaults.
Запускаем скрипт afm/make_fonts_map.sh. Он находится в той же директории, что и .afm-файлы (есть он и в дистрибутиве шрифтов). Он создаёт файл fonts.map.new, этим файлом надо заменить существующий fonts.map.
Всё шрифты привязаны.
Пробуем:
a2ps -X koi8 text >text.ps
Если вы не хотите каждый раз указывать кодировку вручную, то поправьте конфигурационный файл (я предпочитаю править /usr/local/etc/a2ps-site.cfg). Укажите в нём:
Options: --encoding=koi8 |
Проще всего воспользоваться системой LaTeX.
Сперва делаем PostScript:
#!/bin/sh
f=DBI
pod2latex -out $f.t $f.pm
( cat doc-head-12pt.tex
perl -pe 's/section\*/section/g' $f.t.tex
cat doc-tail.tex ) > $f.tex
latex $f.tex
latex $f.tex
dvips -o $f.ps $f.dvi
Совет: если вы создаёте русский POD-документ и вам выдаётся странная ошибка, что POD не обнаружен, то поправьте в модуле Pod::Find строчку unless(-f $file && -T _ && ($file =~ /\.(pod|pm|plx?)\z/i || -x _ )). Выкиньте из неё проверку -T — она не воспринимает файл, как текстовый, если в нём есть не-ASCII символы, коими являются русские буквы.
Здесь предполагается, что DBI.pm (или любой другой файл с POD-документацией) находится в текущей директории, а файлы doc-head-12pt.tex и doc-tail.tex имеют примерно следующее содержание:
файл doc-head-12pt.tex:
% Задаём глобальные атрибуты документа
%\documentclass[11pt, twocolumn]{article}
\documentclass[11pt]{article}
%\usepackage[magstep2]{scale}
%\usepackage[a3paper]{geometry}
% Изменяем поля
\addtolength{\hoffset}{-.9in}
\addtolength{\textwidth}{1.8in}
\addtolength{\voffset}{-1.1in}
\addtolength{\textheight}{2.2in}
% Отступ абзацев
\setlength{\parindent}{1cm}
% Расстояние между абзацами
\setlength{\parskip}{0pt}
% Русский стиль оформления абзацев
%\usepackage{indentfirst}
% Оговариваем кодировку документа
% (обычно POD-документы англоязычны, но вы можете создать
% свой собственный на любом языке)
%\usepackage[cp866]{inputenc}
% \usepackage[koi8-r]{inputenc}
% \usepackage[russian]{babel}
% \selectlanguage{russian}
%\usepackage{draftcopy}
% Включаем графический пакет
% (это только для опытных пользователей, которые
% сами разрабатывают документацию в POD)
%\usepackage[dvips]{graphicx}
%\graphicspath{{ps/}}
% Макрос для вставки картинок
%\newcommand{\inspsfig}[3]{
%\begin{figure}[!htbp]
%\begin{center}
%\includegraphics[angle=0, width=#2\textwidth]{#1}
%\end{center}
%\caption{#3}
%\label{text}
%\end{figure}
%}
% Задаём межстрочный интервал
\linespread{1}
% Документ начался
\begin{document}
% В начале документа генерируем оглавление и ...
\tableofcontents
% ... список иллюстраций
%\listoffigures
% Можно начать документ со следующей страницы
\newpage
% а можно просто задать отступ
%\vspace{50mm}
Большинство директив здесь закомментированны, но они могу оказать полезны. А иные вам, возможно, захочется закомментировать.
файл doc-tail.tex:
\end{document}
Скрипт создаёт PS-файл с которым можно сделать любые преобразования. Например, если на выходе нужен буклет, то это можно сделать так:
#/bin/sh
f=DBI
pstops '4:-3L@.7(21cm,0)+0L@.7(21cm,14.85cm)' $f.ps $f-up.ps
pstops '4:1L@.7(21cm,0)+-2L@.7(21cm,14.85cm)' $f.ps $f-down.ps
Получатся два файла (у нас: DBI-up.ps и DBI-down.ps). Это все верхние и все нижние странички. То есть печатаете сперва верхние, потом переворачиваете всю пачку и печатаете нижние. Потом складываете пачку пополам, прошиваете, и буклет готов.
Все полученные PSы можно переделать в PDFы:
#/bin/sh
gs -sOutputFile=${1%.ps}.pdf \
-dBATCH -dNOPAUSE \
-sPAPERSIZE=a4 \
-sDEVICE=pdfwrite \
$1 |
ntpdate 2.ru.pool.ntp.org |
Допустим надо запустить программу от пользователя script на хосте down. Делается это очень просто:
ssh script@down /usr/home/script/bin/prog --prog-params
Единственный «недостаток» у вас каждый раз будет запрашиваться пароль. |
Если у вас нет открытого ключа, то создаём его:
cd ~/.ssh
ssh-keygen -t dsa
Теперь у вас есть открытый ключ.
Заходим на удалённый хост и добавляем ваш ключ к списку авторизованных ключей:
ssh script@down # у вас запросят пароль
scp you@yourhost:~/.ssh/id_dsa.pub ~/.ssh/temp
cat ~/.ssh/temp >> ~/.ssh/authorized_keys
rm ~/.ssh/temp
Теперь ssh будет пускать пользователя you с хоста yourhost на хост down пользователем script без пароля. То есть при запуске скриптов, как показано выше, пароль запрашиваться не будет. |
Очень удобный способ генерации паролей:
openssl rand -base64 24 |
Для генерации md5-сумм существуют отдельные утилиты (под FreeBSD — md5, под Linux — md5sum), но выдают информацию в разных форматах. openssl — более универсальный метод:
openssl md5 файл |
Зашифровать файл:
openssl enc -aes-256-cbc -salt -in входной_файл -out зашифрованный_файл
Эта команда дважды спросит пароль для шифрования.
openssl enc -d -aes-256-cbc -in зашифрованный_файл -out расшифрованный_файл
Спросит пароль.
Того же самого эффекта можно доиться, управляя стандартными потоками:
# шифруем
openssl enc -aes-256-cbc -salt < входной_файл > зашифрованный_файл # расшифровываем
openssl enc -d -aes-256-cbc < зашифрованный_файл > расшифрованный_файл
Полезный пример:
# создаём защищённый паролем tar-архив
tar czf - your_dir | openssl enc -aes-256-cbc -salt >file.tgz # распаковываем этот архив
openssl enc -d -aes-256-cbc < file.tgz | tar xzf - |
Создать patch:
diff старый_файл новый_файл > patch_файл
Наложить patch:
patch старый_файл patch_файл
Естественно порядок файлов везде важен. |
Во FreeBSD есть две утилиты для подсчёта md5-сумм файлов. Они выдают один а тот же результат, но в несколько разном формате, что очень неудобно, если надо сравнить файлы (по суммам), лежащие на машинах. Поэтому я написал маленький скрипт, эмитирующий поведение недостающей утилиты.
!/bin/sh md5 -- "$@" | sed -E 's/^MD5 \((.*)\) = ([^[:space:]]+)/\2 \1/'
Они, конечно, не позволяют использовать ключи командной строки, но обычно это как раз то, что нужно. |
Очень полезная утилита smartctl
/usr/local/sbin/smartctl -a /dev/ad4
выдаст полную информацию по указанному диску, вот лишь, некоторые поля:
ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE
1 Raw_Read_Error_Rate 0x000f 100 100 051 Pre-fail Always - 0
3 Spin_Up_Time 0x0007 253 253 025 Pre-fail Always - 5760
4 Start_Stop_Count 0x0032 100 100 000 Old_age Always - 77
7 Seek_Error_Rate 0x000f 253 253 051 Pre-fail Always - 0
8 Seek_Time_Performance 0x0025 253 253 015 Pre-fail Offline - 0
9 Power_On_Hours 0x0032 100 100 000 Old_age Always - 5899
10 Spin_Retry_Count 0x0033 253 253 051 Pre-fail Always - 0
12 Power_Cycle_Count 0x0032 100 100 000 Old_age Always - 61
194 Temperature_Celsius 0x0022 050 043 000 Old_age Always - 50
196 Reallocated_Event_Count 0x0032 253 253 000 Old_age Always - 0
199 UDMA_CRC_Error_Count 0x003e 200 200 000 Old_age Always - 0
200 Multi_Zone_Error_Rate 0x000a 100 100 000 Old_age Always - 0
201 Soft_Read_Error_Rate 0x000a 100 100 000 Old_age Always - 0
202 TA_Increase_Count 0x0032 253 253 000 Old_age Always - 0
На самом деле информации выдаётся на много больше.
Информация о нагрузке на диски в реальном масштабе времени: gstat и iostat -w 1.
Информация о swap'e: swapctl -lh
Информация о всех открытых файлах fstat.
Есть ещё systat. |
Чтобы X-сервер не ожидал внешних соединений, его следует запускать с ключом -nolisten tcp. То есть, в простейшем случае, если вы запускаете X с помощью xinit, команда будет выглядеть так:
xinit -- -nolisten tcp
|
Демон печати по умолчанию запускается в очень беспечном режиме, позволяя практически кому угодно использовать вашу машину для печати. Чтобы оставить право печати только себе, запустите lpd с ключом -s:
killall lpd lpd -s
Чтобы сервер запускался сам с этим ключом, при старте системы, добавьте в /etc/rc.conf строки:
lpd_enable="YES" lpd_flags="-s" |
По умолчанию syslogd запускается с ключом -s, это обеспечивает некоторый уровень защиты. Но чтобы демон не пытался слушать внешние порты, его следует запускать с ключом -ss. Для этого пишем в /etc/rc.conf:
syslogd_flags="-ss" |
Все просто, потому и быстро забывается ;) 1. Устанавливаем:
root@localhost# pkg_add -r ntp
2. Записываем в /etc/crontab:
55 23 * * * root /usr/sbin/ntpdate ntp.rinet.ru
Думаю, за пять минут до полуночи, раз в сутки - достаточно для весьма точной синхронизации времени. P.S.: ntp.rinet.ru - это сервер точного времени моего провайдера. В принципе, открыт для всего интернета, но лучше поискать ближайший. |
$ vi ~/.zshrc
setopt autocd
alias -g ...='../..'
alias -g ....='../../..'
$ . ~/.zshrc
Теперь, чтобы вернуться на три директории вверх, достаточно набрать «....». |
$ du -h . | grep -v '/.*/' | sort -n |
% echo "scale=2; 1000/24.92" | bc
40.12 |
Например, переведем 20 из dec в hex и обратно:
$ echo "obase=16;20" | bc
14
$ echo "ibase=16;20" | bc
32 |
(~/devel/www)% cvs -fq -d andrey@cvs.openbsd.ru:/cvs diff -u -p \
-r1.23 -r1.24 docs/howto-bridge.html | vim - |
# vi /var/named/conf/named.conf:
zone "doubleclick.com" {
type master;
file "master/doubleclick.com";
};
# vi /var/named/master/doubleclick.com:
[[ здесь идет стандартная SOA-запись ]]
ad.doubleclick.com. IN A 127.0.0.1
*.doubleclick.com. IN A 127.0.0.1
# rndc reload |
# cd /var
# tar cf - named | (cd /mnt/var; tar xpf -) |
% uptime | awk '{ while($3--) a=a"="; print "|" a ">"}'
|=====================> |
freebsd$ pkg_info -W foobar |
# export BATCH=yes; portupgrade -a |
$ xclip /etc/passwd
$ uptime | xclip |
Изменяем размер шрифтов интерфейса Firefox (добавить строку в ~/.mozila/firefox/ИМЯ_ПРОФИЛЯ.default/chrome/userChrome.css):
* {font-size: 10pt :important}
Перезагружаем .Xdefaults
$ xrdb ~/.Xdefaults |
$ mencoder dvd:// -ovc xvid -oac mp3lame -xvidencopts bitrate=-700000 -o файл.avi |
$ ffmpeg -i фильм.avi -s qcif -r 12 -ac 1 -ar 8000 -b 30 -ab 12 мини-фильм.3gp |
Системные команды, которыми можно проверить ресурсы системы: top -mio – показать I/O по процессам top -S – показать системные процессы в топе (по дефолту они не показываются) gstat – нагрузка на диски iostat -d -w1 -c7 – нагрузка на диски systat -io start 1 diskinfo -t da0 – тест на дисковую производительность tunefs -p /var/ – информация о настройках файловой системы vmstat -z чего не хватает vmstat -i прерывания по устройствам netstat -i ошибки на интерфейсах systat -ifstat – интенсивность передачи трафика netstat -inb – передано через интерфейс в байтах netstat -w1 – количество пакетов/ошибок/байт на интерфейсе sysctl kern.ipc.numopensockets – количество открытых сокетов df -H – количество свободного места df -i – количество свободных инодов |
Для того что использовать Midnight Commander по полной, предлагаю запомнить несколько клавиатурных сокращений,которые сильно облегчают выполнение задач. Клавиатурные комбинации в Midnight Commander имеют особенность: комбинация Ctrl + Х означает, что нужно нажать CTRL и клавишу X, отпустить и потом нажать нужную клавишу.(Пример: нажимаем Ctrl + X отпускаем и жмем C ) Итак, некоторые комбинации клавиш Midnight Commander: Ctrl + R обновляет активную панель; Ctrl + X C посмотреть/поменять права (chmod) для отмеченных файлов; Ctrl + X O посмотреть/поменять владельца (chown) для отмеченных файлов; Ctrl + S или Alt + S открывает диалог быстрого поиска (вводимые символы отображаются не в командной строке, а в строке поиска); Ctrl + X A открывает диалог виртуальных файловых систем; Ctrl+ \ вызывается меню часто используемых каталогов. Ctrl + X J показываются все фоновые задачи. Ctrl + X T послать выделенные объекты в командную строку Ctrl + X S создать символическую ссылку (symlink) Ctrl + X Q быстрый просмотр содержимого файла на второй панели. Ctrl + X I быстрый просмотр информации о текущем объекте на второй панели. ESC + T или ALT + T cмена вида панели (стандартный, укороченный, расширенный); ESC + H или ALT + H вызов списка последних выполненных команд; Alt + G отмечает первый файл или каталог в отображаемом списке на панели Alt + R отмечает средний файл или каталог в отображаемом списке на панели Alt + J отмечает последний файл или каталог в отображаемом списке на панели Alt + O неактивная панель переходит в каталог на который указывает активная панель. Alt + . не показывать или показать скрытые файлы или каталоги. Alt + , переключить режим отображения панелей (вертикально/горизонтально). | | |
Форма входа |
|
|
Поиск |
|
|
Друзья сайта |
|
|
Статистика |
Онлайн всего: 2 Гостей: 2 Пользователей: 0 |
links |
|
|
|