Linux список процессов c загрузкой процессора. Убиваем процессы в Linux — команды ps, kill и killall. Вывод информации о параметрах безопасности Ubuntu

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

Что такое "Процесс"

В первую очередь разберемся, что это такое - процесс. Выше уже было сказано, что он отвечает за выполнения программы. Это так, но точнее будет сказать, что процесс - это идентификатор программы. Дело в том, что в системе Linux могут работать несколько пользователей, которые запускают одни и те же процессы, а в некоторых случаях даже один пользователь может их открыть. Системе необходимо как-либо идентифицировать это, поэтому существует такое понятие, как PID (Process Identificator).

В системе любой процесс может выполняться в нескольких режимах:

  1. Запуск. Данный режим означает, что процесс или уже работает, или запускается.
  2. Ожидание. В данном состоянии процесс ждет получения какой-либо команды, соответственно, он не выполняется.
  3. Остановлено. Все просто - процесс был остановлен принудительно пользователем. Чтобы он продолжил свою работу, ему нужно дать соответствующий сигнал.
  4. Мертвый. Он также называется "зомби-процессом". Это когда он был убит пользователем, но все равно отображается в списке. Чаще всего это происходит из-за того, что у него были смежные процессы, которые продолжили свою работу.

Как в Linux вывести список процессов на экран

Разобравшись с основными понятиями, можно переходить непосредственно к инструкции. Ниже будет рассказано, как просмотреть список процессов Linux с помощью двух способов: через "Терминал" и с помощью программы с графическим интерфейсом.

Способ 1: "Диспетчер задач"

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

  1. Откройте системное меню.
  2. Нажмите по кнопке "Поиск".
  3. Впишите название программы "Диспетчер задач" (в некоторых дистрибутивах она называется "Системный монитор").
  4. Кликните ЛКМ по одноименной программе.

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

Способ 2: через "Терминал"

Список процессов в Linux можно также посмотреть и в "Терминале", который запускается по нажатию клавиш Ctrl+Alt+T. Для этого существует команда:

Все просто - запускаете "Терминал", вводите команду и нажимаете Enter. Однако не тут-то было. В выдаче вы увидите не полный список процессов, а лишь те, которые были запущены в рамках работы "Терминала".

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

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

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

Может показаться, что выводится мало информации - только время работы (TIME) и команда (CMD). Все можно решить с помощью опции "-f":

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

Заключение

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

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

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

Способ 1: Терминал

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

  1. Для начала запустите консоль, нажав на соответствующий значок в меню или используя комбинацию клавиш Ctrl + Alt + T .
  2. Пропишите команду ps , чтобы просто убедиться в ее работоспособности и ознакомиться с видом показанных данных без применения аргументов.
  3. Как видите, список процессов получился достаточно малым, обычно это не более трех результатов, поэтому стоит уделить время уже упомянутым аргументам.
  4. Чтобы отобразились сразу все процессы, стоит добавить -A . В таком случае команда выглядит как ps -A (A обязательно должна быть в верхнем регистре). После нажатия на клавишу Enter вы сразу увидите сводку строк.
  5. Предыдущая команда не отображает лидера группы (главный процесс из связки). Если вас интересуют и эти данные, здесь следует прописать ps -d .
  6. Получить большее количество полезной информации можно, просто добавив -f .
  7. Тогда полный список процессов с расширенной информацией будет вызываться через ps -Af . В таблице вы увидите UID — имя пользователя, запустившего процесс, PID — уникальный номер, PPID — номер родительского процесса, C — количество времени нагрузки на ЦП в процентах, когда активен процесс, STIME — время активации, TTY — номер консоли, откуда был совершен запуск, TIME — время работы, CMD — команда, запустившая процесс.
  8. Каждый процесс имеет свой PID (Proccess Identificator). Если вы хотите увидеть сводку о конкретном объекте, пропишите ps -fp PID , где PID — номер процесса.
  9. Отдельно хотелось бы затронуть и сортировку. Например, команда ps -FA --sort pcpu позволяет поставить все строки в порядке нагрузки на CPU, а ps -Fe --sort rss — по затрачиваемому объему оперативной памяти.

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

  • -H — отображение дерева процессов;
  • -V — вывод версий объектов;
  • -N — выборка всех процессов кроме заданных;
  • -С — отображение только по имени команды.

Для рассмотрения метода просмотра процессов через встроенную консоль мы выбрали именно команду ps , а не top , поскольку вторая ограничена размерами окна и не помещающиеся данные просто игнорируются, оставаясь невыведенными.

Способ 2: Системный монитор

Конечно, метод просмотра нужной информации через консоль является сложным для некоторых пользователей, но он позволяет подробно ознакомиться со всеми важными параметрами и применить необходимые фильтры. Если вы хотите просто просмотреть список запущенных утилит, приложений, а также совершить с ними ряд взаимодействий, вам подойдет встроенное графическое решение «Системный монитор» .

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

  1. Запустите «Системный монитор» любым удобным методом, например, через меню.
  2. Сразу же отобразится список процессов. Вы узнаете, сколько они потребляют памяти и ресурсов ЦП, увидите пользователя, запустившего выполнение программы, а также сможете ознакомиться с другой информацией.
  3. Щелкните правой кнопкой мыши на интересующей строке, чтобы перейти в ее свойства.
  4. Здесь отображаются практически все те же данные, которые доступны к получению через «Терминал» .
  5. Используйте функцию поиска или сортировки, чтобы найти необходимый процесс.
  6. Обратите внимание и на панель сверху — она позволяет сортировать таблицу по необходимым значениям.

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


Не смотря на свою стабильность, некоторые приложения в Linux иногда виснут. Иногда приложения перестают отзываться или просто работают так медленно, что корректно закрыть их не получается. Один из способов «убить», запущенное приложение в Linux, это использование таких команд, как kill или killall. Рассмотрим, как использовать эти команды, находить PID процесса и посылать сигнал SIGKILL.

Под процессом мы будем понимать запущенную в системе копию программы. Например, если вы открыли три окна калькулятора (например, gcalctool), это значит, что вы запустили три процесса.

Находим PID зависшего процесса

Каждый процесс в Linux имеет свой идентификатор, называемый PID. Перед тем, как выполнить остановку процесса, нужно определить его PID. Для этого воспользуемся командами ps и grep. Команда ps предназначена для вывода списка активных процессов в системе и информации о них. Команда grep запускается одновременно с ps (в канале) и будет выполнять поиск по результатам команды ps. Вывести список всех процессов можно, выполнив в командной строке:

Но, как правило, список очень большой и найти процесс, который мы хотим «убить», бывает не так просто. Здесь на помощь приходит команда grep. Например, чтобы найти информацию о процессе с именем gcalctool выполните команду:

Ps axu | grep gcalctool

Команда grep выполнит поиск по результатам команды ps и на экран будут выведены только те строки, которые содержат строку (слово) gcalctool. Здесь есть одна интересная деталь, например, если у вас не запущено приложение gcalctool, то после выполнения ps axu | grep gcalctool вы получите:

$ ps axu | grep gcalctool yuriy 25587 0.0 0.0 10636 884 pts/2 S+ 10:20 0:00 grep --color=auto gcalctool

То есть мы получили сам процесс grep, так как в качестве параметра команде мы указали слово gcalctool, и grep нашел сам себя в выводе команды ps .

Если процесс gcalctool запущен, то мы получим:

Yuriy@yuriy-NIX:~$ ps axu | grep gcalctool yuriy 25609 7.6 0.4 500840 17964 ? Sl 10:20 0:00 gcalctool yuriy 25624 0.0 0.0 10640 884 pts/2 S+ 10:21 0:00 grep --color=auto gcalctool

Здесь нас интересует строка: «yuriy 25609 7.6 0.4 500840 17964 ? Sl 10:20 0:00 gcalctool ». Число 25609 и есть идентификатор (PID) процесса gcalctool.

Есть еще один более простой способ узнать PID процесса — это команда pidof , которая принимает в качестве параметра название процесса и выводит его PID. Пример выполнения команды pidof:

$ pidof gcalctool 25609

«Убиваем» процесс командой kill

Когда известен PID процесса, мы можем убить его командой kill . Команда kill принимает в качестве параметра PID процесса. Например, убьем процесс с номером 25609:

Kill 25609

Вообще команда kill предназначена для посылки сигнала процессу. По умолчанию, если мы не указываем какой сигнал посылать, посылается сигнал SIGTERM (от слова termination — завершение). SIGTERM указывает процессу на то, что необходимо завершиться. Каждый сигнал имеет свой номер. SIGTERM имеет номер 15. Список всех сигналов (и их номеров), которые может послать команда kill, можно вывести, выполнив kill -l . Чтобы послать сигнал SIGKILL (он имеет номер 9) процессу 25609, выполните в командой строке:

Kill -9 25609

Сигнал SIGTERM может и не остановить процесс (например, при перехвате или блокировке сигнала), SIGKILL же выполняет уничтожение процесса всегда, так как его нельзя перехватить или проигнорировать.

Убиваем процессы командой killall

Команда killall в Linux предназначена для «убийства» всех процессов, имеющих одно и то же имя. Это удобно, так как нам не нужно знать PID процесса. Например, мы хотим закрыть все процессы с именем gcalctool. Выполните в терминале:

Killall gcalctool

Команда killall, также как и kill, по умолчанию шлет сигнал SIGTERM. Чтобы послать другой сигнал нужно воспользоваться опцией -s . Например:

Killall -s 9 gcalctool

Заключение

Некоторые процессы не удается остановить под обычным пользователем. Например, если процесс был запущен от имени пользователя root или от имени другого пользователя системы, то команды kill и killall нужно выполнять от имени суперпользователя, добавляя sudo (в Ubuntu):

Sudo kill 123

Бывают ситуации, когда вы работаете в графическом интерфейсе (например, GNOME) и вам не удается открыть эмулятор терминала, чтобы остановить зависший процесс. Тогда можно переключиться на виртуальную консоль клавишами Ctrl+Alt+F1 , залогиниться в ней и выполнять команды уже из нее. А потом перейти обратно, нажав Ctrl+Alt+F7 .

Справку по использованию любой команды можно получить командой man:

Man ps man grep man pidof man kill man killall

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

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

В структуре данных ядра хранится всевозможная информация о каждом процессе. К наиболее важным относят:

  • Таблицу распределения памяти
  • Текущий статус (неактивен, приостановлен, выполняется и т.п.)
  • Приоритет
  • Информацию об используемых ресурсах
  • Информацию о файлах и сетевых портах, открытых процессом
  • Маску сигналов (запись о том, какие сигналы блокируются)
  • Имя владельца процесса

Поток выполнения, обычно именуемой просто потоком, представляет результат разветвления в выполнении процесса. Поток наследует многие атрибуты своего процесса, причем в рамках одного процесса могут выполняться одновременно (параллельно) несколько потоков – такая модель выполнения получила название многопоточности. В старых однопроцессорных системах параллельное выполнение моделируется ядром, но в мультиядерных и многопроцессорных архитектурах потоки могут выполняться одновременно в различных ядрах. Такие многопоточные приложения, как BIND и Apache, извлекают максимальную пользу из мультиядерных систем, поскольку эти приложения могут обрабатывать несколько запросов одновременно.

Атрибуты процесса

Ядро назначает каждому процессу уникальный идентификатор PID . PID – Proccess ID. Большинство команд и системных вызовов, работающих с процессами, требуют указания конкретного идентификатора, чтобы был ясен контекст операции. Идентификаторы присваиваются по порядку по мере создания процессов.

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

В операции клонирования исходный процесс называют родительским, а его клон – дочерним. Помимо собственного идентификатора, каждый дочерний процесс имеет атрибут PPID (Parent Proccess ID), который совпадает с идентификатором породившего его дочернего процесса. Стоит отметить, что PPID – весьма полезная информация, если приходится иметь дело с неизвестными процессами. Отслеживание истоков процесса может облегчить понимание его назначения и значимости.

Когда система загружается, ядро самостоятельно запускает несколько процессов. Наиболее важный из них – демон init , идентификатор которого всегда равен 1. Демон init отвечает за выполнение сценариев запуска системы. Все процесса, кроме тех, что создаются ядром, являются потомками демона init.

UID (User ID) – это идентификатор пользователя, создавшего данный процесс. Менять атрибуты процесса могут только его создатель (владелец) и суперпользователь. EUID (Effective User ID) – это текущий пользовательский идентификатор процесса, предназначенный для того, чтобы определить, к каким ресурсам и файлам у процесса есть доступ в данный момент. У большинства программ значения UID и EUID одинаковы. Исключение составляют программы, у которых установлен бит смены идентификатора пользователя (setuid).

GID (Group ID) – это идентификатор группы, к которому принадлежит владелец процесса. Текущий идентификатор группы (EGID) связан с атрибутом GID так же, как и значение EUID связано с UID.

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

Жизненный цикл процесса

Создание процесса – это переход процесса из состояния “Новый” в состояние “Готов”. В момент создания процесса операционная система подготавливает структуру данных для него. Новому процессу присваивается собственный PID, и учет ресурсов ведется независимо от предка. Тот факт, что процесс существует – еще не дает ему права на использование ресурсов центрального процессора.

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

Из состояния “Запущен” есть два пути:

  1. Таймаут – процесс поработал и освободил ресурсы процессора (перешел в очередь)
  2. Ожидание – процесс переведен в режим ожидания, где ждет некоего сигнала

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

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

После того как процесс завершился – он уничтожается.

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

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

Работа с процессами в Linux

Просмотреть список всех процессов, выполняемых в текущий момент времени можно с помощью команды ps . С помощью команды ps можно получить информацию об идентификаторах, приоритете и управляющем терминале того или иного процесса. Она также позволяет выяснить объем оперативной памяти, который использует процесс, сколько времени центрального процессора заняло его выполнение, а также состояние процесса (выполняется, остановлен, простаивает и т.д.). Получить список всех процессов можно с помощью следующей команды:

user@ubuntu$ ps aux

Ключ a используется для вывода всех процессов, ключ x – отображает процессы, отсоединенные от терминала, ключ u – обеспечивает фильтрование по имени или идентификатору пользователя, который запустил программу.

Значение столбцов при выводе команды ps aux :

  1. USER – имя владельца процесса
  2. PID – идентификатор процесса
  3. %CPU – доля времени центрального процессора, которая тратится на данный процесс (в процентах)
  4. %MEM – часть реальной памяти, которая тратится на данный процесс (в процентах)
  5. VSZ – виртуальный размер процесса
  6. RSS – количество страниц памяти
  7. TTY – идентификатор управляющего терминала
  8. STAT – текущий статус процесса (R-выполняется, D-ожидает записи на диск, S-неактивен, T-приостановлен, Z-зомби)
  9. TIME – количество времени центрального процессора, затраченное на выполнение данного процесса
  10. COMMAND – имя и аргументы команды

Ниже в сокращенном виде показаны результаты работы команды ps lax. Обратите внимание на дополнительные поля PPID (идентификатор родительского процесса), NI (фактор уступчивости), WCHAN (ресурс, которого ожидает процесс).

NI по сути отображает приоритет процесса. Чем ниже значение – тем приоритетней он будет выполняться процессором. Значение варьируются от -20 до 20.

Очень удобно искать идентификатор процесса с помощью связки команд ps и grep . PS выводит список процессов, после чего передает управление команде grep, которая в свою очередь выделяет из списка искомый процесс. Пример: найдем PID для процесса cron.

Как видно PID для процесса cron равен 879.

Команда ps позволяет сделать только разовый “снимок” системы. Для динамического отслеживания процессов используют команду top .

Наиболее активные процессы находятся вверху. Команда top отображает также статистику по статусам процессов, объем используемых ресурсов ЦПУ и оперативной памяти.

Сигналы – это запросы на прерывания, реализуемые на уровне процессов.

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

Дамп памяти – это файл, содержащий образ памяти процесса

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

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

Определено свыше тридцати разных сигналов, и они находят самое разное применение. Самые распространенные из них:

  1. KILL – безусловное завершение процесса на уровне ядра
  2. STOP – приостанавливает выполнение процесса
  3. CONT – возобновляет выполнение процесса
  4. TSTP – генерируется при нажатии CTRL + Z, приостанавливает процесс пользователем
  5. TERM – запрос на завершение программы (процесс осуществляет очистку и нормально завершается)
  6. QUIT – то же самое, что и TERM + создается дамп памяти
  7. HUP – команда сброса
  8. BUS – ошибка на шине (указывает на неправильное обращение к памяти)
  9. SEGV – ошибка на сегментации (указывает на неправильное обращение к памяти)

Сигналы KILL и STOP нельзя ни перехватить, ни заблокировать, ни проигнорировать.

Команда kill используется для отправки сигналов процессу. Kill имеет следующий синтаксис:

user@ubuntu$ kill [-сигнал] PID

Для примера уничтожим процесс cron. Ранее мы выяснили, что его PID = 879.

user@ubuntu$ kill -KILL 879

Как видим процесс cron убран. Сигналы типа kill надо посылать с правами суперпользователя. Также перед тем, как убивать cron я убрал строчку respawn в конфигурационном файле cron.conf, который находится в папке /etc/init/cron.conf.

Напоследок расскажу про еще одну интересную вещь. Upstart – это система инициализации ОС, которая управляет запуском демонов в течении загрузки системе. Хранятся конфигурационные файлы Upstart в папке /etc/init. Существует несколько команд для работы с Upstart.

user@ubuntu$ status [имя процесса] – статус процесса

user@ubuntu$ start [имя процесса] – запуск процесса

user@ubuntu$ stop [имя процесса] – остановка процесса

user@ubuntu$ restart [имя процесса] – рестарт процесса

Поддержите проект

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

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

В этом отрывке рассмотрены команды управления процессами. Вы научитесь замораживать процессы, размораживать, отправлять в фоновый режим, изменять приоритет, просматривать запущенные процессы и жестоко их убивать. Введено понятие сигналов. Рассмотрены такие команды, как bg, fg, jobs, kill, nohup, nice, renice, ps и top.

Об авторах

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 . В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».