ubuntu/linux: советы и решения

Решения тех проблем, с которым мне приходилось сталкиваться.

понедельник, 13 июля 2015 г.

Хранилище паролей

Очень элегантное хранилище паролей на основе GPG.
Вот ссылка: the standard unix password manager

Так что для начала нужно иметь GPG ID. Сгенериться, если в-кратце, так:
gpg --gen-key
Допустим наш ID теперь foobar@foobar.com. Инициализируем хранилище:
pass init "foobar@foobar.com"
Пользоваться так. Добавление:
pass insert Business/root-password
Здесь Business/root-password запись root-password в подкаталоге Business.
Посмотреть пароль:
 pass Business/root-password

среда, 28 декабря 2011 г.

удаление лишних пробелов в конце строки

Задача из области написания кода. Часто случается так, что в конце строки образуются лишние пробелы. Как их быстрее всего увидеть и удалить? Приходит на помощь sed.

На первый взгляд, задача тривиальна:

sed -ri 's/\s+$//g' foobar


Но есть в ней одна засада. Если исходный файл foobar имеет переводы строк системы DOS/Windows (т.е. два символа CR-LF), то символ \r в unix системах будет трактован тоже как пробел и соответственно удален. В итоге вместе с пробелами поменяются и переводы строк. Что может быть нежалательно.

Правильнее будет сделать так:
sed -ri 's/ +(\r)?$/\1/g' foobar


В данном случае мы запоминаем, был ли в конце строки символ \r и заменяем последовательность пробелов (именно пробелов, а не вообще пробельных символов) на этот символ (или его отсутствие, если исходный файл с переводами *nix).

Ну и еще пара моментов. Флаг -r, расширенные регулярные выражения, просто чтобы не писать лишние бэкслеши. Флаг -i замена файла in-place, т.е. и поток будет прочитан из файла и записан в него же.

Ну и наконец команда, чтобы выполнить данную операцию для всех файлов директории.
find . -name '*.java' -exec sed -ri 's/ +(\r)?$/\1/g' \{\} \;

понедельник, 28 ноября 2011 г.

смена пароля postgres

Если забыт пароль рутового пользователя postgres.

1. Редактируется конфиг postgres для входа без пароля.

vim /etc/postgresql/version/main/pg_hba.conf


Должна быть строчка:
local all postgres ident sameuser


2. Перезапускаем сервис:
service postgresql-version restart


3. Логинемся в postgres:
sudo su postgres -c psql template


4. Меняем пароль:
ALTER USER postgres with PASSWORD 'password';


5. Меняем строчку в pg_hba.conf обратно. Например:
local all postgres md5 sameuser

пятница, 18 ноября 2011 г.

Тестирование скорости записи

Случайно наткнулся, отличная заметка как узнать скорость записи на диск в linux.

http://romanrm.ru/en/dd-benchmark

четверг, 14 июля 2011 г.

"Пул" процессов в bash

Интересный способ имитации пула процессов найден с помощью команды xargs.

Известно, что эта команда может выполнить некую процедуру для каждого элемента из входного списка (stdin). Оказывается, она способна выполнять процедуру не последовательно для каждого элемента, а поддерживать выполнение заданного количество копий. Т.е. если на входе у нас 1 2 3 4 5 6 7 8 9 10 и мы хотим одновременное выполнение 4 процессов, то xargs сразу же запустит 4 процесса для 1 2 3 4 и как только кто-то из них завершит выполнение запустит новый уже с аргументом 5 и так далее.

Очень удобно, на самом деле, в некоторых случая. В общем, все просто - опция --max-procs.

четверг, 5 мая 2011 г.

Создание "разреженного" (sparse) файла

Для виртуальной машины требуется создать образ диска в файле. Чтобы это быстрее сделать (если образ большой), и файл занимал меньше места на диске, можно создать "разреженный" файл. Делается так:


dd if=/dev/zero of=myimage.img bs=1 count=0 seek=16G


В данном случае размер образа 16G, но пока он не будет использован, на диске места он не займет.

Подсветка типов файлов в mc

В относительно свежих версия ubuntu, например, в стабильной 10.04 у mc поломана функция раскраски файлов разных типов. Починяется так:


apt-get source mc
sudo cp mc-4.7.0/misc/filehighlight.ini /usr/share/mc

Если не работает apt-get source нужно поставить пакет dpkg-dev