Você está na página 1de 21

Shell Básico

Controle de Processos

Disco CPU

Programas Processos

Processo é um programa em estado


de execução

* Para um mesmo programa podem existir vários processos


Grupo de Redes do Departamento de Informática da UFSC 1
Shell Básico
Controle de Processos

• Para um mesmo programa (entidade estática),


podem existir vários processos (entidades
dinâmicas).
• Um processo pode criar outros processos, sendo
os processos criados chamados “filhos” e o
processo criador chamado “pai”.
• Como o UNIX é um sistema operacional
multitarefa, este permite a existência de vários
processos ao mesmo tempo.

Grupo de Redes do Departamento de Informática da UFSC 2


Shell Básico
Controle de Processos

• O UNIX define que cada processo faça parte de


um grupo de processos.
• Um grupo de processos é uma coleção de um ou
mais processos.
• Cada grupo de processos tem um processo que
atua como líder.
• Uma coleção de um ou mais grupos de
processos é chamada Sessão.

Grupo de Redes do Departamento de Informática da UFSC 3


Shell Básico
Controle de Processos

Sessão UNIX

login shell Proc1 Proc2 Proc3 Proc4

Grupo de Grupo de Grupo de


processos em processos em processos em
Background Foreground Background

Grupo de Redes do Departamento de Informática da UFSC 4


Shell Básico
Controle de Processos

• O usuário pode visualizar os processos do


sistema através do comando ps.
• Existem vários parâmetros para o comando
ps, contudo, os parâmetros apresentados a
seguir, são os mais utilizados.
• Sinopse:
ps [-A] [-l] [-f]

Grupo de Redes do Departamento de Informática da UFSC 5


Shell Básico
Controle de Processos

• Opções:
• -f Apresenta a linha de comando completa
• -l Gera a saída em formato longo
• -A Inclui informações sobre todos processos do
sistema
• Sem parâmetros, ps apresenta somente os
processos do usuário na sessão, em formato
resumido.

Grupo de Redes do Departamento de Informática da UFSC 6


Shell Básico
Controle de Processos

• Exemplo:
% ps
PID TTY TIME CMD
6606 pts/1 0:00 ps
12738 pts/1 0:00 -csh

Grupo de Redes do Departamento de Informática da UFSC 7


Shell Básico
Controle de Processos

• Exemplo:
% ps -f
UID PID PPID C STIME TTY TIME CMD
rivalino 6546 16268 10 22:03:52 pts/1 0:00 ps -f
rivalino 16268 17290 0 21:46:49 pts/1 0:00 -csh

Grupo de Redes do Departamento de Informática da UFSC 8


Shell Básico
Controle de Processos

• Um outro comando muito utilizado, no controle de


execução de processos, é o comando kill.
• O objetivo do comando kill, é enviar sinais para
processos.
• Dois sinais são muito utilizados no controle de
processos, sendo eles:
• SIGKILL
• SIGTSTP (^Z)
Grupo de Redes do Departamento de Informática da UFSC 9
Shell Básico
Controle de Processos

• Sinopse:
kill [-sinal] pid ...
kill [-l]
• Sem parâmetros, kill envia o sinal 15
(terminate) para os processos especificados
em pid, possivelmente terminando sua
execução.
Grupo de Redes do Departamento de Informática da UFSC 10
Shell Básico
Controle de Processos

• Exemplo:

% kill -l

% kill -9 1234 (1234 -> É um pid qualquer )

Grupo de Redes do Departamento de Informática da UFSC 11


Shell Básico
Controle de Jobs

• Controle de jobs é uma característica introduzida pelo


BSD em meados de 1980.
• JOB = Grupo de um ou mais processos
• Jobs que executam em foreground são criados por
uma invocação normal de programa.
• Para executar um programa em background, deve-se
digitar o caracter ‘&’ no final da linha de invocação
do programa.

Grupo de Redes do Departamento de Informática da UFSC 12


Shell Básico
Controle de Jobs

• Execução em foreground

% ls /bin > sort.dat

• Execução em background
% ls /bin > sort.dat &

Grupo de Redes do Departamento de Informática da UFSC 13


Shell Básico
Controle de Jobs

• O C-Shell, juntamente com o driver de terminal,


oferecem ao usuário algumas facilidades para
controle de jobs:
• Suspender um processo que está executando em
primeiro plano (foreground).

Ctrl+Z ( ^Z)

Grupo de Redes do Departamento de Informática da UFSC 14


Shell Básico
Controle de Jobs

• Após ter suspendido um processo, o


usuário pode deixá-lo suspenso para
posterior retorno de seu processamento,
ou deixá-lo continuar sua execução em
background. Para deixar o processo
executando em background, o usuário
deve utilizar o comando bg, do Shell.

Grupo de Redes do Departamento de Informática da UFSC 15


Shell Básico
Controle de Jobs

• Sinopse:
bg %numero_do_job

• O comando jobs apresenta uma lista de


jobs do Shell corrente.
jobs

Grupo de Redes do Departamento de Informática da UFSC 16


Shell Básico
Controle de Jobs

• Exemplo:

% ls -l /bin > DIRETORIO.DAT


^Z
Stopped

Grupo de Redes do Departamento de Informática da UFSC 17


Shell Básico
Controle de Jobs

• Exemplo:
% jobs
[1] + Stopped ls -l /bin > DIRETORIO.DAT
% bg %1
[1] ls -l /bin > DIRETORIO.DAT &
% jobs
[1] Running ls -l /bin > DIRETORIO.DAT

Grupo de Redes do Departamento de Informática da UFSC 18


Shell Básico
Controle de Jobs

• Para trazer um job, suspenso ou


executando em background, para sua
execução em foreground, utiliza-se o
comando fg.
Sinopse:
fg %numero_do_job

Grupo de Redes do Departamento de Informática da UFSC 19


Shell Básico
Controle de Jobs

• Exemplo:
% jobs
[1] Running ls -l > DIRETORIO.DAT

% fg %1
ls -l > DIRETORIO.DAT

Grupo de Redes do Departamento de Informática da UFSC 20


Shell Básico
Finalizando o Shell/Sessão

• Os comandos exit e logout, permitem ao


usuário finalizar um Shell ou finalizar uma
sessão, respectivamente. Dependendo da
configuração do sistema, CTRL + D (^D)
também pode encerrar uma sessão.
Sinopse:
% exit % logout

Grupo de Redes do Departamento de Informática da UFSC 21