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

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

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

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

Linux: перезагрузка/отключение системы (reboot, shutdown, halt, poweroff)

Отключение

Soft-отключение системы прямо сейчас.

shutdown now

Soft-отключение системы через 60 минут.

shutdown -h +60 "Shutting down in 60 minutes. Be a dear and log out before then."

Hard-отключение системы прямо сейчас.

halt
poweroff

Перезагрузка

Перезагрузка прямо сейчас. Команды reboot/shutdown перезагружают систему по разному.

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

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

  • У особо душных зачастую вызывает недоумение – зачем открывать через cat файл, который потом передается в grep. Отвечаю – часто ты открываешь сначала файл чтобы посмотреть в целом что там есть, а уже после первого просмотра передаешь в grep. У многих такой паттерн вошел в привычку – вот пример обучения по Linux LPIC-1 🙂 препод максимально опытный админстратор Linux (с начала 90х)

У grep 1001 alias, вот список из man.

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

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-сессии по причине отключения хоста/проблем в сети между сервером и хостом/etc (хотя только для задачи отвязки shell от ssh сессии проще использовать nohup, mosh, atd now с игнорированием SIGHUP для процесса)
    • возможность подключения к сессии без привязки к 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

xargs позволяет легко запускать утилиты на списки аргументов, даже если утилиты не поддерживают работу со списками. Реализуется простейшим образом – xargs каждый раз заново вызывает утилиту при запуске на список. Например, можно создать на основе списка множество директорий с помощью mkdir.

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

Linux: cron, crontab, at, atd

Общее

  • В docker image может отсутствовать cron и даже редактор для управления
apt install cron
apt install vim
  • Про 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 из консоли.

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