• Ter a capacidade de realizar gerenciamento de básico de processos;
  • Executar processos em foreground e background;
  • Fazer com que um programa continue sua execução mesmo após o logoff do usuário que executou o mesmo;
  • Monitorar processos ativos;
  • Selecionae e ordenar procesos para a visualização;
  • Enviar sinais para processos;

&

Ao executar um comando colocamos um & no final do comando para deixar o mesmo em background. Abaixo podemos observar que o comando ping esta sendo executado em background, porém o output do comando continua saindo para para o terminal. O que de certa forma pode prejudicar o usuário em digitar outros comandos, já que a intenção é mandar um determinado comando para ser execudo em background e ficar com o bash livre para a execução de outros comandos.

ping 127.0.0.1  & 
[1] 4364
PING 127.0.0.1 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_seq=1 ttl=64 time=0.041 ms
64 bytes from 127.0.0.1: icmp_seq=2 ttl=64 time=0.053 ms
64 bytes from 127.0.0.1: icmp_seq=3 ttl=64 time=0.054 ms
64 bytes from 127.0.0.1: icmp_seq=4 ttl=64 time=0.067 ms

Para contornar essa situação podemos colocar todas as saídas para o /dev/null e assim o terminal fica livre.

ping 127.0.0.1 &> /dev/null &
[1] 4364

jobs

Comando jobs exibe todos os comando em execução em background:

jobs
[1]-  Executando              ping 8.8.8.8 &> /dev/null &
[2]+  Executando              ping 127.0.0.1 &> /dev/null &

Com a opção -l são exibidos os PIDS dos processos.

jobs -l
[1]-  6005 Executando              ping 127.0.0.1 &> /dev/null &
[2]+  6007 Executando              ping 8.8.8.8 &> /dev/null &

bg

O comando bg joga um comando para background. Ao executar o comando gnome-calculator o mesmo fica ocupando a sessão do terminal impedindo a execução de outros comandos. Mas podemos fazer a uma pausa em sua execução utilizando as teclas CTRL+Z, dessa forma o comando será STOPED como podemos ver abaixo:

gnome-calulator
^Z
[3]+  Parado                  gnome-calculator

Podemos observar que o mesmo esta parado

jobs -l
[1]   6005 Executando              ping 127.0.0.1 &> /dev/null &
[2]-  6007 Executando              ping 8.8.8.8 &> /dev/null &
[3]+  6855 Parado                  gnome-calculator

Executando o comando bg o mesmo é jogado em background e sua execução é continuada.

bg

Nesse caso podemos utilizar o bg + ou ate mesmo o bg 3, como no fg.

fg

O comando fg pega um comando que esta em background e joga o mesmo para o foreground.

jobs
[1]-  Executando              ping 8.8.8.8 &> /dev/null &
[2]+  Executando              ping 127.0.0.1 &> /dev/null &
fg %1
ping 8.8.8.8 &> /dev/null

O sinal de % pode ser omitido docomando bg.

jobs
[1]-  Executando              ping 8.8.8.8 &> /dev/null &
[2]+  Executando              ping 127.0.0.1 &> /dev/null &
fg 1
ping 8.8.8.8 &> /dev/null

Podemos também chamar um determinado comando usando o sinal de + ou -. Dessa forma com o +:

fg +
ping 127.0.0.1 &> /dev/null

Com o -:

fg -
ping 8.8.8.8 &> /dev/null

kill

nohup

O comando nohup ignora o sinal de HUP (hang up), fazendo com que seja possivel executar comandos em background ate mesmo se o terminal acabar, no caso um logoff.

O comando abaixo vai continuar em execução mesmo que o terminal seja fechado ou o usuário faça logoff.

nohup ping 127.0.0.1 &> /dev/null &
[1] 4364

ps

Exibe informações sobre processos em execução. o ps pode trabalha com 3 tipos de parametros:

  • Unix98, precedidos de um - e uma letra;
  • BSD, composto apenas por letras;
  • GNU Long Options, precedido com -- e palavras;

O ps possui muitos parametros. Os principais cobrados na LPI são:

u

Com esse parametro o ps exibe as informações em modo usuário. Mostrando mais dados no output. Veja abaixo o comando ps sem parametros

	ps
PID TTY          TIME CMD
3553 pts/2    00:00:00 zsh
9808 pts/2    00:00:00 ps

Agora com o parametro u

	ps u
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
alphabr+  3553  0.0  0.0  47816  7032 pts/2    Ss   08:26   0:00 zsh
alphabr+  9879  0.0  0.0  37368  3244 pts/2    R+   10:00   0:00 ps u

Com o parametro u são exibidos o nome do usuario, memoria etc…

x

Exibe processos que não foram inicialiados pelo seu tty ou seja mais informações são exibidas.

	ps ux
alphabr+  1844  0.0  0.0  45276  4560 ?        Ss   May25   0:00 /lib/systemd/systemd --user
alphabr+  1845  0.0  0.0 245868  2656 ?        S    May25   0:00 (sd-pam)
alphabr+  1851  0.0  0.1 285192 13532 ?        SLl  May25   0:09 /usr/bin/gnome-keyring-daemon --daemonize --login
alphabr+  1857  0.0  0.2 419148 23680 ?        Ssl  May25   0:00 mate-session
alphabr+  1990  0.0  0.0  11136   312 ?        Ss   May25   0:00 /usr/bin/ssh-agent /usr/bin/dbus-launch --exit-with-session /usr/bin/im-launch mate-session
alphabr+  1993  0.0  0.0  43600  2568 ?        S    May25   0:00 /usr/bin/dbus-launch --exit-with-session /usr/bin/im-launch mate-session
alphabr+  1994  0.0  0.0  43744  4064 ?        Ss   May25   0:03 /usr/bin/dbus-daemon --fork --print-pid 5 --print-address 7 --session

Veja a coluna 7. Ela só tem a informação ? isso quer diser que os processos listados não foram originados do meu tty.

a

Com o parametro a os processos de todos os usuário são listados. Veja abaixo:

	ps uxa
root       465  0.0  0.0      0     0 ?        S<   May25   0:00 [loop3]
root       477  0.0  0.0      0     0 ?        S<   May25   0:00 [loop4]
root       480  0.0  0.0      0     0 ?        S<   May25   0:00 [loop5]
www-data   492  0.0  0.3 489340 31904 ?        S    07:35   0:00 /usr/sbin/apache2 -k start
www-data   493  0.0  0.3 488788 27992 ?        S    07:35   0:00 /usr/sbin/apache2 -k start
www-data   494  0.0  0.3 415712 31068 ?        S    07:35   0:00 /usr/sbin/apache2 -k start
www-data   495  0.0  0.3 411268 25744 ?        S    07:35   0:00 /usr/sbin/apache2 -k start
www-data   496  0.0  0.1 410448 12424 ?        S    07:35   0:00 /usr/sbin/apache2 -k start
root       523  0.0  0.1  95392  9668 ?        Ss   07:35   0:00 /usr/sbin/cupsd -l
root       524  0.0  0.1 274960  9784 ?        Ssl  07:35   0:00 /usr/sbin/cups-browsed
root       546  0.0  0.0      0     0 ?        S    May25   0:00 [irq/129-mei_me]
root       553  0.0  0.0      0     0 ?        S<   May25   0:00 [cfg80211]
root       622  0.0  0.0      0     0 ?        S    May25   0:27 [irq/130-iwlwifi]
root       706  0.0  0.0      0     0 ?        S<   May25   0:00 [kworker/u17:0]
root       814  0.0  0.0      0     0 ?        S<   May25   0:00 [hci0]
root       815  0.0  0.0      0     0 ?        S<   May25   0:00 [hci0]
root       816  0.0  0.0      0     0 ?        S<   May25   0:00 [kworker/u17:2]
root      1102  0.0  0.0  29012  2988 ?        Ss   May25   0:00 /usr/sbin/cron -f
avahi     1111  0.0  0.0  45428  4092 ?        Ss   May25   0:01 avahi-daemon: running [helix.local]

-C

Podemos ainda usar o parametro -C que lista os processos pelo nome. Veja o exemplo abaixo:

	ps u -C chrome
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
alphabr+  5857  2.5  3.3 1298572 272384 ?      SLl  08:40   3:06 /opt/google/chrome/chrome
alphabr+  5868  0.0  0.6 419828 56000 ?        S    08:40   0:00 /opt/google/chrome/chrome --type=zygote
alphabr+  5872  0.0  0.1 419828 14104 ?        S    08:40   0:00 /opt/google/chrome/chrome --type=zygote
alphabr+  5924  2.2  1.8 589204 145444 ?       Sl   08:40   2:44 /opt/google/chrome/chrome --type=gpu-process --field-trial-handle=1849731511986804062,1867325293027947282,13
alphabr+  5927  0.0  0.1 449400 14296 ?        S    08:40   0:00 /opt/google/chrome/chrome --type=-broker

top

Exibe informações sobre processos em execução.

free

Exibe informações sobre a memória volátil do sistema.

uptime

O comando uptime informa quanto tempo a máquina esta ligada.

uptime --help
Usage:
 uptime [options]

Options:
 -p, --pretty   show uptime in pretty format
 -h, --help     display this help and exit
 -s, --since    system up since
 -V, --version  output version information and exit

For more details see uptime(1).

Sem argumentos:

uptime
11:06:53 up 1 day,  2:41,  1 user,  load average: 0,07, 0,11, 0,09

COm o output mais bonito.

uptime -p
up 1 day, 2 hours, 42 minutes

Ligado desde:

uptime -s
2018-04-09 08:25:03

Para ver a versão do comando:

uptime -V
uptime from procps-ng 3.3.10

pgrep

Esse comando retorna informações a respeito de processos. Recebendo pro padrão uma string para o grep

No exemplo abaixo são retornados os PIDS dos procesos q tem chrome no nome:

	psgrep chrome
5857
5868
5872
5924
5927

Com o parametro -l mais delalhes são exibidos:

	psgrep -l chrome
5857 chrome
5868 chrome
5872 chrome
5924 chrome
5927 chrome
6004 chrome
6099 chrome
6679 chrome
7399 chrome
11441 chrome
11466 chrome
11491 chrome
11591 chrome
11730 chrome

pkill

killall

screen

Tabela de sinais

Signal Name Description
SIGHUP 1 Hangup (POSIX)
SIGINT 2 Terminal interrupt (ANSI)
SIGQUIT 3 Terminal quit (POSIX)
SIGILL 4 Illegal instruction (ANSI)
SIGTRAP 5 Trace trap (POSIX)
SIGIOT 6 IOT Trap (4.2 BSD)
SIGBUS 7 BUS error (4.2 BSD)
SIGFPE 8 Floating point exception (ANSI)
SIGKILL 9 Kill(can't be caught or ignored) (POSIX)
SIGUSR1 10 User defined signal 1 (POSIX)
SIGSEGV 11 Invalid memory segment access (ANSI)
SIGUSR2 12 User defined signal 2 (POSIX)
SIGPIPE 13 Write on a pipe with no reader, Broken pipe (POSIX)
SIGALRM 14 Alarm clock (POSIX)
SIGTERM 15 Termination (ANSI)
SIGSTKFLT 16 Stack fault
SIGCHLD 17 Child process has stopped or exited, changed (POSIX)
SIGCONTv 18 Continue executing, if stopped (POSIX)
SIGSTOP 19 Stop executing(can't be caught or ignored) (POSIX)
SIGTSTP 20 Terminal stop signal (POSIX)
SIGTTIN 21 Background process trying to read, from TTY (POSIX)
SIGTTOU 22 Background process trying to write, to TTY (POSIX)
SIGURG 23 Urgent condition on socket (4.2 BSD)
SIGXCPU 24 CPU limit exceeded (4.2 BSD)
SIGXFSZ 25 File size limit exceeded (4.2 BSD)
SIGVTALRM 26 Virtual alarm clock (4.2 BSD)
SIGPROF 27 Profiling alarm clock (4.2 BSD)
SIGWINCH 28 Window size change (4.3 BSD, Sun)
SIGIO 29 I/O now possible (4.2 BSD)
SIGPWR 30 Power failure restart (System V)