Как узнать, работает ли процесс в фоновом или переднем плане, в выводе команды «ps» или «ps -ef»?

Las banderas parecen estar definidas en el archivo /include/linux/gfp.h, y al menos en el kernel 4.9.105, el modo 0x2040d0 parecería estar asignado a:

GFP_NOTRACK | GFP_COMP | GFP_FS | GFP_IO | GFP_RECLAIMABLE

Pero si busco definiciones de banderas en Google, veo en algunas fuentes el valor 0x10 definido como GFP _ESPERA en lugar de GFP _RECLAMABLE, que parece coincidir con su fuente.

Esta discusión de LWN podría ser una lectura útil, pero la mejor descripción que puedo ver está en los comentarios en el archivo include/linux/gfp.h.

En general, estas banderas de modo modifican el funcionamiento del asignador de páginas.

  • GFP _NOTRACK :evita el seguimiento con kmemcheck.
  • GFP _COMP :dirección página compuesta metadatos
  • GFP _FS :indica que el asignador puede invocar el sistema de archivos de nivel bajo -para reclamar páginas si es necesario; si esto se borra, creo que indicaría que la asignación es para algún código de sistema de archivos que puede tener bloqueos... lo que podría ser importante cuando se usa un archivo de intercambio, por ejemplo.
  • GFP _IO :indica que el asignador puede iniciar la E/S física para reclamar páginas para satisfacer esta solicitud.
  • GFP _RECLAIMABLE :"[esto] se usa para las asignaciones de losas que especifican SLAB _RECLAIM _CUENTA y cuyas páginas se pueden liberar mediante reductores". Aparentemente, esta bandera es utilizada por asignaciones de memoria para sistemas de archivos. Básicamente, parece significar que hay una función del núcleo (un reductor )que se puede llamar para liberar o minimizar esta asignación si es necesario.

2
01.06.2019, 14:15
1 ответ

Поле statимеет дополнительный +для процессов переднего плана:

ps -e -o pid,tty,stat,cmd

Процессы переднего плана — это процессы, чей идентификатор группы процессов(pgid)является приоритетным на терминале(tpgid):

ps -e -o pid,pgid,tpgid,tty,cmd | awk '$2==$3'

when I look into the list of TTY, most of them are '?' (question marks) I wonder if that question mark means process running background

Нет, это означает, что у них нет управляющих демонов tty (или потоков ядра, ни переднего плана, ни фона ). Для списка фоновых процессов:

ps -e -o pid,pgid,tpgid,tty,cmd | awk '$3!=-1 && $2!=$3'
6
27.01.2020, 22:02

Теги

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