Linux для чайника
19.6K subscribers
86 photos
4 files
79 links
Linux
- Разбор утилит / инструментов
- Новости / факты
- Опросы для проверки знаний, навыков
и многое другое.

Только по вопросам сотрудничества: @altmainf

Регистрация в перечне РКН https://clck.ru/3EpL9L
Download Telegram
Находим файлы, измененные за последние 7 дней

Напишем команду, которая найдет все файлы в директории /var/log, измененные за последние 7 дней.

Пример:
find /var/log -type f -mtime -7

Опция -mtime -7 указывает на файлы, измененные в течение последних 7 дней. -type f ограничивает поиск только файлами.
Символические и жесткие ссылки

В Linux вы можете создавать ссылки на файлы.

Жесткие ссылки указывают на тот же inode, что и оригинальный файл, в то время как символические ссылки (symlink) — это указатели на путь к файлу.

Пример:
Создаемсимволическую ссылку:
ln -s /path/to/original/file.txt /path/to/symlink.txt

Создаем жесткую ссылку:
ln /path/to/original/file.txt /path/to/hardlink.txt

Можно проверить, что обе ссылки указывают на один и тот же inode с помощью команды ls -li.
Создаем cron-задачу

Напишем команду для создания cron-задачи, которая будет выполнять скрипт /home/user/script.sh каждый день в 2:30 ночи.

Пример:

crontab -e
Затем добавляем строку:
30 2 * * * /home/user/script.sh

crontab -e открывает редактор для редактирования задач cron. Строка в формате минуты часы день_месяца месяц день_недели команда указывает, когда выполнять скрипт.
Находим и удаляем пустые файлы

Найдем и удалим все пустые файлы в директории
/path/to/directory.

Пример:
find /path/to/directory -type f -empty -delete

Команда find ищет пустые файлы (-empty) и удаляет их с помощью опции -delete.
Копирование файлов с фильтрацией

Скопируем все файлы из каталога /source в /destination, исключая файлы с расширением .log.

Пример:

rsync -av --exclude='*.log' /source/ /destination/

• rsync -av — копирует файлы с сохранением атрибутов.
• --exclude='*.log' — исключает файлы с указанным расширением.
Получаем размер директории

Выведим общий размер директории /home/user/data в человекочитаемом формате.

Пример:

du -sh /home/user/data

Команда du используется для оценки дискового пространства. Опция -s выводит только общий размер, а -h делает вывод человекочитаемым.
Мониторинг процессов

Создаем скрипт, который будет выводить список процессов, использующих более 50% CPU, и сохранять его в файл high_cpu_processes.txt.

Пример:
#!/bin/bash
ps -eo pid,comm,%cpu --sort=-%cpu | awk '\$3 > 50' > high_cpu_processes.txt


Команда ps выводит PID, имя команды и использование CPU, awk фильтрует процессы с использованием более 50%.
Создание пользовательского скрипта с параметрами

Напишем скрипт file_info.sh, который принимает имя файла как аргумент и выводит его размер, дату последнего изменения и количество строк.

Пример:

#!/bin/bash
file="\$1"
echo "Размер: $(stat -c%s "$file") байт"
echo "Дата последнего изменения: $(stat -c%y "$file")"
echo "Количество строк: $(wc -l < "$file")"


Скрипт использует stat для получения информации о файле и wc для подсчета строк.
Проверка доступности серверов

Создадим скрипт, который проверяет доступность серверов из servers.txt и выводит результаты в ping_results.txt.

Пример:
#!/bin/bash
while read -r server; do
ping -c 1 "$server" &>/dev/null && echo "$server is up" || echo "$server is down"
done < servers.txt > ping_results.txt


• ping -c 1 — отправляет один пакет.
• &>/dev/null — подавляет вывод команды.
• && и || — условные операторы для обработки результатов.
Пакетное переименование файлов

Переименуем все файлы с расширением .jpg в каталоге /images, добавив префикс photo_.

Пример:

#!/bin/bash
for file in /images/*.jpg; do
mv "$file" "$(dirname "$file")/photo_$(basename "$file")"
done


•Цикл for перебирает все файлы с расширением .jpg.
• mv переименовывает файлы, добавляя префикс.
Мониторинг процессов

Выведем список всех процессов, запущенных пользователем, и отсортируем их по использованию памяти.

Пример:
ps -u $USER --sort=-%mem

• ps -u $USER — показывает процессы текущего пользователя.
• --sort=-%mem — сортирует по использованию памяти в порядке убывания.
Поиск больших файлов

Найдем все файлы в каталоге /home размером более 100 МБ и сохраните результаты в large_files.txt.

Пример:

find /home -type f -size +100M > large_files.txt

• -type f — ищет только файлы.
• -size +100M — ищет файлы больше 100 МБ.
Проверка доступности URL

Создадим скрипт, который проверяет доступность URL из файла urls.txt и сохраняет результаты в url_check_results.txt.

Пример:

#!/bin/bash
while read -r url; do
if curl -s --head "$url" | grep "200 OK" > /dev/null; then
echo "$url доступен" >> url_check_results.txt
else
echo "$url недоступен" >> url_check_results.txt
fi
done < urls.txt


• curl -s --head — делает запрос к URL.
• grep "200 OK" — проверяет статус ответа.
awk — инструмент для обработки текстовых файлов и анализа данных, который используется в Unix-подобных операционных системах.

Название awk происходит от первых букв фамилий его создателей: Алфреда В. Ахо, Питера Дж. Уайнбергера и Бенжамена Кернигана.

Основные особенности awk:

• awk позволяет легко обрабатывать текстовые файлы, разбивая строки на поля и выполняя различные операции с этими полями.

• awk можно использовать как скриптовый язык для написания более сложных программ, что делает его гибким инструментом для анализа данных.

• awk поддерживает регулярные выражения, что позволяет эффективно фильтровать и обрабатывать текст.

• awk предлагает множество встроенных функций для работы с числами, строками и массивами, что упрощает выполнение различных операций.

• Синтаксис awk интуитивно понятен, что делает его доступным даже для тех, кто не является программистом.
Несколько ключевых примеров использования awk, которые помогут понять его возможности и применение в обработке текстовых данных:

1. Подсчет строк в файле
awk 'END {print NR}' имя_файла.txt
Подсчитывает общее количество строк в файле.

2. Вывод определенных полей
awk '{print \$1, \$3}' имя_файла.txt
Выводит первое и третье поля из каждой строки файла.

3. Фильтрация строк по условию
awk '\$2 > 100' имя_файла.txt
Выводит строки, где значение во втором поле больше 100.

4. Подсчет уникальных значений
awk '{count[\$1]++} END {for (i in count) print i, count[i]}' имя_файла.txt
Подсчитывает количество уникальных значений в первом поле и выводит их.

5. Суммирование значений

awk '{sum += \$2} END {print sum}' имя_файла.txt
Суммирует значения во втором поле и выводит общую сумму.

6. Замена текста

awk '{gsub(/старое_слово/, "новое_слово"); print}' имя_файла.txt
Заменяет все вхождения старое_слово на новое_слово и выводит измененные строки.

7. Форматированный вывод

awk '{printf "%-10s %-10s %-10s\n", \$1, \$2, \$3}' имя_файла.txt
Выводит данные в формате таблицы с выравниванием по левому краю.

8. Объединение файлов

awk 'FNR==1 {print ""} {print}' файл1.txt файл2.txt | sort | uniq
Объединяет два файла и выводит только уникальные строки.

9. Подсчет слов
awk '{ total += NF } END { print total }' имя_файла.txt
Подсчитывает общее количество слов в файле.

10. Выбор строк с определенной длиной
awk 'length(\$0) > 50' имя_файла.txt
Выводит строки, длина которых превышает 50 символов.
Управляем Bluetooth-устройствами в Linux с помощью утилиты bluetoothctl

1. Запуск bluetoothctl
Открываем терминал и запускаем утилиту: bluetoothctl

2. Включение Bluetooth
Если Bluetooth выключен, включаем его с помощью следующей команды: power on

3. Поиск устройств
Для поиска доступных Bluetooth-устройств используем команду: scan on
После выполнения этой команды мы увидим список обнаруженных устройств с их MAC-адресами и именами.

4. Подключение к устройству
Когда найдем нужное устройство, то можем подключиться к нему, используя его MAC-адрес: connect XX:XX:XX:XX:XX:XX

5. Сопряжение с устройством

Если устройство требует сопряжения, используем команду: pair XX:XX:XX:XX:XX:XX
После этого понадобиться ввести код сопряжения, если он требуется.

6. Проверка состояния подключенных устройств
Чтобы увидеть список подключенных устройств, используем: devices

7. Отключение от устройства
Чтобы отключиться от устройства, выполняем: disconnect XX:XX:XX:XX:XX:XX

8. Завершение работы с bluetoothctl
Чтобы выйти из bluetoothctl, просто вводим: exit
Ищем и удаляем дубликаты файлов в директории

fdupes -r /path/to/directory


fdupes сканирует директорию и находит дубликаты. Используйте -d для удаления.
Используем lsof для поиска открытых файлов определенного процесса

lsof -p <PID>

lsof показывает открытые файлы и сетевые соединения для указанного процесса.
Используем tcpdump для анализа сетевого трафика

sudo tcpdump -i eth0 -w capture.pcap


tcpdump захватывает пакеты на интерфейсе eth0 и сохраняет их в файл для последующего анализа.
Cписок основных горячих клавиш терминала в Linux

🔹 Редактирование командной строки
Ctrl + A Переместиться в начало строки
Ctrl + E Переместиться в конец строки
Alt + B Перейти на одно слово назад
Alt + F Перейти на одно слово вперёд
Ctrl + U Удалить всё от курсора до начала строки
Ctrl + K Удалить всё от курсора до конца строки
Ctrl + W Удалить слово перед курсором
Ctrl + Y Вставить (вставка последнего вырезанного)
Ctrl + L Очистить экран (аналог clear)
Ctrl + D Завершить терминал / выйти (если строка пуста)
Ctrl + C Прервать текущую команду
Ctrl + Z Приостановить выполнение (в фон)

🔹 История команд
Ctrl + R Поиск по истории команд
↑ / ↓ Перемещение по истории команд
!! Повтор последней команды
!n Выполнить команду под номером n
!имя Выполнить последнюю команду, начинающуюся с имя

🔹 Управление задачами и экранами
Ctrl + Z Приостановить текущий процесс
fg Вернуть задачу из фона на передний план
bg Продолжить выполнение задачи в фоновом режиме
jobs Показать список задач

🔹 Работа с вкладками (в терминалах типа GNOME Terminal, Konsole и др.)
Ctrl + Shift + T Открыть новую вкладку
Ctrl + Shift + W Закрыть текущую вкладку
Ctrl + PageUp/PageDown Переключение между вкладками