19 команд и лайфхаков в Linux, которые сэкономят вам время

Мы перевели статью, в которой делимся лайфхаками по использованию Linux-команд.

Скрам для одной команды

Скрам — это процессный фреймворк, основанный на теории эмпирического управления, в рамках которого самоуправляемая кросс-функциональная команда разрабатывает продукт, следуя итеративно-инкрементальному подходу. По итогам каждого, ограниченного во времени, Спринта разрабатывается (а в идеале — поставляется) инкремент продукта, потенциально готовый к поставке. Единственный Владелец Продукта отвечает за максимизацию ценности продукта, с помощью приоритизации элементов Бэклога Продукта и постановку цели для каждого Спринта, основываясь на постоянной обратной связи от заинтересованных лиц и конечных пользователей. За достижение цели Спринта отвечает небольшая Команда, в которой нет жестко ограничивающих одной специализацией ролей. Скрам-мастер обучает Владельца Продукта, Команду и в целом организацию Скраму и как с его помощью поставлять ценность, и выполняет роль “зеркала” для команды. В Скраме нет менеджера проекта или лидера команды.

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

В Руководстве по Скраму (Scrum Guide) и Азбуке Скрам (Scrum Primer) делается акцент на работу одной команды, а не на совместную работу нескольких команд. Это естественным образом ведет к размышлениям о реализации Скрама в больших масштабах.

Принцип действия и синтаксис

Прежде чем рассматривать примеры применения, важно разобраться с принципом действия команды. Говоря простыми словами, эта утилита считывает данные из выходных данных другой команды или стандартного потока ввода (по умолчанию) и выполняет команду, переданную в качестве аргумента. Один или несколько раз в зависимости от входных данных. Все пропуски и пробелы во входных данных воспринимаются как разделители, пустые строки игнорируются. Таким образом, в общем виде синтаксис команды следующий:

[команда-источник данных] | xargs [опции xargs] [команда-аргумент]

Если команда в качестве аргумента не передается, по умолчанию утилита выполняет команду echo. Например, в следующем примере мы просто выполнили команду без опций и ввели текст ‘Hello, World!’ в стандартный поток ввода. После нажатия Ctrl+D (чтобы сообщить xargs о завершении ввода), была автоматически выполнена команда echo, и на экран снова был выведен текст ‘Hello, World!’.

xargs

Заключение

Сегодняшнее обсуждение вращалось вокруг различных методов, с помощью которых вы можете проверить запущенные процессы в Linux Mint 20. Эти методы могут использоваться в зависимости от того, какой вывод вы хотите получить. Первый метод просто перечисляет все запущенные процессы сразу, тогда как второй метод представляет их в красивой древовидной структуре, которую легче читать и обрабатывать. Третий метод следует табличной структуре для отображения запущенных процессов вместе с некоторой дополнительной информацией о них, тогда как четвертый более или менее отображает ту же информацию, но с относительно более приятным интерфейсом. Я надеюсь, что после ознакомления с этим руководством вы сможете легко проверить все запущенные процессы в операционной системе Linux Mint 20.

Что такое командная строка bash?

Bash расшифровывается как Bourne again shell (что возможно перевести как «Еще одна оболочка Борна»), название частично заимствованно от более ранешней версии командной оболочки UNIX, которая называлась просто Bourne shell («Оболочка Борна» – по имена разработчика Стивена Борна). Bash позволяет интерактивно взаимодействовать с компьютером, вводя некоторые команды и получая на них соответствующий отклик. Также этот командный процессор позволяет исполнять скрипты (команды из файла), может производить автодополнение названий файлов и директорий, благоволит использование переменных, операторов ветвления и цикла. Далее в статье будут приведены наиболее простые и необходимые для работы в bash команды, которые помогут вам сориентироваться и начать сами использовать командную строку для своих задач, но сначала необходимо перейти к интерфейсу инструктивной строки.

Командный интерпретатор bash – это один из нескольких интерпретаторов, доступных в Linux. Иное свое название – Bourne-again shell – интерпретатор bash получил в честь Стивена Борна (Stephen Bourne), творца его ранней версии (/bin/sh). По большей части bash совместим с sh, но содержит множество улучшений, касающихся как функциональность, так и возможности программирования. Bash сочетает возможности интерпретаторов Korn shell (ksh) и C shell (csh) и представляется POSIX-совместимым интерпретатором.

Читайте также:  Основные операции при использовании LAMP в Ubuntu 16.04

Использование операторов ++ и —

Операторы ++ и — увеличивают и уменьшают соответственно его операнд на 1 и возвращают значение.

((i++)) ((++i)) let «i++» let «++i»

((i—)) ((—i)) let «i—« let «—i»

Операторы могут использоваться до или после операнда. Они также известны как:

  • приращение префикса: ++i
  • префиксный декремент: —i
  • постфиксное приращение: i++
  • постфиксный декремент: i—

Операторы префикса сначала увеличивают / уменьшают операторы на 1 а затем возвращают новое значение операторов. С другой стороны, постфиксные операторы возвращают значение операторов до того, как оно было увеличено / уменьшено.

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

Следующие примеры демонстрируют, как работает оператор ++ когда он используется до и после его операнта:

x=5 y=$((x++)) echo x: $x echo y: $y

x: 6 y: 5

x=5 y=$((++x)) echo x: $x echo y: $y

x: 6 y: 6

Ниже приведен пример использования постфиксного инкрементора в сценарии bash:

#!/bin/bash i= while true; do if [[ «$i« -gt 3 ]]; then exit 1 fi echo i: $i ((i++)) done

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

Суммирование чисел в данных

Что делать, если вмес­то того, что­бы под­счи­тывать, сколь­ко раз IP-адрес или дру­гие эле­мен­ты обра­щались к опре­делен­ным ресур­сам, вы хотите узнать общее количес­тво бай­тов, отправ­ленных по IP-адре­су, или то, какие IP-адре­са зап­росили и получи­ли боль­ше все­го дан­ных?

Ре­шение мало чем отли­чает­ся от сце­нария Вне­сите в этот сце­нарий нес­коль­ко неболь­ших изме­нений. Во‑пер­вых, вам нуж­но так нас­тро­ить вход­ной филь­тр (коман­да cut), что­бы из боль­шого количес­тва стол­бцов извле­кались два стол­бца: IP-адрес и счет­чик бай­тов, а не толь­ко стол­бец с IP-адре­сом. Во‑вто­рых, сле­дует изме­нить вычис­ление с при­раще­нием (let cnt[$id]++) на прос­той счет, что­бы сум­мировать дан­ные из вто­рого поля (let cnt[$id]+= $data).

Те­перь кон­вей­ер будет извле­кать два поля из фай­ла жур­нала — пер­вое и пос­леднее:

cut -d -f 1,10 access.log | bash summer.sh

Сце­нарий , показан­ный в при­мере 7.5, чита­ет дан­ные из двух стол­бцов. Пер­вый стол­бец сос­тоит из зна­чений индекса (в дан­ном слу­чае IP-адре­сов), а вто­рой стол­бец — это чис­ло (в дан­ном слу­чае количес­тво бай­тов, отправ­ленных по IP-адре­су). Каж­дый раз, ког­да сце­нарий находит в пер­вом стол­бце пов­торя­ющий­ся IP-адрес, он добав­ляет зна­чение из вто­рого стол­бца к обще­му количес­тву бай­тов для это­го адре­са, сум­мируя таким обра­зом количес­тво бай­тов, отправ­ленных этим IP-адре­сом.

Читайте также:  Btrfs команды. Файловая система Btrfs. Создание файловой системы btrfs

Пример 7.5.

declare -A cnt # ассоциативный массивwhile read id count do let cnt[$id]+=$countdonefor id in «${!cnt[@]}«do printf «%-15s %8d\n« «${id}« «${cnt[${id}]}« # <1>done

<1> Обра­тите вни­мание, что в фор­мат вывода мы внес­ли нес­коль­ко изме­нений. К раз­меру поля мы добави­ли 15 сим­волов для пер­вой стро­ки (дан­ные IP-адре­са, в нашем при­мере), уста­нови­ли вырав­нивание по левому краю (с помощью зна­ка минус) и ука­зали восемь цифр для зна­чений сум­мы. Если сум­ма ока­жет­ся боль­ше, то будет выведе­но боль­шее чис­ло, если же стро­ка ока­жет­ся длин­нее, то она будет напеча­тана пол­ностью. Это сде­лано для того, что­бы выров­нять дан­ные по соот­ветс­тву­ющим стол­бцам: так стол­бцы будут акку­рат­ными и более читабель­ными.

Для получе­ния пред­став­ления об общем объ­еме дан­ных, зап­рашива­емых каж­дым хос­том, мож­но в сце­нарии запус­тить файл Для это­го исполь­зуйте коман­ду cut, которая извле­чет IP-адрес и передан­ные бай­ты полей, а затем передай­те вывод в сце­нарий :

$ cut -d’ ‘ -f1,10 | bash | sort -k 2.1 -rn

665693

Эти резуль­таты могут быть полез­ны для выяв­ления хос­тов, которые переда­ли необыч­но боль­шие объ­емы дан­ных по срав­нению с дру­гими хос­тами. Всплеск может ука­зывать на кра­жу дан­ных и эксфиль­тра­цию. Ког­да такой хост будет опре­делен, нуж­но прос­мотреть кон­крет­ные стра­ницы и фай­лы, к которым он обра­щал­ся, что­бы попытать­ся клас­сифици­ровать его как вре­донос­ный или безопас­ный.

Находить и использовать команды, которые вы использовали раньше

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

Нажмите ctrl+r, чтобы начать обратный поиск и введите часть команды. Система посмотрит историю и покажет команды, которые подходят к вашему поисковому термину:

ctrl+r search_term

По умолчанию система покажет только один результат. Чтобы увидеть больше результатов, нажимайте на ctrl+r снова и снова — вас будет возвращать на шаг назад.

Чтобы выйти из обратного поиска, нажмите Ctrl+C.

В некоторых оболочках Bash вы также можете использовать кнопки Page Up и Down для поиска команд.