Gerenciamento de processos e tarefas do Linux (ver comando de processo, processo de controle, gerenciamento de tarefa única e periódica agendada)

Artigo Diretório


Um, veja o processo

  • Um programa é uma coleção estática de código de máquina executável e dados (código armazenado estaticamente em um arquivo) armazenados em um meio de armazenamento externo (como disco rígido, CD)
  • Um processo é um programa de computador executado dinamicamente na CPU e na memória
  • No sistema Linux, um ou mais processos podem ser criados após cada programa ser iniciado

1. Ver informações do processo-ps

  • O comando ps é a ferramenta de visualização de processo mais comum em sistemas Linux. Ele é usado principalmente para exibir instantâneos estáticos contendo informações completas sobre cada processo em execução.
  • Por meio de diferentes opções de comando, você pode visualizar seletivamente as informações do processo

1.1 Método 1: ps -aux

  • a: Exibir todas as informações de processo no terminal atual, incluindo processos de outros usuários. Quando combinado com a opção "x", todas as informações de processo no sistema serão exibidas
  • u: informações do processo de saída em um formato orientado ao usuário
  • x: Exibe as informações do processo do usuário atual em todos os terminais
  • As informações do processo serão exibidas na forma de uma lista simples
##例:
[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]
##省略...
substantivo Explicação
DO UTILIZADOR Usuário de processo
PID ID do processo
%CPU A porcentagem de CPU ocupada pelo processo
%HOMENS Porcentagem de memória ocupada
VSZ A quantidade de memória virtual usada pelo processo (KB)
RSS A quantidade de memória física usada pelo processo (KB)
TYY O nome do terminal que iniciou o processo; se o processo não for iniciado a partir do terminal, será exibido como "?"
ESTADO O estado do processo (D: estado dormente não interrompível; R: estado de execução; S: estado dormente e pode ser despertado; s, processo pai; T: estado parado, que pode ser suspenso em segundo plano ou o processo está em um estado de depuração de rastreamento ; Z: processo zumbi, o processo foi encerrado, mas a maioria dos programas ainda está na memória; <: estado de alta prioridade; +: processo em primeiro plano) 7
COMEÇAR A hora em que o processo foi acionado
TEMPO O tempo que o processo realmente usa a CPU para executar
COMANDO Comando de início de processo
  • Explicação do termo (processo zumbi):
    um processo terminou, mas ainda ocupa memória, também chamado de zumbi

1.2 Método 2: ps -elf

  • e: Exibir todas as informações do processo no sistema
  • l: Exibir informações do processo em formato longo
  • f: Use o formato completo para exibir as informações do processo
  • Irá exibir as informações do processo no sistema em um formato longo e conter um conteúdo mais 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]
##省略...
substantivo Explicação
F Etiqueta do sistema atribuída pelo kernel ao processo
S Status do processo
UID O usuário que iniciou esses processos
PID ID de processo do processo
PPID O número do processo pai (se o processo foi iniciado por outro processo)
C Utilização da CPU no ciclo de vida de um processo
PRI A prioridade do processo (quanto maior o número, menor a prioridade)
NI O valor de modéstia é usado para participar na determinação da prioridade
ADDR Endereço de memória do processo
SZ Se o processo for trocado, o tamanho aproximado do espaço de troca necessário
WCHAN Se o processo está em hibernação, exibe o nome da função do sistema em hibernação
ESTIMATIVAS Hora do sistema quando o processo começou
TTY Dispositivo terminal quando o processo começa
TEMPO Tempo cumulativo de CPU necessário para executar o processo
CMD Comando de início de processo

No sistema CentOs7, tty1 representa a interface gráfica, tty2-tty6 representa a interface de texto, você pode usar Ctrl + Alt + (F1-F6) para alternar

1.3 Outros exemplos

  • Ao executar diretamente o comando ps sem nenhuma opção, apenas os processos abertos na sessão de usuário atual serão exibidos
[root@localhost ~]# ps
   PID TTY          TIME CMD
  1803 pts/0    00:00:00 bash
  2219 pts/0    00:00:00 ps

  • Devido ao grande número de processos em execução no sistema, quando você precisa consultar as informações de um determinado processo, você pode combinar o símbolo do pipe e o 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 informações do processo - topo

  • Use o comando ps para ver as informações estáticas do processo e não pode fornecer feedback continuamente sobre o status de execução do processo atual
  • Se você deseja exibir as informações de status de cada processo em um modo de atualização dinâmica, você pode usar este comando
  • Atualizar a cada três segundos por padrão

2.1 Diagrama de exemplo

[root@localhost ~]# top

marca

2.2 Tarefa do sistema (primeira linha) e informações do processo (segunda linha)

Informação relacionada significado / /
18:55:08 hora do sistema Tarefas Número total de processos
até 2:07 Tempo de funcionamento do sistema corrida Número de processos em execução
1 usuário Número de usuários conectados no momento dormindo Número de processos de sono
carga média: 0,00,0,01,0,05 Carga do sistema, ou seja, o número de tarefas processadas pelo sistema em uma unidade de tempo, os três valores a seguir são o valor médio de 1 minuto, 5 minutos e 15 minutos até o presente parado Número de processos abortados
/ / zumbi Número de processos zumbis

2.3 CPU (terceira linha), informações de memória (quarta linha) e informações de espaço de troca (quinta linha)

Informação relacionada significado / / / /
nos Ocupação do usuário total Espaço total de memória total Espaço de troca total
dele Ocupação do kernel livre Memoria livre livre Espaço de troca grátis
ni Ocupação de agendamento prioritário usava Memoria usada usava Trocar espaço usado
Eu iria CPU ociosa, para entender a porcentagem de CPU ociosa, olhe principalmente para a parte% id buff / cahe A soma dos buffers de memória física e memória swap disponibilidade Mem Espaço físico disponível
wa I / O esperando para ser ocupado / / / /
Oi Ocupação de interrupção de hardware / / / /
e Ocupação de interrupção de software / / / /
st Ocupação de virtualização / / / /

2.4 Explicação detalhada de cada coluna na área de informações do processo

em formação Explicação
PID Id de processo
DO UTILIZADOR Nome de usuário do proprietário do processo
PR prioridade
NI Valor de modéstia, valor negativo indica alta prioridade, valor positivo indica baixa prioridade
VIRT A quantidade total de memória virtual usada pelo processo, em kb
RES O tamanho da memória física usada pelo processo, em kb
SHR Tamanho da memória compartilhada, unidade kb
S Status do processo
%CPU Porcentagem de tempo de CPU desde a última atualização até o presente
% MEM A porcentagem de memória física usada pelo processo
TIME + O tempo total de CPU usado pelo processo, em unidades de 1/100 de segundo
COMANDO Nome do comando / linha de comando

2.5 PRINCIPAIS comandos comumente usados

comando Explicação
P Classificar por porcentagem de uso da CPU
M Classificar por tamanho da memória residente
N Classificar por hora de início
c Alterna a exibição do nome do comando e linha de comando completa
h Obtenha informações de ajuda online para o melhor programa
k Insira o número PID do processo especificado conforme solicitado e pressione Enter para encerrar o processo correspondente
q Sair do programa principal
(Número 1 Exibir o número e status da CPU

3. Ver informações do processo-pgrep

  • Ao usar o comando ps para consultar um determinado processo, muitas vezes é necessário combinar o comando grep para filtrar os resultados de saída, mas isso é muito inconveniente de usar, e o comando "pgrep" é uma ferramenta especial usada para consultar informações específicas do processo
  • 查询进程名中包含“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 As configurações padrão do sistema, localizadas no diretório: /etc/cron.*/

  • Depois que o pacote crontabs for instalado, alguns diretórios de tarefas agendadas definidos pelo padrão do sistema serão promovidos neste diretório, e o trabalho que o sistema faz a cada hora e todos os dias é definido.

1.3 Configurações definidas pelo usuário, localizadas no arquivo: / var / spool / cron /

  • O plano cron definido pelo usuário usando o comando crontab será salvo neste diretório (um arquivo com o mesmo nome de usuário será gerado neste diretório)

2. Gerenciar tarefas agendadas do crontab

  • -u: especifica a qual usuário a tarefa agendada pertence. Por padrão, é para o usuário atual (próprio); geralmente, apenas o usuário raiz tem permissão para usar esta opção
  • Edite a tarefa agendada
    crontab -e [-u nome de usuário] (quando não há -u, o objeto padrão é o usuário atual)
  • Visualize a tarefa agendada
    crontab -l [-u nome de usuário]
  • Exclua a tarefa agendada
    crontab -r [-u nome de usuário]

3. O formato da configuração da tarefa crontab

marca

Campo Descrição
minuto O valor é qualquer número inteiro de 0 a 59
hora O valor é qualquer número inteiro de 0 a 23
encontro O valor é qualquer número inteiro de 1 a 31
mês O valor é qualquer número inteiro de 1 a 12
semana O valor é qualquer número inteiro de 0 a 7, 0 ou 7 representa domingo
comando Comando ou script de programa para executar
  • Lembre-se da fórmula (tenha em mente):
    dia, mês e semana de tempo compartilhado

4. Método especial de representação do valor do tempo

  • "*" significa qualquer momento dentro do intervalo
  • "," significa vários pontos de tempo discretos em um intervalo
  • "-" significa um intervalo de tempo contínuo
  • "/" indica a frequência de tempo do intervalo
  • Exemplo:
0 17 * * 1-5          ##周一到周五每天17:00
30 8 * * 1,3,5        ##每周(一、三、五)的8:30
0 8-18/2 * * *        ##8点到18点之间每2个小时
0 * */3 * *           ##每3天
  • Como nenhum login de usuário é necessário para executar tarefas, é recomendado usar caminhos absolutos para evitar a situação em que os comandos não podem ser executados devido à falta de caminhos de execução
  • Ao definir a tarefa para ser executada a cada minuto, o campo "minuto" também deve ser preenchido com um valor de tempo específico em vez do padrão "*", caso contrário a tarefa será executada a cada minuto

5. Outro

  • A opção crontab command set "-l" pode ver a lista de tarefas agendadas do usuário atual. Para usuários root, você também pode combinar a opção "-u" para ver as tarefas agendadas de outros usuários
  • Quando precisar excluir uma tarefa agendada, você pode editá-la com a opção "-e"
  • Outros exemplos:
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命令

Acho que você gosta

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