Найти в Дзене

Хитрости ОС Linux для ускорения рутинных операций.

Оптимизируем свою деятельность в Linux
Оптимизируем свою деятельность в Linux

В ОС Linux есть интересные способы выполнения рутинной работы из командной строки Linux более интереснее и это еще и экономит время системному администратору.

Одна, из действительно приятных вещей в работе с командной строкой Linux, заключается в том, что вы можете очень быстро выполнить большую часть однотипной работы. Зная основные команды и немного разбираясь в работе с командной строкой, вы можете избавить себя от утомительной повседневной работы. В этой статье вы познакомитесь с несколькими полезными приемами, которые помогут облегчить вашу трудовую деятельность и, возможно, сделать ее более приятной.

Очистка файлов с помощью знака >

Каждый раз, когда у вас есть файл, который необходимо очистить, потому что он стал слишком большим или данные больше не нужны, вы можете сделать это с помощью команды > filename . Это намного быстрее, чем удаление файла и его восстановление с исходными разрешениями. Знак > , за которым следует имя файла, работает так же, как при вводе команды cat /de null> filename , но на удивление быстро. Он очищает файл, но оставляет без изменений разрешения и права собственности.

$ ls -l bigfile

-rw-r--r--. 1 shs shs 8956108 Mar 23 10:00 bigfile

$ > bigfile

$ ls -l bigfile

-rw-r--r--. 1 shs shs 0 Mar 23 10:50 bigfile

В файле ничего не меняется, кроме размера и времени последнего обновления.

Операция> довольно часто используется для очистки слишком большого файла журнала, особенно если он не перезаписывается системой.

Сохранение изменений в файл, принадлежащий пользователю root

Иногда возникает необходимость отредактировать системный файл, но вы забыли запустить текстовый редактор (vi или vim) с использованием команды sudo. И вы, получается выполнили команду vi (или vim ) без sudo , только для того, чтобы обнаружить, что затем не можете сохранить внесенные изменения. Но вам не нужно начинать все заново! Вместо этого вы можете нажать клавишу : , как если бы вы собирались сохранить файл, а затем введите следующее:

w !sudo tee %

Вам будет предложено ввести пароль (как и в случае любой команды sudo) и будет предложено подтвердить ваше намерение перезаписать файл, но вам не придется повторять все внесенные вами изменения. После сохранения файла нажмите клавишу ввода, выйдите с помощью: q! (изменения уже внесены), и все готово.

Одна команда для копирования файла в несколько мест

Команды, подобные показанной ниже, позволяют запускать команду несколько раз, не вводя ее повторно. В этом случае команда echo отправляет список расположений файловой системы в xargs , который затем запускает команду cp для каждого из них. Аргумент -v заставляет cp показать, что он делает. Замените список местоположений (например, mesto 1 ...) вашими целевыми каталогами.

$ echo mesto1 mesto2 mesto3 | xargs -n 1 cp -v filename

В этом примере будут выполняться следующие команды:

cp -v filename mesto1

cp -v filename mesto2

cp -v filename mesto 3

Аргументы mesto следует заменить на пути файловой системы (например, /usr/local). Если целевые каталоги не те, в которые вы можете писать без использования sudo, используйте вместо этого такую команду:

$ echo mesto1 mesto2 mesto3 | sudo xargs -n 1 cp -v filename

Вот пример использования root -доступа для копирования файла в несколько домашних каталогов:

$ echo /home/nemo /home/mesto /home/shark | sudo xargs -n 1 cp -pv sksta

'sksta' -> '/home/nemot/ sksta'

'sksta' -> '/home/lolap/ sksta'

'sksta' -> '/home/sharky/ sksta'

Эта команда использует sudo для копирования файлов в целевые каталоги, но это не требуется для перечисления каталогов и передачи их команде xargs.

Обратите внимание, что такую команду также было бы очень легко превратить в alias , поскольку только последний аргумент - имя файла - нужно будет изменять по мере его использования. Вот пример такого alias:

$ alias cp2dirs="echo /home/nemot /home/lolap /home/sharky | sudo xargs -n 1 cp -pv"

Чтобы использовать этот alias , вам нужно будет только предоставить файл, который нужно скопировать, и указать свой пароль, когда вас попросят указать часть alias sudo .

$ cp2dirs filenamenew

[sudo] password for you:

Используя аналогичную стратегию, вы можете создать alias , который копирует файл в каждый домашний каталог вашей системы. Однако файлы сохранят свои разрешения, владельца и назначения групп, если вы не выполните операции chown или chmod . Вот пример alias:

alias cp2all='find /home -maxdepth 1 -type d | tail -n +2 | grep -v lost+found | sudo xargs -n 1 cp -pv'

Этот alias cp 2 all работает, создавая список домашних каталогов (избегая самого / home и каталога lost + found в случае, если / home является отдельной файловой системой), а затем копирует указанный файл в каждый из них. Это может привести к перезаписи существующих файлов с тем же именем, поэтому будьте осторожны.

А у вас есть варианты оптимизации работы в ОС Linux?