Gestión de tareas y procesos de Linux (ver comando de proceso, proceso de control, gestión de tareas programadas periódicas y únicas)

Directorio de artículos


Uno, ver el proceso

  • Un programa es una colección estática de código de máquina ejecutable y datos (código almacenado estáticamente en un archivo) almacenado en un medio de almacenamiento externo (como disco duro, CD)
  • Un proceso es un programa de computadora que se ejecuta dinámicamente en la CPU y la memoria.
  • En el sistema Linux, se pueden crear uno o más procesos después de que se inicia cada programa

1. Ver información de proceso-ps

  • El comando ps es la herramienta de visualización de procesos más común en los sistemas Linux y se utiliza principalmente para mostrar instantáneas estáticas que contienen información completa sobre los procesos en ejecución.
  • A través de diferentes opciones de comando, puede ver de forma selectiva la información del proceso

1.1 Método 1: ps -aux

  • a: Muestra toda la información del proceso en el terminal actual, incluidos los procesos de otros usuarios. Cuando se combina con la opción "x", mostrará toda la información del proceso en el sistema.
  • u: Salida de información del proceso en un formato orientado al usuario
  • x: muestra la información del proceso del usuario actual en todos los terminales
  • La información del proceso se mostrará en forma de una lista simple
##例:
[root@localhost ~]# ps -aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  2.6  0.3  46344  6908 ?        Ss   16:47   0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2  0.0  0.0      0     0 ?        S    16:47   0:00 [kthreadd]
root          3  0.0  0.0      0     0 ?        S    16:47   0:00 [kworker/0:0]
root          4  0.0  0.0      0     0 ?        S<   16:47   0:00 [kworker/0:0H]
##省略...
sustantivo Explicación
USUARIO Usuario del proceso
PID ID del proceso
%UPC El porcentaje de CPU ocupada por el proceso.
%HOMBRES Porcentaje de memoria ocupada
VSZ La cantidad de memoria virtual utilizada por el proceso (KB)
RSS La cantidad de memoria física utilizada por el proceso (KB)
TYY El nombre de la terminal que inició el proceso; si el proceso no se inicia desde la terminal, se mostrará como "?"
STAT El estado del proceso (D: estado inactivo no interrumpible; R: estado en ejecución; S: estado inactivo y se puede despertar; s, proceso principal; T: estado detenido, que puede estar suspendido en segundo plano o el proceso está en un estado de depuración de seguimiento ; Z: proceso zombie, el proceso ha finalizado, pero la mayoría de los programas todavía están en la memoria; <: estado de alta prioridad; +: proceso en primer plano) 7
COMIENZO El proceso se activó a la hora de inicio.
HORA El tiempo que el proceso realmente usa la CPU para ejecutarse
MANDO Comando de inicio de proceso
  • Explicación del término (proceso zombie):
    un proceso ha finalizado, pero aún ocupa memoria, que también se llama zombie

1.2 Método 2: ps -elf

  • e: muestra toda la información del proceso en el sistema
  • l: muestra la información del proceso en formato largo
  • f: use formato completo para mostrar la información del proceso
  • Mostrará la información del proceso en el sistema en un formato largo y contendrá contenido más rico
##例:
[root@localhost ~]# ps -elf
F S UID         PID   PPID  C PRI  NI ADDR SZ WCHAN  STIME TTY          TIME CMD
4 S root          1      0  0  80   0 - 32068 ep_pol 16:47 ?        00:00:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
1 S root          2      0  0  80   0 -     0 kthrea 16:47 ?        00:00:00 [kthreadd]
1 S root          4      2  0  60 -20 -     0 worker 16:47 ?        00:00:00 [kworker/0:0H]
1 S root          5      2  0  80   0 -     0 worker 16:47 ?        00:00:00 [kworker/u256:0]
##省略...
sustantivo Explicación
F Etiqueta del sistema asignada por el kernel al proceso
S Estado del proceso
UID El usuario que inició estos procesos
PID ID de proceso del proceso
PPID El número de proceso del proceso principal (si el proceso fue iniciado por otro proceso)
C Utilización de CPU en el ciclo de vida de un proceso
PRI La prioridad del proceso (cuanto mayor sea el número, menor será la prioridad)
NI El valor de la modestia se utiliza para participar en la determinación de la prioridad.
ADDR Dirección de memoria del proceso
SZ Si el proceso se intercambia, el tamaño aproximado del espacio de intercambio requerido
WCHAN Si el proceso está en suspensión, muestra el nombre de la función del sistema en suspensión
ESTIMADOS Hora del sistema cuando comenzó el proceso
TTY Dispositivo terminal cuando comienza el proceso
HORA Tiempo de CPU acumulado necesario para ejecutar el proceso
CMD Comando de inicio de proceso

En el sistema CentOs7, tty1 representa la interfaz gráfica, tty2-tty6 representa la interfaz de texto, puede usar Ctrl + Alt + (F1-F6) para cambiar

1.3 Otros ejemplos

  • Al ejecutar directamente el comando ps sin ninguna opción, solo se mostrarán los procesos abiertos en la sesión de usuario actual
[root@localhost ~]# ps
   PID TTY          TIME CMD
  1803 pts/0    00:00:00 bash
  2219 pts/0    00:00:00 ps

  • Debido a la gran cantidad de procesos que se ejecutan en el sistema, cuando necesite consultar la información de un determinado proceso, puede combinar el símbolo de tubería y el comando grep para filtrar
[root@localhost ~]# ps aux | grep bash        ##过滤出包含“bash”的信息
root        666  0.0  0.0 115408   940 ?        S    16:47   0:00 /bin/bash /usr/sbin/ksmtuned
root       1803  0.0  0.1 116328  3020 pts/0    Ss   16:47   0:00 -bash
root       2256  0.0  0.0 112828   976 pts/0    S+   17:10   0:00 grep --color=auto bash

2. Ver información del proceso en la parte superior

  • Utilice el comando ps para ver la información de un proceso estático y no puede retroalimentar continuamente el estado de ejecución del proceso actual
  • Si desea mostrar la información de estado de cada proceso en un modo de actualización dinámica, puede usar este comando
  • Actualizar cada tres segundos de forma predeterminada

2.1 Diagrama de ejemplo

[root@localhost ~]# top

marca

2.2 Información de tareas del sistema (primera línea) y proceso (segunda línea)

Información relacionada sentido / /
18:55:08 hora del sistema Tareas Número total de procesos
hasta 2:07 Tiempo de funcionamiento del sistema corriendo Número de procesos en ejecución
1 usuario Número de usuarios actualmente conectados dormido Número de procesos durmientes
promedio de carga: 0.00,0.01,0.05 Carga del sistema, es decir, el número de tareas procesadas por el sistema en una unidad de tiempo. Los siguientes tres valores son el valor promedio desde 1 minuto, 5 minutos y 15 minutos hasta el presente detenido Número de procesos abortados
/ / zombi Número de procesos zombies

2.3 CPU (tercera línea), información de memoria (cuarta línea) e información de espacio de intercambio (quinta línea)

Información relacionada sentido / / / /
nos Ocupación del usuario total Espacio total de memoria total Espacio de intercambio total
su Ocupación del núcleo gratis Memoria libre gratis Espacio de intercambio gratuito
ni Ocupación de programación prioritaria usado Memoria usada usado Espacio de intercambio utilizado
carné de identidad CPU inactiva, para comprender el porcentaje de CPU inactiva, consulte principalmente la parte% id buff / cahe La suma de los búferes de la memoria física y la memoria de intercambio aprovechar Mem Espacio físico disponible
Washington E / S esperando a ser ocupada / / / /
Hola Ocupación de interrupción de hardware / / / /
y Ocupación de interrupciones de software / / / /
S t Ocupación de virtualización / / / /

2.4 Explicación detallada de cada columna en el área de información del proceso

información Explicación
PID Identificacion de proceso
USUARIO Nombre de usuario del propietario del proceso
PR prioridad
NI Valor de modestia, valor negativo indica alta prioridad, valor positivo indica baja prioridad
VIRT La cantidad total de memoria virtual utilizada por el proceso, en kb
RES El tamaño de la memoria física utilizada por el proceso, en kb
SHR Tamaño de memoria compartida, unidad kb
S Estado del proceso
%UPC Porcentaje de tiempo de CPU desde la última actualización hasta el presente
% MEM El porcentaje de memoria física utilizada por el proceso.
TIEMPO + El tiempo total de CPU utilizado por el proceso, en unidades de 1/100 de segundo
MANDO Nombre de comando / línea de comando

2.5 TOP comandos de uso común

mando Explicación
PAGS Ordenar por porcentaje de uso de CPU
METRO Ordenar por tamaño de memoria residente
norte Ordenar por hora de inicio
C Alternar la visualización del nombre del comando y la línea de comando completa
h Se puede obtener información de ayuda en línea para el programa principal
k Ingrese el número PID del proceso especificado según se le solicite y presione Enter para terminar el proceso correspondiente
q Salir del programa superior
(Numero 1 Muestra el número y el estado de la CPU

3. Ver información de proceso-pgrep

  • Cuando se usa el comando ps para consultar un determinado proceso, a menudo es necesario combinar el comando grep para filtrar los resultados de salida, pero esto es muy inconveniente de usar, y el comando "pgrep" es una herramienta especial que se usa para consultar información específica del proceso.
  • 查询进程名中包含“log”的进程及其PID号(若没有“-l”则只输出PID号)
[root@localhost ~]# pgrep -l "log"
288 xfs-log/sda2
477 xfs-log/sda1
481 xfs-log/sda5
595 systemd-logind
601 abrt-watch-log
628 abrt-watch-log
1028 rsyslogd
  • 还可以结合“-U”选项查询特定用户的进程、“-t”选项查询在特定终端运行的进程
##例如:查询由用户 teacher 在 tty1 终端上运行的进程及PID号
[root@localhost ~]# pgrep -l -U teacher -t tty2

4.查看进程树-pstree

  • pstree命令可以输出Linux系统中各进程的树形结构,更加直观地判断出各进程之间的相互关系(如父、子进程)
  • pstree命令默认情况下只显示各进程的名称,结合“-p”选项使用时可以同时列出对应的PID号
  • 结合“-u”选项可以列出对应的用户号
  • 结合“-a”选项可以列出完整的命令信息
  • 执行“pstree -aup”命令可以查看当前系统的进程树,包括各进程对应的PID号、用户名、完整命令等信息
  • 也可以只查看属于指定用户的进程树结构,只要指定用户名作为参数即可
[root@localhost ~]# pstree -ap teacher

二、控制进程

1.进程的启动方式

  • 在Linux系统中,可以由用户手工启动或者按预定计划调度启动新的进程

1.1 手工启动

  • 根据该进程是否需要占用当前命令终端,手工启动分为以下两类
  • 前台启动:用户输入命令,直接执行程序,但得等到该进程结束并退出才能继续执行其他命令
  • 后台启动:在命令行尾加入“&”符号;无需等待,适用于等待时间较长的操作
[root@localhost ~]# cp /dev/cdrom mycd.iso &
[1] 4226
##输出信息包括后台任务序号和PID号

1.2 调动启用进程

  • 在服务器维护工作中,经常需要执行一些比较费时而且较占用资源的任务(如数据备份),这些任务更适合在相对空闲的时候(如半夜)进行
  • 但这样需要用户进行事前调度安排并指定任务运行的时间
  • 调度启动的计划任务进程均在后台运行,不占用用户的命令终端
  • 使用“at”命令,设置一次性计划任务(如24:00分时重启网络服务)
  • 使用crontab命令,设置周期性计划任务(如每周五24:00时备份数据库)

2.进程的前后台调度

2.1 挂起当前进程

  • Ctrl+Z(组合键)
  • 将当前进程挂起,即调入后台并停止执行
[root@localhost ~]# jobs -l
[1]+  5449 停止                  vim /etc/sysconfig/network-scripts/ifcfg-ens33

2.2 查看后台的进程

  • jobs
  • 查看当前终端中在后台运行的进程任务;结合“-l”选项可以同时显示出该进程的PID号
[root@localhost ~]# jobs -l
[1]+  5449 停止                  vim /etc/sysconfig/network-scripts/ifcfg-ens33

2.3 将后台的进程恢复运行

  • bg:将后台暂停执行的任务恢复运行并继续在后台执行
  • fg:将后台暂停执行的任务恢复运行并恢复到前台运作
  • 除非后台中的任务只有一个,否则bg和fg命令都需要指定后台进程的任务编号作为参数
  • 例如:“fg 1(任务编号)”

3.终止进程执行

  • 当用户在前台执行某个进程时,可以用Ctrl+C组合键强制中断当前正在执行的命令

3.1 kill

  • kill用于终止指定PID号的进程,需要使用进程的PID号作为参数
[root@localhost ~]# pgrep -l "sshd"        ##查询目标进程PID号
1026 sshd
1798 sshd
[root@localhost ~]# kill 1026        ##终止指定PID的进程
[root@localhost ~]# pgrep -l "sshd"
1798 sshd        ##再查询时,发现1026没有了,进程已成功终止
  • 若该进程不响应终止信号,则结合“-9”选项可以强制终止
  • 强制终止可能导致数据丢失,慎用
[root@localhost ~]# vim tmpfile        ##打开vim并挂起以作测试

[1]+  已停止               vim tmpfile
[root@localhost ~]# jobs -l        ##查询目标进程PID号
[1]+  2028 停止                  vim tmpfile
[root@localhost ~]# kill 2028        ##尝试直接终止进程
[root@localhost ~]# jobs -l        ##查询后发现并未退出
[1]+  2028 停止                  vim tmpfile
[root@localhost ~]# kill -9 2028        ##结合“-9”选项试试,强制终止目标进程
[root@localhost ~]# jobs -l        ##没了,成功
[1]+  2028 已杀死               vim tmpfile

3.2 killall

  • 用于结束系统中多个相关名称的进程
  • 也可以结合“-9”选项
  • 例:执行“killall -9 vim”命令可将所有名为vim的进程全部强行终止
[root@localhost ~]# vim testfile1

[1]+  已停止               vim testfile1
[root@localhost ~]# vim testfile2

[2]+  已停止               vim testfile2
[root@localhost ~]# vim testfile3

[3]+  已停止               vim testfile3
[root@localhost ~]# jobs -l
[1]   2130 停止                  vim testfile1
[2]-  2131 停止                  vim testfile2
[3]+  2132 停止                  vim testfile3
[root@localhost ~]# killall -9 vim
[1]   已杀死               vim testfile1
[2]-  已杀死               vim testfile2
[3]+  已杀死               vim testfile3

3.3 pkill

  • 根据进程的名称、运行该进程的用户、进程所在的终端等多种属性终止特定的进程
  • 与“pgrep”命令选项类似,如“-U(指定用户名)”、“-t(指定终端)”

三、一次性计划任务-at

  • 设置一次性计划时,在at命令中依次指定计划执行任务的时间、日期作为参数
  • 确认后进入带“at>”提示符的任务编辑器界面,每行设置一条执行命令,可以依次设置多条语句,最后按Ctrl+D组合键提交任务
  • 注:计划执行任务的时间、日期必须安排在当前系统时间之后
  • 对应条件:对应系统服务为atd,必须已经运行
  • 示例:
##设置在当天的20:00时关机
[root@localhost ~]# at 20:00
at> init 0<EOT>        ##Ctrl+D组合键提交任务(按2次)
job 7 at Tue Dec  1 20:00:00 2020
  • “atq”命令可以进行查询,已执行过的不会再出现在列表中
[root@localhost ~]# atq
7	Tue Dec  1 20:00:00 2020 a root
  • "atrm"命令可以删除指定编号的at任务
[root@localhost ~]# atrm 7
[root@localhost ~]# atq
[root@localhost ~]# 

四、计划任务管理-crontab

  • 使用crontab命令设置的计划任务可以按预设的周期重复执行,可以大大减轻设置重复性系统管理任务的操作
  • 由软件包cronie提供crontab工具、系统服务crond和配置文件/etc/crontab
  • 前提条件:对应的系统服务crond必须已经运行

1.配置文件和目录

  • crond通过多个目录和文件设置计划任务,不同类型的任务由不同的配置文件来设置

1.1 系统任务配置文件,位于文件:/etc/crontab

  • 设置的是维护Linux系统所需的任务,由Linux系统及相关程序在安装时自动设置,不建议用户修改

1.2 La configuración predeterminada del sistema, ubicada en el directorio: /etc/cron.*/

  • Después de instalar el paquete crontabs, algunos directorios de tareas programados establecidos por el sistema por defecto se promoverán en este directorio, y se configurará qué trabajo hace el sistema cada hora y cada día.

1.3 Configuraciones definidas por el usuario, ubicadas en el archivo: / var / spool / cron /

  • El plan cron establecido por el usuario mediante el comando crontab se guardará en este directorio (se generará un archivo con el mismo nombre de usuario en este directorio)

2. Administra las tareas programadas de crontab

  • -u: Especifica a qué usuario pertenece la tarea programada. De forma predeterminada, es para el usuario actual (yo); generalmente, solo el usuario root tiene permiso para usar esta opción
  • Edite la tarea programada
    crontab -e [-u nombre de usuario] (cuando no hay -u, el objeto predeterminado es el usuario actual)
  • Ver la tarea programada
    crontab -l [-u nombre de usuario]
  • Eliminar la tarea programada
    crontab -r [-u nombre de usuario]

3. El formato de la configuración de la tarea crontab

marca

Campo Descripción
minuto El valor es cualquier número entero de 0 a 59
hora El valor es cualquier número entero de 0 a 23
fecha El valor es cualquier número entero de 1 a 31
mes El valor es cualquier número entero de 1 a 12
semana El valor es cualquier número entero de 0 a 7, 0 o 7 representa el domingo
mando Comando o script de programa para ejecutar
  • Recuerde la fórmula (tenga en cuenta):
    día, mes y semana de tiempo compartido

4. Método de representación especial del valor temporal

  • "*" significa cualquier momento dentro del rango
  • "," significa varios puntos de tiempo discretos en un intervalo
  • "-" significa un intervalo de tiempo continuo
  • "/" indica la frecuencia de tiempo del intervalo
  • Ejemplo:
0 17 * * 1-5          ##周一到周五每天17:00
30 8 * * 1,3,5        ##每周(一、三、五)的8:30
0 8-18/2 * * *        ##8点到18点之间每2个小时
0 * */3 * *           ##每3天
  • Debido a que no se requiere inicio de sesión de usuario para realizar tareas, se recomienda utilizar rutas absolutas para evitar la situación en la que los comandos no se pueden ejecutar debido a la falta de rutas de ejecución.
  • Al configurar la tarea para que se ejecute cada minuto, el campo "minuto" también debe completarse con un valor de tiempo específico en lugar del "*" predeterminado, de lo contrario, la tarea se ejecutará cada minuto

5. Otro

  • El comando crontab establece la opción "-l" puede ver la lista de tareas programadas del usuario actual. Para los usuarios raíz, también puede combinar la opción "-u" para ver las tareas programadas de otros usuarios
  • Cuando necesite eliminar una tarea programada, puede editarla con la opción "-e"
  • Otros ejemplos:
5 * * * * ls        ##每个小时的第5分钟执行一次ls命令
30 5 * * * ls       ##每天的5:30执行ls命令
30 7 8 * * ls       ##每个月8号的7:30执行ls命令
30 5 8 6 * ls       ##每个6月8号的5:30执行ls命令
30 6 * * 0 ls       ##每个周日的6:30执行ls命令
30 3 10,20 * * ls   ##每个月10号和20号的3:30执行ls命令
25 8-11 * * * ls    ##每天8点到11点的第25分时执行ls命令
*/15 * * * * ls     ##每隔15分钟执行一次ls命令
30 6 */10 * * ls    ##月中的每隔10天的6:30时执行一次ls命令

Supongo que te gusta

Origin blog.csdn.net/weixin_51486343/article/details/110439089
Recomendado
Clasificación