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

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

fmt
  • примеры есть в cheat.sh
  • вариаций форматирования много

Форматирование данных на входе – к примеру по умолчанию fmt осуществит форматирование, которое приведет к лучшему чтению:

    • объединение слов в одну строку если слов мало в каждой строке
    • или наоборот, вместо одной длиной строки сделает несколько коротких
root@serv:~# cat >sw
Hello
world
and
not
world
root@serv:~# fmt sw
Hello world and not world

root@spr:~# cat >sw
Hello world and not world Hello world and not world Hello world and not world Hello world and not world Hello world and not world Hello world and not world
root@spr:~# fmt sw
Hello world and not world Hello world and not 
world Hello world and not world Hello world 
and not world Hello world and not world 
Hello world and not world


tr ; CUT
  • The cut utility cuts out selected portions of each line (as specified by list) from each file and writes them to the standard output
# Print a range of each line with a specific delimiter:
command | cut --delimiter="," --fields=1

# Print a specific character/field range of each line:
command | cut --characters|fields=1|1,10|1-10|1-|-10

Подмена всех пробелов (в том числе повторяющихся) на одну запятую с использованием tr и опции -s

 -s Squeeze multiple occurrences of the characters listed in the last operand (either string1 or string2) in the input into a single instance of the character.


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

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
  • Статья по tmux
  • (screen, tmux) У screen есть мощные альтернативы (напр. tmux, Byobu), но их нужно устанавливать, а screen часто бай-дефолт установлен в системе (есть даже на MacOS!). Почему стоит использовать tmux вместо screen:
    • screen deprecated, по крайней мере для RHEL-based систем
    • в tmux есть возможность одновременного подключения нескольких человек к одной сессии
    • в tmux сохраняется разбивка (layout) по окнам по умолчанию, не нужно ничего дополнительно вводить
  • https://access.redhat.com/solutions/4136481


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

Работа с утилитой 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 помимо теории есть пример настройки
  • Используя файлы cron.allow


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

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

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

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