AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / unix / Perguntas / 415725
Accepted
Ibrahim Quraish
Ibrahim Quraish
Asked: 2018-01-09 19:24:35 +0800 CST2018-01-09 19:24:35 +0800 CST 2018-01-09 19:24:35 +0800 CST

verificando o ID do processo de /sbin/init usando ps e pgrep

  • 772

Os seguintes comandos não retornam nenhum resultado

ps -C init -o pid=
ps -C /sbin/init -o pid=
pgrep -x /sbin/init

onde, como o seguinte comando fornece a saída da seguinte forma:

$ ps -ealf | grep init
4 S root         1     0  0  80   0 -  6266 -      08:35 ?        00:00:03 /sbin/init auto noprompt

$ pidof init
1

Gostaria de saber como obter o PID do processo init usando o método ps -C e pgrep . O que estou fazendo de errado aqui?

Estou no Ubuntu 16.04.3 LTS com kernel 4.10.0-27-genérico de 32 bits

linux
  • 2 2 respostas
  • 2449 Views

2 respostas

  • Voted
  1. Best Answer
    muru
    2018-01-09T23:26:35+08:002018-01-09T23:26:35+08:00

    No Ubuntu 16.04, /sbin/inithá um link simbólico para systemd:

    $ readlink /sbin/init
    /lib/systemd/systemd
    $ sudo readlink /proc/1/exe
    /lib/systemd/systemd
    $ sudo xargs -0a /proc/1/cmdline
    /sbin/init splash
    

    ps -Clê o nome do comando em /proc/<pid>/stat. Veja man 5 proc:

    /proc/[pid]/stat
          Status information about the process.  This is used by ps(1).
          It is defined in the kernel source file fs/proc/array.c.
          ...
    
          (2) comm  %s
                    The filename of the executable, in parentheses.
                    This is visible whether or not the executable is
                    swapped out.
    

    Como o systemd suporta a reexecução de si mesmo como init (por exemplo, systemctl daemon-reexec), ele tenta mudar isso o systemdmais rápido possível, se iniciado como /sbin/init. Da fonte :

    /* If we get started via the /sbin/init symlink then we are called 'init'. After a subsequent reexecution we
     * are then called 'systemd'. That is confusing, hence let's call us systemd right-away. */
    program_invocation_short_name = systemd;
    (void) prctl(PR_SET_NAME, systemd);
    

    Portanto, ps -C initnão corresponderá a um systemd de PID 1. Com pgrep, você pode usar -f.

    $ ps -C systemd
      PID TTY          TIME CMD
        1 ?        00:00:01 systemd
     1261 ?        00:00:00 systemd
    
    $ pgrep -f /sbin/init
    1
    

    pgrep -fchecks /proc/<pid>/cmdline, e o systemd não tenta mudar isso. O segundo systemdna pssaída é o init da minha sessão de usuário.

    • 2
  2. jdwolf
    2018-01-09T23:13:32+08:002018-01-09T23:13:32+08:00

    Qualquer sistema usando systemd sem sysvcompat se comportará assim. Embora /sbin/init seja um link para systemd, o nome do comando ainda é systemd. Ao usar a opção -C do ps, isso procurará apenas systemd. Ao usar a opção -f de ps, significando que o formato completo imprime os argumentos de comando (args) em vez dos nomes de comando (comm) na coluna CMD e, de fato, o systemd está iniciando usando o arquivo/sbin/init

    Tente este comando:

    ps --pid=1 -o cmd,comm
    

    Na verdade, isso também incluiria outros argumentos, se houvesse algum, e também implica que os argumentos no Unix, graças aos links simbólicos, podem levar a nomes de comando totalmente diferentes para os quais eles apontam.

    • 1

relate perguntas

  • Existe uma maneira de fazer ls mostrar arquivos ocultos apenas para determinados diretórios?

  • Inicie/pare o serviço systemd usando o atalho de teclado [fechado]

  • Necessidade de algumas chamadas de sistema

  • astyle não altera a formatação do arquivo de origem

  • Passe o sistema de arquivos raiz por rótulo para o kernel do Linux

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Como exportar uma chave privada GPG e uma chave pública para um arquivo

    • 4 respostas
  • Marko Smith

    ssh Não é possível negociar: "nenhuma cifra correspondente encontrada", está rejeitando o cbc

    • 4 respostas
  • Marko Smith

    Como podemos executar um comando armazenado em uma variável?

    • 5 respostas
  • Marko Smith

    Como configurar o systemd-resolved e o systemd-networkd para usar o servidor DNS local para resolver domínios locais e o servidor DNS remoto para domínios remotos?

    • 3 respostas
  • Marko Smith

    Como descarregar o módulo do kernel 'nvidia-drm'?

    • 13 respostas
  • Marko Smith

    apt-get update error no Kali Linux após a atualização do dist [duplicado]

    • 2 respostas
  • Marko Smith

    Como ver as últimas linhas x do log de serviço systemctl

    • 5 respostas
  • Marko Smith

    Nano - pule para o final do arquivo

    • 8 respostas
  • Marko Smith

    erro grub: você precisa carregar o kernel primeiro

    • 4 respostas
  • Marko Smith

    Como baixar o pacote não instalá-lo com o comando apt-get?

    • 7 respostas
  • Martin Hope
    rocky Como exportar uma chave privada GPG e uma chave pública para um arquivo 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add retorna com: "Erro ao conectar ao agente: nenhum arquivo ou diretório" 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll status systemctl mostra: "Estado: degradado" 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim Como podemos executar um comando armazenado em uma variável? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S Por que /dev/null é um arquivo? Por que sua função não é implementada como um programa simples? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 Como ver as últimas linhas x do log de serviço systemctl 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - pule para o final do arquivo 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla Por que verdadeiro e falso são tão grandes? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis Substitua a string em um arquivo de texto enorme (70 GB), uma linha 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya Por que o Linux usa LF como caractere de nova linha? 2017-12-20 05:48:21 +0800 CST

Hot tag

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve