Много лет назад на одном популярном англоязычном форуме, ныне покойном, предложили гениально простой способ нагреть проц и посчитать его скорость в попугаях.
Подгружаем в
Мой результат вычисления на
выдал:
time echo "scale=5000; 4*a(1)" | bc -lbc - Си-подобный интерактивный интерпретатор. Подгружаем в
bc математическую библиотеку опцией -l и просим выдать число π с точностью 5000 знаков после запятой. Мой результат вычисления на
AMD EPYC 7B12 2.3GHzвыдал:
real 0m0.002suser 0m0.001ssys 0m0.001sСмотрим три средних значения загрузки в дополнение к тому, как долго работает ядро, запустив:
Получаем что-то вроде:
22:30:28 up 4 days, 13:07, 1 user, load average: 0,07, 0,02, 0,00
Три числа, выделенных жирным шрифтом, являются средними значениями загрузки за последние 1, 5 и 15 минут соответственно.
1 user - количество залогиненных пользователей.
По отдельности выводим время запуска системы:
Либо только время работы системы
uptimeПолучаем что-то вроде:
22:30:28 up 4 days, 13:07, 1 user, load average: 0,07, 0,02, 0,00
Три числа, выделенных жирным шрифтом, являются средними значениями загрузки за последние 1, 5 и 15 минут соответственно.
1 user - количество залогиненных пользователей.
По отдельности выводим время запуска системы:
uptime -sЛибо только время работы системы
uptime -pДля быстрого копирования файлов с вашего компьютера на другой в вашей сети - существует удобный способ с помощью модуля Python.
Просто перейдите в каталог с необходимыми файлами и запустите команду:
Запускается базовый веб-сервер, который делает данный каталог доступным для любого браузера в сети. Обычно он работает с портом 8000 поэтому, если адрес компьютера, на котором вы запустили эту команду, равен
Если используете Python 3, то получите сообщение об ошибке: Нет модуля с именем SimpleHTTPServer.
В таком случае нужно использовать:
Просто перейдите в каталог с необходимыми файлами и запустите команду:
python -m SimpleHTTPServerЗапускается базовый веб-сервер, который делает данный каталог доступным для любого браузера в сети. Обычно он работает с портом 8000 поэтому, если адрес компьютера, на котором вы запустили эту команду, равен
10.1.2.4, наберите адрес http://10.1.2.4:8000 на компьютере назначения, и у вас появится возможность забрать необходимые файлы.Если используете Python 3, то получите сообщение об ошибке: Нет модуля с именем SimpleHTTPServer.
В таком случае нужно использовать:
python3 -m http.server 9000Как запускается GRUB?
Первый этап:
когда компьютер запускается, процессор извлекает инструкции из BIOS, инициализирует кэш и системную память. Далее процедура самотестирования проверит память, диски, и убедиться, что все работает правильно.
Второй этап:
BIOS находит загрузчик на жестком диске и запускает его. GRUB загружает файлы, необходимые для запуска ОС, и выводит загрузочное меню.
Если установлена только одна ОС, то дистрибутив Linux будет скрывает это меню. Чтобы оно все равно появлялось перед загрузкой (Зачем? Просто имей ввиду), то можно сделать следующее:
Отредактировать файл
(Если присутствуют строки:
далее:
Первый этап:
когда компьютер запускается, процессор извлекает инструкции из BIOS, инициализирует кэш и системную память. Далее процедура самотестирования проверит память, диски, и убедиться, что все работает правильно.
Второй этап:
BIOS находит загрузчик на жестком диске и запускает его. GRUB загружает файлы, необходимые для запуска ОС, и выводит загрузочное меню.
Если установлена только одна ОС, то дистрибутив Linux будет скрывает это меню. Чтобы оно все равно появлялось перед загрузкой (Зачем? Просто имей ввиду), то можно сделать следующее:
Отредактировать файл
/etc/default/grub таким образом:GRUB_TIMEOUT="10"GRUB_TIMEOUT_STYLE=menu(Если присутствуют строки:
GRUB_HIDDEN_TIMEOUT=0 GRUB_HIDDEN_ TIMEOUT_QUIET=true, то их нужно закомментировать)далее:
sudo update-grubКакой тип данных хранится в файле
/etc/shadow
/etc/shadow
Anonymous Quiz
21%
данные группы учетных записей и оболочки
8%
данные о членстве в группе
13%
зашифрованные групповые пароли
58%
зашифрованные пароли учетных записей
В Linux ядро обычно размещается в каталогах
Загрузчик системы отправляет этот файл в память и приводит его в действие при запуске системы.
После того как загрузчик запустит ядро и приведет его в действие, основной файл ядра больше не используется работающей системой.
Тем не менее, можно обнаружить множество модулей, которые ядро может по запросу загружать и выгружать во время нормального функционирования системы. Такие загружаемые модули ядра расположены в каталоге
/vmlinuz или /boot/vmlinuz. Загрузчик системы отправляет этот файл в память и приводит его в действие при запуске системы.
После того как загрузчик запустит ядро и приведет его в действие, основной файл ядра больше не используется работающей системой.
Тем не менее, можно обнаружить множество модулей, которые ядро может по запросу загружать и выгружать во время нормального функционирования системы. Такие загружаемые модули ядра расположены в каталоге
/lib/modules.Показатели нагрузки, отображаемые uptime, представляют собой средние значения за:
Anonymous Quiz
15%
1, 10 и 25 минут;
34%
10, 60 и 300 секунд.
10%
1, 5 и 24 часа;
40%
1, 5 и 15 минут;
Всем известно, что при удалении файлов, содержащих конфиденциальные данные (любые данные), с устройств хранения они фактически не удаляются.
При наличии достаточного количества времени и мотивации практически все может быть извлечено почти с любого цифрового носителя, за исключением, хорошо поврежденных физически.
Однако есть одна команда, которую можно использовать, чтобы плохим парням было намного сложнее получить доступ к вашим старым данным. Это
Следующая команда потратит некоторое время на запись миллионов и миллионов нулей в каждый закоулок раздела
Но можно поступить еще лучше. Используя файл
При наличии достаточного количества времени и мотивации практически все может быть извлечено почти с любого цифрового носителя, за исключением, хорошо поврежденных физически.
Однако есть одна команда, которую можно использовать, чтобы плохим парням было намного сложнее получить доступ к вашим старым данным. Это
dd. Следующая команда потратит некоторое время на запись миллионов и миллионов нулей в каждый закоулок раздела
/dev/sda1:dd if=/dev/zero of=/dev/sda1 Но можно поступить еще лучше. Используя файл
/dev/urandom в качестве источника, наполнив диск случайными символами: dd if=/dev/urandom of=/dev/sda1Уникальность файловой системы Linux в том, что для каждого устройства в Linux создается собственный файл в каталоге
Вот примеры некоторых файлов устройств:
•
•
•
•
•
•
•
Файлы устройств бывают двух типов: символьные, обмен информацией с которыми осуществляется посимвольно, и блочные, обмен информацией с которыми осуществляется блоками данных. Пример символьного устройства -
/dev. Загляните в каталог /dev - в нем вы найдете множество файлов для всех устройств вашей системы. Вот примеры некоторых файлов устройств:
•
/dev/sda - первый жесткий диск, как правило, подключенный к первому SAТА-контроллеру. •
/dev/sda1 - первый раздел на первом жестком диске. Нумерация разделов жестких дисков в Linux начинается с 1. •
/dev/mouse - файл устройства мыши. •
/dev/cpu - файл устройства процессора; •
/dev/cdrom - ваш СD/DVD-привод; •
/dev/random - файл устройства-генератора случайных чисел; •
/dev/tty1 - первая консоль (терминал). Файлы устройств бывают двух типов: символьные, обмен информацией с которыми осуществляется посимвольно, и блочные, обмен информацией с которыми осуществляется блоками данных. Пример символьного устройства -
/dev/ttySO- последовательный (СОМ) порт, пример блочного устройства - /dev/sda1 - раздел жесткого диска.В Linux есть специальные права доступа
В современных дистрибутивах вам придется изменять эти права доступа чрезвычайно редко (может быть даже вообще никогда), но нужно знать, как их изменить.
Например, если программу
Использование
SUID (Set User ID root) и SGID (Set Group ID root), позволяющие обычным пользователям запускать программы, которые требуют для своей работы прав root. В современных дистрибутивах вам придется изменять эти права доступа чрезвычайно редко (может быть даже вообще никогда), но нужно знать, как их изменить.
Например, если программу
/usr/sbin/program хотите разрешить запускать с правами root обычным пользователям, установите права доступа так: chmod u+s /usr/sbin/program Использование
SUID - плохое решение с точки зрения безопасности. Правильнее использовать команду sudo, если какому-то пользователю будут нужны права root.Для сценариев, требующих полномочий
root, сначала нужно проверить, какой пользователь запустил сценарий. UID пользователя root всегда равен 0. Проверка, является ли пользователь, запустивший сценарий, пользователем root, может выглядеть так:ROOT_UID=0 if [ "$UID" -eq "$ROOT_UID" ]then echo "Root" else echo "Обычный пользователь"fi exit 0В Linux кроме прав доступа есть еще и атрибуты файла, подобно атрибутам файла в других ОС.
Просмотреть установленные атрибуты можно командой:
Основные полезные атрибуты:
Пример установки атрибута:
Пример сброса атрибута:
Просмотреть установленные атрибуты можно командой:
chattr some_fileОсновные полезные атрибуты:
i Запрет на изменений, переименование и удаление файла. Обычно ставится для критических конфиг. файлов. Установить и сбросить может только root (либо процесс с CAP_LINUX_IMMUTABLE)u При удалении файла с установленным атрибутом u его содержимое хранится на жестком диске, что позволяет легко восстановить файл.c Файл будет сжиматься. Рекомендуется для больших несжатых данных, но крайне не желателен для файлов БД т.к. доступ будет медленнее. S Данные, записываемые в файл, сразу будут сброшены на диск. Аналогично выполнению команды sync сразу после каждой операции записи в файл.s Прямо противоположен атрибуту u. После удаления файла, принадлежащие ему блоки будут обнулены и восстановить их уже не получится.Пример установки атрибута:
chattr +i config_fileПример сброса атрибута:
chattr -i config_fileРазбить файл на части можно используя команду
Для примера создадим файл с цифрами от 1 до 1000 в столбик командой:
Разделим этот файл по 200 строк в каждом, командой:
Цифру можно задать свою. Исходный some_file останется, рядом создадутся 5 (потому что на 200 делили) файлов. Подумай, какие названия им даст ОС?
Команду можно также использовать для разделения файлов на части по размеру информации, например:
Первая команда разделит файл на части по 100 байтов каждая, вторая - на части по 100 Кбайт каждая, третья - по 100 Мбайт каждая.
splitДля примера создадим файл с цифрами от 1 до 1000 в столбик командой:
echo {1..1000} | tr ' ' '\n' > some_fileРазделим этот файл по 200 строк в каждом, командой:
split -200 some_fileЦифру можно задать свою. Исходный some_file останется, рядом создадутся 5 (потому что на 200 делили) файлов. Подумай, какие названия им даст ОС?
Команду можно также использовать для разделения файлов на части по размеру информации, например:
split -b100b some_file2split -b100k some_file2 split -b100m some_file2Первая команда разделит файл на части по 100 байтов каждая, вторая - на части по 100 Кбайт каждая, третья - по 100 Мбайт каждая.
В любом серьезном сценарии вы не обойдетесь без использования переменных.
Пример объявления переменной:
Вывести значение переменной:
В Linux часто используются переменные окружения. Это специальные переменные, содержащие служебные данные. Вот примеры некоторых часто используемых переменных окружения:
•
•
•
•
•
•
•
•
•
•
Пример объявления переменной:
ADDRESS=some_firma.ru Вывести значение переменной:
echo $ADDRESS В Linux часто используются переменные окружения. Это специальные переменные, содержащие служебные данные. Вот примеры некоторых часто используемых переменных окружения:
•
BASH - полный путь до исполняемого файла командной оболочки bash; •
BASH_VERSION - версия bash; •
НОМЕ - домашний каталог пользователя, который запустил сценарий; •
HOSTNAME- имя компьютера; •
RANDOM - случайное число в диапазоне от 0 до 32767; •
OSTYPE - тип операционной системы; •
PWD - текущий каталог; •
PS1 - строка приглашения; •
UID - ID пользователя, который запустил сценарий;•
USER - имя пользователя. Существует два типа IP-адресов: локальные и публичные.
Локальный IP присваивается системой, и его можно посмотреть с помощью команды:
Если же вы хотите узнать публичный IP вашего ПК, который провайдер присваивает вашему интерфейсу, то при подключённом интернете выполните в командной строке:
Команда обращается к серверу
Локальный IP присваивается системой, и его можно посмотреть с помощью команды:
hostname -IЕсли же вы хотите узнать публичный IP вашего ПК, который провайдер присваивает вашему интерфейсу, то при подключённом интернете выполните в командной строке:
curl ifconfig.coКоманда обращается к серверу
ifconfig.co, который возвращает обратно IP-шник одной строкой вместо полноценной веб-страницы.В современных дистрибутивах Linux сменные носители вроде USВ или оптических дисков монтируются автоматически:
• Deblan, Ubuntu, Fedora, CentOS - монтирование производится к каталогу:
В качестве метки может использоваться или метка, установленная при форматировании, или серийный номер устройства, если метка не устанавливалась.
• openSUSE - монтирование будет производиться к каталогу:
За автоматическое монтирование отвечает демон
• Deblan, Ubuntu, Fedora, CentOS - монтирование производится к каталогу:
/mеdiа/<метка_устройства>В качестве метки может использоваться или метка, установленная при форматировании, или серийный номер устройства, если метка не устанавливалась.
• openSUSE - монтирование будет производиться к каталогу:
/var/run/media/<имя_пользователя>/<метка>За автоматическое монтирование отвечает демон
automount, который можно отключить, если автоматическое монтирование вам не нужно.Обратите внимание на значение
Немного освободить память можно, очистив кэш. Для этого введите команду:
Сначала мы командой
Однако помните, что этот трюк может негативно отразиться на стабильности и скорости системы. Не всегда очистка кэша таким вот варварским образом - это хорошо.
buff/cache в выводе команды free. Оно показывает сколько памяти задействовано под буфер ввода/вывода и кэш.Немного освободить память можно, очистив кэш. Для этого введите команду:
sync; echo 3 > /proc/sys/vm/drop_caches Сначала мы командой
sync сбрасываем содержимое буферов на диск, а затем уничтожаем кэш. Если просмотреть затем информацию об использовании памяти, то вы увидите, что размер кэша был уменьшен в разы. Однако помните, что этот трюк может негативно отразиться на стабильности и скорости системы. Не всегда очистка кэша таким вот варварским образом - это хорошо.
Такие файловые системы, как
Осуществляется это следующим образом: перед тем как выполнить операцию, журналируемая ФС записывает ее в особый файл - журнал, а после выполнения операции удаляет запись из журнала.
Представим, что после занесения операции в журнал произошел сбой (например, отключилось электропитание). Позже, когда сбой будет устранен, ФС по журналу выполнит все действия, которые в него занесены.
Конечно, и это не всегда позволяет уберечься от последствий сбоя - стопроцентной гарантии никто не дает, но все же такая схема работы лучше, чем вообще ничего.
ехtЗ, ext4, XFS, ReiserFS, JFS и др. - ведут журналы своей работы, что позволяет восстановить данные в случае сбоя. Осуществляется это следующим образом: перед тем как выполнить операцию, журналируемая ФС записывает ее в особый файл - журнал, а после выполнения операции удаляет запись из журнала.
Представим, что после занесения операции в журнал произошел сбой (например, отключилось электропитание). Позже, когда сбой будет устранен, ФС по журналу выполнит все действия, которые в него занесены.
Конечно, и это не всегда позволяет уберечься от последствий сбоя - стопроцентной гарантии никто не дает, но все же такая схема работы лучше, чем вообще ничего.
Поиск текста в бинарных файлах.
Иногда возникает необходимость прочесть текст в кодировке ASCII, находящийся внутри бинарного файла, что позволяет узнавать много информации об исполняемом файле.
В этих случаях для извлечения любого доступного для чтения текста ASCII используйте команду
Несколько примеров ее использования:
Определяет наличие libc в ls
Отображает все тексты ASCII в ls
Отображает все тексты ASCII в ls
Иногда возникает необходимость прочесть текст в кодировке ASCII, находящийся внутри бинарного файла, что позволяет узнавать много информации об исполняемом файле.
В этих случаях для извлечения любого доступного для чтения текста ASCII используйте команду
strings. Эта команда является частью программного пакета binutils и устанавливается в Ubuntu по умолчанию. Несколько примеров ее использования:
strings /bin/ls | grep -i libcОпределяет наличие libc в ls
cat /bin/ls | stringsОтображает все тексты ASCII в ls
strings /bin/lsОтображает все тексты ASCII в ls
Изменение текущего процесса прежде всего означает поиск соответствующего процесса и лишь затем уже изменение его приоритета или подачу процессу сигнала об изменении режима работы.
Если вы ищете какой-то определенный процесс, то наиболее простым вариантом будет отобразить расширенный список процессов с помощью команд
Команда
Команда
А команды
Если вы ищете какой-то определенный процесс, то наиболее простым вариантом будет отобразить расширенный список процессов с помощью команд
ps или top. Команда
pgrep позволяет искать необходимые процессы через активные процессы.Команда
reniсе - изменять приоритеты текущих процессов [ пост про nice ]. А команды
kill, pkill и killall - отправлять сигналы текущим процессам (включая сигналы завершения данных процессов).Параметры командной строки - как данные для программы.
Содержатся эти параметры в переменных с номерами. Например:
Также существуют две вспомогательные переменные:
Называем, передаем и запускаем:
Получим:
Содержатся эти параметры в переменных с номерами. Например:
$0 — имя скрипта, $1 — первый параметр, $2 — второй параметр и т. д. Также существуют две вспомогательные переменные:
$# содержит количество переданных аргументов; $@ содержит все аргументы, переданные скрипту, разделенные пробелами.Называем, передаем и запускаем:
./q.sh 1 2 5 41Получим:
Имя скрипта: ./q.shКоличество переданных аргументов: 4arg='1'arg='2'arg='5'arg='41'