Глупый пингвин робко прячет, умный - смело достает...
Есть совет? Добавьте его сюда!
Долго ковырялся с компом и что-то настраивал? Не смог наскоком найти ответ на вопрос в Гугле? Тогда добавь сюда свой совет, мы будем рады его опубликовать! Неважно, если это "рецепт по боданию" с каким-то из вариантов Linux, Unix или другого СПО проекта. Опубликуем, поможем улучшить и сохранить сию крупицу знания!
Жмите сюда, чтобы ДОБАВИТЬ СОВЕТ.
Рекомендации по оформлению советов. Модераторы помогут поправить форматирование, если у вас возникли проблемы.
Регистрация на сайте необязательна, но чтобы не возиться с captcha, рекомендуем все-таки зарегистрироваться или войти по OpenID. По любым вопросам обращайтесь в наш форум или стучитесь в обратную связь.
Благодарим за визит и отклики!
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 processesxargs, флаг -r ... - не звать аргумент, если stdin пустой.
находим в выводе pid процесса, и грохаем его.
Переключение из командной строки системы вывода звука
# Получить список устройств вывода звука
$ 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.
Настройка кэширующего сервера pdnsd
Кэширующый сервер pdnsd позволяет быстро разрешать интернет адреса — в данном случае при первом обращении к сайту, его IP записывается во внутреннюю базу pdnsd или как говорится pdnsd -- это IPv6 совместимый сервер DNS прокси с постоянным кешированием (содержимое кэша записывается на жёсткий диск при выходе), разработанный для обеспечения работоспособности при недостижимых или выключенных DNS-серверах (например, при подключении к сети через коммутируемый удаленный доступ)
После перегрузки база адресов сохраняется.
И так создадим свой собственный DNS сервер в сети (или локальной машине).
Удалить сломаные символические ссылки
Удалить все сломаные символические ссылки в текущей директории и поддиректориях
bash
find . -type l ! -xtype f ! -xtype d -delete
zsh
rm **/*(-@)
Фильтрация 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
Пройти свой путь до конца...
Если множество символических ссылок ссылаются одна на другую, то бывает сложно разобраться что куда указывает в результате.
Яркий пример это 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 Статистика 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
sed и локализаци или "почему .* не работает так как надо"
Путь начинающийся с двойного слеша
Наверное многие замечали "баг" 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 // никакого значения не имеет.
Слияние двух деревьев каталогов
Перемещал я как то огромное дерево каталогов из одной директории в другую. Так как директории были на windows share, то дело было долгим и в процессе были проблемы со связью и перенос прервался.
В результате у меня оказалось частично перенесённое дерево каталогов большой вложенности. Запустить опять mv я не мог, так как mv не позволяет "сливать" такие директории. cp -r тоже не спасал, так как лишнего места не было.
Выход нашелся с помощью команды rsync с ключиком --remove-source-files.
$ rsync --remove-source-files -r bak1/* ~/backup/bak1tar + ssh
GNU tar умеет создавать архив на удалённой системе через ssh
$ tar --rsh-command=/usr/bin/ssh -jcvf host:/tmp/archive.tar.bz2 dir-or-filesТекст в картинку (делаем скриншот консоли)
Учитываются системные шрифты, а вот цветовые схемы консоли не работают
$ ifconfig | convert label:@- ip.png $ ping -c 5 ya.ru | convert label:@- ya.png $ echo "Hello World" | convert label:@- hello.png
Активация странных кнопок ноутбука
Совсем странные кнопки (например, на ноутбуке) не видны в XOrg до тех пор, пока возвращают совсем странные keycode. Утилита setkeycodes позволяет исправить ситуацию, а xbindkeys в сочетании с xte из пакета xautomation — превратить нажатие клавиши в нажатие кнопки мыши.
Краткий ликбез по меткам и (без)условным переходам в sed
sed во многом аналогичен специфичному диалекту ассемблера. Он предоставляет для работы два регистра - "pattern space" и "hold space". Во многом эти регистры аналогичны регистрам обычного процессора, типа EAX или EBX x86-ой архитектуры, но специфичных тем, что хранят они не некое 32-битное число, а некую строку текста. В любой конкретный момент возможна работа только с одним регистром, являющимся текущим. Переключать текущий регистр можно с помощью команды x. Так же, sed предоставляет механизм "меток", тоже аналогичный lable'ам ассемблеров, включая возможность условного и безусловного переходов к заданным меткам, что делает sed тьюринг-полным языком программирования.
Работают они следующим образом:
Создание метки:
:имяметки
Метка создаётся посредством оператора : со следующим именем метки. Именно это имя будет использоваться при условных и безусловных переходах
Переходы:
Безусловный:
bимяметки
Конфигурация ядра linux и сопутсвующих драйверов для Asus Eee PC 1215P
Конфигурация ядра 2.6.38 с патчами tuxonice на EeePC 1215P.
Архивация динамического списка файлов, с отображением прогресса
Стояла задача - в страшно разветвленной помойке директорий и файлов выцепить все файлы определенных типов и затарить их в архив /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"}'
Статическая линковка в cmake
Указываем через флаг "DCMAKE_EXE_LINKER_FLAGS":
# cmake -DCMAKE_EXE_LINKER_FLAGS=-static -DCMAKE_INSTALL_PREFIX=/usr ./- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- …
- следующая ›
- последняя »






