Process no Unix

0

Quando eu logar no meu terminal unix e só faço ps :

bash-4.3$ ps
  PID TTY          TIME CMD
    7 pts/0    00:00:00 sh
   16 pts/0    00:00:00 bash
   17 pts/0    00:00:00 ps

Eu sei que bash process é o shell que está sendo executado, mas e quanto a outros dois processos chamados sh e ps .

De onde eles vieram?

Executando ps -f return:

UID        PID  PPID  C STIME TTY          TIME CMD
cg           7     1  0 01:04 pts/0    00:00:00 sh
cg          16     7  0 01:04 pts/0    00:00:00 /bin/bash
cg          18    16  0 01:18 pts/0    00:00:00 ps -f

Então, isso significa que bash shell está sendo executado como processo para sh shell?

    
por Rohit Saluja 30.01.2016 / 06:58

3 respostas

2

O utilitário sh é um interpretador de linguagem de comandos que deve executar comandos lidos a partir de uma cadeia de linha de comando, a entrada padrão ou um arquivo especificado. O aplicativo deve garantir que os comandos a serem executados sejam expressos no idioma descrito em Idioma de Comando Shell

ps exibe os processos atualmente em execução. Isso faz sentido porque estamos apenas executando "sh" , "bash" e "ps" com este terminal atualmente.

    
por 30.01.2016 / 07:16
0

É um trio interessante que você tem lá. Geralmente, quando você faz login e executa ps sem flags, você obtém seu shell de login e o programa ps. Por padrão, o ps mostrará todos os processos com o mesmo EUID e mesmo tty.

Então, um shell e ps aparecendo não são muito incomuns.

Você tem duas coisas interessantes:

  • O PID pai do primeiro shell é PID 1
  • Você tem dois shells

No meu sistema, o ID do processo pai é para o processo de log-in ou o processo do terminal da janela. Não sei como você conseguiu um PPID de 1.

É como se você estivesse logado e seu shell de login é sh, então você digitou bash.

    
por 30.01.2016 / 10:50
0

Você tem 3 processos listados.

O problema sobre sh no Unix é que é o shell Bourne. Muitos Unix tem sh como shell padrão, e depois disso oferece o Bourne novamente shell (bash) sobre ele, pois oferece muitas opções apenas sh não.

Se você percebeu, o PID do seu sh é menor que o seu bash. O bash está rodando depois do sh, provavelmente acabou.

ps aparece porque quando ele foi executado, o comando estava em uso, então o processo estava na máquina.

    
por 30.01.2016 / 13:43

Tags