«Это что, мат­рица?!» — вос­клик­нет кто‑то из зна­комых, гля­дя через твое пле­чо на экран ноут­бука. Нет, не мат­рица, прос­то ты что‑то судорож­но печата­ешь в тер­минале. В этой статье я покажу тебе боль­ше двух десят­ков ути­лит, которые помогут работать с коман­дной стро­кой Linux более эффектив­но, при­ятно и даже кра­сиво.
 

Система

Pueue

Ути­лита Pueue — инте­рес­ная шту­ка для запус­ка дол­гих задач и для работы с соз­данной оче­редью задач в сис­теме, конеч­но. Нуж­на для тех, кому впол­не оче­вид­ных для таких слу­чаев jobs/fg/bg/screen/tmux по какой‑то при­чине ока­зыва­ется недос­таточ­но.

Демо из репозитория
Де­мо из репози­тория

Как пишут сами раз­работ­чики, Pueue нужен, ког­да задачи очень дол­гие либо их нуж­но выпол­нять парал­лель­но, имея при этом пол­ный кон­троль над ними. Лич­но мне ути­лита показа­лась нам­ного более дру­желюб­ной, чем штат­ный bg/fg.

info

Crongo — еще одна попыт­ка соз­дать удоб­ный инс­тру­мент для работы с cron. Ути­лита дела­ет при­мер­но то же самое, что Pueue, так что может в некото­ром смыс­ле быть аль­тер­нативой.

NQ

Nq — еще одна прос­тая ути­лита, которая поз­воля­ет запус­кать оче­реди из заданий в сис­теме. Не то что­бы без нее было невоз­можно жить, но порой очень силь­но помога­ет. Выг­лядит куда менее прив­лекатель­но, чем Pueue, но и в работе про­ще.

Она нас­толь­ко прос­тая, что для ее исполь­зования дос­таточ­но прос­то уви­деть при­мер:

% mkdir -p /tmp/downloads
% alias qget='NQDIR=/tmp/downloads nq wget'
% alias qwait='NQDIR=/tmp/downloads fq -q'
window1% qget http://mymirror/big1.iso
window2% qget http://mymirror/big2.iso
window3% qget http://mymirror/big3.iso
% qwait

... wait for all downloads to finish ...

Vizex

Ес­ли ты работа­ешь в тер­минале доль­ше недели, ты, конеч­но, зна­ешь о df и его сухом выводе. Давай разук­расим его и сде­лаем бли­же к людям!

Vizex и vizexdf — это апгрейд df, который выпол­няет свою задачу куда наг­ляднее и при­ятнее внеш­не.

Как выглядит vizex
Как выг­лядит vizex

bashtop

В филь­мах о хакерах люди видят огромные свод­ные таб­лицы с информа­цией о сис­теме и гра­фика­ми, а у тебя их до сих пор нет? Не беда! Лови bashtop — это как раз такой даш­борд. Если у тебя вдруг есть сво­бод­ный монитор, на который его мож­но повесить, — ты зна­ешь, как добавить +1000 к сво­ей гикану­тос­ти в гла­зах посети­телей.

Работает!
Ра­бота­ет!

Bashtop уме­ет показы­вать не толь­ко общую информа­цию, но и детали по каж­дому про­цес­су. Поз­воля­ет эти про­цес­сы сор­тировать по раз­личным парамет­рам и лег­ко кон­фигури­рует­ся.

А еще есть реали­зация это­го кра­сав­ца на Python — bpytop. Выг­лядит не менее эффек­тно, да и по воз­можнос­тям не отста­ет.

Rhit

За­нят­ная кон­соль­ная ути­лита для ана­лиза логов nginx. Встре­чай Rhit — это, конеч­но, не GoAccess, но выг­лядит тоже инте­рес­но.

Уме­ет рисовать гра­фики час­тоты зап­росов пря­мо в кон­соли.

Скрины стырены с сайта программы
Скри­ны сты­рены с сай­та прог­раммы

Есть ана­лиз трен­дов в зап­росах и удоб­ный гра­фичес­кий вывод это­го в кон­соль.

Ко­неч­но же, все мож­но филь­тро­вать, что­бы отсле­живать толь­ко необ­ходимое.

Lnav

Lnav — это ана­лиза­тор логов, который уме­ет работать не толь­ко с nginx, в отли­чие от Rhit. Вот спи­сок его дос­тоинств:

  • мо­жет сво­дить все тре­буемые логи на один экран. Ты можешь задать монито­ринг логов сра­зу нес­коль­ких сер­висов, и он покажет все сра­зу;
  • уме­ет под­све­чивать текст по фор­мату. Име­ется десять встро­енных фор­матов, в том чис­ле один «общий», то есть под­ходящий поч­ти к любому логу;
  • ав­томати­чес­ки опре­деля­ет сжа­тые логи в фор­матах gzip и bzip2 и раз­жима­ет их на лету;
  • уме­ет филь­тро­вать на осно­ве регуляр­ных выраже­ний. Если выводишь мно­го логов сра­зу — мож­но отфиль­тро­вать лиш­нее;
  • мо­жет стро­ить гис­тограм­мы сооб­щений по вре­мени;
  • кра­сиво выводит XML и JSON. Прос­то наж­ми Shift+P;
  • к логам мож­но обра­щать­ся как к вир­туаль­ной SQLite БД, которая обновля­ется вмес­те с логами в реаль­ном вре­мени;
  • lnav под­держи­вает раз­ные темы офор­мле­ния сво­его интерфей­са;
  • при вво­де команд так­же есть под­свет­ка син­такси­са и авто­допол­нение.
lnav разбирает логи sshd
lnav раз­бира­ет логи sshd

Пря­мо на сай­те есть готовые бинар­ники под Linux и macOS: видимо, это на слу­чай, если твой сер­вер — ста­рый мак­бук.

Butterfly Backup

Butterfly Backup — это такая инте­рес­ная обер­тка вок­руг rsync, которая уме­ет соз­давать и вос­ста­нав­ливать бэкапы. Спи­сок уме­ний дей­стви­тель­но вну­шитель­ный:

  • под­дер­жка тихого бэкапа;
  • все бэкапы акку­рат­но рас­сорти­рова­ны;
  • прос­мотр све­дений о кон­крет­ном бэкапе;
  • под­дер­жка раз­ных режимов копиро­вания;
  • мож­но бэкапить сра­зу нес­коль­ко ком­пов, при­чем парал­лель­но;
  • мож­но вос­ста­нав­ливать копию даже не на том компь­юте­ре, где она была соз­дана. Теоре­тичес­ки, это может быть полез­но при миг­рации на новое обо­рудо­вание. Более того, мож­но вос­ста­новить бэкап даже на дру­гой опе­раци­онной сис­теме;
  • под­держи­вают­ся полити­ки отно­ситель­но ста­рых бэкапов: их мож­но уда­лять по дос­тижении лимита занято­го хра­нили­ща;
  • эк­спорт бэкапов для удоб­ной перевоз­ки сто­рон­ними средс­тва­ми.

Ус­тановить Butterfly Backup мож­но все­го в три коман­ды:

git clone https://github.com/MatteoGuadrini/Butterfly-Backup.git
cd Butterfly-Backup
sudo python3 setup.py

При­мер исполь­зования от авто­ра ути­литы:

# Полная копия
bb backup --computer pc1 --destination /nas/mybackup --data User Config --type MacOS --mode Full
# Инкрементальная копия
bb backup --computer pc1 --destination /nas/mybackup --data User Config --type MacOS

Ес­ли прос­мотреть спи­сок копий коман­дой bb list --catalog /nas/mybackup, то мож­но уви­деть крат­кое опи­сание каж­дого сня­того бэкапа.

BUTTERFLY BACKUP CATALOG

Backup id: f65e5afe-9734-11e8-b0bb-005056a664e0
Hostname or ip: pc1
Timestamp: 2018-08-03 17:50:36

Backup id: 4f2b5f6e-9939-11e8-9ab6-005056a664e0
Hostname or ip: pc1
Timestamp: 2018-08-06 07:26:46

Backup id: cc6e2744-9944-11e8-b82a-005056a664e0
Hostname or ip: pc1
Timestamp: 2018-08-06 08:49:00

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

bb list --catalog /nas/mybackup --backup-id f65e5afe-9734-11e8-b0bb-005056a664e0

Backup id: f65e5afe-9734-11e8-b0bb-005056a664e0
Hostname or ip: pc1
Type: Full
Timestamp: 2018-08-03 17:50:36
Start: 2018-08-03 17:50:36
Finish: 2018-08-03 18:02:32
OS: MacOS
ExitCode: 0
Path: /nas/mybackup/pc1/2018_08_03__17_50
List: etc
Users

И наконец, вос­ста­нов­ление:

bb restore --computer pc1 --catalog /nas/mybackup --backup-id f65e5afe-9734-11e8-b0bb-005056a664e0

 

Скрипты

Bash Bible

Для начина­ющих и про­дол­жающих жиль­цов кон­соли сущес­тву­ет сер­вис Bash Bible (и его род­ной брат sh bible): там пред­став­лены при­меры реали­зации раз­ных задач в скрип­тах, написан­ных исклю­читель­но на чис­том Bash (или sh).

Что­бы далеко не ходить — вот тебе пароч­ка при­меров обхо­да всех фай­лов и папок в дирек­тории на чис­том Bash без исполь­зования ls.

# Greedy example.
for file in *; do
printf '%s\n' "$file"
done
# PNG files in dir.
for file in ~/Pictures/*.png; do
printf '%s\n' "$file"
done
# Iterate over directories.
for dir in ~/Downloads/*/; do
printf '%s\n' "$dir"
done
# Brace Expansion.
for file in /path/to/parentdir/{file1,file2,subdir/file3}; do
printf '%s\n' "$file"
done
# Iterate recursively.
shopt -s globstar
for file in ~/Pictures/**/*; do
printf '%s\n' "$file"
done
shopt -u globstar

info

Бы­ло бы неп­равиль­но не упо­мянуть свя­щен­ный zsh с пла­гином oh-my-zsh и кас­томны­ми темами. Ничего удоб­нее для тер­минала так и не при­дума­ли, а мы на «Хакере» уже писали о нем. Нас­тоятель­но рекомен­дует­ся к озна­ком­лению!

Полезные однострочники

У меня в зак­ладках лежит ин­терес­ный ресурс с раз­нооб­разны­ми однос­троч­никами — эта­кая биб­лиоте­ка команд на все слу­чаи жиз­ни.

Вот, нап­ример, как смон­тировать NTFS раз­дел из вир­туаль­ного дис­ка VirtualBox (VDI):

$ mount -t ntfs-3g -o ro,loop,uid=user,gid=group,umask=0007,fmask=0117,offset=0x$(hd -n 1000000 IMAGE.vdi | grep "eb 52 90 4e 54 46 53" | cut -c 1-8) IMAGE.vdi /mnt/vdi-ntfs

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «Xakep.ru», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», позволит скачивать выпуски в PDF, отключит рекламу на сайте и увеличит личную накопительную скидку! Подробнее

Вариант 2. Открой один материал

Заинтересовала статья, но нет возможности стать членом клуба «Xakep.ru»? Тогда этот вариант для тебя! Обрати внимание: этот способ подходит только для статей, опубликованных более двух месяцев назад.


  • Подпишись на наc в Telegram!

    Только важные новости и лучшие статьи

    Подписаться

  • Подписаться
    Уведомить о
    10 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии