Выбор столбцов из файла с использованием cut
Задача:
У вас есть файл CSV с данными о пользователях (
Решение:
1. Пример содержимого
2. Используем команду
Параметры:
•
•
3. Результат:
__________
Теперь у вас есть только имена и электронные адреса пользователей.
Задача:
У вас есть файл CSV с данными о пользователях (
users.csv), и вам нужно выбрать только имя и email пользователей, которые находятся в первых двух столбцах.Решение:
1. Пример содержимого
users.csv:ID,Name,Email,Age
1,John,john@example.com,30
2,Jane,jane@example.com,25
3,Bob,bob@example.com,402. Используем команду
cut для выбора первых двух столбцов:cut -d ',' -f 2,3 users.csvПараметры:
•
-d ',' — указывает разделитель (запятая).•
-f 2,3 — выбирает второй и третий столбцы (имя и email).3. Результат:
Name,Email
John,john@example.com
Jane,jane@example.com
Bob,bob@example.com__________
Теперь у вас есть только имена и электронные адреса пользователей.
Использование awk для анализа данных в столбцах
Задача:
У вас есть файл с данными о продажах (
Решение:
1. Пример содержимого sales_data.txt
2. Используем команду awk для подсчета общей суммы:
Параметры:
•
•
•
3. Результат:
__________
Теперь у вас есть общая сумма продаж за все дни.
Задача:
У вас есть файл с данными о продажах (
sales_data.txt), где в первом столбце указана дата, а в последнем — сумма продажи. Необходимо вычислить общую сумму продаж за все дни.Решение:
1. Пример содержимого sales_data.txt
2021-01-01,Product1,100
2021-01-02,Product2,150
2021-01-03,Product3,2002. Используем команду awk для подсчета общей суммы:
awk -F ',' '{sum += $3} END {print "Total Sales: " sum}' sales_data.txtПараметры:
•
-F ',' — указывает разделитель (запятая).•
{sum += $3} — добавляет значение из третьего столбца (сумма продажи) к общей сумме.•
END {print "Total Sales: " sum} — выводит результат после обработки всех строк.3. Результат:
Total Sales: 450__________
Теперь у вас есть общая сумма продаж за все дни.
В Linux процессы могут быть не только запущены, но и контролируемы на уровне блокировок, изменения приоритетов, а также контроля за использованием памяти.
Пример:
Совет: Используйте nice для управления приоритетами, а также ulimit для ограничения ресурсов, чтобы не исчерпать все доступные ресурсы на сервере.
Пример:
# Отследить системные вызовы процесса с PID 12345
strace -p 12345
# Установить низкий приоритет для процесса
renice -n 15 -p 12345
# Показать ограничения по ресурсам для текущего пользователя
ulimit -a
Совет: Используйте nice для управления приоритетами, а также ulimit для ограничения ресурсов, чтобы не исчерпать все доступные ресурсы на сервере.
Для эффективного мониторинга системы необходимо использовать различные инструменты для анализа нагрузки, использования дисков и памяти.
Пример:
Совет: Настройте sysstat для логирования и анализа производительности в долгосрочной перспективе.
Пример:
# Показать статистику ввода-вывода каждую секунду
iostat -xz 1
# Показать статистику виртуальной памяти
vmstat 2
# Показать ошибки системы
sysstat -e
Совет: Настройте sysstat для логирования и анализа производительности в долгосрочной перспективе.
Поиск и замена текста с использованием sed
Задача:
У вас есть файл
Решение:
1. Используйте команду sed для замены старого домена на новый:
Параметры:
•
•
2. Проверка результата:
__________
Теперь все старые адреса были заменены на новые.
Задача:
У вас есть файл
report.txt, содержащий несколько строк с адресами электронной почты. Необходимо заменить все старые домены (например, old-domain.com) на новый (например, new-domain.com).Решение:
1. Используйте команду sed для замены старого домена на новый:
sed -i 's/old-domain.com/new-domain.com/g' report.txtПараметры:
•
-i — изменяет файл на месте.•
s/old-domain.com/new-domain.com/g — заменяет все вхождения старого домена на новый.2. Проверка результата:
cat report.txt__________
Теперь все старые адреса были заменены на новые.
Чтобы эффективно управлять сетью, необходимо понимать, как работать с такими инструментами, как netstat, ss, и tcpdump, а также использовать более сложные инструменты безопасности, например, iptables.
Пример:
Совет: iptables позволяет не только фильтровать пакеты, но и строить сложные сетевые политики безопасности. Использование tcpdump поможет вам выявить подозрительные пакеты.
Пример:
# Показать все открытые порты
ss -tuln
# Разрешить подключение по SSH
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Захват пакетов на порту 80
tcpdump -i eth0 port 80
Совет: iptables позволяет не только фильтровать пакеты, но и строить сложные сетевые политики безопасности. Использование tcpdump поможет вам выявить подозрительные пакеты.
Иногда возникает необходимость получения дополнительной информации, которую не предоставляет команда
Полный обзор статуса файла в файловой системе предоставляет команда
В результатах команды
ls (или, по крайней мере, не позволяет получить в одном вызове на выполнение). Полный обзор статуса файла в файловой системе предоставляет команда
stat, к примеруstat some_fileВ результатах команды
stat будет показано почти все, что можно узнать о рассматриваемом файле, вплоть до старшего и младшего номеров устройства, на котором хранится файл.Командный конвейер, как правило, действует прямолинейно, но зачастую полезно распараллелить поток данных.
Это можно сделать с помощью команды
выводит найденные путевые имена файлов core и результат подсчета их количества.
Часто работа конвейера с командой
Это можно сделать с помощью команды
tee, которая отправляет свой стандартный входной поток как в стандартный выходной канал, так и в файл, указанный в командной строке.find / -name core | tee log_file | wc -l выводит найденные путевые имена файлов core и результат подсчета их количества.
Часто работа конвейера с командой
tee, выводящей результаты и в файл, и в окно терминала (для проверки), занимает много времени. Вы можете понаблюдать за первыми результатами, чтобы убедиться в том, что все работает как надо, а затем смело уходите: результаты сохранятся в файле.Команда для перезагрузки
При выполнении команды
reboot отличается от более функциональной команды shutdown тем, что последняя позволяет более мягко завершать работу операционной системы, вызывая для этого системные и локальные гс.d-скрипты с параметром stop. При выполнении команды
reboot данные гс.d-скрипты не выполняются, и ресурсоемкие процессы просто не успевают сохранить свои данные.Команда
Важно помнить, что
Каталог
gio trash отправит файлы в корзину. Он предустановлен во многих операционных системах Linux и является преемником gvfsd-trash.Важно помнить, что
gio trash отправляет файлы в ~/.local/share/Trash/files вместо ~/.trash.Каталог
.local/share/Trash включает в себя три каталога:info — хранит исходное местоположение удаленных файлов и время удаления.files — хранит удаленные файлы до тех пор, пока он не будет очищен.expunged — может временно содержать недавно очищенную корзину.Отображения дерева зависимостей динамических библиотек
Команда
lddtree отображает иерархическую структуру зависимостей, что облегчает понимание взаимосвязей между библиотеками.
Чтобы увидеть дерево зависимостей для программы /bin/ls. В этом случае команда будет выглядеть следующим образом:
Если у вас ещё не установлен pax-utils, который включает в себя lddtree, вы можете установить его с помощью менеджера пакетов:
Debian или Ubuntu:
Команда
lddtree, являющаяся частью пакета pax-utils, предназначена для отображения зависимостей, необходимых для работы исполняемых файлов или других динамических библиотек. lddtree отображает иерархическую структуру зависимостей, что облегчает понимание взаимосвязей между библиотеками.
Чтобы увидеть дерево зависимостей для программы /bin/ls. В этом случае команда будет выглядеть следующим образом:
lddtree /bin/lsЕсли у вас ещё не установлен pax-utils, который включает в себя lddtree, вы можете установить его с помощью менеджера пакетов:
Debian или Ubuntu:
sudo apt-get update
sudo apt-get install pax-utils
Fedora:sudo dnf install pax-utilsРасстановка приоритетов
Не всегда нужно убивать процесс (по необходимости), особенно если он является частью критически важного сервиса
По умолчанию новому процессу присваивается нейтральное значение
Чем выше число, тем более покладистым будет процесс, когда дело доходит до отказа от ресурсов в пользу других. И наоборот, чем меньше число, тем больше ресурсов захватывает процесс, несмотря на другие.
Пример запуска скрипта с уступающим приоритетом:
При возникновении конфликта из-за доступа к ресурсам, ваш сценарий будет отложен, но в противном случае он будет использовать все, что доступно.
Пример с отрицательным значением, когда скрипт нужно выполнить, как можно скорее:
Можно изменить поведение уже работающего процесса, например с PID = 777
В
Не всегда нужно убивать процесс (по необходимости), особенно если он является частью критически важного сервиса
По умолчанию новому процессу присваивается нейтральное значение
nice, равное 0, которое вручную можно изменять на число от -20 до 19Чем выше число, тем более покладистым будет процесс, когда дело доходит до отказа от ресурсов в пользу других. И наоборот, чем меньше число, тем больше ресурсов захватывает процесс, несмотря на другие.
Пример запуска скрипта с уступающим приоритетом:
nice -17 /var/scripts/some_script.shПри возникновении конфликта из-за доступа к ресурсам, ваш сценарий будет отложен, но в противном случае он будет использовать все, что доступно.
Пример с отрицательным значением, когда скрипт нужно выполнить, как можно скорее:
nice --17 /var/scripts/some_script.shМожно изменить поведение уже работающего процесса, например с PID = 777
renice 17 -р 777 или renice -17 -р 777 В
top значение nice показывается в столбце NIЧто такое /dev/null в Linux?
С технической точки зрения
Программы и утилиты могут взаимодействовать с ним как с настоящим файлом: запрашивать данные, а также отправлять в него любую информацию. Но всё, что вы пишете в
Но иногда это очень полезно использовать для избавления от ненужного вывода.
Чего точно НЕ нужно делать, так это отправлять директорию
С технической точки зрения
/dev/null в Linux — это файл виртуального устройства. Программы и утилиты могут взаимодействовать с ним как с настоящим файлом: запрашивать данные, а также отправлять в него любую информацию. Но всё, что вы пишете в
/dev/null, отправляется в пустоту и забывается (другими словами, отправляется в чёрную дыру). Но иногда это очень полезно использовать для избавления от ненужного вывода.
Чего точно НЕ нужно делать, так это отправлять директорию
home/user/* в /dev/null, иначе вся ваша информация потеряется навсегда.Сгенерировать список последних сессий, в том числе время их начала и окончания можно с помощью команды:
Выведутся данные, хранящиеся в файле
Недостатком команды last является то, что она перечисляет только консольные сессии. Это ограничивает ее возможности по определению пользователей, находящихся в системе, так как некоторые из них могли войти в систему с помощью графического интерфейса.
Команда:
похожа на last, однако показывает только неудавшиеся попытки входа в систему, извлекая данные из файла
lastВыведутся данные, хранящиеся в файле
/var/log/wtmp. Имейте в виду, что в некоторых дистрибутивах этот файл не создается по умолчанию.Недостатком команды last является то, что она перечисляет только консольные сессии. Это ограничивает ее возможности по определению пользователей, находящихся в системе, так как некоторые из них могли войти в систему с помощью графического интерфейса.
last reboot отобразит историю перезагрузок системы.Команда:
sudo lastb похожа на last, однако показывает только неудавшиеся попытки входа в систему, извлекая данные из файла
/var/log/btmp.Каждый раз, когда вы будете устанавливать программы с помощью
Скорее всего, там уже есть файлы:
Для освобождения места на диске, можно применить:
Повторное выполнение команды
который удалит только устаревшие пакеты.
aptitude, будет загружаться DЕВ-архив и помещаться в папку /var/cache/apt/archives. Скорее всего, там уже есть файлы:
ls /var/cache/apt/archives/Для освобождения места на диске, можно применить:
sudo aptitude cleanПовторное выполнение команды
ls покажет, что все пакеты удалены, но если у вас слабый интернет и вам необходима неделя, чтобы загрузить последние версии программных пакетов (что очень мало вероятно, сейчас уже ..), то следует подумать дважды, прежде чем выполнять действия, описанные выше, либо воспользоваться sudo aptitude autocleanкоторый удалит только устаревшие пакеты.
Если диск заполняется и нужно знать, где находятся все занимающие место медиафайлы, поможет команд
Без аргументов она выводит использование диска для каждого каталога в иерархии каталогов, начиная с текущего рабочего каталога. (Это может быть длинный список, для примера просто запусти команду
Команда
Чтобы оценить все файлы и подкаталоги в определенном каталоге, перейди в него и запусти команду
В посте ранее приводился список аргументов команды.
du. Без аргументов она выводит использование диска для каждого каталога в иерархии каталогов, начиная с текущего рабочего каталога. (Это может быть длинный список, для примера просто запусти команду
du в ( / ), чтобы понять, о чем речь. Когда надоест смотреть, нажимай Ctrl+C) Команда
du -s включает режим общего подсчета для вывода только итоговой суммы. Чтобы оценить все файлы и подкаталоги в определенном каталоге, перейди в него и запусти команду
du -s *, но имей в виду, что могут существовать каталоги с точкой, которые эта команда не увидит.В посте ранее приводился список аргументов команды.
Замена традиционной команды ls
Примеры:
Отобразить список файлов с подробной информацией:
Отобразить список файлов, включая скрытые, с подробной информацией:
Показать древовидный вывод содержимого каталога:
Показать древовидный вывод содержимого каталога с указанием уровня вложенности:
Отобразить файлы с информацией о Git-статусе:
Установка exa зависит от вашего дистрибутива Linux. Например, для дистрибутивов на основе Debian:
exa - замена для команды ls, написанная на Rust, используется для отображения списка файлов и каталогов. Призвана предоставлять более удобные по умолчанию форматирование и цвета, а также дополнительные функции, такие как дерево каталогов. Примеры:
Отобразить список файлов с подробной информацией:
exa -lОтобразить список файлов, включая скрытые, с подробной информацией:
exa -laПоказать древовидный вывод содержимого каталога:
exa --treeПоказать древовидный вывод содержимого каталога с указанием уровня вложенности:
exa --tree --level=2Отобразить файлы с информацией о Git-статусе:
exa -l --gitУстановка exa зависит от вашего дистрибутива Linux. Например, для дистрибутивов на основе Debian:
sudo apt install exaМодули ядра Linux
Ядро Linux — является монолитным ядром.
Это значит, что весь исполняемый код сосредоточен в одном файле. Такая архитектура имеет некоторые недостатки, например, невозможность установки новых драйверов без пересборки ядра. Но разработчики нашли решение и этой проблеме, добавив систему модулей.
Модули ядра Linux собираются только под определенную версию ядра и находятся в папке
Основные команды для управления модулями.
⁃
⁃
⁃
⁃
Чтобы посмотреть все установленные модули ядра Linux в системе:
Ядро Linux — является монолитным ядром.
Это значит, что весь исполняемый код сосредоточен в одном файле. Такая архитектура имеет некоторые недостатки, например, невозможность установки новых драйверов без пересборки ядра. Но разработчики нашли решение и этой проблеме, добавив систему модулей.
Модули ядра Linux собираются только под определенную версию ядра и находятся в папке
/lib/modules/.Основные команды для управления модулями.
⁃
lsmod - посмотреть загруженные модули⁃
modinfo - информация о модуле⁃
insmod - загрузить модуль⁃
rmmod - удалить модульЧтобы посмотреть все установленные модули ядра Linux в системе:
dpkg -S *.ko | grep /lib/modulesФайловую систему необходимо смонтировать до того, как она станет видимой для процессов.
Точкой монтирования для ФС может быть любой каталог.
Например, команда
монтирует ФС в разделе, представленном файлом устройства
Размер файловой системы можно проверить с помощью команды
В приведенном примере флаг
Точкой монтирования для ФС может быть любой каталог.
Например, команда
sudo mount /dev/sda1 /mnt/temp монтирует ФС в разделе, представленном файлом устройства
/dev/sda1 в каталоге /mnt, который является традиционным для временных точек монтирования. Размер файловой системы можно проверить с помощью команды
df. Например:df -h /mnt/web1 В приведенном примере флаг
-h используется для выдачи результатов в понятном для человека виде.Поиск введенных ранее команд в командной строке можно организовать по префиксу. То есть набираем "
Для такой возможности - открываем на редактирование файл
Сохраняем. Готово.
cd " и при нажатии вверх-вниз видим только команды начинающейся с "cd ". Для такой возможности - открываем на редактирование файл
~/.inputrc и записываем туда:"\e[A": history-search-backward"\e[B": history-search-forwardСохраняем. Готово.
Отобразить список открытых файлов и псевдофайлов, в том числе и сокетов, как локальных, так и протоколов TCP и UDP, можно с помощью команды
К примеру, показать все TCP и UDP сокеты
Показать все TCP и UDP сокеты, связанные с адресом
Тоже самое, но при отображении не преобразовывать адреса хостов и номера портов в доменные имена и названия сервисов.
Показать все TCP сокеты; при отображении не преобразовывать адреса хостов и номера портов.
Показать все UDP сокеты, связанные с адресом
lsof К примеру, показать все TCP и UDP сокеты
lsof -i Показать все TCP и UDP сокеты, связанные с адресом
192.168.1.5. lsof -i@192.168.1.5 Тоже самое, но при отображении не преобразовывать адреса хостов и номера портов в доменные имена и названия сервисов.
lsof -i@192.168.1.5 -n -P Показать все TCP сокеты; при отображении не преобразовывать адреса хостов и номера портов.
lsof -i TCP -n -P Показать все UDP сокеты, связанные с адресом
192.168.1.5; при отображении не преобразовывать адреса хостов и номера портов. lsof -i UDP@192.168.1.5 -n -P