Click

Памятки по работе в Linux

Накопилось несколько простых рецептов работы в Linux, которые в силу низкой частоты использования наизусть не помню. Пока лежали в черновиках – некоторые по несколько раз успел перечитать, чтобы вспомнить, как и что делать – польза налицо.

Порядок вывода аргументов в xargs

Как-то раз столкнулся с проблемой порядка подстановки аргументов в xargs. И man вроде почитал, и погуглил, и встретил нужный ключ -I, но ни из мана, ни из гугля не понять было точно, что он делает именно то, что надо. Итак, ключ -I задаёт нужный порядок вывода аргумента в xargs, используя подстановку.
xargs -I arg_name command arg1 arg_name arg3 – аргументы при вызове команды command будут выведены именно в таком порядке, тогда как в обычном случае arg_name будет подставлен в конец строки вызова команды.

Чтение N строк из начала файла

Совместно с предыдущим решением удобно использовать чтение из файла неких строк, которые затем и преобразовывать в набор аргументов. Банальный cat известен думаю всем. Обратный порядок – tac. Прочитать N строк с конца: tail -n N. Аналогично, но с начала файла: head -n N (возм. head отсутствует в BSD-системах). И прочтитать строки с X по Y: awk 'NR >=X && NR <=Y'

Прокси через SSH (ssh-туннель)

Банальная вещь, которую использую довольно редко (и потому приходится гуглить каждый раз) – прокси чеез SSH. Особенно помогает при необходимости скачать что-то с разных файлопомоек типа депозита, которые считают закачки по IP всей сети и регулярно предлагают подождать 7 часов.
ssh user@host -D portN
Затем в программе, которую надо пропустить через прокси (напр. браузер) указать SOCKS-прокси с адресом localhost и портом portN.

Сохранение ключей SSH в памяти

Еще SSH: ssh-agent – хранит ключи (не требуется каждый раз вводить код от ключа), добавить ключ в агент: ssh-add /путь/до_ключа. Чтобы все процессы, запущенные из-под иксов, использовали ключи из ssh-agent, нужно запустить сессию WM через него ssh-agent, например (для Debian): в ~/.xinitrc дописать exec ssh-agent openbox-session.

Выполнение локального скрипта на удаленной машине через ssh

Чтобы не загружать на удалённую машину копию какого-то скрипта (например когда один и тот же скрипт нужно запускать на многих машинах или когда разработка идет локально, а тестирование – на сервере хостера и т.п.), можно запустить его на выполнение через ssh следующим образом:
 ssh user@host 'perl' < /путь/к локальному/скрпту.pl
или для шелла bash:
 ssh user@host 'bash -s' < /путь/к локальному/скрпту.sh

Создание образа CD-диска

Задача для меня тоже не слишком частая, поэтому с ходу решения не вспоминаются. Первое решение – банальное – использовать dd, указав на выход нужный файл, а на вход свой cd-rom, с которого образ снимается: dd -if=/dev/sr0 of=/tmp/my.iso, CD должен быть отмонтирован; скопирует всё поблочно (т.е. если на диске реально записан 1 Мб данных, образ будет равен объёму всего диска).
Второе – использовать genisoimage, в Debian идёт из коробки, не факт, что так же везде. Создаёт “правильный” образ, диск должен быть примонтирован, на вход подавать точку монтирования диска: genisoimage -V 'disk label' -r -o /tmp/my.iso /mnt/cdrom

Прогресс работы dd

В дополнение к предыдущему или к форматированию флешки под Linux. При использовании dd на больших объемах (напр. когда флешку 16 Гб форматируешь) бывает полезно. Нужно передать сигнал USR1: kill -USR1 dd_PID – выведет прогресс записи и ее скорость. Если процесс dd один или не важно узнать прогресс конкретного, можно поступить проще: killall -USR1 dd.

Еще на похожие темы:

Category Рубрики: Linux | Tag Метки: , | Comments Комментариев нет

Leave a Reply