Глупый пингвин робко прячет, умный - смело достает...


Alexander Ufimtsev аватар

Есть совет? Добавьте его сюда! sticky icon

Долго ковырялся с компом и что-то настраивал? Не смог наскоком найти ответ на вопрос в Гугле? Тогда добавь сюда свой совет, мы будем рады его опубликовать! Неважно, если это "рецепт по боданию" с каким-то из вариантов Linux, Unix или другого СПО проекта. Опубликуем, поможем улучшить и сохранить сию крупицу знания!

Жмите сюда, чтобы ДОБАВИТЬ СОВЕТ.
Рекомендации по оформлению советов. Модераторы помогут поправить форматирование, если у вас возникли проблемы.

Регистрация на сайте необязательна, но чтобы не возиться с captcha, рекомендуем все-таки зарегистрироваться или войти по OpenID. По любым вопросам обращайтесь в наш форум или стучитесь в обратную связь.

Благодарим за визит и отклики!

3.25
Ваша оценка: Ничего Рейтинг: 3.3 (4 голоса)

linux bash: kill service on port

Кто-то для того, что бы убить процесс - матчит имена процесса по строкам в ps и grep -v grep. Вот же повезло пользователю с ником grepulya!

По хорошему - процесс хранит свой pid в залоченом файле.

Если не хранит, но мы знаем какой порт хотим освободить:

Прямой способ:

$ fuser -n tcp [номер порта] -k

Объединяем кирпичики:

$ netstat -lntp | grep -E '^tcp +[^ ]+ +[^ ]+ +[^ ]+:2013' | awk '{print $7}' | grep '^[0-9]\+' -o | xargs -r kill
$ netstat -lntp - listening, numeric output, TCP, show processes

xargs, флаг -r ... - не звать аргумент, если stdin пустой.
находим в выводе pid процесса, и грохаем его.

0
Ваша оценка: Ничего

Переключение из командной строки системы вывода звука

# Получить список устройств вывода звука

$ pacmd list-sinks | egrep -o "(device.description.*|index:.*)"

# Выбрыть устройство вывода звука, где 0 и 1 индексы устройств

$ pacmd pacmd set-default-sink 0
$ pacmd pacmd set-default-sink 1

Проверено в Ubuntu 11.10.

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)
banda аватар

Настройка кэширующего сервера pdnsd

Кэширующый сервер pdnsd позволяет быстро разрешать интернет адреса — в данном случае при первом обращении к сайту, его IP записывается во внутреннюю базу pdnsd или как говорится pdnsd -- это IPv6 совместимый сервер DNS прокси с постоянным кешированием (содержимое кэша записывается на жёсткий диск при выходе), разработанный для обеспечения работоспособности при недостижимых или выключенных DNS-серверах (например, при подключении к сети через коммутируемый удаленный доступ)
После перегрузки база адресов сохраняется.
И так создадим свой собственный DNS сервер в сети (или локальной машине).

0
Ваша оценка: Ничего
ramok аватар

Удалить сломаные символические ссылки

Удалить все сломаные символические ссылки в текущей директории и поддиректориях
bash

find . -type l ! -xtype f ! -xtype d -delete

zsh

rm **/*(-@)
0
Ваша оценка: Ничего
romy4 аватар

Фильтрация stderr без слития с stdout

Сделав два раза swap и между ними grep - мы добиваемся желаемого, фильтруем stderr (почти) без побочных эффектов.

( prog 3>&2 2>&1 1>&3 | grep -v "лишний warning который нельзя отключить" ) 3>&2 2>&1 1>&3

----------------
ликбез:
Когда мы пишем в bash prog X>&Y , то перед запуском происходит присваивание
file_descriptors[X] = file_descriptors[Y]
Присваивания происходят в порядке написания, через них можно сделать swap дескрипторов:

prog 3>&2 2>&1 1>&3
0
Ваша оценка: Ничего
ramok аватар

Как устроен .deb пакет

Как устроен .deb пакет

0
Ваша оценка: Ничего
ramok аватар

Пройти свой путь до конца...

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

Яркий пример это Debian alternatives system. Эта подсистема позволяет использовать однотипные программы под одним и тем же именем, в зависимости от предпочтений. И основана она на символических ссылках.

Помочь в этом может команда namei.
Например что бы узнать куда в результате указывает x-terminal-emulator можно сделать так

$ namei $(which x-terminal-emulator)
f: /usr/bin/x-terminal-emulator
 d /
 d usr
 d bin
 l x-terminal-emulator -> /etc/alternatives/x-terminal-emulator
   d /
   d etc
   d alternatives
   l x-terminal-emulator -> /usr/bin/urxvt
     d /
     d usr
     d bin
     - urxvt

Хотя если разобраться в системе альтернатив, то можно найти другую команду:

$ update-alternatives --config x-terminal-emulator 
4.666665
Ваша оценка: Ничего Рейтинг: 4.7 (3 голоса)
romy4 аватар

Статистика tcp соединений

netstat -npat|grep ESTABLISHED |
  awk 'BEGIN{counter=0;} {split($5,a,":");ip=a[1];if(ip in ips)ips[ip]+=1;else ips[ip]=1;counter++;} END{for(i in ips)print i" = "ips[i]"\n"}'|
  sort | grep -vP '^\s*$'

Если убрать grep ESTABLISHED, то это добавит список ожидающих соединений.
Если оставить netstat -n то добавятся UDP

0
Ваша оценка: Ничего
ramok аватар

sed и локализаци или "почему .* не работает так как надо"

Небольшая головоломка Ж:-)

Почему эта команда

$ wget -qO- "http://farmanager.com/download.php?l=ru" |
    sed -rn 's#.*href="(files/Far20[^"]+7z).*#http://farmanager.com/\1#p'


выводит мусор, вместо предполагаемого

4.5
Ваша оценка: Ничего Рейтинг: 4.5 (2 голоса)
ramok аватар

Путь начинающийся с двойного слеша

Наверное многие замечали "баг" bash/zsh в существовании "двойного root".

$ cd //
$ pwd
//
$ /bin/pwd
/

Это не ошибка, а буквальное следование стандарту POSIX (IEEE Std 1003.1-2001. 4.11 Pathname Resolution ), в котором говорится:

Цитата:

A pathname that begins with two successive slashes may be interpreted in an
implementation-defined manner, although more than two leading slashes shall be
treated as a single slash.

То есть два слеша в начале пути может быть интерпретировано в зависимости от системы. Например в cygwin таким образом можно адресовать windows share. В linux // никакого значения не имеет.

5
Ваша оценка: Ничего Рейтинг: 5 (2 голоса)
ramok аватар

Слияние двух деревьев каталогов

Перемещал я как то огромное дерево каталогов из одной директории в другую. Так как директории были на windows share, то дело было долгим и в процессе были проблемы со связью и перенос прервался.
В результате у меня оказалось частично перенесённое дерево каталогов большой вложенности. Запустить опять mv я не мог, так как mv не позволяет "сливать" такие директории. cp -r тоже не спасал, так как лишнего места не было.

Выход нашелся с помощью команды rsync с ключиком --remove-source-files.

$ rsync --remove-source-files -r bak1/* ~/backup/bak1
0
Ваша оценка: Ничего
ramok аватар

tar + ssh

GNU tar умеет создавать архив на удалённой системе через ssh

$ tar --rsh-command=/usr/bin/ssh -jcvf host:/tmp/archive.tar.bz2 dir-or-files
5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)

Текст в картинку (делаем скриншот консоли)

Учитываются системные шрифты, а вот цветовые схемы консоли не работают

$ ifconfig | convert label:@- ip.png
$ ping -c 5 ya.ru | convert label:@- ya.png
$ echo "Hello World" | convert label:@- hello.png
5
Ваша оценка: Ничего Рейтинг: 5 (2 голоса)

Активация странных кнопок ноутбука

Совсем странные кнопки (например, на ноутбуке) не видны в XOrg до тех пор, пока возвращают совсем странные keycode. Утилита setkeycodes позволяет исправить ситуацию, а xbindkeys в сочетании с xte из пакета xautomation — превратить нажатие клавиши в нажатие кнопки мыши.

5
Ваша оценка: Ничего Рейтинг: 5 (1 vote)

Текстовые браузеры

Новички когда устанавливаете Arch и вы еще не дошли до установки DE, но уже настроили интернет, не забывайте про консольные(текстовые) браузеры: lynx, elinks, w3m, links. Это всегда поможет когда вам надо заглянуть в арчвики.

0
Ваша оценка: Ничего

Краткий ликбез по меткам и (без)условным переходам в sed

sed во многом аналогичен специфичному диалекту ассемблера. Он предоставляет для работы два регистра - "pattern space" и "hold space". Во многом эти регистры аналогичны регистрам обычного процессора, типа EAX или EBX x86-ой архитектуры, но специфичных тем, что хранят они не некое 32-битное число, а некую строку текста. В любой конкретный момент возможна работа только с одним регистром, являющимся текущим. Переключать текущий регистр можно с помощью команды x. Так же, sed предоставляет механизм "меток", тоже аналогичный lable'ам ассемблеров, включая возможность условного и безусловного переходов к заданным меткам, что делает sed тьюринг-полным языком программирования.

Работают они следующим образом:

Создание метки:

:имяметки

Метка создаётся посредством оператора : со следующим именем метки. Именно это имя будет использоваться при условных и безусловных переходах

Переходы:
Безусловный:

bимяметки
0
Ваша оценка: Ничего
itakingiteasyyuyuyu аватар

Конфигурация ядра linux и сопутсвующих драйверов для Asus Eee PC 1215P

Конфигурация ядра 2.6.38 с патчами tuxonice на EeePC 1215P.

0
Ваша оценка: Ничего

Архивация динамического списка файлов, с отображением прогресса

Стояла задача - в страшно разветвленной помойке директорий и файлов выцепить все файлы определенных типов и затарить их в архив /tmp/archive.tar.gz. Дополнительно хотелось наблюдать за прогрессом с прогнозом времени выполнения. Было решено средствами find, pv, gawk (только gawk, с mawk не заработало) следующим образом:

find -type f -o -name \*.c -o -name \*.h -o -name \*.xsl -print0 |
    xargs -0 du -bs |
        awk '{s+=$1;sub(/^[0-9]*\t/,"");n=$0"\0"n;printf"scan files: %d\r",++i}END{ORS="";print n|"tar --null -cT-|pv -s "s"|gzip -9> /tmp/archive.tar.gz"}'
0
Ваша оценка: Ничего

Статическая линковка в cmake

Указываем через флаг "DCMAKE_EXE_LINKER_FLAGS":

# cmake -DCMAKE_EXE_LINKER_FLAGS=-static -DCMAKE_INSTALL_PREFIX=/usr  ./
0
Ваша оценка: Ничего