Команды обновления
apt:
yum:
dnf:
zypper:
Решение проблем
• Если получаете ошибку при обновлении пакетов ПО, попробуйте использовать команду
• Если получаете ошибку при установке пакета ПО, попробуйте использовать команду
• Если получаете ошибку при удалении пакета ПО, попробуйте использовать команду
apt:
apt update: обновляет список пакетов ПО.apt upgrade: обновляет пакеты ПО до последней версии.apt dist-upgrade: обновляет пакеты ПО до последней версии и удаляет устаревшие пакеты.yum:
yum update: обновляет пакеты ПО до последней версии.yum upgrade: обновляет пакеты ПО до последней версии и удаляет устаревшие пакеты.dnf:
dnf update: обновляет пакеты ПО до последней версии.dnf upgrade: обновляет пакеты ПО до последней версии и удаляет устаревшие пакеты.zypper:
zypper update: обновляет пакеты программного обеспечения до последней версии.zypper upgrade: обновляет пакеты программного обеспечения до последней версии и удаляет устаревшие пакеты.Решение проблем
• Если получаете ошибку при обновлении пакетов ПО, попробуйте использовать команду
apt --fix-broken install или yum --fix-broken.• Если получаете ошибку при установке пакета ПО, попробуйте использовать команду
apt --fix-missing install или yum --fix-missing.• Если получаете ошибку при удалении пакета ПО, попробуйте использовать команду
apt --purge remove или yum --purge.Используем systemd для создания пользовательской службы
Условие: Создать пользовательскую службу, которая будет запускать скрипт
Решение:
Создайте файл службы:
Запишите в файл:
Активируйте службу:
Пояснение:
•
•
•
•
•
Условие: Создать пользовательскую службу, которая будет запускать скрипт
/home/user/myscript.sh при старте системы.Решение:
Создайте файл службы:
sudo nano /etc/systemd/system/myscript.serviceЗапишите в файл:
[Unit]
Description=My custom script
[Service]
ExecStart=/bin/bash /home/user/myscript.sh
Restart=always
[Install]
WantedBy=multi-user.targetАктивируйте службу:
sudo systemctl enable myscript.service
sudo systemctl start myscript.serviceПояснение:
•
[Unit]: раздел для описания службы.•
[Service]: определяет команды для запуска службы.•
ExecStart: путь к исполняемому файлу или скрипту.•
Restart=always: служба будет перезапущена в случае сбоя.•
[Install]: указывает, при каких условиях служба должна быть активирована.Автоматизация обновлений
Задача: Напишите Bash-скрипт, который будет автоматически обновлять систему и очищать ненужные пакеты.
Решение:
Пояснение: Этот скрипт обновляет список пакетов, устанавливает обновления и удаляет ненужные пакеты с подтверждением (
Задача: Напишите Bash-скрипт, который будет автоматически обновлять систему и очищать ненужные пакеты.
Решение:
#!/bin/bash
sudo apt update && sudo apt upgrade -y && sudo apt autoremove -yПояснение: Этот скрипт обновляет список пакетов, устанавливает обновления и удаляет ненужные пакеты с подтверждением (
-y).Парсинг логов с использованием awk
Задача: Из файла
Решение:
Пояснение:
Задача: Из файла
/var/log/auth.log выведите все IP-адреса, которые пытались подключиться к SSH, и подсчитайте, сколько раз каждый IP встречается.Решение:
awk '/Failed password/ {print $(NF-3)}' /var/log/auth.log | sort | uniq -c | sort -nrПояснение:
awk ищет строки с "Failed password" и выводит поле с IP (обычно предпоследнее поле). Затем сортируем, считаем уникальные вхождения и сортируем по убыванию.Отслеживание изменений в каталоге
Задача: Используйте
Решение:
Пояснение:
Задача: Используйте
inotifywait для мониторинга каталога /tmp/watchdir и выводите сообщение при любом изменении.Решение:
inotifywait -m /tmp/watchdir -e create -e modify -e delete |
while read path action file; do
echo "Файл $file в $path был $action"
doneПояснение:
inotifywait с опцией -m следит за событиями создания, изменения и удаления файлов в каталоге. Цикл выводит подробности о событии.Рекурсивное переименование файлов
Задача: Переименуйте все
Решение:
Пояснение:
Задача: Переименуйте все
.txt файлы в каталоге /docs и подкаталогах, добавив префикс old_.Решение:
find /docs -type f -name "*.txt" -exec bash -c 'mv "\$0" "$(dirname "\$0")/old_$(basename "\$0")"' {} \;Пояснение:
find ищет файлы и запускает команду mv для переименования с добавлением префикса.Работа с сокетами в Bash
Задача: Создайте TCP-сервер на порту
Решение:
Пояснение:
Задача: Создайте TCP-сервер на порту
12345, который отвечает "Hello" каждому подключению.Решение:
while true; do
echo -e "HTTP/1.1 200 OK\r\n\r\nHello" | nc -l -p 12345
doneПояснение:
nc (netcat) слушает порт и отправляет ответ при подключении.Сравнение двух директорий
Задача: Найдите файлы, которые есть в
Решение:
Пояснение:
Задача: Найдите файлы, которые есть в
/dir1, но отсутствуют в /dir2.Решение:
comm -23 <(ls /dir1 | sort) <(ls /dir2 | sort)Пояснение:
comm сравнивает отсортированные списки, выводит уникальные для первого каталога.Сортировка и удаление повторяющихся строк
Использование команд
Для этого можно воспользоваться командой:
Чтобы сохранить результат в отдельный файл:
Использование команд
sort и uniq вместе помогут отсортировать и удалить повторяющиеся строки в файле и вывести результат в терминал.Для этого можно воспользоваться командой:
sort file.txt | uniq
Чтобы сохранить результат в отдельный файл:
sort file.txt | uniq > output.txtСоздание скриншота с помощью команды в терминале
Команда import используется для создания снимков экрана выбранной области или окна на экране.
Захватить весь экран:
Захватить определенную прямоугольную область:
Захватить активное в данный момент окно:
Команда import используется для создания снимков экрана выбранной области или окна на экране.
Захватить весь экран:
import screen.pngЗахватить определенную прямоугольную область:
import -crop 800x600+100+100 area.png
Захватить активное в данный момент окно:
import -window root window.pngЧтобы узнать, какой процесс открыл тот или иной ресурс, например, файл или сетевой порт, можно воспользоваться командой
Что делать далее - решать вам, например, можно убить этот процесс командой
fuser. Например: fuser -va 23/tcp
Получим идентификатор процесса, открывшего ТСР порт 23fuser -va /chroot/etc/resolv.conf
Во втором случае получим идентификатор процесса, открывшего файл /chroot/ etc/resolv.conf.Что делать далее - решать вам, например, можно убить этот процесс командой
kill.DHCP-сервер в Linux
1. Для установки DHCP-сервера в Ubuntu или Debian, выполните команду:
2. Настройка файла
3. В файле
Например, для подсети
4. В файле
5. Перед запуском DHCP-сервера убедитесь, что настройки в файле dhcpd.conf заданы правильно.
Выполните команду
6. Если ошибок нет, запустите DHCP-сервер:
1. Для установки DHCP-сервера в Ubuntu или Debian, выполните команду:
sudo apt-get install isc-dhcp-server2. Настройка файла
dhcpd.conf (основной файл конфигурации DHCP-сервера). Вам нужно указать настройки, такие как подсети, диапазоны IP-адресов, шлюзы, DNS-серверы и т. д.3. В файле
dhcpd.conf определите подсети и диапазоны IP-адресов, доступные для выдачи.Например, для подсети
192.168.1.0/24 и диапазона IP-адресов от 192.168.1.10 до 192.168.1.100, добавьте следующие строки в файл dhcpd.conf:subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.10 192.168.1.100;
}
4. В файле
dhcpd.conf вы также можете указать другие настройки, такие как шлюзы (routers), DNS-серверы (domain-name-servers) и другие параметры.5. Перед запуском DHCP-сервера убедитесь, что настройки в файле dhcpd.conf заданы правильно.
Выполните команду
sudo dhcpd -t, чтобы проверить конфигурационный файл.6. Если ошибок нет, запустите DHCP-сервер:
sudo service isc-dhcp-server start (в Ubuntu/Debian).Если к компьютеру подключить несколько мышек, то они будут работать параллельно. При одновременном противоречивом движении мышей курсор будет или оставаться на месте или непредсказуемо перемещаться.
В Linux обычные пользователи могут выделить каждой мыши по курсору. На экране их будет несколько, все они будут рабочие и каждый будет управляться своим устройством. Сделать это можно в три команды:
Посмотрим группы и номера устройств
Создаём ещё одну группу «mouse2» для новой мыши
Переподключаем мышь с id=11 к группе mouse2 (id=13)
В Linux обычные пользователи могут выделить каждой мыши по курсору. На экране их будет несколько, все они будут рабочие и каждый будет управляться своим устройством. Сделать это можно в три команды:
Посмотрим группы и номера устройств
$ xinput listСоздаём ещё одну группу «mouse2» для новой мыши
$ xinput create-master mouse2Переподключаем мышь с id=11 к группе mouse2 (id=13)
$ xinput reattach 11 13Записать сеанса терминала
Команда
Чтобы начать запись терминала в лог файл:
Теперь можете попробовать выполнить несколько команд, например,
Далее остановите команду script, выполнив команду
Теперь вся информация, которая была введена в терминал, хранится в файле
Команда
script фиксирует все, что происходит в сеансе терминала. С помощью нее можно сохранить всю информацию о вводе, выводе и времени. Чтобы начать запись терминала в лог файл:
script history_log.txtТеперь можете попробовать выполнить несколько команд, например,
ls, cal, w.Далее остановите команду script, выполнив команду
exit в терминале. После этого сможете увидеть: Script done, file is history_log.txtТеперь вся информация, которая была введена в терминал, хранится в файле
history_log.txtОткрываем изображения для просмотра из терминала
Команда
При запуске команды
Команда
display используется для открытия и отображения изображений в графическом окне. display image.jpgПри запуске команды
display появится графическое окно с изображением. Вы можете взаимодействовать с окном, чтобы увеличивать и уменьшать масштаб, прокручивать и закрывать изображение.Разрешить команды с помощью sudo только определенной группе пользователей
Предупреждение: не следует слепо следовать настройкам. В результате можно испортить систему. По большей части просто читайте и наслаждайтесь, или же не забудьте про резервную копию :)
Это более продвинутое решение, которое сисадмин использует в многопользовательской среде. Допустим, вы создаете группу "
Теперь отредактируйте файл sudoer с помощью:
Добавьте в него следующую строку:
Предупреждение: не следует слепо следовать настройкам. В результате можно испортить систему. По большей части просто читайте и наслаждайтесь, или же не забудьте про резервную копию :)
Это более продвинутое решение, которое сисадмин использует в многопользовательской среде. Допустим, вы создаете группу "
coders" и разрешаете им запускать команды из каталогов /var/folder и /opt/bin/coders.Теперь отредактируйте файл sudoer с помощью:
sudo visudo Добавьте в него следующую строку:
%coders ALL=(ALL:ALL) /var/folder,/opt/bin/codersНесколько примеров настроек ядра Linux:
/proc/sys/kernel/panic: Этот параметр определяет время задержки перед автоматической перезагрузкой системы после возникновения фатальной ошибки (паники) ядра. Значение в секундах. Например, чтобы установить время задержки в 10 секунд, выполните команду: echo 10 > /proc/sys/kernel/panic/proc/sys/kernel/sysrq: Этот параметр определяет, разрешены ли команды SysRq (System Request) для ядра Linux. Команды SysRq позволяют выполнять различные действия, такие как перезагрузка системы, синхронизация дисков, отображение информации о системе и т. д. Чтобы включить команды SysRq, выполните команду: echo 1 > /proc/sys/kernel/sysrq/proc/sys/kernel/sem: Этот параметр определяет количество системных семафоров, которые могут быть использованы процессами. Семафоры используются для синхронизации доступа к общим ресурсам. Значение состоит из трех чисел, разделенных пробелами, представляющих максимальное количество семафоров, максимальное количество семафоров в каждом наборе и максимальное значение для семафоров./proc/sys/kernel/shmmax: Этот параметр определяет максимальный размер общей памяти (shared memory), которая может быть выделена процессу. Значение указывается в байтах. Например, чтобы установить максимальный размер общей памяти в 1 гигабайт, выполните команду: echo 1073741824 > /proc/sys/kernel/shmmax/proc/sys/kernel/threads-max: Этот параметр определяет максимальное количество потоков, которые могут быть созданы в системе. Значение указывает максимальное количество потоков, которые могут быть созданы процессами. Например, чтобы установить максимальное количество потоков в 10000, выполните команду: echo 10000 > /proc/sys/kernel/threads-max/proc/sys/kernel/panic_on_oops: Этот параметр определяет, должна ли система автоматически перезагружаться после возникновения ошибки ядра (oops). Значение 1 включает автоматическую перезагрузку, а значение 0 отключает ее. Например, чтобы отключить автоматическую перезагрузку, выполните команду: echo 0 > /proc/sys/kernel/panic_on_oopsДопустим, вы хотите засечь сколько времени выполняется определенное действие в вашем Bash скрипте, для этого добавьте там, где нужно начать замер строку:
А там, где нужно прекратить:
Переменная
START=$(date +%s)А там, где нужно прекратить:
END=$(date +%s)DIFF=$(( $END - $START ))DIFF=$(( $DIFF / 60 ))Переменная
DIFF будет содержать время выполнения в минутах. Теперь вы можете вывести ее с помощью echo.Анализ и сканирование файлов ELF
Команда
Примеры использования scanelf:
1. Поиск всех ELF файлов, использующих определённую библиотеку:
Эта команда выведет список всех файлов, динамически связанных с
2. Анализ RPATH и RUNPATH всех ELF файлов в директории:
Здесь будет произведён поиск и отображение информации о RPATH и RUNPATH для всех ELF файлов в указанной директории.
3. Поиск файлов с неподкачиваемыми секциями :
Неподкачиваемые секции относятся к сегментам данных, которые должны оставаться в оперативной памяти во время выполнения программы и не могут быть перемещены в область подкачки (swap). Это особенно важно для кода, который должен быть всегда доступен для быстрого выполнения, без задержек на подкачку из swap-области, например, для драйверов устройств или кода, работающего в режиме реального времени.
Команда
scanelf предоставляет широкие возможности для извлечения информации из файлов ELF.Примеры использования scanelf:
1. Поиск всех ELF файлов, использующих определённую библиотеку:
scanelf -B -n libspecific.soЭта команда выведет список всех файлов, динамически связанных с
libspecific.so.2. Анализ RPATH и RUNPATH всех ELF файлов в директории:
scanelf -R -l /path/to/directoryЗдесь будет произведён поиск и отображение информации о RPATH и RUNPATH для всех ELF файлов в указанной директории.
3. Поиск файлов с неподкачиваемыми секциями :
scanelf -M /path/to/directoryНеподкачиваемые секции относятся к сегментам данных, которые должны оставаться в оперативной памяти во время выполнения программы и не могут быть перемещены в область подкачки (swap). Это особенно важно для кода, который должен быть всегда доступен для быстрого выполнения, без задержек на подкачку из swap-области, например, для драйверов устройств или кода, работающего в режиме реального времени.
Сортировка файлов в каталоге по размеру
Для поиска самых больших файл в каталоге можно воспользоваться комбинацией команд
Выводит файлы в текущем каталоге, сортируя их по размеру в обратном числовом порядке.
Может быть очень полезно, когда нам нужно почистить место на компьютере.
Для поиска самых больших файл в каталоге можно воспользоваться комбинацией команд
ls и sort:ls -l | sort -k5,5nrВыводит файлы в текущем каталоге, сортируя их по размеру в обратном числовом порядке.
Может быть очень полезно, когда нам нужно почистить место на компьютере.
Вывести только подкаталоги в каталоге
Чтобы найти все подкаталоги можно воспользоваться одной из самых популярных команд
Чтобы найти все подкаталоги можно воспользоваться одной из самых популярных команд
ls:ls -d */-d: параметр указывает ls отображать сами каталоги, а не их содержимое.*/: шаблон, гарантирующий, что в списке будут указаны только каталоги.