IT. Сети. Связь

Подписаться на эту рубрику по RSS

This is my solution on how to control disk space usage on a server. The solution is a simple one-line shell script that is executed by cron and sends an e-mail alert each time your disk space gets low.

First of all, let's create a shell file.

vi /home/username/bin/check-disk-space.sh

#!/bin/sh
df -Pl|grep "^/dev"|awk '{sub("%","",$5);if($5 > 95) print $5"%%\t"$6}'|xargs -0 sh -c 'test "$1" && printf "`hostname -f` is running low on disk space:\nUse%%\tMounted on\n$1"' $0

As you can see it's simple enough. You can adjust the parameter in percent (in our case it is 95% ) on after overbrim of which you'll get an email alert like:

<hostname> is running low on disk space:
Use%	Mounted on
95%	/

At last, you must set a crontab task:

crontab -e u username

MAILTO=your-email@example.com
15 */2 * * * /home/username/bin/check-disk-space.sh

This cron task will check disk space every 2 hours.

Hope this helps you :)

Выключаем гудок (BEEP) на LMDE

Метки:
Дата: 18/04/2013 23:14:38

LMDE LogoLMDE (Linux Mint Debian Edition) — молодой дистрибутив Linux, который сочетает в себе сразу две приятные черты: это ответвление от популярного Linux Mint — лучшего дистрибутива для домашних ПК (который в свою очередь построен на небезызвестном Ubuntu) и в то же время LMDE базируется на Debian — лучшем серверном дистрибутиве, и имеет полную совместимость с его репозиториями. Разумеется, всё субъективно.

Что же касается моего отношения к этому дистрибутиву, то я просто решил поставить его на свой ноутбук HP Pavilion g6. Что из этого вышло? Сразу три серьезных проблемы, которые надо решать:

  • глючит WiFi (сетевая карта Broadcom 4313): интернет работает урывками, а то и вовсе не работает; уровень сигнала слабый, при этом постоянно появляются окна ввода паролей, что ставит крест на работе в интернете вообще;
  • при старте — экран на минимальном уровне яркости, так что можно подумать, что и вовсе не функционирует;
  • при входе/выходе из системы раздаются противные звуки (одиночный гудок) встроенного динамика BIOS.

Да, все эти проблемы я решил.читать дальше »

Одной свербящей особенностью при знакомстве с текстовым редактором Vim являлось то, что символ табуляции, такой, к которому мы привыкли из «нормальных» редакторов, к примеру Notepad++ или консольного nano, ведёт себя совсем не должным образом. Если <TAB> поставлен в начале строки, то почему-то нельзя нажать клавишу «влево» и достигнуть начала окна редактирования. А внутри текста он ведёт себя просто вызывающе: курсор стоит не перед <TAB>ом, как положено, а не доходя одного символа до конца <TAB>а! Глумление над нами, чистой воды.

На самом деле такое поведение вполне естественно с точки зрения Vim. Символ табуляции — это один символ, поэтому в normal mode Vim помещает кусор на положенное место — над символом (или перед ним, в зависимости от настроек терминала) — чтобы его можно было удалить, заменить и просто осознать, что <TAB> — это один символ, такой же как остальные а не резиновая четырёхсимвольная махина. А то, что визуально символ табуляции занимает 2, 4, 8, или сколько сами определим, символов — это тоже так надо, иначе бы он ничем не отличался от пробела, по крайней мере для нас, зрителей.

Допустим не нравится нам такое поведение Vim. Есть два разумных способа это исправить. Первый я нашёл везде и это не совсем то, что нужно. Вам будет позволено перемещать курсор по всей плоскости экрана посимвольно (а также появятся дополнительные бонусы, связанные с выделением вертикальных блоков текста), но перепрыгивать через <TAB> разом не получится:

set virtualedit=all

Второй, который действительно похож на правду, я нашёл в архиве девелоперской переписки:

set list listchars=tab:\ \ 

Обратите внимание на пробел после второго «\». При использовании второго способа вы теряете бонусы, которые даёт опция «set invlist», если, конечно, вы ей пользуетесь.

Эти опции можно прописать, как и все остальные, в ~/.vimrc.

Для облегчения работы в bash (в других Linux-shell, скорее всего тоже получится: sh, ksh, zsh, csh, tcsh, … + консоли маршрутизаторов/коммутаторов Cisco и других фирм) работают некоторые сочетания клавиш («горячие клавиши»). Наиболее полезные из них тщательно отобраны лично мной:

Работа с процессами:
<Ctrl> + <C> — посылает сигнал SIGINT. Обычно, прерывает текущий процесс.
<Ctrl> + <D> — выход из консольного пользовательского процесса (EOF). Сигнал информирует систему, что ввод (с консоли) закончен.
<Ctrl> + <Z> — перевести процесс в фоновый режим (вернуть обратно можно набрав fg <номер процесса> в консоли; если номер не указывать — запустится последний остановленный процесс). Наберите jobs для просмотра списка всех приостановленных процессов. Очень полезная штука при работе с несколькими процессами (приложениями).
 
Работа со строкой ввода:
<Ctrl> + <W> — удалить последнее слово (всё, что слева от курсора до первого пробела).
<Ctrl> + <U> — очистить строку слева от курсора.
<Ctrl> + <K> — очистить строку справа от курсора.
<Ctrl> + <R> — поиск в истории введённых команд по маске: вводите, что хотите найти. Повторное нажатие сочетания клавиш будет искать следующее соответствие. <Ctrl> + <J> — закончить поиск и перейти к редактированию найденной команды. Если хотите просмотреть всё, что недавно вводилось в консоли, наберите history.
<Esc> + <.> — подставить аргумент из предыдущей команды. Например мы ввели >~/test.txt (создали файл в домашнем каталоге), теперь пишем vi, нажимаем <Esc> + <.> и у нас подставляется аргумент: vi ~/test.txt (выйти из текстового редактора vi можно набрав :q).
 
Перемещения по строке ввода:
Часто работают обычные «стрелочки» и клавиши <Home>, <End>, однако, на всякий случай:
<Ctrl> + <A> — переместить курсор в начало строки.
<Ctrl> + <E> — переместить курсор в конец строки.
 
Прочие действия:
<Ctrl> + <_> — отменить последнее действие.
<Ctrl> + <L> — очистить экран.
Можно выделять мышью любую подстроку, а для того, чтобы вставить её с позиции курсора, нужно нажать правую кнопку мыши <RightButton> (или среднюю, колесо — <ScrollButton>).
cd ~ (или просто cd) — перейти в домашний каталог; cd / — перейти в корневой каталог; cd - — вернуться назад (в каталог, из которого только что ушли).

Есть много других сочетаний, но именно эти стоит знать и любить. С помощью них можно сделать практически всё, и что важно, быстро.

В свое время, читая книжки про Linux для начинающих, обязательным лозунгом значилась возможность быстрого и легкого переименования, редактирования и вообще любой манипуляции сразу с несколькими файлами. Эти средства действительно являются привлекательной чертой *NIX-подобных систем.

В арсенале Linux довольно много приемов замены текста в файлах (shell-скрипты, grep & find, perl), я приведу лишь один, который проверил сам, он работает и интуитивно понятен:

replace 'что заменяем' 'на что заменяем' -- <путь к директории с файлами>

А для наглядности даже покажу реальный пример: в текущей папке лежат .html-файлы, датированные 2010-м годом, нужно все вхождения «August 2010» заменить на «August 2012»:

 

Для тех кто работает с системами контроля версий (для программистов, короче) был разработан и внедрен в эксплуатацию незаменимый инструмент: http://whatthecommit.com/.

 

 

Он позволяет, не думать какой месседж написать к коммиту, а генерирует несомненно нужные фразы. Коммитьте, не бойтесь.

 

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

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

 

1. Вывести список доступных баз данных.

SHOW DATABASES [LIKE 'pattern']

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

http://dev.mysql.com/doc/...#priv_show-databases (англ.).

2. Вывести список таблиц в базе данных.

SHOW TABLES [{FROM | IN} db_name] [LIKE 'pattern']

Очень полезная команда. Выводит столбец из названий всех полей конкретной базы данных db_name.

3. Вывести список полей конкретной таблицы.

SHOW [FULL] COLUMNS {FROM | IN} tbl_name [{FROM | IN} db_name] [LIKE 'pattern']

Не менее полезное выражение. Выводит список полей заданной таблицы tbl_name из базы db_name. Однако в отличии от предыдущих, этот запрос выведет не только столбец названий полей, а еще и полную информацию по ним: типы полей, значения по умолчанию и т. д. Стоит отметить, что существует полный алиас этой функции:

SHOW FIELDS FROM tbl_name

На этом я и закончу, надеясь на полезность повествования. Пусть все ваши запросы возвращают желаемые результаты.