Что такое код linux


Содержание

Исходные коды Linux

06.03.2009, 11:14

Исходные коды rpm, dpkg, apt-get, Synaptic
Доброго времени суток! Мне нужна помощь в поисках исходных кодов rpm, dpkg, apt-get, Synaptic? И.

Исходные коды загрузчика GRUB
Доброго времени суток! Мне нужна помощь в поисках исходного кода загрузчика GRUB первой и второй.

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

Исходные коды PHP и MySQL
Слышал, что СУРБД MySQL написана на Си, и PHP, вроде, тоже. Также знаю, что эти программные.

Исходные коды системных методов
Приветствую. Кто может подсказать, где и как найти коды системных методов, например ConsoleWrite.

Bash получить код завершения команды в Linux / Unix

Я новый пользователь системы Linux. Как мне получить код завершения команды?

Как получить код вывода или статус команды оболочки Linux или Unix и сохранить его в переменной оболочки?

Введение. Каждая команда оболочки Linux или Unix возвращает состояние, когда она завершается нормально или ненормально.

Например, если скрипт backup.sh не выполнен, и он возвращает код, который сообщает скрипту оболочки отправить электронное письмо админу.

Что такое код вывода в оболочке bash?

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

Статус вывода — это целое число.

0 состояние выхода означает, что команда была успешной без каких-либо ошибок.

Ненулевое (1-255 значений) состояние выхода означает, что команда была неудачной.

Как узнать код вывода команды

Вам нужно использовать определенную переменную оболочки с именем $? чтобы получить статус вывода из ранее выполненной команды.

Выведем $? переменной используя команду echo или команду printf:

Из приведенных выше выводов ясно, что код вывода 0 означает, что команда date была успешной.

Кроме того, код вывода — 127 (не ноль), так как команда nonexistant не была успешной.

Bash как получить код завершения команды — Как использовать коды вывода в скриптах оболочки

Итак, как вы сохранить статус вывода команды в переменной оболочки?

Просто назначьте $? в переменную оболочки. Синтаксис:

Как мне установить код вывода для моих собственных скриптов оболочки?

Команда exit вызывает обычное завершение скриптов оболочки.

Вывод из оболочки со статусом N. Синтаксис:

Пример скрипта оболочки для получения кода завершения команды

Заключение

На этой странице показано, как использовать коды вывода в системах на основе Linux или Unix и как получить статус вывода / код команды.

Как начать изменять исходный код Linux для создания пользовательской ОС?

Я занимаюсь бакалаврской работой в старших классах CS, имею знания среднего уровня на языках C, C ++ и Java, а также изучил некоторые концепции операционной системы (как и в моей учебной программе). Я слышал, что мы можем настроить Linux (скажем, Ubuntu) по своему желанию, изменив исходный код и можем создать целую новую ОС. Я загрузил исходный код ядра linux с веб-сайта www.kernel.org. Но, видя это, я ничего не могу понять, есть так много каталогов, файлов в файлах (как я думаю, будет одна большая программа). Я хочу сделать это как проект колледжа, и я также хочу внести свой вклад в Linux, внеся необходимые изменения в него. Но, задав этот вопрос на каком-то сайте, они сказали, что исходный код Linux очень велик. Вы можете попробовать minix. Теперь я очень смущен.

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

4 ответа

Добро пожаловать на сайт unix.stackexchange.com!

На ваш вопрос нет простого ответа, а far лучшие люди, чем я, написали целые книги по теме ядра Linux и операционных систем в целом.

О сфере действия проекта: написать операционную систему — непростая задача! Даже целенаправленная минимальная ОС, такая как Minix, довольно сложная вещь! Чтобы дать вам представление о Linux, подумайте о программах C, которые вы написали до сих пор. Средняя университетская курсовая работа, как правило, составляет несколько тысяч строк C больше всего. Я думаю, что мой последний проект года составлял около 30-35 000 строк C ++. Ядро Linux составляет примерно 13 000 000 строк кода C.

Почему все это в отдельных файлах? Разнообразные проекты хранятся в отдельных файлах по логистическим и практическим причинам. Просто подумайте о загрузке 13 000 000 строк в редактор! Прежде чем решать огромный проект, такой как Linux, вы должны определенно оттачивать свои навыки C до такой степени, что сам вопрос «почему несколько файлов» отвечает. Вы также должны иметь возможность читать код C , а не просто писать. (сложнее, чем кажется на первый взгляд)

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

После получения C fu убедитесь, что вы понимаете операционные системы. Это поможет вам понять код. Не все Linux очень важно. Само ядро ​​довольно мало! Какой вздутие:

  • Тысячи драйверов устройств для различных устройств.
  • Уровни абстракции для различных классов устройств для упрощения API и записи драйверов. Например, у нас есть VFS для файловых систем, уровень событий для устройств ввода и т. Д.
  • Ужасное количество условно скомпилированного кода и файлов, обслуживающих различные архитектуры Linux (не каждый Linux-компьютер — это ПК Intel, а некоторые невероятно отличаются от того, что можно ожидать). Ядро должно иметь дело с этими различиями, и это означает больше кода.

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

Причина, по которой люди предложили Minix для вас, проста: это полная операционная система, но она не обременена потребностями такой сложной системы, как Linux. Код небольшой, но при этом обеспечивает полную функциональность. В конце концов, первые версии Linux были вдохновлены Minix.

Конечно, у Minix меньше аппаратной поддержки. И что? Это благо! Современные компьютеры виртуализируют очень хорошо. Используйте это в своих интересах: виртуальная машина для запуска Minix настолько легка, что сделает развитие безделью.

Если ваш проект заключается в создании операционной системы, вы можете сделать хуже, чем начать с изучения Minix. Вы также можете купить и прочитать книгу Minix, которая была написана для сопровождения: Современные операционные системы Андрея Таненбаума .

Вы также должны установить свои цели и определить свои термины точно . Если ваше собственное определение ОС — это Microsoft (ОС с графическим интерфейсом и полным программным обеспечением), вы можете оказаться в очень длинном проекте! Сотни тысяч людей работали с 1960-х годов, чтобы привести нас туда, где мы сейчас находимся.

Наконец, вспомните боевой клич компьютерного учёного: « никогда не изобретать колесо! » (мы, конечно же, делаем исключения, когда учимся, а для удовольствия :))

Linux и открытый код победили. Примите это

Марк Руссинович, технический директор платформы Microsoft Azure, пришел с миром в царство Linux и Open Source

В 2015 году компания Microsoft приняла Linux, компания Apple открыла код своего новейшего и популярнейшего языка программирования, а облачные сервисы просто не могли функционировать без Linux и открытого ПО. Так почему же людям трудно смириться с мыслью, что Linux и открытый код выиграли в битве на рынке программного обеспечения?

Я знаком с огромным количеством пользователей Linux, которые считают Microsoft «империей зла». Люди, это все в прошлом, забудьте об этом. Сегодня Microsoft уже не та, что была при Гейтсе или Балмере. Она перенесла платформу .NET Core на Linux, осуществляет поддержку Debian GNU/Linux на своем облачном сервисе Azure, а также проводит собственную сертификацию специалистов Linux. В 2020 году Microsoft предстанет перед вами в образе компании, предлагающей открытое ПО Hadoop для обработки больших данных под операционной системой Ubuntu и, по словам своего генерального директора, имеющего самые теплые отношения с Linux, Microsoft даже выпустила собственный специализированный дистрибутив Linux — Azure Cloud Switch.

Тем не менее я так и слышу возражения ярых поклонников Linux, будто Microsoft все еще необоснованно принуждает компании, выпускающие устройства на базе Android, платить за патенты, заложенные в ОС Linux. Да, это так. Благодаря этим 310 патентам на код внутри Linux компания Microsoft зарабатывает миллиарды на рынке Android. Одна только Samsung приносит Microsoft миллиард долларов в год, не получая взамен ничего, кроме обещания не подавать на нее в суд за нарушение патентного права.

Ужас, не правда ли? Но позвольте задать вам вопрос. Если бы вы зарабатывали миллиарды на патентах, вы бы их открыли? Пожертвовали бы их на всеобщее благо через Open Invention Network? Очень в этом сомневаюсь. К тому же мне слишком хорошо известно, что ни один руководитель публичной компании даже не подумает упускать миллиарды ради удовлетворения требований горстки программистов.

Со временем срок действия этих патентов истечет. Не думаю, что Microsoft захочет стать патентным троллем, когда это случится. У нее и так дела идут неплохо по мере того, как она осваивает технологии Linux и Open Source, а также методы разработки открытого кода.

Между тем еще есть сторонники Microsoft, которые представить себе не могут, чтобы Microsoft в самом деле отказалась от Windows и других проприетарных программ. И они правы — она не откажется. Вместо этого Microsoft заявила, что не станет выпускать Windows 11, а будет обновлять настольные версии Windows до тех пор, пока большинство пользователей не перейдет на Windows в облаке, где их копии операционной системы будут работать внутри Open Source-контейнеров под управлением ОС Ubuntu.

Даже Apple, которая сегодня является гораздо большим приверженцем проприетарного ПО, нежели Microsoft, двинулась в том же направлении. В 2015 году она объявила об открытии кода своего новейшего языка программирования Swift. Кстати, Apple не просто открыла код — она портировала Swift на платформу Linux.

Сейчас, правда, Apple не пойдет так же далеко, как Microsoft, потому что она не является в полном смысле софтверной компанией. Это вертикально интегрированная компания по производству аппаратного обеспечения. Apple не заинтересована в том, чтобы на ее устройствах работало какое-либо программное обеспечение, кроме ее собственного или ею контролируемого. До тех пор, пока людям нравятся устройства Apple и они готовы платить за них премиальную цену, Apple не станет серьезно увлекаться Open Source. Но со временем ее продукция утратит свой нынешний блеск, и тогда компании все же придется запрыгнуть на подножку вагона Open Source.

Что касается облаков, в направлении которых движется развитие информационных технологий, то многие облачные сервисы уже сейчас базируются на Linux и используют открытое серверное ПО. Как заявил прошлой осенью Марк Руссинович, технический директор Microsoft Azure, «четверть виртуальных машин [на Azure] работают под ОС Linux.»

Или возьмем, к примеру, Amazon Web Services (AWS) — крупнейшее публичное облако, превосходящее по своему масштабу все остальные публичные облака вместе взятые. Оно работает на кастомизированной версии кода Red Hat Enterprise Linux (RHEL).

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

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

Скажу проще. Разработчики открытого ПО, вы победили. Можете расслабиться. Разработчики проприетарного ПО, заведите себе аккаунт на GitHub, ваша эра подходит к концу.

Что такое: Open Source (Открытый исходный код)

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

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

Эти недостатки, как правило, компенсируется, однако, расширяемостью и настраиваемостью программного обеспечения с открытым исходным кодом. Это легко увидеть в таких проектах, как WordPress. Благодаря его лицензий с открытым исходным кодом, WordPress стала платформой для динамической веб-публикации, чем и является она сегодня.

Дополнительная литература

  • Почему WordPress бесплатный? Каковы затраты? В чём подвох?
  • GPL
  • Бесплатное программное обеспечение

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Xubuntu-ru.net

В центре этого достаточно необычного киноповествования – движение за открытые исходные коды, которое автор фильма трактует значительно шире, нежели историю развития Linux. Впрочем, подобным образом показана и сама Linux – как много большее, чем просто альтернативная операционная система. В фильме исследована «человеческая» сторона движения за открытые коды и свободно доступные программы и сделана попытка изнутри показать «историю программистов и хакеров, восставших против машины корпоративной индустрии». По сути дела, движение open source представлено в картине как некая самостоятельная культура с собственной этикой и мифами, со своими богами и героями.

Илон Маск рекомендует:  Что такое код cyrus_close

71 команда Linux на все случаи жизни. Ну почти

Команды Linux для навигации в терминале

Команды Linux для получения прав суперпользователя

Команды Linux для управления пакетным менеджером

Команды Linux для управления процессами

Команды Linux для управления файлами

Команды Linux для работы с разделами

Команды Linux для управления системой

Команды Linux для управления пользователями

Команды Linux для управления сетью

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


Команды Linux для навигации в терминале

  1. && . Строго говоря, это не команда. Если вы хотите выполнить сразу несколько команд, поставьте между ними двойной амперсанд вот так: первая_команда && вторая_команда . Терминал выполнит команды по порядку. Вы можете ввести столько команд, сколько захотите.
  2. alias . Присваивает созданные вами названия длинным командам, которые вы не можете запомнить. Введите alias длинная_команда короткая_команда .
  3. cd . Изменяет текущую терминальную папку. Когда вы запускаете терминал, он использует вашу домашнюю папку. Введите cd адрес_папки , и терминал будет работать с файлами, которые там находятся.
  4. clear . Очищает окно терминала от всех сообщений.
  5. history . Отображает все недавно введённые вами команды. Кроме того, вы можете переключаться между недавними командами с помощью клавиш «Вверх» и «Вниз». Если вы не хотите, чтобы введённая вами команда была записана, поставьте перед ней пробел так: ваша_команда .
  6. man . Отображает руководство по программам и командам Linux. Введите man имя_пакета или man ваша_команда .
  7. whatis . Отображает краткое описание какой-либо программы. Введите команду и название программы whatis имя_пакета .

Команды Linux для получения прав суперпользователя

Для выполнения множества действий в системе, например для установки и удаления программ, вам понадобятся права администратора, или суперпользователя root, как его называют в Linux.

  1. sudo . Эта команда даст вам права суперпользователя. Введите sudo перед нужной командой (например, sudo apt upgrade ), чтобы выполнить её от имени администратора. Система спросит у вас пароль.
  2. sudo su . После этой команды все введённые вами команды будут исполняться от имени суперпользователя, пока вы не закроете терминал. Используйте её, если вам нужно выполнить много команд с правами администратора.
  3. sudo gksudo . Команда для запуска с правами администратора приложения с графическим интерфейсом. Например, если вы хотите переместить или изменить системные файлы, введите sudo gksudo nautilus (укажите тот файловый менеджер, которым пользуетесь).
  4. sudo !! . Эта команда запустит ранее введённую команду с правами администратора. Полезно, если вы набрали команду без sudo .

Команды Linux для управления пакетным менеджером

Установку и удаление приложений в Linux выполняют пакетные менеджеры. В Ubuntu и Debian пакетный менеджер называется apt, в Fedora — dnf, в Arch и Manjaro — pacman. Они загружают приложения из сетевых репозитариев, источников пакетов. Давать им команды следует с правами суперпользователя.

apt (Debian/Ubuntu/Mint)

  1. sudo apt install имя_пакета . Установить нужный пакет.
  2. sudo apt-add-repository адрес_репозитария . Добавить сторонний репозитарий.
  3. sudo apt update . Обновить сведения о пакетах.
  4. sudo apt upgrade . Обновить все пакеты до самых свежих (выполнять после apt update ).
  5. sudo apt remove имя_пакета . Удалить ненужный пакет.
  6. sudo apt purge имя_пакета . Удалить ненужный пакет со всеми зависимостями, если хотите освободить больше места.
  7. sudo apt autoremove . Удалить все ненужные зависимости, бесхозные пакеты и прочий мусор.

dnf (Red Hat/Fedora/CentOS)

  1. sudo dnf install имя_пакета . Установить нужный пакет.
  2. sudo dnf config-manager —add-repo адрес_репозитария . Добавить сторонний репозитарий.
  3. sudo dnf upgrade . Обновить все пакеты до самых свежих.
  4. sudo dnf remove имя_пакета . Удалить ненужный пакет.
  5. sudo dnf autoremove . Удалить все ненужные зависимости.

pacman (Arch/Manjaro)

  1. sudo pacman -S имя_пакета . Установить нужный пакет.
  2. sudo yaourt -S имя_пакета . Установить пакет из AUR, если его нет в основном репозитарии.
  3. sudo pacman -Sy . Обновить сведения о пакетах.
  4. sudo pacman -Syu . Обновить все пакеты до самых свежих.
  5. sudo pacman -R имя_пакета . Удалить ненужный пакет.
  6. sudo pacman -Rs имя_пакета . Удалить ненужный пакет со всеми зависимостями.

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

sudo apt install firefox clementine vlc

Если вы хотите установить какой-то пакет, но не знаете его точного названия, введите несколько первых букв имени пакета и дважды нажмите Tab. Пакетный менеджер покажет все пакеты, названия которых начинаются одинаково.

Команды Linux для управления процессами

  1. kill . Эта команда служит для принудительного завершения процессов. Нужно ввести kill PID_процесса . PID процесса можно узнать, введя top .
  2. xkill . Ещё одна команда для завершения процессов. Введите её, затем щёлкните по тому окну, которое нужно закрыть.
  3. killall . Убивает процессы c определённым именем. К примеру, killall firefox .
  4. top . Отображает перечень запущенных процессов, сортируя в зависимости от потребления ресурсов CPU. Своего рода терминальный «Системный монитор».

Команды Linux для управления файлами

Просмотр и изменение файлов

  1. cat . Когда команда используется с одним текстовым файлом (вот так: cat путь_к_файлу ), она отображает его содержимое в окне терминала. Если указать два и больше файлов, cat путь_к_файлу_1 путь_к_файлу_2 , она склеит их. Если ввести cat путь_к_файлу_1 > новый_файл , она объединит содержимое указанных файлов в новый файл.
  2. chmod . Позволяет изменять права доступа к файлу. Может пригодиться, если вы хотите внести изменения в системный файл.
  3. chown . Изменяет владельца файла. Следует выполнять с правами суперпользователя.
  4. file . Выводит информацию об указанном файле.
  5. nano . Открывает простой текстовый редактор. Можно создать новый текстовый файл или открыть существующий: nano путь_к_файлу .
  6. rename . Переименовывает файл или несколько файлов. Команду можно использовать и для массового переименования файлов по маске.
  7. touch . Изменяет дату последнего открытия или модификации указанного файла.
  8. wget . Загружает файлы из интернета в терминальную папку.
  9. zip . Распаковывает и сжимает архивы.

Создание и удаление файлов и папок

  1. mkdir . Создаёт новую папку в текущей терминальной папке или в указанной папке: mkdir путь_к_папке .
  2. rmdir . Удаляет указанную папку.
  3. rm . Удаляет файлы. Может удалить как отдельный файл, так и группу, соответствующую определённым признакам.

Копирование и перемещение файлов

  1. cp . Создаёт копию указанного файла в папке терминала: cp путь_к_файлу . Или вы можете указать назначение cp путь_к_файлу путь_для_копии .
  2. mv . Перемещает файл из одной папки в другую. Вы можете указать имя для перемещаемого файла. Забавно, но в Linux эта команда может использоваться и для переименования файлов. Просто укажите ту же папку, где находится файл, и другое имя.

Поиск файлов

  1. find . Поиск файлов по определённым критериям, таким как имя, тип, размер, владелец, дата создания и модификации.
  2. grep . Поиск текстовых файлов, содержащих определённые строки. Критерии очень гибко настраиваются.
  3. locate . Поиск файлов и папок, чьи названия подходят запросу, и отображение их путей в файловой системе.

Команды Linux для работы с разделами

  1. lsblk . Эта команда демонстрирует, какие диски есть в вашей системе и на какие разделы они поделены. Также команда отображает имена ваших разделов и накопителей, в формате sda1, sda2 и так далее.
  2. mount . Монтирует накопители, устройства или файловые системы Linux, чтобы вы могли с ними работать. Обычно устройства подключаются автоматически, как только вы щёлкнете по ним в файловом менеджере. Но иногда может понадобиться примонтировать что-то вручную. Вы можете подключать что угодно: диски, внешние накопители, разделы и даже ISO-образы. Эту команду нужно выполнять с правами суперпользователя. Чтобы примонтировать имеющийся диск или раздел, введите mount sdX .
  3. umount . Демонтирует файловые системы. Команда umount sdX отключит файловую систему внешнего носителя, чтобы вы могли извлечь его.
  4. dd . Эта команда копирует и преобразовывает файлы и разделы. У неё множество различных применений. Например, dd if=/dev/sda of=/dev/sdb сделает точную копию раздела sda на разделе sdb. dd if=/dev/zero of=/dev/sdX затрёт содержимое указанного носителя нулями, чтобы информацию было невозможно восстановить. А dd if=

/Downloads/ubuntu.iso of=/dev/sdX bs=4M сделает загрузочный носитель из скачанного вами образа с дистрибутивом.

Команды Linux для управления системой

  1. df . Отображает объём вашего диска, и сколько на нём осталось свободного места.
  2. free . Отображает объём доступной и занятой оперативной памяти.
  3. uname . Отображает сведения о системе Если ввести uname , терминал сообщит только Linux. Но команда uname -a выводит сведения об имени компьютера и версии ядра.
  4. uptime . Сообщает, как долго запущена ваша система.
  5. whereis . Отображает расположение исполняемого файла нужной программы.
  6. whoami . Называет имя пользователя.

Команды Linux для управления пользователями

  1. useradd . Регистрирует нового пользователя. Введите useradd имя_пользователя , и пользователь будет создан.
  2. userdel . Удаляет учётную запись и файлы пользователя.
  3. usermod . Изменяет учётную запись пользователя. Может переместить домашнюю папку пользователя или назначить дату, когда учётная запись будет заблокирована.
  4. passwd . Изменяет пароли учётных записей. Обычный пользователь может изменить пароль только своей учётной записи, суперпользователь может изменить пароль любой учётной записи.

Команды Linux для управления сетью

  1. ip . Многофункциональная команда для работы с сетью. Команда ip address show выводит сведения о сетевых адресах, ip route управляет маршрутизацией и так далее. Давая команды ip link set ethX up , ip link set ethX down , можно включать и выключать соединения. У команды ip много применений, так что перед её использованием лучше ознакомиться с руководством или ввести ip —help
  2. ping . Показывает, подключены ли вы к сети, и помогает определить качество связи.

И ещё кое-что

Напоследок — главные команды Linux. Они выводят на экран корову, которая может разговаривать с вами (не спрашивайте, что употребляют разработчики).


  1. cowsay что_угодно . Корова произнесёт то, что вы ей скажете.
  2. fortune | cowsay . Корова выдаст умную (или не очень) мысль или цитату.
  3. cowsay -l . Выводит список всех животных, которые могут быть отображены в терминале. Если вы вдруг не любите коров.
  4. fortune | cowsay -f животное_из_списка . Животное на ваш выбор начинает сыпать цитатами, иногда уместными.
  5. sudo apt-get install fortunes fortune-mod fortunes-min fortunes-ru . Заставит весь зоопарк говорить по-русски. Без этого животные цитируют Твена и Уайльда в оригинале.

Это далеко не все команды Linux. Если вам нужно узнать в деталях параметры и способы применения команд Linux, вы можете воспользоваться встроенным руководством. Наберите man ваша_команда или ваша_команда —help .

Администрирование систем Linux. Ядро Linux

Часть VI. Работа с ядром ОС

Глава 28. Ядро Linux

28.1. О ядре Linux

28.1.1. Версии ядра

В 1991 году Linus Torvalds разработал первую версию ядра Linux. Он выложил исходный код ядра в открытый доступ, после чего другие люди начали вносить свой вклад в его развитие. В разработке одной из версий ядра (а именно, версии 2.6.27, выпущенной в ноябре 2008 года) поучаствовало более 4000 разработчиков.

Для основных версий ядра Linux используются четные и нечетные номера. Ранее существовало разделение версий, в соответствии с которым версии 2.0 , 2.2 , 2.4 и 2.6 считались стабильными. В то же время версии 2.1 , 2.3 и 2.5 считались нестабильными (или разрабатываемыми). Начиная с выпуска версии ядра 2.6.0 в январе 2004 года вся разработка велась в рамках ветки 2.6. Версия ядра 2.7.0 так и не была выпущена и, судя по заявлениям главного разработчика ядра, которым все также является Linus Torvalds, схема разделения версий ядра на четные/стабильные и нечетные/разрабатываемые не используется и не будет использоваться в будущем.

28.1.2. Команда uname -r

Для того, чтобы узнать текущую версию ядра Linux, следует использовать команду uname -r таким образом, как показано ниже.

В первом примере показан вывод данной команды в системе с ядром Linux основной версии 2.6 и дополнительной версии 24 . Остальная часть строки -22-generic является специфичной для дистрибутива (в данном случае используется дистрибутив Ubuntu).

При выполнении этой же команды в дистрибутиве Red Hat Entrprise Linux можно получить информацию о более старом ядре (версии 2.6.18), причем строка -92.1.17.el5 также является специфичной для дистрибутива.

28.1.3. Файл /proc/cmdline

Параметры, которые были переданы ядру ОС в процессе загрузки системы, могут быть получены из файла /proc/cmdline .

28.1.4. Однопользовательский режим

В случае передачи ядру Linux параметра single будет осуществляться загрузка системы в однопользовательском режиме . В данном случае после загрузки ядра Linux будет запущена командная оболочка bash с привилегиями пользователя root (ввода пароля не потребуется).

В некоторых дистрибутивах данная возможность заблокирована (на этапе компиляции ядра ОС).

28.1.5. Параметр init=/bin/bash

Обычно ядро ОС запускает бинарный файл, путь к которому передан с помощью параметра init , создавая таким образом первый процесс-демон. Добавление параметра init=/bin/bash к строке параметров ядра позволяет вызывать командную оболочку bash (снова с правами пользователя root без необходимости ввода пароля).

28.1.6. Файл журнала /var/log/messages

Ядро ОС в процессе загрузки передает демону syslogd информацию о множестве выполняемых действий, которая сохраняется в файле журнала /var/log/messages . Из данного файла журнала можно извлечь информацию о процессе загрузки ядра, включая информацию обо всех устройствах, которые были идентифицированы в процессе загрузки системы.

А в данном примере показан фрагмент файла /var/log/messages , который может использоваться для извлечения информации о дисковом устройстве, представленном файлом устройства /dev/sda .

28.1.7. Утилита dmesg

Утилита dmesg выводит все сообщения ядра ОС (с момента последней загрузки системы).

Следовательно, в случае поиска информации о дисковом устройстве, представленном файлом устройства /dev/sda, с помощью утилиты dmesg , будут выведены только сообщения ядра ОС с момента последней загрузки системы.

28.2. Исходный код ядра Linux

28.2.1. Ресурс ftp.kernel.org

Официальное хранилище архивов исходного ядра Linux расположено по адресу ftp.kernel.org . Данный ресурс содержит архивы исходного кода всех официальных выпусков ядра Linux начиная с 1991 года. Доступ ко всем архивам исходного кода, а также к файлам со списками изменений и файлам с исправлениями может осуществляться по протоколам http, ftp и rsync. Дополнительная информация может быть получена на вебсайте www.kernel.org .

Каждый человек может воспользоваться ftp-клиентом для осуществления анонимного входа на ресурс ftp.kernel.org.

Архивы исходного кода всех версий ядра Linux расположены по пути pub/linux/kernel/.

28.2.2. Директория /usr/src

Исходный код ядра ОС на вашем локальном компьютере должен быть расположен в директории /usr/src . Учтите, что структура поддиректорий директории /usr/src может отличаться в зависимости от используемого вами дистрибутива.

В первую очередь давайте рассмотрим структуру поддиректорий директории /usr/src в дистрибутиве Debian . В данном случае в этой директории можно обнаружить две версии полного исходного кода ядра Linux. При поиске определенного файла (e1000_main.c) исходного кода с помощью утилиты find можно получить полный путь к этому файлу.

Данная структура поддиректорий очень похожа на структуру поддиректорий директории /usr/src в дистрибутиве Ubuntu за тем исключением, что в данном случае в директории расположен исходный код одной версии ядра (и эта версия более новая).

Теперь давайте рассмотрим содержимое директории /usr/src в дистрибутиве Red Hat Entrprise Linux .

Нам придется погрузиться немного глубже в дерево директорий для того, чтобы добраться до исходного кода ядра ОС в дистрибутиве Red Hat!

28.2.3. Загрузка исходного кода ядра ОС

Установка пакета программного обеспечения с исходным кодом ядра ОС в дистрибутиве Debian осуществляется достаточно просто с помощью команды aptitude install linux-source . В первую очередь вы можете осуществить поиск всех пакетов программного обеспечения с именами linux-source таким образом, как показано в примере ниже.

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

После того, как утилита aptitude закончит работу, вы обнаружите новый файл с именем /usr/src/linux-source- .tar.bz2 в файловой системе вашего компьютера.

Дистрибутив Ubuntu основывается на дистрибутиве Debian, причем в нем также может использоваться утилита aptitude , поэтому задача полностью аналогична предыдущей.

И после того, как утилита aptitude завершит свою работу, мы получим файл /usr/src/linux-source- .tar.bz2 .

Red Hat Enterprise Linux

Ранее пакет программного обеспечения с исходным кодом ядра ОС располагался на четвертом установочном диске с пакетами исходного кода дистрибутива Red Hat Enerprise Linux. Файл пакета программного обеспечения носит имя kernel-2.6.9-42.EL.src.rpm (пример для дистрибутива RHEL версии 4 с обновлением 4). Также данный пакет доступен по адресу ftp://ftp.redhat.com/pub/redhat/linux/enterprise/5Server/en/os/SRPMS/ (пример для дистрибутива RHEL 5).

Для загрузки пакета исходного кода ядра ОС дистрибутива RHEL следует использовать длинную команду (команда должна располагаться в одной строке без завершающего символа \).

После того, как утилита wget закончит свою работу, вы получите файл с расширением .rpm размером в 60 Мб.

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

В первую очередь мы должны выполнить команду rpm -i kernel-2.6.9-42.EL.src.rpm для установки загруженного пакета программного обеспечения дистрибутива Red Hat.

После этого мы должны перейти в директорию SPECS и задействовать утилиту rpmbuild .

Утилита rpmbuild поместит исходный код ядра Linux дистрибутива RHEL в директорию /usr/src/redhat/BUILD/kernel- / .

28.3. Файлы, используемые в процессе загрузки ядра ОС

28.3.1. Файл vmlinuz

Файл vmlinuz из директории /boot является сжатым исполняемым файлом ядра ОС.

28.3.2. Файл initrd

Ядро ОС использует файл initrd (Initial RAM disk — диск в оперативной памяти для начальной инициализации) в процессе загрузки системы. Данный диск монтируется до момента окончания загрузки ядра ОС и может содержать дополнительные драйверы и модули ядра ОС. На самом деле, данный файл является сжатым архивом формата CPIO , поэтому вы можете просмотреть его содержимое следующим образом.

28.3.3. Файл System.map

Файл System.map содержит таблицу символов и изменяется при каждой компиляции ядра ОС. Таблица символов также присутствует в файле /proc/kallsyms (до выпуска ядра Linux версии 2.6 данный файл носил имя /proc/ksyms).

28.3.4. Файл .config

Последним файлом, копируемым в директорию /boot, является файл со значениями параметров конфигурации ядра ОС, используемый в процессе его компиляции. Данный файл не должен находиться директории /boot для корректного функционирования ядра ОС, но размещение его копии в данной директории является обычной практикой. Благодаря его наличию появляется возможность осуществления повторной компиляции ядра ОС с использованием тех же значений параметров конфигурации, которые были использованы для компиляции существующего работоспособного ядра ОС.

28.4. Модули ядра Linux

28.4.1. Информация о модулях ядра Linux

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

28.4.2. Директория /lib/modules

Модули ядра ОС хранятся в директории /lib/modules/ . Для хранения модулей каждой версии ядра Linux, которая была скомпилирована для вашей системы, создается отдельная директория.

Имя файла, содержащего код модуля ядра ОС, обычно оканчивается на .ko . В данном примере показано расположение файлов модулей ядра ОС, предназначенных для поддержки протокола isdn.

28.4.4. Утилита lsmod

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

28.4.5. Файл /proc/modules

Файл /proc/modules содержит список всех модулей, загруженных ядром ОС. Список модулей ядра ОС из данного файла является слишком длинным для того, чтобы приводить его в данной книге, поэтому давайте используем утилиту grep для поиска модуля с именем vm .

Мы видим, что одновременно загружены модуля ядра ОС vmmon и vmnet. Вы можете получить ту же самую информацию и с помощью утилиты lsmod . На самом деле, утилита lsmod всего лишь читает содержимое файла /proc/modules и выводит его с соответствующим форматированием.

28.4.6. Зависимости модулей ядра ОС

Некоторые модули ядра ОС зависят от других модулей ядра ОС. В следующем примере вы можете увидеть, что модуль ядра ОС с именем nfsd зависит от модулей с именами exportfs, lockd и sunrpc.

28.4.7. Утилита insmod

Модули ядра ОС могут быть загружены в ручном режиме с помощью утилиты insmod . Это очень простой (и устаревший) способ загрузки модулей ядра ОС. В примере ниже показан процесс загрузки модуля ядра ОС с именем fat (реализующего поддержку файловой системы fat).

Утилита insmod не определяет зависимости между модулями ядра ОС, поэтому в следующем примере нам не удалось загрузить с помощью данной утилиты модуль с именем isdn (так как модуль с именем isdn зависит от модуля с именем slhc).

28.4.8. Утилита modinfo

Как вы можете увидеть в представленном ниже выводе утилиты modinfo , модуль ядра ОС с именем isdn зависит от модуля ядра ОС с именем slhc.

28.4.9. Утилита modprobe

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

В данном примере показан способ загрузки модуля с именем isdn с помощью утилиты modprobe с автоматической загрузкой модуля с именем shlc в фоновом режиме.

28.4.10. Файл /lib/modules/ /modules.dep

Зависимости модулей ядра ОС описаны в рамках файла с именем modules.dep .

28.4.11. Утилита depmod

Файл modules.dep может быть обновлен (повторно создан) с помощью утилиты depmod . В следующем примере не было добавлено никаких новых модулей ядра ОС, поэтому утилита depmod сгенерировала идентичный файл.

28.4.12. Утилита rmmod

По аналогии с утилитой insmod , утилита rmmod на сегодняшний день практически не используется.


28.4.13. Команда modprobe -r

В отличие от утилиты rmmod , утилита modprobe будет автоматически удалять неиспользуемые модуля ядра ОС.

28.4.14. Файл конфигурации /etc/modprobe.conf

Файл конфигурации /etc/modprobe.conf и специальные файлы конфигурации из директории /etc/modprobe.d могут содержать псевдонимы (для использования людьми), а также параметры (для зависимых модулей ядра ОС), используемые утилитой modprobe .

28.5. Компиляция ядра ОС

28.5.1. Дополнительная версия

Перейдите в директорию /usr/src/redhat/BUILD/kernel-2.6.9/linux-2.6.9/ и измените дополнительную версию ядра ОС, заменив значение параметра extraversion в файле с именем Makefile.

28.5.2. Команда make mrproper

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

28.5.3. Файл .config

Теперь скопируйте работоспособный файл с именем .config из директории /boot в директорию с исходным кодом вашего ядра ОС. Этот файл содержит значения параметров конфигурации, которые использовались при компиляции вашего текущего ядра ОС. Грубо говоря, данный файл содержит информацию о том, должны ли компилироваться определенные модули ядра ОС.

28.5.4. Команда make menuconfig

Теперь следует выполнить команду make menuconfig (или команду make xconfig в случае использования графического интерфейса). Запущенная утилита позволит вам установить, необходимо ли компилировать определенный модуль (m), включить код модуля в состав ядра ОС (*) или вообще не компилировать его (что позволит сократить размер ядра ОС). Если вы откажитесь от компиляции слишком большого количества модулей, ваше ядро ОС не будет работать корректно. Данные конфигурации будут сохранены в скрытом файле с именем .config.

28.5.5. Команда make clean

Выполните команду make clean для подготовки исходного кода ядра ОС к компиляции. Команда make clean позволяет удалить большую часть сгенерированных файлов, но сохраняет ваши файлы конфигурации ядра ОС. Исполнение команды make mrproper на данном этапе приведет к уничтожению файла .config, который был создан в результате исполнения команды make menuconfig .

28.5.6. Команда make bzImage

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

Исполнение данной команды завершится выводом информации о пути к результирующему файлу bzImage (а также времени компиляции, если вы также использовали команду time ).

На данном этапе вы можете вручную скопировать результирующий файл в директорию /boot с помощью команды cp arch/i386/boot/bzImage /boot/vmlinuz- .

28.5.7. Команда make modules

Теперь следует выполнить команду make modules . На компиляцию всех модулей ядра ОС уйдет от 20 до 50 минут.

28.5.8. Команда make modules_install

Для копирования всех скомпилированных модулей ядра ОС в директорию /lib/modules следует всего лишь выполнить команду make modules_install (на установку модулей уйдет примерно 20 секунд). В примере ниже приведен список содержимого директории модулей перед исполнением упомянутой команды.

А это список содержимого этой же директории после исполнения этой команды. Обратите внимание на то, что в процессе исполнения команды make modules_install была создана новая директория для модулей нового ядра ОС.

28.5.9. Директория /boot

Нам все также необходимо скопировать исполняемый файл ядра ОС, файл System.map и наш файл со значениями параметров конфигурации ядра ОС в директорию /boot. Строго говоря, копировать файл со значениями параметров конфигурации ядра ОС с именем .config совсем не обязательно, но он может пригодиться в будущем при компиляции ядра ОС.

28.5.10. Утилита mkinitrd

Ядро ОС обычно использует файл initrd в процессе загрузки. Мы можем использовать утилиту mkinitrd для генерации этого файла. Убедитесь в том, что вы используете корректное имя ядра ОС!

28.5.11. Системный загрузчик

На этом компиляция ядра ОС закончена, но не следует забывать о необходимости создания дополнительного станса для отображения пункта в меню системного загрузчика grub или lilo.

28.6. Компиляция отдельного модуля ядра ОС

28.6.1. Файл исходного кода hello.c

Небольшая программа на языке C послужит основой для нашего модуля ядра ОС.

28.6.2. Файл Makefile

Файл для сборки модуля ядра ОС будет содержать следующие строки.

Для компиляции модуля необходимы только два описанных файла.

28.6.3. Команда make

В примере ниже представлен результат исполнения команды make .

Теперь у нас больше файлов.

28.6.4. Файл hello.ko

Следует использовать утилиту modinfo для проверки того, действительно ли файл с расширением .ko является модулем ядра ОС.

Отлично, значит мы можем загрузить наш модуль ядра ОС с именем «hello».

Наконец мы можем обнаружить небольшой сюрприз в файле журнала /var/log/messages .

Основные команды Linux. Справочник команд Linux с примерами

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

Системная информация

отобразить архитектуру компьютера:

отобразить используемую версию ядра

показать аппаратные системные компоненты — (SMBIOS / DMI)

вывести характеристики жесткого диска

отобразить информацию о процессоре

проверить использование памяти

показать файл(ы) подкачки

вывести версию ядра

показать сетевые интерфейсы и статистику по ним

отобразить смонтированные файловые системы

показать в виде дерева PCI устройства

показать в виде дерева USB устройства

вывести системную дату

вывести таблицу-календарь 2011-го года

установить системные дату и время ММДДЧЧммГГГГ.СС

сохранить системное время в BIOS

Остановка системы

запланировать остановку системы на указанное время

отменить запланированную по расписанию остановку системы

выйти из системы

Файлы и директории

перейти в директорию ‘/home’

перейти в директорию уровнем выше

перейти в директорию двумя уровнями выше

перейти в домашнюю директорию

перейти в домашнюю директорию пользователя user

перейти в директорию, в которой находились до перехода в текущую директорию

показать текущюю директорию

отобразить содержимое текущей директории

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

показать детализированое представление файлов и директорий в текущей директории

показать скрытые файлы и директории в текущей директории

показать файлы и директории содержащие в имени цифры

показать дерево файлов и директорий, начиная от корня (/)

создать директорию с именем ‘dir1’

создать две директории одновременно

создать дерево директорий

удалить файл с именем ‘file1’

удалить директорию с именем ‘dir1’

удалить директорию с именем ‘dir1’ и рекурсивно всё её содержимое

удалить две директории и рекурсивно их содержимое

переименовать или переместить файл или директорию


скопировать файл file1 в файл file2

копировать все файлы директории dir в текущую директорию

копировать директорию dir1 со всем содержимым в текущую директорию

копировать директорию dir1 в директорию dir2

создать символическую ссылку на файл или директорию

создать «жёсткую» (физическую) ссылку на файл или директорию

модифицировать дату и время создания файла, при его отсутствии, создать файл с указанными датой и временем (YYMMDDhhmm)

Поиск файлов

найти файлы и директории с именем file1. Поиск начать с корня (/)

найти файл и директорию принадлежащие пользователю user1. Поиск начать с корня (/)

найти все файлы и директории, имена которых оканчиваются на ‘. bin’. Поиск начать с ‘/ home/user1’*

найти все файлы в ‘/usr/bin’, время последнего обращения к которым более 100 дней

найти все файлы в ‘/usr/bin’, созданные или изменённые в течении последних 10 дней

найти все файлы и директории, имена которых оканчиваются на ‘.rpm’, и изменить права доступа к ним

найти все файлы и директории, имена которых оканчиваются на ‘.rpm’, игнорируя съёмные носители, такие как cdrom, floppy и т.п.

найти все файлы, сожержащие в имени ‘.ps’. Предварительно рекомендуется выполнить команду ‘updatedb’

показывает размещение бинарных файлов, исходных кодов и руководств, относящихся к файлу ‘halt’

отображает полный путь к файлу ‘halt’

Монтирование файловых систем

монтирует раздел ‘hda2’ в точку монтирования ‘/mnt/hda2’. Убедитесь в наличии директории-точки монтирования ‘/mnt/hda2’

размонтирует раздел ‘hda2’. Перед выполнением, покиньте ‘/mnt/hda2’

принудительное размонтирование раздела. Применяется в случае, когда раздел занят каким-либо пользователем

выполнить размонитрование без занесения информации в /etc/mtab. Полезно когда файл имеет атрибуты «только чтение» или недостаточно места на диске

монтировать CD или DVD

монтировать CD-R/CD-RW или DVD-R/DVD-RW(+-)

монтировать файловую систему Windows FAT32

монтировать сетевую файловую систему Windows (SMB/CIFS)

«монтирует» директорию в директорию (binding). Доступна с версии ядра 2.4.0. Полезна, например, для предоставления содержимого пользовательской директории через ftp при работ е ftp-сервера в «песочнице» (chroot), когда симлинки сделать невозможно. Выполнение данной команды сделает копию содержимого /home/user/prg в /var/ftp/user

Дисковое пространство

информация о смонтированных разделах с отображением общего, доступного и используемого пространства (Прим.переводчика. ключ -h работает не во всех *nix системах)

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

вывести размер, занимаемый директорией ‘dir1’ (Прим.переводчика. ключ -h работает не во всех *nix системах)

размер и имена файлов и директорий, с соритровкой по размеру

размер используемого дискового пространства, занимаемое файлами rpm-пакета, с сортировкой по размеру (fedora, redhat и т.п.)

размер используемого дискового пространства, занимаемое файлами deb-пакета, с сортировкой по размеру (ubuntu, debian т.п.)

Пользователи и группы

создать новую группу с именем group_name

удалить группу group_name

переименовать группу old_group_name в new_group_name

создать пользователя user1, назначить ему в качестве домашнего каталога /home/user1, в качестве shell’а /bin/bash, включить его в группу admin и добавить комментарий Nome Cognome

создать пользователя user1

удалить пользователя user1 и его домашний каталог

изменить атрибуты пользователя

сменить пароль пользователя user1 (только root)

установить дату окончания действия учётной записи пользователя user1

проверить корректность системных файлов учётных записей. Проверяются файлы /etc/passwd и /etc/shadow

проверить корректность системных файлов учётных записей. Проверяется файл/etc/group

изменить первичную группу текущего пользователя. Если указать «-», ситуация будет идентичной той, в которой пользователь вышил из системы и снова вошёл. Если не указывать группу, первичная группа будет назначена из /etc/passwd

Выставление/изменение полномочий на файлы

просмотр полномочий на файлы и директории в текущей директории

вывести содержимое директории /tmp и разделить вывод на пять колонок

добавить полномочия на директорию directory1 ugo(User Group Other)+rwx(Read Write eXecute) — всем полные права. Аналогичное можно сделать таким образом chmod 777 directory1

отобрать у группы и всех остальных все полномочия на директорию directory1

назначить владельцем файла file1 пользователя user1

назначить рекурсивно владельцем директории directory1 пользователя user1

сменить группу-владельца файла file1 на group1

сменить владельца и группу владельца файла file1

найти, начиная от корня, все файлы с выставленным SUID

назначить SUID-бит файлу /bin/binary_file. Это даёт возможность любому пользователю запускать на выполнение файл с полномочиями владельца файла

снять SUID-бит с файла /bin/binary_file

назначить SGID-бит директории /home/public

снять SGID-бит с директории /home/public

назначить STIKY-бит директории /home/public. Позволяет удалять файлы только владельцам

снять STIKY-бит с директории /home/public

Специальные атрибуты файлов

позволить открывать файл на запись только в режиме добавления

позволяет ядру автоматически сжимать/разжимать содержимое файла

указавет утилите dump игнорировать данный файл во время выполнения backup’а

делает файл недоступным для любых изменений: редактирование, удаление, перемещение, создание линков на него

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

указывает, что, при сохранении изменений, будет произведена синхронизация, как при выполнении команды sync

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

показать атрибуты файлов

Архивирование и сжатие файлов

разжать файл ‘file1.bz2’

разжать файл ‘file1.gz’

сжать файл ‘file1’

сжать файл file1 с максимальным сжатием

создать rar-архив ‘file1.rar’ и включить в него файл test_file

создать rar-архив ‘file1.rar’ и включить в него file1, file2 и dir1

создать tar-архив archive.tar, содержащий файл file1

создать tar-архив archive.tar, содержащий файл file1, file2 и dir1

показать содержимое архива

распаковать архив в /tmp

создать архив и сжать его с помощью bzip2(Прим.переводчика. ключ -j работает не во всех *nix системах)

разжать архив и распаковать его(Прим.переводчика. ключ -j работает не во всех *nix системах)

создать архив и сжать его с помощью gzip

разжать архив и распаковать его


создать сжатый zip-архив

создать сжатый zip-архив и со включением в него нескольких файлов и/или директорий

разжать и распаковать zip-архив

RPM пакеты (Fedora, Red Hat и тому подобное)

установить пакет с выводом сообщений и прогресс-бара

установить пакет с выводом сообщений и прогресс-бара без контроля зависимостей

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

обновить пакет только если он установлен

отобразить список всех пакетов, установленных в системе

среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени «httpd»

вывести информацию о конкрентном пакете

отобразить пакеты входящие в группу пакетов

вывести список файлов, входящих в пакет

вывести список конфигурационных файлов, входящих в пакет

вывести список пакетов, необходимых для установки конкретного пакета по зависимостям

отобразить скрипты, запускаемые при установке/удалении пакета

вывести историю ревизий пакета

проверить какому пакету принадлежит указанный файл. Указывать следует полный путь и имя файла

отображает список файлов, входящих в пакет, но ещё не установленных в систему

ипортировать публичный ключ цифровой подписи

проверит подпись пакета

проверить целостность установленного содержимого пакета

проверить размер, полномочия, тип, владельца, группу, MD5-сумму и дату последнего изменеия пакета

проверить содержимое всех пакеты установленные в систему. Выполняйте с осторожностью!

проверить пакет, который ещё не установлен в систему

извлечь из пакета файлы содержащие в своём имени bin

установить пакет, собранный из исходных кодов

собрать пакет из исходных кодов

YUM — средство обновления пакетов(Fedora, RedHat и тому подобное)

закачать и установать пакет

обновить все пакеты, установленные в систему

вывести список всех пакетов, установленных в систему

найти пакет в репозитории

очисть rpm-кэш, удалив закачанные пакеты

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

очисть rpm-кэш, удалив закачанные пакеты и заголовки

DEB пакеты (Debian, Ubuntu и тому подобное)

установить / обновить пакет

удалить пакет из системы

показать все пакеты, установленные в систему

среди всех пакетов, установленных в системе, найти пакет содержащий в своём имени «apache2»

отобразить инфрмацию о конкретном пакете

вывести список файлов, входящих в пакет, установленный в систему

отобразить список файлов, входящих в пакет, который ешё не установлен в систему

найти пакет, в который входит указанный файл

APT — средство управление пакетами (Debian, Ubuntu и тому подобное)

установить / обновить пакет

установить / обновить пакет с cdrom’а

получить обновлённые списки пакетов

обновить пакеты, установленные в систему

удалить пакет, установленный в систему с сохранением файлов конфигурации

удалить пакет, установленный в систему с удалением файлов конфигурации

проверить целостность зависимостей

удалить загруженные архивные файлы пакетов

удалить старые загруженные архивные файлы пакетов

Pacman — средство управление пакетами (Arch Linux, Chakra, Frugalware и alike)

установить пакет из репозитория. Если после команды добавить —noconfirm , то не потребуется подтверждать действия.

установить пакет из текущей деиректории

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

получить обновленные списки пакетов

Просмотр содержимого файлов

вывести содержимое файла file1 на стандартное устройсво вывода

вывести содержимое файла file1 на стандартное устройсво вывода в обратном порядке (последняя строка становиться первой и т.д.)

постраничный вывод содержимого файла file1 на стандартное устройство вывода

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

вывести первые две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк

вывести последние две строки файла file1 на стандартное устройство вывода. По-умолчанию выводится десять строк

выводить содержимое файла /var/log/messages на стандартное устройство вывода по мере появления в нём текста

Манипуляции с текстом

общий синтаксис выполнения действий по обработке содержимого файла и вывода результата в новый

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

из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, содержащие «Aug»

из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, начинающиеся на «Aug»

из файла ‘/var/log/messages’ отобрать и вывести на стандартное устройство вывода строки, содержащие цифры

отобрать и вывести на стандартное устройство вывода строки, содержащие «Augr», во всех файлах, находящихся в директории /var/log и ниже

в файле example.txt заменить «string1» на «string2», результат вывести на стандартное устройство вывода

удалить пустые строки из файла example.txt

удалить пустые строки и комментарии из файла example.txt

преобразовать символы из нижнего регистра в верхний

удалить первую строку из файла example.txt

отобразить только строки содержашие «string1»

удалить пустые символы в в конце каждой строки

удалить строку «string1» из текста не изменяя всего остального

взять из файла с первой по восьмую строки и из них вывести первые пять

вывести пятую строку

заменить последовательность из любого количества нулей одним нулём

пронумеровать строки при выводе содержимого файла

при выводе содержимого файла, не выводить чётные строки файла


вывести первую колонку. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции

вывести первую и треью колонки. Разделение, по-умолчанию, по проблелу/пробелам или символу/символам табуляции

объединить содержимое file1 и file2 в виде таблицы: строка 1 из file1 = строка 1 колонка 1-n, строка 1 из file2 = строка 1 колонка n+1-m

объединить содержимое file1 и file2 в виде таблицы с разделителем «+»

отсортировать содержимое двух файлов

отсортировать содержимое двух файлов, не отображая повторов

отсортировать содержимое двух файлов, отображая только уникальные строки (строки, встречающиеся в обоих файлах, не выводятся на стандартное устройство вывода)

отсортировать содержимое двух файлов, отображая только повторяющиеся строки

сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file1’

сравнить содержимое двух файлов, не отображая строки принадлежащие файлу ‘file2’

сравнить содержимое двух файлов, удаляя строки встречающиеся в обоих файлах

Преобразование наборов символов и файловых форматов

конвертировать файл текстового формата из MSDOS в UNIX (разница в символах возврата коретки)

конвертировать файл текстового формата из UNIX в MSDOS (разница в символах возврата коретки)

конвертировать содержимое тестового файла page.txt в html-файл page.html

вывести список доступных форматов

Анализ файловых систем

проверить раздел hda1 на наличие bad-блоков

проверить/восстановить целостность linux-файловой системы раздела hda1

проверить/восстановить целостность файловой системы ext2 раздела hda1

проверить/восстановить целостность файловой системы ext3 раздела hda1 с указанием, что журнал расположен там же

проверить/восстановить целостность файловой системы ext3 раздела hda1

проверить/восстановить целостность файловой системы fat раздела hda11

Форматирование файловых систем

создать linux-файловую систему на разделе hda1

создать файловую систему ext2 на разделе hda1

создать журналирующую файловую систему ext3 на разделе hda1

создать файловую систему FAT32 на разделе hda1

форматирование флоппи-диска без проверки

создание swap-пространства на разделе hda3

swap-пространство

создание swap-пространства на разделе hda3

активировать swap-пространство, расположенное на разделе hda3

активировать swap-пространства, расположенные на разделах hda2 и hdb3

Создание резервных копий (backup)

создать полную резервную копию директории /home в файл /tmp/home0.bak

создать инкрементальную резервную копию директории /home в файл

восстановить из резервной копии /tmp/home0.bak

синхронизировать /tmp с /home

синхронизировать через SSH-туннель

синхронизировать локальную директорию с удалённой директорией через ssh-туннель со сжатием

синхронизировать удалённую директорию с локальной директорией через ssh-туннель со сжатием

сделать «слепок» локального диска в файл на удалённом компьютере через ssh-туннель

создать инкрементальную резервную копию директории ‘/home/user’ в файл backup.tar с сохранением полномочий

копирование содержимого /tmp/local на удалённый компьютер через ssh-туннель в /home/share/

копирование содержимого /home на удалённый компьютер через ssh-туннель в /home/backup-home

копирование одной директории в другую с сохранением полномочий и линков

поиск в /home/user1 всех файлов, имена которых оканчиваются на ‘.txt’, и копирование их в другую директорию

поиск в /var/log всех файлов, имена которых оканчиваются на ‘.log’, и создание bzip-архива из них

создать копию MBR (Master Boot Record) с /dev/hda на флоппи-диск

восстановить MBR с флоппи-диска на /dev/hda

показать конфигурацию сетевого интерфейса eth0

активировать (поднять) интерфейс eth0

деактивировать (опустить) интерфейс eth0

выставить интерфейсу eth0 ip-адрес и маску подсети

перевести интерфейс eth0 в promiscuous-режим для «отлова» пакетов (sniffing)

отключить promiscuous-режим на интерфейсе eth0

активировать интерфейс eth0 в dhcp-режиме.

вывести локальную таблицу маршрутизации

задать ip-адрес шлюза по умолчанию (default gateway)

добавить статический маршрут в сеть 192.168.0.0/16 через шлюз с ip-адресом 192.168.1.1

удалить ip-адрес шлюза по умолчанию (default gateway)

разрешить пересылку пакетов (forwarding)

отобразить имя компьютера

разрешить имя http://www.linuxguide.it хоста в ip-адрес и наоборот

отобразить состояние всех интерфейсов

отобразить статус и тип соединения для интерфейса eth0

отображает статистику интерфеса eth0 с выводом такой информации, как поддерживаемые и текущие режимы соединения

отображает все установленные сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID’ы и имена процессов, обеспечивающих эти соединения

отображает все сетевые соединения по протоколам TCP и UDP без разрешения имён в ip-адреса и PID’ы и имена процессов, слушающих порты

отобразить весь трафик на TCP-порт 80 (обычно — HTTP)

просканировать эфир на предмет, доступности беспроводных точек доступа

показать конфигурацию беспроводного сетевого интерфейса eth1

Microsoft Windows networks(SAMBA)

разрешить netbios-имя nbtscan не во всех системах ставится по-умолчанию, возможно, придётся доустанавливать вручную. nmblookup включен в пакет samba

отобразить ресурсы, предоставленные в общий доступ на windows-машине

подобно wget может получить файлы с windows-машин через smb-протокол

смонтировать smb-ресурс, предоставленный на windows-машине, в локальную файловую систему

IPTABLES (firewall)

отобразить все цепочки правил

отобразить все цепочки правил в NAT-таблице

очистить все цепочки правил в filter-таблице

очистить все цепочки правил в NAT-таблице

удалить все пользовательские цепочки правил в filter-таблице

позволить входящее подключение telnet’ом

блокировать исходящие HTTP-соединения

позволить «прокидывать» (forward) POP3-соединения

включить журналирование ядром пакетов, проходящих через цепочку INPUT, и добавлением к сообщению префикса «DROP INPUT»

включить NAT (Network Address Translate) исходящих пакетов на интерфейс eth0. Допустимо при использовании с динамически выделяемыми ip-адресами

перенаправление пакетов, адресованных одному хосту, на другой хост

Мониторинг и отладка

отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (с автоматическим обновлением данных)

отобразить запущенные процессы, используемые ими ресурсы и другую полезную информацию (единожды)

вывести PID’ы и процессы в виде дерева

отобразить дерево процессов

«убить» процесс с PID 98989 «на смерть» (без соблюдения целостности данных)

корректно завершить процесс с PID 98989

заставить процесс с PID 98989 перепрочитать файл конфигурации

отобразить список файлов, открытых процессом с PID 98989

отобразить список открытых файлов из директории /home/user1

вывести список системных вызовов, созданных и полученных процессом ls

вывести вызовы бибилотек

отображать прерывания в режиме реального времени

отобразить историю перезагрузок системы

отобразить историю регистрации пользователя user1 в системе и время его нахождения в ней

вывести загруженные модули ядра

показать состояние оперативной памяти в мегабайтах

контроль состояния жёсткого диска /dev/hda через SMART

проверить доступность SMART на жёстком диске /dev/hda

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

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

Другие полезные команды

вывести список комманд, которые так или иначе относятся к ключевым словам. Полезно, когда вы знаете что делает программа, но не помните команду

вызов руководства по работе с программой, в данном случае, — ping

отображает описание действий указанной программы

создаёт загрузочный флоппи-диск

зашифровать файл file1 с помощью GNU Privacy Guard

дешифровать файл file1 с помощью GNU Privacy Guard

загружает рекурсивно содержимое сайта http://www.example.com

загрузить файл http://www.example.com/file.iso с возможностью останова и продолжения в последствии

начать закачку в указанное время

вывести список библиотек, необходимых для работы ssh

Что такое исполняемый код? — linux

Я знаю о исполняемом коде, но я не знаю, что это такое. (Для системы) (я думаю о.sh или о чем-то еще)

Я попытался найти что-то с www.google.com, но результата не было. Может ли кто-нибудь объяснить это мне?

    9 2
  • 1 сен 2020 2020-09-01 05:53:18
  • noName

2 ответа

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

  • 1 сен 2020 2020-09-01 05:53:19
  • Darwin von Corax

Это своего рода свободный термин, но я бы это интерпретировал как программу, которая может быть выполнена.

Например, если у нас есть файл Java, он не является непосредственно исполняемым. это всего лишь куча текста для конечного пользователя. Вы не можете запустить файл напрямую, как:

И наоборот, если у вас есть сценарий sh, который может быть интерпретирован вашей оболочкой (и у нее есть соответствующие разрешения, такие как исполняемый бит), тогда он является исполняемым. Например, вы можете:

Другим примером может быть код, который был скомпилирован. Если этот файл foo.java был скомпилирован в байтовый код (при условии, что он имеет основную функцию), он может быть выполнен непосредственно (не.java файл, а выход сборки).

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

Илон Маск рекомендует:  Что такое код hw_error
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL