Tag Archive for 'linux'

Shell: Как пронумеровать строчки в файле?

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

Не нужно для этого запускать perl или какие-то тяжелые утилиты, можно обойтись просто awk.

Нумерация строк в файле

awk '{print NR " " $0 }' имя_файла > куда_сохранять

NR - это переменная awk, указывающая на номер строки в этом файле.

Как пример, получается такой результат:

1 Linux aldan 2.6.27-14-generic #1 SMP Wed Apr 15 19:29:46 UTC 2009 x86_64
2
3 The programs included with the Ubuntu system are free software;
4 the exact distribution terms for each program are described in the
5 individual files in /usr/share/doc/*/copyright.
6
7 Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
8 applicable law.
9
10 To access official Ubuntu documentation, please visit:

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Ubuntu: Как посмотреть статистику системы?

После перехода с FreeBSD на Ubuntu мне не хватает многих утилит из FreeBSD.

В частности, утилит, которые позволяют посмотреть статистику по работе системы.

В FreeBSD есть замечательные команды systat, iostat, nestat, fstat, vmstat которые позволяют получить полную картину о том, как себя ведет система. В Ubuntu их пришлось ставить отдельно.

Пакет sysstat

Ставите его и получаете замечательные команды sar, iostat и mpstat. Что с ними делать - это другой вопрос и тема отдельного поста. Но поставьте, поэкспериментируйте, полюбуйтесь на статистику системы Ubuntu ;)

Кто дергает мой винчестер?

На моем лаптопе я заметил очень неприятную особенность - раз в 5-6 секунд какой-то процесс дергаел винчестер. А это очень нехорошая идея-то, на лаптопе с его не самым долговечным HDD.

В поисках правды я нашел другой замечательный пакет, который показывает дисковую активность по отдельным процессам.

Итак, встречайте:

Пакет iotop

apt-get install iotop

Запускаете и, вуаля, у вас есть разбивка дисковой активности по самым активным процессам. Чтоб убрать/показать неактивные процессы нажмите o.

А виновником дергания HDD оказался gnome-panel, который читал по 3-7 кб каждые несколько секунд.  Я нашел и покарал соответствующий компонент gnome-panel потом.

Как именно нашел? Это тоже тема для отдельного поста. Если это вам интерсно - напишу.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Shell: Как задать несколько шаблонов в grep?

Альтернативные шаблоны в shell

Есть 2 варианта, которые сработает у вас - зависит от вашей оболочки

grep 'шаблон1|шаблон2|шаблон3'

или, может быть, сработает этот:

grep 'шаблон1\|шаблон2\|шаблон3'

Более подробно о шаблонах в shell можно узнать из курса ‘Регулярные выражения рулят!

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Уникальные строки текстового файла

Среди запросов к моему сайту я подглядел запрос ‘perl уникальные строки текстового файла‘.

Ну нужен для этого perl, совершенно не нужен.

Команда sort -u или же uniq сделают это совершенно спокойно.

Правда, есть одно ограничение - они перемешают строчки файла (uniq требует отсортированый файл).

Если вам нужно найти ункальные сточки файла не теряя последовательности строк - это можно сделать и при помощи скрипта на perl и при помощи скрипта на shell :)

Домашнее задание по shell

Оставить только уникальные строки в файле, не перемешивая при этом последовательность строк в выходном файле. Можно использовать промежуточные файлы. Поиск уникальных строк может быть не очень оптимальным - т.е. должен спокойно работать на объеме до 10-20.000 строк (5-10 секунд, не больше).

Пишите ваши решения в комментатиях. Это можно сделать по-разному. Использовать perl и php не стоит :).

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Shell: Как посмотреть код завершения программы?

До боли простой вопрос и такой же простой ответ.

Просто докопаться до этого в документации shell - немного долго и сложно.

Код завершения программы хранится в $?

Например, echo $? выводит код завершения программы на экран.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Vim Bonus: форматирование текста

Решил выложить еще один бонусный каст из тренинга по vi/vim в открытый доступ.

Бесплатная раздача материалов тренинга по vi/vim?

Я смотрю на этот тренинг и думаю - может все-таки имеет смысл распространять его  бесплатно? Все-таки он очень базовый и нужен большому количеству пользователей Unix.

Сам тренинг я думаю распространять бесплатно на CD, только наверно буду просить оплатить печать/запись диска и доставку по России.

Печать диска + пересылка почтой России будет стоить 650 рублей.  Если почтой EMS - тогда 1300 рублей. Заехать и забрать откуда-то, к сожалению, нельзя.

Ваше мнение - стоит распространять или нет?

Приглашаю авторов на Unixmastera.ru. Вы можете написать что-то полезное! Опубликуйте свой unixhack :) (если есть life hack, то почему не может быть unix hack, a?)

[poll id="3"]

Сам курс - это 10 скринкастов суммарным звучанием под 3.5-4 часа.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Linux Ubuntu: переход Intrepid to Jaunty

У меня, как я уже и писал, на лаптопе стоит Ubunty, поскольку он поддерживает мобиьлных пользователей существенно лучше, чем FreeBSD. К сожалению, на amd64 платформе FreeBSD очень плохо поддеживает лаптопы. А отсутствие suspend и hybernation полностью сводят все прелести лаптопной жизни на нет.

Итак, решил я попробовать поднять версию Ubuntu с Intrepid (8.10) на jaunty (9.04 ?).

Только я разогнался и запустил update-manager -d как ко мне прилетела птичка обломинго.

Видео карточка  ATI  Radeon Mobility X700 и, соответственно, драйвер с закрытыми исходниками fglrx не поддерживается Xorg 1.6. Все. Приехали.

Обновление отменяется. Танцевать танцы с бубном и обновлять систему, а потом спускать версию Xorg до предыдущей - спасибо, достаточно, хватит мне перехода с Hardy на Intrepid.

А в FreeBSD сейчас ужин, макароны стабильные обновления :)

В этом плане все-таки FreeBSD существенно более интересная - можно спокойно обновлять базовую систему и ядро, почти никогда не рискуя уронить userland приложения. Ну а если происходят критические обновления - читайте внимательно /usr/src/UPDATING и /usr/ports/UPDATING перед поднятием версии :)

Все критические обновления, которыл ломают ABI или конфигурационные файлы - там задокументированны.

А на какой операционке сидите сейчас ВЫ?

Ну и напоминаю - если хотите поделиться советами/историями с другими юникс пользователями - вам сюда.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Vim: Первые скринкасты по редактированию текста

Ну все, тренинг начался, уже идет второй день и за это время мы уже успеваем пройти по 3 темы в день.

Я решил выложить часть материалов в бесплатный доступ, их можно скачать вот здесь.

Щелкаем на страничку тренинга по vi/vim и смотрим скринкаст.

В качестве бонуса участники тренинга получают доступ к шпаргалке по vi/vim.

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Linux: Как посмотреть количество открытых файлов

Linux: lsof покажет открытые файлы

Для того, что посмотреть какие файлы открыты в даный момент в системе Linux можно использовать команду lsof.

Соответственно, для подсчета количества

lsof | wc -l

Для подсчета количества по для одного процесса, скажем firefox

lsof | grep firefox | wc -l

Посчитать и найти, кто использует больше всего

Для того, что посмотреть количество открытых дескритопров с разбивкой по командам, можно запустить следующую команду:

lsof | awk '\!/^COMMAND.*PID/ {usage[$1]++} END {for (idx in usage) { print usage[idx] ” ” idx; }}’ | sort -n

Для разбивки по PID можно запустить следующую команду:

lsof | awk '\!/^COMMAND.*PID/ {usage[$2 " " $1]++} END {for (idx in usage) { print usage[idx] ” ” idx; }}’ | sort -n

(первая колонка - количество открытых файлов, вторая колонка - PID процесса)

А вот так можно посмотреть  количество открытых файлов в Linux :) Тоже ничего сложного :)

Приглашаются авторы на Unixmastera.ru. Покажи на что ты способен - напиши совет сам :)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).

Unix/FreeBSD: Редактирование /etc/passwd

FreeBSD - редактирование /etc/passwd файла

Поскольку FreeBSD использует не только текстовый файл для хранения паролей, но и дополнительную базу данных (для ускорения поиска), то редактировать файл напрямик не даст вам никакой пользы. После этого все равно придется заново компилировать базу /etc/[s]pwd.db .

FreeBSD: Идеологически верный способ отредактировать /etc/passwd и /etc/master.passwd

Правильным методом является использование команд vipw, chsh, chfn. После редактирования passwd файла или его кусочка, они проверяют данные на соответствие формату и после этого заносят изменения в текстовый файл и пересобирают сами базу.

  • vipw поможет вам подредактировать весь файл
  • chsh и chfn - изменят информацию о пользователе (стати их может запускать и сам пользователь)

Все эти команды используют ваш редактор по умолчанию. Скорее всего это vi (и есть шпаргалка по использованию Vi).

Linux/Solaris - редактирование /etc/passwd файла

Под Linux и Solaris точно такие же команды - vipw, chsh, chfn.

Только вот для редактирования shadow файла (где лежат пароли) вам нужно будет запустить команду vipw -s .

Все эти команды используют ваш редактор по умолчанию. Скорее всего это vi (и есть шпаргалка по использованию Vi).

Будьте осторожны при редактировании файла /etc/passwd!
Особенно обращайте внимание на то, чтоб не разделить какую-либо
строчу на две - потом замучаетесь собирать обратно!

Приглашаются авторы на Unixmastera.ru. Покажи на что ты способен - напиши совет сам :)

Понравилось? Подпишись на RSS!

Хочешь написать статью? Мы ищем авторов (и не только за красивые глаза, но и за дохлых президентов).