netstat -lntp - listening, numeric output, TCP, show processes xargs, флаг -r ... - не звать аргумент, если stdin пустой.
находим в выводе pid процесса, и грохаем его. А то повадились матчить имена процесса по строкам в ps и grep -v grep. Вот не повезло пользователю с ником grepulya!
http://software-carpentry.org/4_0/data/mgmt/ - советы как хранить огромные бинарники в файловой системе. Разные их версии, и не запутаться во всём этом через полтора года. Нет, это не разработчиков игр, не про миллион взаимосвязанных анимаций с моделями с видеороликами лапками тысячи китайцев. А про файлы с простой организацией, но зато которых появляется по терабайту в день.
В названии файла или в пути до него - должна быть дата создания файла.
Храните рядом с файлом сгенерированный info-файл, в котором записано какая ревизия кода создала этот бинарник, и из каких именно источников. Даже если файл сотрут для экономии места, вы сможете при желании перегенерить его.
info-файл может быть скриптом или конфигом для скрипта.
Есть хорошая тулза для сохранения ЖЖ, http://sourceforge.net/projects/ljarchive/ Автор похоже её забросил, но она простая и клёвая. Скачивает шустро, быстро ищет по постам, можно экспортировать в читабельный XML.
В ней была бага, не дающая скачивать комментарии, со странной XML-ошибкой. Стороние люди поправили, можно забрать здесь - http://www.acidqueen.de/lja/LJa.html
Давно в bash мучался с тем, как сконструированную в cmd-line команду сохранить в .sh файл. Для простых команд работает echo, для сложных уже нет, из-за кавычек и прочего. Раньше выцеплял такое из ~/.history
bash: Ctrl+X+E - отредактировать/сохранить строку под курсором в текстовом редакторе $EDITOR , там же можно и сохранить.
Если программа пишет лог в stdout/stderr, то можно к каждой строчке лога добавить время/дату не меняя программу:
программа 2>&1 | while read -r line; do echo "$(date '+%F %T'): $line"; done
2>&1 - приклеивает stderr к stdout date '+%F %T' - распечатывает время
И в простых случаях - можно не использовать энтерпрайзные Логгеры-Форматтеры-Аппендеры-Корпоративную-Культуру-Совещания-Тимбилдинг-Скрам только для добавления времени (grep может фильтровать ERROR/INFO/DEBUG, команда tee может распечатать фильтры в несколько разных файлов).
Помню молодого человека, доказывающего мне что в python-скриптах надо обязательно использовать модуль logging (аналог log4j), а пайп считающего страшным извращением. Вопросы "а что если подпроцесс моего скрипта не использует мою библиотеку логгинга" игнорировал :)
PS. спасибо gegmopo4 за более простой/быстрый/корректный вариант форматирования даты.
Когда мне нужна какая-то фича, но я не знаю какую функцию с какими параметрами позвать - то иду на http://matplotlib.sourceforge.net/gallery.html и копипащу оттуда код (по клику на картинке).
Взять две московские школы - в обоих будет 2% Александров и 2% Маш, плюс-минус несколько человек. Хотя школы разные! Что бы узнать сотношение мнений толпы людей - достаточно опросить случайную сотню из толпы. Причем сотни будут каждый раз разные, а пропорции мнений - одинаковые!
При обработке логов - не обязательно использовать мега-кластер что бы обработать логи. Достаточно взять случайную выборку в 1млн элементов, и все события которые происходят хотя бы раз на тысячу - там будут. Можно с точностью до долей процентов получить разбиение на типы событий. Если интересует бинарный признак, можно вообще только 100 записей выдернуть.
Случайная выборка - очень мощный инструмент в обработке данных. Можно взять кусочек голограммы, и в ней будет полное изображение, только более размытое. Что бы посчитать количество рук и ног - достаточно фотографии человека 20x15 пикселей, а не 1024x768. Точно так же можно взять кусочек логов в 1000, 1млн записей - и часто этого достаточно что бы посчитать нужную статистику. Причем на локальном компьютере, любым скриптом, в любой програме и операционной системе без лагов доступа к общему кластеру. При социологическом опросе страны с населением в сотню миллионов человеков - этот инструмент использутся постоянно, а иначе никак. А вот при обработке данных из логов - почему-то часто обрабатываются целиком все логи, вместо малой части.
Сражу скажу когда такой способ работает неправильно - когда ищем соотношение каких-то двух редких событий, настолько редких что при случайной выборке - будет деление нуля на ноль. Или если мы считаем то, что портится при случайной выборке (напр. доля уникальных записей).
Рассмотрим два типа логов: 1) события в логах не сгруппированы, одно событие - одна запись:
Выборку можно сделать так: awk 'rand() < 0.0001'
2) события сгруппированы по признаку, и посчитаны, напр. Маш: 3 штуки Александров: 2 штуки Степанов: 1 штука Зинаид: 1 штука Алексеев: 1 штука
Из такого лога выборку можно сделать таким скриптом: ( Collapse )
Лексикографическая("алфавитная") сортировка чисел расставляет их в неправильном порядке:
1000000
20
21
3
3.14159
4
Миллион стоит перед 20 потому что первая цифра 1 меньше 2.
Что бы лексикографическая сортировка для строковых представлений положительных чисел была правильной, можно дописать перед числом достаточно много нулей, напр. 20 нулей (коллега расказал про хак: использовать пробелы вместо нулей).
Придумал ещё способ. Для сохранения зрения и места в файлах - дописать перед числом количество цифр в нем, а не нули. Двумя цифрами, 01, 02, 03, .. 99. Числа с 10-ю цифрами иногда попадаются в измерениях (миллиарды), а с сотней - уже нет.
01|3
01|3.14159
01|4
02|20
02|21
07|1000000
Можно заменить на букву, от а до z, ещё более сжато получается:
Я когда-то кидал ссылку на сайт, на котором можно было найти TEX-символ, нарисовав его мышкой. Многие пожалели, что нельзя найти просто unicode-символ. Сейчас такой сайт появился: http://shapecatcher.com/index.html
Единственное что парит, это то что часто мною используемые математические значки - на 5-10 месте после экзотических букв индокитайских народов.