0 Compartilhamentos 233 Views

13 comandos Linux bastante úteis para quem administra um servidor

27 de agosto de 2014

Já publicamos aqui no Código Fonte alguns textos contendo comandos Linux bastante úteis, como por exemplo o “find“, o “TAR” e o “Mysqlcheck“. Mas, sendo o Linux um sistema operacional tão complexo, com tantas distribuições diferentes e utilizado em inúmeros servidores por aí, nunca é demais conhecermos mais alguns comandos, não é?

Até mesmo porque a quantidade de comandos, parâmetros adicionais e formas de utilização é enorme. Desta vez vamos apresentar uma lista com 13 comandos extremamente úteis, principalmente para quem administra servidores. Vamos lá:

Keys

1) iostat

O iostat é um comando que exibe estatísticas a respeito da utilização da CPU, além de estatísticas de I/O relativas a partições, drives e arquivos de sistema:

[email protected] [~]# iostat
Linux 2.6.32-431.20.3.el6.x86_64 (host.nomedohost.net)    08/05/2014      _x86_64(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
8.35      0.51         2.02        1.56      0.03   87.54

Device:            tps   Blk_read/s   Blk_wrtn/s            Blk_read            Blk_wrtn
vda                 23.68      1227.09            623.76        1375075711        698980108

Simplificando mais, podemos ainda utilizar o comando juntamente com o parâmetro -c, para exibir dados somente a respeito da CPU:

[email protected] [~]# iostat -c
Linux 2.6.32-431.20.3.el6.x86_64 (host.nomedohost.net)    08/05/2014      _x86_64(4 CPU)

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
8.35      0.51         2.02        1.56      0.03   87.54

Ou com o parâmetro -d, para a exibição de dados apenas dos drives:

[email protected] [~]# iostat -d
Linux 2.6.32-431.20.3.el6.x86_64 (host.nomedohost.net)    08/05/2014      _x86_64(4 CPU)

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
vda               23.67         1226.22        623.39 1375169119  699116668

2) mpstat

Um pouco semelhante ao iostat, o mpstat exibe estatísticas sobre todos os processadores existentes na máquina:

[[email protected]] ~ >> mpstat
Linux 2.6.18-194.32.1.el5PAE (host.nomedohost.com.br)    08/05/2014

01:19:19 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle
intr/s
01:19:19 PM      all     0.84       2.12     0.64       5.80     0.34    0.28      0.00  89.99
119.83

Para melhorar ainda mais as coisas e obter resultados mais detalhados, podemos utilizar o comando da seguinte maneira, para obter informações individualizadas, sobre cada um dos processadores porventura existentes na máquina:

[[email protected]] ~ >> mpstat -P ALL
Linux 2.6.18-194.32.1.el5PAE (host.nomedohost.com.com.br)    08/05/2014

01:22:40 PM  CPU   %user   %nice    %sys %iowait    %irq   %soft  %steal   %idle
intr/s
01:22:40 PM  all    0.84    2.12    0.64    5.80    0.34    0.28    0.00   89.99
119.84
01:22:40 PM    0    0.94    2.49    0.30    1.61    0.00    0.01    0.00   94.65
31.45
01:22:40 PM    1    0.68    1.10    1.26   17.79    0.93    0.31    0.00   77.93
41.80
01:22:40 PM    2    0.49    3.06    0.34    1.65    0.01    0.07    0.00   94.37
4.59
01:22:40 PM    3    1.25    1.82    0.64    2.13    0.41    0.72    0.00   93.02
41.99

OBS: no resultado acima temos quatro processadores, sendo que “0” é o primeiro deles.

3) shred

O comando shred serve para apagar arquivos com segurança, regravando a área na qual eles se encontravam com dados aleatórios, de maneira tal a tornar impossível a sua recuperação:

OBS: não se esqueça de realizar as devidas substituições em “nomedoarquivo” e “extensão” (por exemplo: install.php).

Se utilizarmos o parâmetro -v, poderemos então acompanhar todo o processo:

[email protected] [/home/usertest]# shred -v deletar2.txt
shred: deletar2.txt: pass 1/3 (random)…
shred: deletar2.txt: pass 2/3 (random)…
shred: deletar2.txt: pass 3/3 (random)…
[email protected] [/home/usertest]#

Para ainda mais segurança, podemos também realizar a regravação com dados aleatórios, o número de vezes que desejarmos. 10, 50, 100, etc. Vamos utilizar “10” no exemplo abaixo, para apagar o arquivo “codigofonte.txt”:

[email protected] [/home/usertest]# shred -n 10 -v -u codigofonte.tx
shred: codigofonte.txt: pass 1/10 (random)…
shred: codigofonte.txt: pass 2/10 (249249)…
shred: codigofonte.txt: pass 3/10 (ffffff)…
shred: codigofonte.txt: pass 4/10 (db6db6)…
shred: codigofonte.txt: pass 5/10 (aaaaaa)…
shred: codigofonte.txt: pass 6/10 (random)…
shred: codigofonte.txt: pass 7/10 (000000)…
shred: codigofonte.txt: pass 8/10 (555555)…
shred: codigofonte.txt: pass 9/10 (924924)…
shred: codigofonte.txt: pass 10/10 (random)…
shred: codigofonte.txt: removing
shred: codigofonte.txt: renamed to 000000000000000
shred: 000000000000000: renamed to 00000000000000
shred: 00000000000000: renamed to 0000000000000
shred: 0000000000000: renamed to 000000000000
shred: 000000000000: renamed to 00000000000
shred: 00000000000: renamed to 0000000000
shred: 0000000000: renamed to 000000000
shred: 000000000: renamed to 00000000
shred: 00000000: renamed to 0000000
shred: 0000000: renamed to 000000
shred: 000000: renamed to 00000
shred: 00000: renamed to 0000
shred: 0000: renamed to 000
shred: 000: renamed to 00
shred: 00: renamed to 0
shred: codigofonte.txt: removed
[email protected] [/home/usertest]#

4) top

Outro comando extremamente útil, o top exibe informações a respeito da atividade do processador, incluindo tarefas do kernel. Tudo em tempo real.  Ele também exibe em percentuais a utilização da CPU e da memória. Digamos que com o top você tem em tela algo como um reflexo do seu sistema, com dados em tempo real.

A tela com os dados é exibida a partir do momento em que teclamos <ENTER> e é constantemente atualizada. Para sair, basta digitar “Q” (com outro <ENTER>, em seguida):

top – 15:14:39 up 3 days,  2:00,  1 user,  load average: 0.45, 0.47, 0.47
Tasks: 195 total,   2 running, 191 sleeping,   0 stopped,   2 zombie
Cpu(s): 22.9%us,  4.2%sy,  0.0%ni, 72.4%id,  0.3%wa,  0.0%hi,  0.1%si,  0.1%st
Mem:   3207236k total,  2914536k used,   292700k free,   207768k buffers
Swap:  2047992k total,   320068k used,  1727924k free,  1572396k cached

PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
2610 mysql     20   0 2434m 198m 4100 S 27.3  6.3 243:24.45 mysqld
15040 usertest  20   0  173m  63m 7236 R 14.6  2.0   0:00.44 php
15035 ardgms24  20   0     0    0    0 Z  1.0  0.0   0:00.03 php <defunct>
15036 ardgms24  20   0     0    0    0 Z  1.0  0.0   0:00.03 php <defunct>
1869 nobody    20   0  388m  60m  328 S  0.3  1.9  10:58.03 memcached
13676 nobody    20   0 73876 3480 2020 S  0.3  0.1   0:00.25 httpd
13877 nobody    20   0 73764 3404 2040 S  0.3  0.1   0:00.22 httpd
14388 nobody    20   0 73768 3408 2056 S  0.3  0.1   0:00.13 httpd
14418 nobody    20   0 73900 3356 2024 S  0.3  0.1   0:00.11 httpd
14419 nobody    20   0 73756 3340 2024 S  0.3  0.1   0:00.12 httpd
14437 nobody    20   0 73856 3336 2008 S  0.3  0.1   0:00.11 httpd
14962 nobody    20   0 73728 3140 1964 S  0.3  0.1   0:00.01 httpd
15006 root      20   0 15036 1304  944 R  0.3  0.0   0:00.02 top
1 root      20   0 19364  568  340 S  0.0  0.0   0:01.59 init
2 root      20   0     0    0    0 S  0.0  0.0   0:00.01 kthreadd
3 root      RT   0     0    0    0 S  0.0  0.0   0:03.24 migration/0
4 root      20   0     0    0    0 S  0.0  0.0   0:13.60 ksoftirqd/0
5 root      RT   0     0    0    0 S  0.0  0.0   0:00.00 migration/0

5) Free

O comando free está relacionado à memória. Ele mostra a quantidade total de memória livre e em uso, incluindo a memória swap

[email protected] [~]# free
total       used       free     shared    buffers     cached
Mem:       3207236    2851772     355464          0     206448    1563048
-/+ buffers/cache:    1082276    2124960
Swap:      2047992     321104    1726888
[email protected] [~]#

linux-baby-tux

6) Find

O comando find busca por arquivos e diretórios no servidor inteiro, desde que assim especificado, claro, como no exemplo abaixo:

[email protected] [/]# find / -name codigofonte.php
/home/usertest/codigofonte.php
[email protected] [/]#

Para buscar sem diferenciar maiúsculas de minúsculas, o comando é o seguinte:

[email protected] [/]# find / -iname codigofonte.php
/home/usertest/Codigofonte.php
/home/usertest/codigofonte.php
[email protected] [/]#

Podemos refinar a busca, ou realizá-la dentro de diretórios específicos:

[email protected] [/]# find /home/usertest  -iname codigofonte.txt
/home/usertest/public_html/codigofonte.txt
/home/usertest/Codigofonte.txt
[email protected] [/]#

Observe que no exemplo acima utilizamos o parâmetro “-iname”, para que o resultado contivesse tanto arquivos contendo letras maiúsculas quanto letras minúsculas. Pode-se utilizar da seguinte maneira, claro:

E assim, somente o arquivo “codigofonte.txt”, no caso, será localizado:

[email protected] [/]# find /home/usertest  -name codigofonte.txt
/home/usertest/public_html/codigofonte.txt
[email protected] [/]#

E assim por diante.

7) ps

O comando ps exibe os processos que estão rodando no sistema:

[email protected] [/]# ps
PID TTY          TIME CMD
1979 pts/0    00:00:00 ps
31957 pts/0    00:00:00 bash
[email protected] [/]#

Uma maneira mais completa de utilização é:

Assim, o comando exibirá cada processo rodando no sistema, com seus respectivos IDs, claro, e separando os resultados em várias telas. Para prosseguir, basta ir teclando <ENTER>:

[email protected] [/]# ps -A |more
PID TTY          TIME CMD
1 ?        00:00:01 init
2 ?        00:00:00 kthreadd
3 ?        00:00:02 migration/0
4 ?        00:00:10 ksoftirqd/0
5 ?        00:00:00 migration/0
6 ?        00:00:00 watchdog/0
7 ?        00:00:04 migration/1
8 ?        00:00:00 migration/1
9 ?        00:00:03 ksoftirqd/1
10 ?        00:00:00 watchdog/1
11 ?        00:00:04 migration/2
12 ?        00:00:00 migration/2
13 ?        00:00:02 ksoftirqd/2
14 ?        00:00:00 watchdog/2
15 ?        00:00:04 migration/3
16 ?        00:00:00 migration/3
17 ?        00:00:01 ksoftirqd/3
18 ?        00:00:00 watchdog/3
19 ?        00:00:13 events/0
20 ?        00:00:10 events/1
21 ?        00:00:11 events/2
22 ?        00:00:17 events/3
23 ?        00:00:00 cgroup
–More–

Cada <ENTER> faz com que o comando passe para o próximo processo, e assim por diante.

8) kill

Este é um comando extremamente útil e que pode, ou deve, ser utilizado geralmente após a utilização do ps (acima). O kill literalmente “mata” os processos que estão rodando. Talvez possamos fazer aqui uma analogia com sistemas Windows e a finalização de processos através do gerenciador de tarefas.

Após encontrar o “id” de um processo com o comando ps, “mate-o”, ou seja, encerre-o, com o kill:

Lembrando que no exemplo acima “13” representa o processo que será encerrado e, lembrando também, cuidado: este é apenas um exemplo.

9) traceroute

O traceroute tem seu correspondente no Windows, que é o “tracert”. Da mesma maneira, temos aqui um comando que traça a rota a partir do servidor até um determinado host, remoto. Você pode utilizar tanto o IP, caso o saiba, quanto o endereço:

[email protected] [/]# traceroute uol.com.br
traceroute to uol.com.br (200.221.2.45), 30 hops max, 60 byte packets

E assim por diante.

10) uptime

O comando uptime exibe desde quando o sistema está rodando, funcionando, considerando inclusive quaisquer reboots que tenham sido executados. Por exemplo, se você reiniciou seu servidor há pouco tempo, há poucos dias, isto será demonstrado (como no exemplo abaixo).

O comando também mostra o número de usuários “logados” e também informações a respeito do load:

[email protected] [/]# uptime
10:26:50 up 2 days, 14:11,  1 user,  load average: 0.85, 0.67, 0.60
[email protected] [/]#

Shell

11) w

O comando w lista os usuários atualmente “logados” no servidor, bem como seus respectivos IPs, nomes de login e horários do login. Com ele também podemos saber o que os usuários estão fazendo, quais processos, etc:

[email protected] [/]# w
10:34:55 up 2 days, 14:19,  1 user,  load average: 0.71, 0.56, 0.55
USER     TTY      FROM              [email protected]   IDLE   JCPU   PCPU WHAT
root     pts/0    endereçoip   09:51    0.00s  0.07s  0.00s w
[email protected] [/]#

12) ls

Este comando lista arquivos e diretórios.

Existem várias maneiras de utilizá-lo. Da forma abaixo, os resultados são melhores apresentados, em uma lista, que pode ser longa, com permissões e outras informações separadas, em colunas:

[email protected] [/home/usertest]# ls -l
total 96
drwx–x–x  12 usertest usertest 4096 Aug 26 09:59 ./
drwx–x–x. 33 root     root     4096 Aug 20 05:57 ../
lrwxrwxrwx   1 usertest usertest   34 Jun 25 10:36 access-logs -> /usr/local/apa
che/domlogs/usertest/
-rw——-   1 usertest usertest   28 Jun 30 15:10 .bash_history
-rw-r–r–   1 usertest usertest   18 Jul 18  2013 .bash_logout
-rw-r–r–   1 usertest usertest  176 Jul 18  2013 .bash_profile
-rw-r–r–   1 usertest usertest  124 Jul 18  2013 .bashrc
-rw-r–r–   1 root     root       19 Aug 18 15:22 codigofonte.php
-rw-r–r–   1 root     root       19 Aug 18 15:22 Codigofonte.php
-rw-r–r–   1 root     root       18 Aug 18 15:22 Codigofonte.txt
-rw——-   1 usertest usertest   19 Jun 25 10:31 .contactemail
drwxr-xr-x   2 usertest usertest 4096 Jun 25 10:31 .cpanel/
-rw-r—–   1 usertest usertest    1 Jun 26 02:12 cpbackup-exclude.conf
-rw-r–r–   1 root     root     4096 Aug  5 13:58 deletar2.txt
-rw-r–r–   1 usertest usertest   12 Jun 30 15:09 .dns
drwxr-x—   2 usertest mail     4096 Jun 25 10:31 etc/
-rw-r–r–   1 usertest usertest  140 Jun 25 10:31 .gemrc
drwxr-x—   2 usertest nobody   4096 Jun 25 10:31 .htpasswds/
drwx——   2 usertest usertest 4096 Jun 25 10:36 logs/
drwxr-x–x   8 usertest usertest 4096 Jun 25 10:31 mail/
drwxrwxr-x   2 usertest usertest 4096 Jun 30 15:09 perl5/
drwxr-xr-x   3 usertest usertest 4096 Jun 25 10:31 public_ftp/
drwxr-x—   3 usertest nobody   4096 Jul  2 11:40 public_html/
drwxr-xr-x   5 usertest usertest 4096 Jun 26 02:12 ssl/
drwxr-xr-x   2 usertest usertest 4096 Jun 25 10:31 tmp/
lrwxrwxrwx   1 usertest usertest   11 Jun 25 10:31 www -> public_html/
[email protected] [/home/usertest]#

Já com o exemplo abaixo, são listados todos os diretórios de maneira recursiva:

Já agora temos um exemplo de utilização que exibe o tamanho alocado para cada um dos arquivos, em blocos:

Com o exemplo abaixo, temos uma ordenação pelo horário da última modificação:

13) cp

Quem não precisa copiar arquivos de um local para outro? É justamente isto o que o comando cp faz. Copia arquivos de um diretório para outro:

Exemplo:

[email protected] [/]# cp /home/usertest/codigofonte.php /home/usertest/public_html/
[email protected] [/]#

E assim o arquivo “codigofonte.php” foi copiado de “/home/usertest/” para “/home/usertest/public_html/”.

Para que um alerta seja exibido no prompt avisando de que o arquivo já existe no destino, e perguntando se você deseja sobrescrevê-lo, basta utilizar o comando da maneira abaixo. Assim, você não corre nenhum risco, pois através do modo de utilização acima, caso exista um arquivo com o mesmo nome, este será automaticamente substituído.

Caso deseje mais segurança, portanto, utilize o modo abaixo no prompt, respondendo com y (de “yes”, ou sim) ou n (de “no”, ou não):

Veja o resultado:

[email protected] [/]# cp -i /home/usertest/codigofonte.php /home/usertest/public_html/
cp: overwrite /home/usertest/public_html/codigofonte.php'? y
[email protected] [/]#

Você pode utilizar o comando cp de diversas maneiras, claro. Você pode estar dentro do diretório origem e simplesmente digitar o seguinte, para copiar os arquivos para algum outro diretório:

Exemplo:

[email protected] [/home/usertest]# cp -i codigofonte.php /home/usertest/public_html/
cp: overwrite
/home/usertest/public_html/codigofonte.php’? y
[email protected] [/home/usertest]#

E assim, o arquivo codigofonte.php, que se encontrava na pasta “/home/usertest” (onde estávamos), foi copiado para “/home/usertest/public_html/”.

OBS: a qualquer momento, para saber em que diretório você está, basta digitar o comando pwd:

[email protected] [/home/usertest]# pwd
/home/usertest
[email protected] [/home/usertest]#

Com o comando cp, você também pode copiar pastas inteiras. Para isto, entretanto, é necessário utilizar o parâmetro adicional “-a”, da maneira abaixo:

Veja um exemplo:

[email protected] [/home/usertest]# cp -a /home/usertest/ /
[email protected] [/home/usertest]#

Assim, todas as pastas, subpastas e arquivos de “/home/usertest” foram copiados para “/”. Neste exemplo, o diretório “/usertest” agora existe dentro de “/”, com todo o seu conteúdo.

Também podemos copiar arquivos para um outro diretório e renomeá-los durante o processo. Basta fazer da seguinte maneira:

[email protected] [/home/usertest]# cp codigofonte.php /home/usertest/public_html/tecnologiaaz.php
cp: overwrite `/home/usertest/public_html/tecnologiaaz.php’? y
[email protected] [/home/usertest]#

Finalizando

É claro que sempre existem variantes e uma miríade de opções, e no vasto mundo do Linux, sempre há algo mais a se aprender. Pretendemos postar mais artigos como este, e esperamos que você esteja gostando. Lembre-se, caso precise de um bom cliente SSH gratuito, dê uma olhada no “Bitvise SSH Client“.

Você pode se interessar

Manifesto Ágil: Retrospectivas Lúdicas
Artigos
11 visualizações
Artigos
11 visualizações

Manifesto Ágil: Retrospectivas Lúdicas

Plataformatec - 14 de janeiro de 2019

Conquistando melhoria contínua através de uma estruturar lúdica, estimulando o pensamento crítico e a atenção dos membros durante a dinâmica.

Agile // Dicionário do Programador
Vídeos
1,655 compartilhamentos6,807 visualizações
Vídeos
1,655 compartilhamentos6,807 visualizações

Agile // Dicionário do Programador

Thais Cardoso de Mello - 14 de janeiro de 2019

Agile é o termo falado nesse Dicionário do Programador, conheça mais sobre o assunto.

Promoções de Jogos do Final de Semana (11/01)
Notícias
18 visualizações
Notícias
18 visualizações

Promoções de Jogos do Final de Semana (11/01)

Carlos L. A. da Silva - 11 de janeiro de 2019

Confira as melhores ofertas de jogos de PC para o final de semana.

Deixe um Comentário

Your email address will not be published.

Mais publicações

God of War: segredos dos bastidores do melhor jogo de 2018
Artigos
17 visualizações
17 visualizações

God of War: segredos dos bastidores do melhor jogo de 2018

Carlos L. A. da Silva - 11 de janeiro de 2019
As 5 Melhores Linguagens para 2019 // Vlog #86
Vídeos
1,655 compartilhamentos6,815 visualizações
1,655 compartilhamentos6,815 visualizações

As 5 Melhores Linguagens para 2019 // Vlog #86

Thais Cardoso de Mello - 10 de janeiro de 2019
Como acessar fotos curtidas por qualquer usuário no Facebook
Dicas
19 visualizações
19 visualizações

Como acessar fotos curtidas por qualquer usuário no Facebook

Carlos L. A. da Silva - 9 de janeiro de 2019
O que Isaac Asimov imaginou para 2019?
Artigos
25 visualizações
25 visualizações

O que Isaac Asimov imaginou para 2019?

Carlos L. A. da Silva - 8 de janeiro de 2019