Synstart – синхронизация времени запуска программ и утилит в Linux

synstart решает задачу синхронизации старта запуска программ за счет их предварительной планировки по времени (см. cron). Код простой на python.

В сравнении с at/atd погрешность запуска программ между демонами значительно ниже – вместо секундной погрешности в at/atd при использовании synstart получаем миллисекундную погрешность (возможно добиться вплоть до 10 микросекунд при тюнинге sleep на демонах).

Читать дальше

Linux: работа с утилитой grep (egrep, zgrep)

word

-w/–word-regexp – удобная опция, ищем конкретное слово. Очень удобно, если есть уникальные слова в каждой строке (напр. ID).

 -w, --word-regexp
The expression is searched for as a word (as if surrounded by
`[[:<:]]' and `[[:>:]]'; see re_format(7)).

$ cat sw
1 -- xxx
2 -- yyy
3 -- zzz
4 -- kkk
5 -- zzz

$ cat sw | grep -w 2
2 -- yyy

$ cat sw | grep -w yyy
2 -- yyy

or/and

OR – ищем любой из двух.

Читать дальше

Linux: работа с числами (bc, dc, expr)

http://www.basicallytech.com/blog/?/archives/23-command-line-calculations-using-bc.html  – примеры расчета простых выражений с помощью bc.

expr и let – базовые целочисленные калькуляторы. Поддерживают операции сложения/деления/умножения/вычитания.

EXPR
$ expr 6 + 2
8

$ expr 6 - 2
4

$ expr 6 \* 2
12

$ expr 6 / 2
3

$ expr 6 / 5
1

LET
let "b = $a * 2"
let "b = $a - 2"

bc (basic calculator) — интерактивный интерпретатор Си-подобного языка, позволяет выполнять вычисления с произвольно заданной точностью.

Читать дальше

Linux, BSD: использование screen

Хорошая шапаргалка

screen в основном используют для создания нескольких сессий, в том числе на одном экране с использованием split функционала (смотри ниже) и быстрого переключения между ними (по сути аналог tab’ов в secureCRT).

Кроме того у сессий screen есть существенное (для кого то единственно значимое) преимущество по сравнению с “обычными ssh-сессиями” (звучит криво, но это user experience):

    • независимость от активности ssh-сессии по причине отключения хоста/проблем в сети между сервером и хостом/етк (хотя только для задачи отвязки shell от ssh сессии куда проще использовать nohup, mosh, atd now)
    • возможность подключения к сессии без привязки к ssh-сессии – на работе поставил скрипт, а из дома, открыв окно, посмотрел результат

У screen есть мощные альтернативы (напр.

Читать дальше

Работа с утилитой join, ошибка join is not sorted (данные файла не отсортированы)

Join – полезная утилита для объединения нескольких текстовых файлов по какому-то общему идентификатору. Название намекает на аналогию с функцией join в SQL.

~$ cat >1
asd 1
bsd 2
csd 3
~$ cat >2
asd test
bsd testtest
csd testtesttest

~$ join 1 2
asd 1 test
bsd 2 testtest
csd 3 testtesttest
Delimeter

join -t”;” – задаем разделитель для csv.

Читать дальше

xargs: простая многопоточность в bash

Простая многопоточность в bash: делаем скрипт для одной сети/одного IP (с любым из скнов представленных ниже, например), далее делаем список сетей/IP, открываем его через cat и натравляем скрипт через xargs.

cat nets | xargs -n 1 -I ^ -P 10 bin/test ^

Читать дальше

Linux: cron, crontab, at, atd

Общее

  • Про at, atd подробнее в конце статьи отдельный раздел (включая список литература), в целом статья про cron
  • Крутой мануал на русском по настройке CronTab, большая часть ин-ии оттуда
  • Wiki помимо теории есть пример настройки
  • Даже приложения типа cacti используют cron для своей работы (переодический запуск опросчика и рисователя)
Из установки Cacti:
9) Создаём задание в кроне
crontab -e
*/5 * * * * php /var/www/cacti/poller.php


Читать дальше

Fail Cron test -x /etc/init.d/sendmail

При работе с почтой сталкивался с сыпящимися ошибками cron из-за теста sendmail. Судя по форумам трабла с конфликтом разных средств отправки сообщений и из-за того, что при установке второго средства, sendmail продолжает полу-работать. Методов решения несколько (см. ссылки), самым простым (и никак в последствии не повлиявшим на что либо) мне показалось просто закоменчивание проблемной строки в конфиге PROCMAIL для SENDMAIL.

Читать дальше

select-editor, cron

В Ubuntu есть удобная утилита – select-editor. При первом запуске cron она предлагает выбрать редактор, для редактирования конфигурационного файла cron. По умолчанию используется nano и я раньше использовал только его, пока не привык к vim. Изменить выбор можно запустив утилиту select-editor из консоли.

Читать дальше

Linux: работа с текстом (sed, awk, tr, cat/tac, tee)

GREP в отдельной статье

SED

Удаляем первую/первую + пятую строки

sed 1d <file>
sed '1d;5d' <file>

Удаление пустых строк (Sed delete empty lines)

sed '/^ *$/d' sw # базовый вариант
sed '/^[[:space:]]*$/d' # любой whitespace как пустое место
sed -r '/^\s*$/d'
Показать в файле все, что выше match.


Читать дальше