Команда uname a что показывает

Основы Linux от основателя Gentoo. Часть 2 (5/5): Модули ядра

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

Навигация по основам Linux от основателя Gentoo:
Часть I
Часть II
Часть III: 1, 2, 3, 4

Модули ядра

Знакомьтесь, «uname»

Подробнее о uname

Теперь, давайте посмотрим, какую же информацию о системе может дать uname

Релиз ядра

Теперь посмотрите в директорию /lib/modules и — опа! — Я уверен, что вы обнаружили каталог с точно таким же именем! OK, никакой магии, теперь самое время поговорить о значении каталогов в /lib/modules, а также объяснить, что такое модули ядра.

Ядро Linux это сердце того, что обычно называют «Linux» — это кусок кода, который напрямую взаимодействует с вашим железом и абстрагирует от него обычные программы. Благодаря ядру, вашему текстовому редактору не нужно беспокоиться на какой диск, SCSI или IDE, а может даже в RAM, он производит запись. Редактор просто записывает в файловую систему, а ядро заботится обо всем остальном.

Введение в модули ядра

Итак, что такое модули ядра? Они представляют собой часть ядра, которая сохраняется на диске в специальном формате. По вашей команде, они подгружаются в работающее ядро и добавляют в него новую функциональность.

Поскольку модули ядра загружаются по требованию, вы можете иметь ядро поддерживающее дополнительную функциональность, которая в обычном состоянии будет выключена и недоступна.
Но «раз в сто лет», эти модули окажутся очень полезными и смогут быть загружены — часто автоматически — для поддержки диковинной файловой системы или устройства, которое вы редко используете.

Модули ядра вкратце

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

lsmod

Для просмотра загруженных модулей на вашей системе используйте команду lsmod:

Список модулей

Как видите, на моей системе загружено достаточно немного модулей. vmnet и vmmon модули, обеспечиваю необходимую функциональность для VMWare Workstation, которая позволяет мне запускать виртуальные машины в окне рабочего стола. Модуль nvidia выпущен NVIDIA corporation и позволяет использовать 3D-ускорение в Linux.

Дальше у меня есть набор модулей, которые используются для поддержки USB устройств ввода — mousedev, hid, usbmouse, input, usb-ohci, ehci-hcd и usbcore. Имеет смысл сконфигурировать ваше ядро для поддержки USB модулей. Почему? Потому что USB девайсы это «plug and play» (подключай и работай) девайсы и если у вас есть поддержка USB в модулях, вы можете спокойно пойти и купить новое USB устройство, подключить его, и ваша система автоматически загрузит соответствующие модули для этого устройства. Это удобный способ сделать что-то.

Сторонние модули

Завершают этот список модули: emu10k1, ac97_codec и sound, которые вместе обеспечиваю поддержку моей звуковой карты Audigy.

Следует отметить, некоторые из моих модулей доступны прямо в исходниках ядра. Например, все USB-модули были скомпилированы из стандартных исходных текстов ядра Linux. Однако, nvidia, emu10k1 и VMWare-модули были получены из других источников. Это подчеркивает другую важную особенность модулей ядра — возможность сторонних производителей добавлять необходимую функциональность в ядро и включать ее прямо в запущенное ядро. Без перезагрузки.

depmod и компания

В моей папке /lib/modules/2.4.20-gaming-r1/, есть несколько
файлов которые начинаются со строки «modules.»:

$ ls /lib/modules/2.4.20-gaming-r1/modules.*
/lib/modules/2.4.20-gaming-r1/modules.dep
/lib/modules/2.4.20-gaming-r1/modules.generic_string
/lib/modules/2.4.20-gaming-r1/modules.ieee1394map
/lib/modules/2.4.20-gaming-r1/modules.isapnpmap
/lib/modules/2.4.20-gaming-r1/modules.parportmap
/lib/modules/2.4.20-gaming-r1/modules.pcimap
/lib/modules/2.4.20-gaming-r1/modules.pnpbiosmap
/lib/modules/2.4.20-gaming-r1/modules.usbmap

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

Как получить модули

Некоторые модули ядра разработаны для работы со специальными устройствами, как например emu10k1 — модуль для поддержки моей звуковой карты. Для этого типа модулей, приведенные выше файлы включают также информацию о PCI IDs и прочие идентификационные метки оборудования, которое они поддерживают. Эта информация может быть использована различными скриптами, например «hotplug» (который мы рассмотрим в следующих руководствах) для автоматического определения оборудования и загрузки соответствующих модулей.

Использование depmod

Расположение модулей ядра

Итак, как выглядят модули ядра? Для ядра 2.4, все файлы модулей обычно находятся в /lib/modules и имеют имя оканчивающееся на «.o» (для 2.6 «.ko» — прим. ред.). Чтобы увидеть все модули из /lib/modules, введите следующее:

insmod vs. modprobe

Итак, как же подгрузить модуль в работающее ядро? Один из вариантов, использовать команду
insmod и указать ей полный путь к модулю, который вы хотите загрузить:

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

rmmod и modprobe в действии

Давайте выгрузим наш модуль fat.o и загрузим его обратно используя modprobe:

Как видите, работа команды rmmod очень похожа на работу modprobe, но имеет противоположный эффект — она выгружает указанный модуль.

Ваши помощники modinfo и modules.conf

Можете воспользоваться командой modinfo, чтобы узнать пару интересных вещей о своих любимых модулях:

Также обратите внимание на файл /etc/modules.conf. Он содержит настройки для modprobe и позволяет изменять поведение modprobe. Например, указывать какие модули загруть до/после загрузки остальных, запускать скрипты до и после загрузки модуля, и многое другое.

Структура modules.conf

Синтаксис и функциональность modules.conf достаточно сложны, и мы не будем в них сейчас углубляться (наберите man modules.conf чтобы узнать все подробности), но есть несколько вещей, которые вы должны знать об этом файле.

Читайте также:  Scam в телеграмме что

Во-первых, многие дистрибутивы генерируют этот файл автоматически из набора файлов в других директориях, таких как /etc/modules.d/. Например, в Gentoo Linux есть такая папка, и запуск команды update-modules прочитает все файлы из /etc/modules.d/ и объединит их в новый /etc/modules.conf. Поэтому, сделав свои изменения в файлах из /etc/modules.d/ запустите update-modules, если вы используете Gentoo. В Debian, процедура очень похожа, за исключением того, что папка называется /etc/modutils/.

Для ядер версии 2.6 аналогичные по функциональности файл и папка из каталога etc называются modprobe.conf и modprobe.d соответственно. Синтаксис там упрощен, смотрите man modprobe.conf
— Примечание редактора.

Итоги и ресурсы

Итоги

Мои поздравления; вы дошли до конца этого учебника по основам администрирования Linux! Надеюсь он помог вам немного систематизировать ваши знания о Linux. Пожалуйста присоединяйтесь к нам в следующем руководстве раскрывающем более продвинутые аспекты администрирования, такие как права доступа, управление пользователями, файловую систему, монтирование и многое другое. В следующем руководстве мы будем опираться на фундамент, заложенный здесь. И помните, продолжая изучать эту серию руководств, вы уже совсем скоро будете готовы сдаче экзаменов на получение сертификата LPIC Level 1 от Linux Professional Institute.

Ресурсы

Говоря о сертификации LPIC, если вы действительно в ней заинтересованы, то я настоятельно рекомендую вам изучить следующие источники, которые были тщательно выбраны для расширения знаний полученных в этом руководстве.

В сети есть множество хороших руководств по регулярным выражениям. Вот парочка:

Можете прочитать стандарт иерархии файловой системы (Filesystem Hierarchy Standard) на http://www.pathname.com/fhs/.

В серии Bash в примерах (будет перевод), я покажу вам как использовать инструкции bash для написания ваших собственных скриптов. Это серия (особенно первая и вторая части) будет хорошей подготовкой к экзамену LPIC Level 1:

Вы можете узнать больше о sed в серии руководств Sed в примерах (будет переведено). Если вы планируете сдавать LPI экзамен, убедитесь что прочитали первые две части этой серии.

Чтобы узнать больше об awk, обратитесь к серии Awk в примерах (перевод будет).

Спасибо Dmitry Minsky (Dmitry.Minsky@gmail.com) за перевод.

Об авторах

Daniel Robbins

Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.

Chris Houser

Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.

Aron Griffis

Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее — платформа HP ePrint. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».

Источник

Отображение системной информации в Linux с помощью команды uname

Команда uname в Linux позволяет вам просматривать системную информацию о вашей среде Linux. Вот как эффективно использовать uname.

Начало работы с uname

Команда uname сама по себе не особенно полезна.

Попробуйте сами. Откройте окно терминала и введите следующую команду:

На другом конце шкалы вы можете использовать следующую команду:

На этот раз вы получите целую кучу информации следующим образом:

На самом деле вы получаете вывод, который выглядит примерно так:

Linux your-computer-name 3.19.0-32-generic # 37-14.04.1-Ubuntu SMP Четверг 22 октября 09:41:40 UTC 2015 x86_64 X86_64 x86_64 GNU/Linux

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

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

Если вы предпочитаете использовать более удобный для чтения переключатель, вы также можете использовать следующие обозначения:

Вывод такой же, но ваши пальцы теперь будут немного короче.

Кстати, если вам интересно, что такое ядро ​​- это наименьшее количество сменного программного обеспечения, которое может взаимодействовать с вашим компьютером – Википедия объясняет это более подробно:

ядро ​​Linux является Unix-подобным компьютером ядро ​​операционной системы . Он используется во всем мире: операционная система Linux основана на нем и развернута на обеих традиционных компьютерных системах, таких как персональные компьютеры и серверы , обычно в форме дистрибутивов Linux , [9] и на различных встроенных устройствах , таких как маршрутизаторы и Устройства NAS . Операционная система Android для планшетных компьютеров , смартфоны И smartwatches также основаны на ядре Linux.

Следующая команда показывает имя узла вашего компьютера:

Вы также можете добиться того же эффекта, используя немного более удобную для читателя команду:

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

Следующая команда показывает вам только релиз ядра:

Вывод приведенной выше команды будет выглядеть примерно так, как в 3.19.0-32-generic.

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

Например, когда была изобретена 1-я версия Linux, я сомневаюсь, что требовался драйвер для 3d-принтеров или сенсорных дисплеев.

Вы можете достичь того же эффекта, выполнив следующую команду:

Вы можете найти версию используемого ядра Linux, введя следующую команду:

Выходные данные команды version будут примерно такими, как в # 37

14.04.1.1-Ubuntu SMP Thu 22 октября 09:41:40 UTC 2015.

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

Например, Ubuntu может скомпилировать ядро ​​3.19.0-32-generic 50 раз. В первый раз, когда они его скомпилируют, в версии будет # 1 и дата ее компиляции.Точно так же в 29-й версии будет указано # 29, а также дата его компиляции. Релиз Linux такой же, но версия другая.

Вы можете получить ту же информацию, набрав следующую команду:

Следующая команда печатает аппаратное имя машины:

Результат будет выглядеть примерно как x86_64.

Вы можете получить ту же информацию, выполнив следующую команду:

Следующая команда показывает тип процессора:

Результат, скорее всего, будет таким же, как имя оборудования компьютера, например, x86_64.

Эта команда относится к типу процессора.

Вы можете достичь того же результата, набрав следующую команду:

Следующая команда показывает аппаратную платформу.

Эта команда покажет аппаратную платформу или, если вам нравится тип операционной системы. Например, у вас может быть платформа и компьютер x86_64, но только 32-битная операционная система.

Вы можете достичь того же результата, набрав следующую команду:

Следующая команда показывает операционную систему:

Если вы используете стандартную операционную систему Linux для настольных компьютеров, такую ​​как Ubuntu, Debian и т. Д., Вы не удивитесь, узнав, что вывод GNU/Linux. На телефоне или планшете операционная система будет Android.

Источник

26 команд в Linux, которые должен знать каждый сисадмин

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

Работа системного администратора включает в себя выполнение таких задач, как: установка и запуск программного обеспечения, контроль доступа пользователей к системе, обеспечение доступности необходимых ресурсов, резервное копирование важных данных (а также восстановление их из резерва) и пр.

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

Команда uname

Разберем вышеприведенный вывод детально:

название ядра: Linux
имя хоста: debian
номер релиза ядра: 5.10.0-5-amd64
номер версии ядра: #1 SMP Debian 5.10.24-1 (2021-03-19)
архитектура: x86_64
операционная система: GNU/Linux

Команда who

Команда who выводит список вошедших в систему пользователей.

$ who
diego tty7 2021-04-03 09:21 (:0)

Команда w

Команда w отображает пользователей и их процессы. Вначале идет заголовок, содержащий текущее время, время безотказной работы системы (uptime), количество пользователей, вошедших в систему, и средние значения загрузки системы.

Далее мы видим имена пользователей, используемый терминал и удаленный IP-адрес, с которого они вошли в систему, время их входа, время простоя, JCPU (время, использованное всеми процессами, закрепленными за терминалом), PCPU (время, использованное процессом из поля WHAT ) и программу, которую они запустили.

Команда ls

Команда tar

Команда tar позволяет заархивировать несколько файлов в один архив.

В качестве примера, давайте создадим каталог ravesli_docs, и поместим в него три файла: a.txt, b.txt и c.txt:

$ mkdir ravesli_docs; touch ravesli_docs/

Просмотрев с помощью команды ls содержимое текущего каталога можно заметить каталог ravesli_docs и вновь созданный нами архив ravesli.tar:

$ ls
ravesli.tar ravesli_docs

Команда rsync

Команда rsync позволяет синхронизировать файлы и каталоги между двумя местоположениями. Данная команда может применяться как для локального, так и для удаленного копирования. Причина её высокой скорости работы заключается в том, что она пересылает только различающиеся между исходными и конечными файлами данные. Команда rsync широко используется для резервного копирования данных, а также в качестве модернизированной команды копирования.

Ниже показан пример копирования при помощи команды rsync всех файлов из каталога ravesli_docs в каталог backups:

Команда find

Команда find применяется для поиска файлов на основе их имени, разрешений, идентификатора пользователя, идентификатора группы, размера, типа файла, а также других критериев. Это одна из наиболее часто используемых команд в Linux.

Команда locate

$ locate apache2.conf
/etc/apache2/apache2.conf
/usr/share/doc/apache2/examples/apache2/apache2.conf
/var/lib/dpkg/info/apache2.conffiles

Команда systemctl

Команда systemctl используется для управления системными службами.

Например, запуск службы веб-сервера apache2 выполняется следующим образом:

$ sudo systemctl start apache2.service

Остановка службы выполняется аналогичным образом, только start меняется на stop :

$ sudo systemctl stop apache2

Команда journalctl

Команда journalctl используется для просмотра логов, собранных systemd. systemd «собирает» логи в бинарном формате. Чтобы их посмотреть, используется команда sudo journalctl :

Команда kill

Команда kill используется для принудительного завершения процесса.

Сигнал SIGTERM позволяет процессу самостоятельно завершиться ДО его принудительного завершения и поэтому относится к т.н. категории «soft kill» (мягкое завершение).

Сигнал SIGKILL приводит к немедленному завершению процесса.

Ниже представлен список всех процессов веб-сервера apache2:

Еще раз посмотрим на список процессов apache2. Как видите, теперь осталось только три процесса:

Команда killall

$ sudo killall apache2

Команда curl

Команда curl позволяет взаимодействовать с внешними ресурсами посредством URL-адресов. Часто данная команда применяется для определения того, может ли ваше приложение связаться с другой службой, например, с базой данных, или для проверки работоспособности вашей службы.

Представьте, что у нас есть база данных MongoDB, которая не может связаться с внешним приложением, выдавая при этом сообщение об ошибке HTTP 500:

Так в чем же может быть проблема? Для начала необходимо проверить, можем ли мы с хоста, на котором установлено наше приложение, достучаться до других ресурсов, кроме базы данных:

Вроде всё в порядке. Теперь попробуем связаться с базой данных. Т.к. для подключения к базе данных наше приложение использует имя хоста базы данных, то сначала попробуем выполнить следующую команду:

$ curl database:27017
curl: (6) Couldn’t resolve host ‘database’

Вывод команды означает, что заданный URL-адрес недоступен или хост не имеет соответствующим образом настроенного DNS-сервера, который можно использовать для сопоставления имени и IP-адреса.

Команда tail

Команда tail отображает последнюю часть (хвост) файла. Как правило, при решении различных проблем нет необходимости просматривать весь лог-файл в поиске ошибок. Вместо этого можно проверить, что сказано в самом последнем его сообщении. Например, вы можете применить команду tail и узнать, что происходит в лог-файле во время выполнения запроса к своему HTTP-серверу Apache:

Команда cat

Команда cat используется для вывода в терминал содержимого файлов. Вы можете использовать её, например, для просмотра файла с фамилиями ваших коллег по работе:

$ cat работа_коллеги.txt

Иванов А. А.
Петров Б. Б.
Сидоров С. С.

Команда grep

Команда grep производит поиск в текстовых файлах по заданному шаблону и отображает все строки, в которых заданный шаблон присутствует. Очень часто команда grep применяется в качестве фильтра поступающей от другой команды информации (например, для поиска внутри лог-файла определенных процессов).

$ cat tomcat.log | grep org.apache.catalina.startup.Catalina.start

01-Jul-2017 18:03:47.542 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 681 ms

Команда top

Команда top отображает и обновляет отсортированную информацию о текущем процессе (или процессах). Используйте её, чтобы определить, какие процессы в данный момент запущены и сколько памяти и ресурсов процессора они потребляют. Обычно бывает так, что вы запускаете приложение, и оно через минуту «умирает». Проверив соответствующий лог-файл, вы замечаете запись, указывающую на ошибку памяти:

$ tail myapp.log
Traceback (most recent call last):
MemoryError

Действительно ли вашему приложению не хватает памяти? Чтобы подтвердить эту догадку, применяем команду top и смотрим, какое количество ресурсов процессора и памяти потребляется приложением. В результате этого замечаем, что основную нагрузку на процессор и память создает процесс python3.

Оказывается, это действительно ваше приложение (memeater.py). Когда у него закончится память, система убьет процесс, выдав ошибку «out-of-memory» (OOM).

Команда netstat

Команда netstat отображает информацию о состоянии сети. Она показывает используемые сетевые порты и входящие соединения к ним. Однако стоит заметить, что команда netstat не входит в базовую поставку Linux; утилита устанавливается вместе с пакетом net-tools.

Предположим, вы проводите локальные эксперименты со своей программой, принимающей входящие подключения от других программ. Может случиться так, что вы получите сообщение об ошибке типа «Необходимый вам порт (или адрес) уже занят». Применив команду netstat с параметрами протокола, процесса и порта, мы увидим, что HTTP-сервер Apache уже использует 80 порт на нижеприведенном хосте:

Команда ip

Команда ip используется для настройки и отображения сетевых интерфейсов. Также данная команда используется для отображения и изменения IP-адресов, маршрутов и соседних объектов.

Например, отобразим информацию обо всех сетевых интерфейсах:

$ ip a
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0:
mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:0d:3a:9b:88:d6 brd ff:ff:ff:ff:ff:ff
inet 10.0.0.4/24 brd 10.0.0.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20d:3aff:fe9b:88d6/64 scope link
valid_lft forever preferred_lft forever

Команда lsof

Ниже вы можете видеть, что процесс apache2 прослушивает порт 80. Вы также можете использовать команду lsof для запроса информации по идентификатору процесса, чтобы узнать, по какому пути расположен соответствующий ему двоичный файл:

Имя файла в списке открытых файлов помогает точно определить происхождение процесса, в частности, мы теперь знаем, что это веб-сервер Apache.

Команда df

Команда du

В этом примере видно, что самым большим каталогом в каталоге /var/log является /var/log/apt. Применение команды du в сочетании с командой df поможет вам быстро определить, что и в каких объемах использует дисковое пространство на вашем компьютере.

Команда id

Команда id используется для получения информации по текущему пользователю. В следующем примере, я попытался установить анализатор сетевого трафика Wireshark, на что система отреагировала сообщением, что я не могу выполнить данную команду, т.к. не имею прав суперпользователя (root). После этого, чтобы проверить своего пользователя и группу, я выполнил команду id и обратил внимание, что работал под учетной записью обычного пользователя diego в группе diego:

Команда chmod

Команда chmod используется для управления разрешениями на заданный файл/каталог.

Например, при первом запуске бинарного файла приложения (или скрипта) на вашем компьютере, может появиться сообщение об ошибке типа «Отказано в доступе». Выполнив при помощи уже знакомой нам команды ls проверку установленных разрешений, мы наблюдаем следующую картину:

После этого, при повторной попытке выполнить скрипт ravesli.sh, вы больше не получите ранее описанного сообщения об ошибке.

Команда sestatus

Проверка того, включен ли сам модуль SELinux, производится с помощью команды sestatus:

$ sestatus
SELinux status: enabled
SELinuxfs mount: /sys/fs/selinux
SELinux root directory: /etc/selinux
Loaded policy name: targeted
Current mode: enforcing
Mode from config file: enforcing
Policy MLS status: enabled
Policy deny_unknown status: allowed
Max kernel policy version: 28

Вывод указывает на то, что на хосте модуль SELinux включен.

Команда history

Поделиться в социальных сетях:

Источник

Развивающий портал