O Linux, como qualquer sistema UNIX, é um sistema operacional multitarefa, isto é, vários processos podem ser executados ao "mesmo tempo". Um processo é um programa em execução independente que tem seu próprio conjunto de recursos.
No Linux, os recursos do sistema, como a memória e os discos, são gerenciados pelo kernel, que é o núcleo do sistema operacional. Tudo mais, em execução no sistema, são processos.
Quando o usuário se conecta, seu terminal é controlado pelo seu shell, que é um processo em execução. Então, o shell cria um novo processo sempre que o usuário fornecer um comando para ser executado. O sistema operacional trabalha com uma infinidade de processos e possui alguns meios para controlá-los.
Os processos possuem um conjunto de características, as principais são:
- Proprietário do processo (UID e GID);
- Estado do processo (em espera, em execução, etc);
- Prioridade de execução;
- Recursos de memória e CPU.
Um PID (Process Identifier) é um número de identificação que o sistema dá a cada processo. Para cada novo processo, um novo número deve ser atribuído. Não se pode ter um único PID para dois ou mais processos ao mesmo tempo.
É comum que um processo já existente se duplique para que a cópia possa ser atribuída a uma nova tarefa. O processo de origem recebe o nome de "processo pai" e o novo é denominado "processo filho". Nesse ponto que o PPID (Parent Process Identifier) passa a ser usado. O PPID de um processo é o PID de seu processo pai. No Linux, o processo "pai de todos" é o init e possui o PID de número 1.
PS
O comando 'ps' informa quais os processos em execução no momento, exibindo o estado dos processos correntes. Se somente 'ps' for digitado na linha de comando, o sistema mostra os processos do usuário. Uma combinação de opções existe para obter mais detalhes.
Principais opções:
-e seleciona todos os processos
-u ou -U usuario seleciona pelo ID efetivo ou real do usuário
-t terminal seleciona pelo tty
-f ou -F listagem total ou extra total
-l formato longo
-p pid seleciona pelo PID
Observação: O comando 'ps' aceita diferentes sintaxes nas opções, mantendo compatibilidade com o UNIX, BSD e GNU. Por exemplo, 'ps aux' é reconhecido para compatibilidade com a sintaxe BSD.
TOP
O comando 'top' também exibe as tarefas do sistema mas em uma atualização que se repete. O 'top' proporciona uma visão em tempo real do sistema em execução. As informações do sistema, separadas em categorias, são exibidas ordenadamente e podem ser modificadas por sua interface interativa.
Principais comandos de interação:
l liga/desliga a exibição de "Uptime" e "Load Average"
m liga/desliga a exibição de uso de memória e swap
t liga/desliga a exibição do estado de tarefas e uso da CPU
1 liga/desliga a exibição de CPUs separadas ou unificadas
u especifica o nome do usuário
< ou > move entre as colunas para ordenação
f define quais colunas serão vistas
(digitando a letra correspondente exibe/exclui a coluna)
o define a posição das colunas visíveis
(digitando a letra correspondente em maiúscula aproxima, em minúscula afasta)
q sai do programa
Planos de Execução
Os processos que são controlados diretamente pela tela chamam-se processos em primeiro plano. Os outros processos que foram inicializados, mas que o usuário não possui controle sobre eles, chamam-se processos em segundo plano. Podemos ter um processamento em primeiro plano, porém muitos processamentos em segundo plano podem ser executados simultaneamente.
O ambiente gráfico X Window facilita a execução de diversos programas ao mesmo tempo. No console, o usuário terá que executar os programas em segundo plano, mantendo no máximo um em primeiro plano. Para executar um comando em segundo plano, coloca-se o símbolo & no final da linha de comando, por exemplo:
# gcc prog.c &
O prompt retornará e o usuário poderá continuar executando outros comandos enquanto o primeiro está sendo processado. Antes do prompt ser retornado, o shell informa o número do serviço (trabalho) que é atribuído ao comando e o PID do processo, veja um exemplo:
[1] 411
O [1] é o número do serviço e o 411 é o número de identificação do processo (PID).
BG
Se o programa já estiver sendo executado, em primeiro plano, o usuário deverá usar o comando 'bg', que põe um processo em execução em segundo plano.
Para isso digita-se 'Ctrl+Z', assim o processo recebe um sinal SIGSTOP e o shell interrompe a execução do mesmo. Então usa-se o 'bg' para colocar o processo interrompido no modo de execução em segundo plano e o processo irá continuar sua execução.
Sintaxe do comando 'bg':
bg [%id]
%id é o número do serviço (necessário ter o sinal de porcentagem antes).
Exemplo:
# bg %1
Imediatamente após o uso das teclas 'Ctrl+Z' o shell exibe o número do serviço junto com outras informações.
FG
Para retornar o processo ao primeiro plano, usa-se o comando 'fg', que transferirá o controle do terminal para o processo.
Sua sintaxe é a mesma do comando 'bg'.
fg [%id]
JOBS
Para descobrir o número do serviço atribuído ao processo usa-se o comando 'jobs'. O comando 'jobs' lista os processos que estão parados ou executando em segundo plano pelo shell. Os processos são ordenados pelo número do serviço que é atribuído ao seu comando. Veja a sintaxe:
jobs [-l]
O parâmetro -l faz com que o comando 'jobs' liste também o PID de cada processo. Em sua saída o comando 'jobs' retorna, além do número do serviço, o estado do processo, a linha digitada no comando e, opcionalmente, o PID.
Praticando
No ambiente gráfico, inicie alguma aplicação gráfica pela linha de comando, digitada no prompt do shell em uma janela de terminal. Por exemplo a calculadora gráfica do KDE (kcalc). Envie o sinal SIGSTOP para o processo da calculadora e tente operá-la no ambiente gráfico. Depois, coloque o processo no modo de execução em segundo plano e verifique sua operação. Por fim, liste os processos que estão em segundo plano.
Roteiro:
$ kcalc
Ctrl+z
$ bg %1
$ jobs
No Linux, os recursos do sistema, como a memória e os discos, são gerenciados pelo kernel, que é o núcleo do sistema operacional. Tudo mais, em execução no sistema, são processos.
Quando o usuário se conecta, seu terminal é controlado pelo seu shell, que é um processo em execução. Então, o shell cria um novo processo sempre que o usuário fornecer um comando para ser executado. O sistema operacional trabalha com uma infinidade de processos e possui alguns meios para controlá-los.
Os processos possuem um conjunto de características, as principais são:
- Proprietário do processo (UID e GID);
- Estado do processo (em espera, em execução, etc);
- Prioridade de execução;
- Recursos de memória e CPU.
Um PID (Process Identifier) é um número de identificação que o sistema dá a cada processo. Para cada novo processo, um novo número deve ser atribuído. Não se pode ter um único PID para dois ou mais processos ao mesmo tempo.
É comum que um processo já existente se duplique para que a cópia possa ser atribuída a uma nova tarefa. O processo de origem recebe o nome de "processo pai" e o novo é denominado "processo filho". Nesse ponto que o PPID (Parent Process Identifier) passa a ser usado. O PPID de um processo é o PID de seu processo pai. No Linux, o processo "pai de todos" é o init e possui o PID de número 1.
PS
O comando 'ps' informa quais os processos em execução no momento, exibindo o estado dos processos correntes. Se somente 'ps' for digitado na linha de comando, o sistema mostra os processos do usuário. Uma combinação de opções existe para obter mais detalhes.
Principais opções:
-e seleciona todos os processos
-u ou -U usuario seleciona pelo ID efetivo ou real do usuário
-t terminal seleciona pelo tty
-f ou -F listagem total ou extra total
-l formato longo
-p pid seleciona pelo PID
Observação: O comando 'ps' aceita diferentes sintaxes nas opções, mantendo compatibilidade com o UNIX, BSD e GNU. Por exemplo, 'ps aux' é reconhecido para compatibilidade com a sintaxe BSD.
TOP
O comando 'top' também exibe as tarefas do sistema mas em uma atualização que se repete. O 'top' proporciona uma visão em tempo real do sistema em execução. As informações do sistema, separadas em categorias, são exibidas ordenadamente e podem ser modificadas por sua interface interativa.
Principais comandos de interação:
l liga/desliga a exibição de "Uptime" e "Load Average"
m liga/desliga a exibição de uso de memória e swap
t liga/desliga a exibição do estado de tarefas e uso da CPU
1 liga/desliga a exibição de CPUs separadas ou unificadas
u especifica o nome do usuário
< ou > move entre as colunas para ordenação
f define quais colunas serão vistas
(digitando a letra correspondente exibe/exclui a coluna)
o define a posição das colunas visíveis
(digitando a letra correspondente em maiúscula aproxima, em minúscula afasta)
q sai do programa
Planos de Execução
Os processos que são controlados diretamente pela tela chamam-se processos em primeiro plano. Os outros processos que foram inicializados, mas que o usuário não possui controle sobre eles, chamam-se processos em segundo plano. Podemos ter um processamento em primeiro plano, porém muitos processamentos em segundo plano podem ser executados simultaneamente.
O ambiente gráfico X Window facilita a execução de diversos programas ao mesmo tempo. No console, o usuário terá que executar os programas em segundo plano, mantendo no máximo um em primeiro plano. Para executar um comando em segundo plano, coloca-se o símbolo & no final da linha de comando, por exemplo:
# gcc prog.c &
O prompt retornará e o usuário poderá continuar executando outros comandos enquanto o primeiro está sendo processado. Antes do prompt ser retornado, o shell informa o número do serviço (trabalho) que é atribuído ao comando e o PID do processo, veja um exemplo:
[1] 411
O [1] é o número do serviço e o 411 é o número de identificação do processo (PID).
BG
Se o programa já estiver sendo executado, em primeiro plano, o usuário deverá usar o comando 'bg', que põe um processo em execução em segundo plano.
Para isso digita-se 'Ctrl+Z', assim o processo recebe um sinal SIGSTOP e o shell interrompe a execução do mesmo. Então usa-se o 'bg' para colocar o processo interrompido no modo de execução em segundo plano e o processo irá continuar sua execução.
Sintaxe do comando 'bg':
bg [%id]
%id é o número do serviço (necessário ter o sinal de porcentagem antes).
Exemplo:
# bg %1
Imediatamente após o uso das teclas 'Ctrl+Z' o shell exibe o número do serviço junto com outras informações.
FG
Para retornar o processo ao primeiro plano, usa-se o comando 'fg', que transferirá o controle do terminal para o processo.
Sua sintaxe é a mesma do comando 'bg'.
fg [%id]
JOBS
Para descobrir o número do serviço atribuído ao processo usa-se o comando 'jobs'. O comando 'jobs' lista os processos que estão parados ou executando em segundo plano pelo shell. Os processos são ordenados pelo número do serviço que é atribuído ao seu comando. Veja a sintaxe:
jobs [-l]
O parâmetro -l faz com que o comando 'jobs' liste também o PID de cada processo. Em sua saída o comando 'jobs' retorna, além do número do serviço, o estado do processo, a linha digitada no comando e, opcionalmente, o PID.
Praticando
No ambiente gráfico, inicie alguma aplicação gráfica pela linha de comando, digitada no prompt do shell em uma janela de terminal. Por exemplo a calculadora gráfica do KDE (kcalc). Envie o sinal SIGSTOP para o processo da calculadora e tente operá-la no ambiente gráfico. Depois, coloque o processo no modo de execução em segundo plano e verifique sua operação. Por fim, liste os processos que estão em segundo plano.
Roteiro:
$ kcalc
Ctrl+z
$ bg %1
$ jobs
Nenhum comentário:
Postar um comentário