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

С их имен я предполагаю, что "Oracle Обновление Релиза 6 Linux 4 Начальных загрузки изображение ISO для x86_64" является нормальным установщиком CD/DVD. Просто загрузите это, запишите его на CD или DVD и загрузитесь от него.

3
21.03.2015, 17:05
3 ответа

Если у вас htop , вы можете нажать Shift + k для переключения дисплея потоков ядра. Если вы нажмете F5 для режима дерева, все они должны появиться как дочерние элементы kthreadd .

Есть некоторые видимые различия между потоком ядра и потоком пользовательского пространства:

  • / proc / $ pid / cmdline пуст для потоков ядра - это - это метод , используемый ps и top для различения потоков ядра.

  • Символьная ссылка / proc / $ pid / exe не имеет цели для потоков ядра - что имеет смысл, поскольку у них нет соответствующего исполняемого файла в файловой системе .

Более конкретно, системный вызов readlink () возвращает ENOENT («Нет такого файла или каталога»), несмотря на то, что сама ссылка существует, чтобы обозначать тот факт, что исполняемый файл для этого процесса не существует (и никогда не существовал).

Таким образом, надежный способ проверить наличие потоков ядра должен заключаться в вызове readlink () в / proc / $ pid / exe и проверке его кода возврата. . Если это успешно, то $ pid - это пользовательский процесс. Если это не удается с ENOENT , то дополнительный stat () в / proc / $ pid / exe должен отличать случай Поток ядра из процесса, который только что завершился.

  • / proc / $ pid / status отсутствует несколько полей для большинства потоков ядра, а точнее несколько полей, относящихся к виртуальной памяти.

Приведенный выше ответ от Определение потоков ядра

Другой способ отличить потоки ядра от других процессов - запустить top -c . Из руководства вверху :

3.КОМАНДА - Имя команды или Командная строка
Отображает командную строку, используемую для запуска задачи, или имя связанной с программой. Вы переключаетесь между командной строкой и именем с помощью 'c', которое одновременно является параметром командной строки и интерактивной командой - mand.

Если вы выбрали отображение командных строк, процессы без командной строки (например, потоки ядра) будут отображаться только с именем программы в скобках , как в этом примере:
[mdrecoveryd]

Running ps aux также отображает процессы, которые были запущены без команды, в квадратных скобках (и будет иметь пустой / proc / [pid] / cmdline файл).

Пример:

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root        19  0.0  0.0      0     0 ?        S<   Mar02   0:00 [kworker/1:0H] 

См. Пакет procps-3.2.8 файл /proc/readproc.h .

// Basic data structure which holds all information we can get about a process.
// (unless otherwise specified, fields are read from /proc/#/stat)
//
// Most of it comes from task_struct in linux/sched.h
5
27.01.2020, 21:19

Да, в / proc / [pid] / state Существует вход UID. Если запись равна:

UID:    0    0    0    0
UID: real UID, effective UID, saved set UID, file system UID

, что означает, что процесс относится к корню.

Кроме того, большинство корневых процессов имеют родительский PID (PPID) в диапазоне от 0 до 2.

-2
27.01.2020, 21:19

Вы не можете. «Системный процесс» не является четко определенным понятием. «Критически важно для системы» не является универсальным, недвижимостью да или нет.

Я пишу этот пост на настольном ПК. У этого есть Apache, но это не «критично для системы» на этой машине - я иногда использую его только для тестирования вещей. С другой стороны, на веб-сервере Public или Enterprise-Facing Apache будет важно. И наоборот, сервер X не является критическим на большинстве серверов, но на рабочей станции это необходимо.

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

«Процессы, которые в противном случае будут существовать на свежей установке ОС, и перед установкой любого приложения или услуг» также не является четко определенной концепцией. Услуги могут быть критическими для конкретной системы, даже если они не являются частью установки по умолчанию (E.g. Apache). И наоборот, услуги могут быть включены в установку по умолчанию, но не имеют решающее значение для конкретной системы (например, служба управления сетью в системе без сетевого подключения).

На Android, который не является системой Linux (это другая система с использованием ядра Linux), вы можете назвать все возможное, запущенное / System A «Системный процесс». Это определение несколько значимо на Android, в отличие от UNIX, потому что он четко отделяет базовую систему от установленных пользователем приложений. Базовая система включает предустановленные приложения (телефон, Gmail и т. Д.), с другим выбором в зависимости от поставщика телефона (производителя или оператора сети). Посуто по этому определению заключается в том, что приложения, запускаемые / данные , но для которых существует запись в / System / App , также являются «системой» приложениями по этому определению, просто те, которые были модернизирован.

1
27.01.2020, 21:19

Теги

Похожие вопросы