Nesta aula do Curso de Linux Básico | XP IT Cursos, aprenderemos os seguintes tópicos sobre o comando kill e sinais (signals).
- Árvore de Processos | Processos Pai x Filhos
- Comando pstree : Lista a árvore de processos Linux
- O Comando Kill e os Sinais
- SIGINT | SIGTSTP | SIGCONT
- Terminando processos com Kill e sinal SIGTERM
- Destruindo processos com Kill SIGKILL (kill -9)
- O Problema do SIGKILL (kill -9)
- Como encerrar corretamente seus processos Linux com Kill
🎦 Vídeo Aula: Como utilizar o kill e sinais no gerenciamento de processos Linux : Módulo 07 – Aula 22 👩🏻💻🐧
[Canal Web Mundi.com + XP IT Cursos]
Esta aula faz parte do Curso Linux Básico da XP IT Cursos, uma plataforma ensino completa que irá proporcionar seu aprendizado de uma forma rápida e consistente.
XP IT Cursos
A XP IT Cursos oferece uma oferta a preços acessíveis a Plataforma de Aprendizado com Vídeo Aulas do WebMundi.com + Trilha de Aprendizagem, Material didático em PDF, exercícios de fixação / Revisão de Conteúdo, questionários e o final do curso o Certificado de Conclusão.
+ Garanta seu desconto exclusivo em : https://www.xpitcursos.com.br
Como utilizar o kill e sinais no gerenciamento de processos Linux : Roteiro
Árvore de Processos | Processos Pai x Filhos
Em nossas aulas anteriores, vimos que os processos são instancias de programas que executam no Linux.
Os processos podem executar em primeiro plano em Primeiro Plano (Foreground – Processo interativo) ou em Segundo Plano (Background – processo não interativo ou automático)
Além disso, os processos podem ser divididos em :
- Processo pai : Criador de outros processos em tempo de execução
- Processo filho : um processo criado por outros processos.
No Linux, todo processo tem um processo pai, exceto o primeiro processo init (ou systemd) com um PID de 0 ou PID 1.
Os processos filho também têm seus próprios processos filho formando uma verdadeira Família de processos.
Comando pstree : Lista a árvore de processos Linux
Para entender os processos, ou melhor, a arvore de processos pai x filho, existe o comando pstree.
Este comando serve para visualizar os processos e subprocessos em execução no terminal, assim podemos visualizar a “família” ou a “arvore genealogia dos processos que estão sendo executados no sistema Linux.
O pstree lista os processos em execução usando o formato de árvore.
Esta é a sintaxe deste comando:
PSTREE : Sintaxe
pstree [opções]
Algumas opções e argumentos do comando
- H processo : destaca o processo especificado dentro da estrutura de árvore;
- n : ordena a saída pelos números dos PIDs dos processos.
- p : mostra os PIDs dos processos.
- s : mostra os processos -pai do processo especificado.
- V ou −−version: mostra informações sobre o utilitário.
- usuário : mostra apenas os ramos com os processos inicializados pelo usuário especificado.
Exemplos
- O comando a seguir, exibe os processos e seus PIDs, onde os ramos de um nível são ordenados por ordem crescente dos PIDs.
pstree -np
E repare que na primeira linha do resultado do comando, temos o systemd que é o processo pai de todos os demais processos, depois temos outras ramificações de processos que chamam outros processos e assim por diante.
- Para ver a árvore com os processos inicializados pelo usuário webmundi, basta digitar:
pstree webmundi
- Agora vou digitar um ps comum para descobrir PID do shell bash usado no terminal, veja no meu caso que ele tem PID igual a 3973. Na sequencia, vamos usar o comando pstree com o parâmetro -s para mostrar os processos -pai do processo bash
ps
pstree -s 3973
Exemplo de resultado
webmundi@webmundi-VirtualBox:~$ pstree -s 3973
systemd───systemd───gnome-terminal-───bash───pstree
Veja que ele mostra toda a arvore dos processos relacionados com o shell bash
Vamos a mais alguns exemplos práticos, vamos abrir o navegador chrome e no terminal executar o comando:
pgrep -l chr
Exemplo de Resultado:
webmundi@webmundi-VirtualBox:~$ pgrep -l chr
4072 chrome
4082 chrome_crashpad
4084 chrome_crashpad
4090 chrome
4091 chrome
4095 chrome
4113 chrome
4117 chrome
4126 chrome
4153 chrome
4160 chrome
4226 chrome
Agora vamos ver a arvore de processos do navegador Chrome
pstree -s 4072
Exemplo de Resultado:
webmundi@webmundi-VirtualBox:~$ pstree -s 4072
systemd───systemd───chrome─┬─2*[cat]
├─chrome───chrome───6*[{chrome}]
├─chrome─┬─chrome─┬─chrome───3*[{chrome}]
│ │ ├─chrome───10*[{chrome}]
│ │ ├─chrome───9*[{chrome}]
│ │ └─chrome───8*[{chrome}]
│ └─nacl_helper
├─chrome───6*[{chrome}]
└─21*[{chrome}]
Veja que o comando pstree -s trouxe todos os processos e subprocessos que são necessários para executar o navegador Chrome em sua sessão Linux.
É importante entender este conceito de processo pai e filho, pois agora vamos conhecer o comando kill que normalmente é usado para finalizar processos no Linux, então vamos lá
O Comando Kill e os Sinais
O comando kill que traduzindo para o português é matar, normalmente é utilizado para finalizar processos no Linux através do terminal.
Mas como veremos em breve, o kill não serve somente para matar processos do sistema.
A verdade do kill é que este comando envia um sinal a um processo Linux.
O que é um sinal no Linux ?
O sinal faz parte de um mecanismo de comunicação do Linux que é usado para notificar um processo da ocorrência de um evento.
Ou seja, os Processos do Linux ficam monitorando ou escutando sinais que podem ser enviados pelo kernel do sistema ou pelos usuários através do terminal. E a partir deste sinal recebido uma determinada operação pode ser realizada no processo.
E quais tipos de sinais podem ser enviados ?
Através do comando kill podemos enviar sinais para finalizar um processo, pausa-lo ou até mesmo continuar a execução de um processo pausado.
Então podemos concluir que o comando kill, faz muito mais do que apenas matar processos, ele serve para controlar a execução de processos através do envio de sinais.
Mas vamos ao terminal entender os sinais que podemos utilizar com o kill
Você pode obter mais informações sobre sinais do Linux em:
https://www.gnu.org/software/libc/manual/html_node/Standard-Signals.html
Listar sinais disponíveis com kill : Linux
Para listar os sinais que podemos utiliza com o kill, digitamos :
kill -l
E temos um resultado como este:
webmundi@webmundi-VirtualBox:~$ kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
11) SIGSEGV 12) SIGUSR2 13) SIGPIPE 14) SIGALRM 15) SIGTERM
16) SIGSTKFLT 17) SIGCHLD 18) SIGCONT 19) SIGSTOP 20) SIGTSTP
21) SIGTTIN 22) SIGTTOU 23) SIGURG 24) SIGXCPU 25) SIGXFSZ
26) SIGVTALRM 27) SIGPROF 28) SIGWINCH 29) SIGIO 30) SIGPWR
31) SIGSYS 34) SIGRTMIN 35) SIGRTMIN+1 36) SIGRTMIN+2 37) SIGRTMIN+3
38) SIGRTMIN+4 39) SIGRTMIN+5 40) SIGRTMIN+6 41) SIGRTMIN+7 42) SIGRTMIN+8
43) SIGRTMIN+9 44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9 56) SIGRTMAX-8 57) SIGRTMAX-7
58) SIGRTMAX-6 59) SIGRTMAX-5 60) SIGRTMAX-4 61) SIGRTMAX-3 62) SIGRTMAX-2
63) SIGRTMAX-1 64) SIGRTMAX
E esta opção exibe diversos sinais possíveis que podem ser utilizados com este comando.
O sinal é um número decimal e ao lado vem o seu significado e todos eles que podem ser informados no comando kill.
A Sintaxe básica do kill é :
kill [sinal ou opção] pid
Mas vamos entender melhor os sinais do sistema com seu o manual digitando:
man 7 signal
Repare que no Ubuntu e Mint ele já em português.
Resultado do comando:
SIGNAL(7) Manual do Programador Linux SIGNAL(7)
NOME
signal - lista de sinais disponíveis
DESCRIÇÃO
O linux suporta os sinais abaixo.
Vários dos sinais são dependentes da máquina.
Primeiro os sinais descritos em POSIX.1.
Sinal Valor Ação Comentário
─────────────────────────────────────────────────────────────────────────────
SIGHUP 1 A Travamento detectado no terminal controlador
SIGINT 2 A Interrupção do teclado
SIGQUIT 3 C Sinal de 'Quit' do teclado
SIGILL 4 C Instrução ilegal
SIGABRT 6 C Sinal abort derivado de abort(3)
SIGFPE 8 C Exceção de ponto flutuante
SIGKILL 9 AEF Sinal de kill
SIGSEGV 11 C Referência inválida a memória
SIGPIPE 13 A Broken pipe: esccita para um pipe sem um leitor.
SIGALRM 14 A Sinal do timer de alarm(2)
SIGTERM 15 A Sinal de terminação
SIGUSR1 30,10,16 A Sinal definido pelo usuário 1
SIGUSR2 31,12,17 A Sinal definido pelo usuário 2
SIGCHLD 20,17,18 B Processo descendente parado ou terminado.
SIGCONT 19,18,25 Continuar se parado
SIGSTOP 17,19,23 DEF Parar processo
SIGTSTP 18,20,24 D Stop digitado no tty
SIGTTIN 21,21,26 D Entrada via tty para processo no background
SIGTTOU 22,22,27 D Saída via tty para processo no background
Sinais que não estão em POSIX.1 mas que são descritos em SUSv2.
Sinal Valor Ação Comentário
──────────────────────────────────────────────────────────────────────────────
SIGBUS 10,7,10 C Erro de bus (endereço de memória defeituoso)
SIGPOLL A Evento rastreável (Sys V). Sinônimo of SIGIO
SIGPROF 27,27,29 A Profiling timer expired
SIGSYS 12,-,12 C Argumento defeituoso para rotina(SVID)
SIGTRAP 5 C Trace/breakpoint trap
SIGURG 16,23,21 B Condição urgente no socket (4.2 BSD)
SIGVTALRM 26,26,28 A Temporizador virtual (4.2 BSD)
SIGXCPU 24,24,30 C Tempo limite da CPU excedido (BSD 4.2)
SIGXFSZ 25,25,31 C Limite do tamanho de arquivo excedido (BSD 4.2)
(Para SIGSYS, SIGXCPU, SIGXFSZ, e em algumas arquiteturas também para SIGBUS, a ação linux padrão até agora (2.3.27) é A
(terminar), enqüanto SUSv2 faz C (terminar e dump core).
Outros sinais.
Sinal Valor Ação Comentário
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────
SIGIOT 6 C IOT trap. Sinônimo de SIGABRT
SIGEMT 7,-,7
SIGSTKFLT -,16,- A Falha de stack no coprocessador
SIGIO 23,29,22 A I/O possibilitado(4.2 BSD)
SIGCLD -,-,18 Sinónimo de SIGCHLD
SIGPWR 29,30,19 A Queda de energia (System V)
SIGINFO 29,-,- Sinónimo de SIGPWR
SIGLOST -,-,- A Perda de lock para arquivo
SIGWINCH 28,28,20 B Redimensionamento de janela (BSD 4.3, Sun)
SIGUNUSED -,31,- A Sinal não utilizado (será SIGSYS)
(- indica ausência do sinal. Quando são dados três valores, o primeiro normalmente se aplica a alpha e sparc; o do meio
para i386, ppc e sh e o último para mips. O sinal 29 é SIGINFO / SIGPWR num alpha mas SIGLOST numa sparc.)
As letras na coluna "ação" têm os seguintes significados:
A Terminar o processo.
B Ignorar o sinal.
C Terminar o processo e dar dump core.
D Parar o processo.
E Este sinal não pode ser manipulado.
F Sinal não pode ser ignorado.
EM CONFORMIDADE COM
POSIX.1
BUGS
SIGIO e SIGLOST têm o mesmo valor. Este último foi eliminado (mas deixado como comentário) na fonte do kernel, mas o
build de alguns programas ainda pensa que o sinal 29 é SIGLOST.
VER TAMBÉM
kill(1), kill(2), setitimer(2)
TRADUZIDO POR LDP-BR em 21/08/2000.
Paulo César Mendes <[email protected]> (tradução) André L. Fassone Canova <[email protected]> (revisão)
Linux 1.3.88 14/04/1996 SIGNAL(7)
Neste manual temos diversas opções de sinais e vou separar alguns para conhecermos mais detalhadamente:
- SIGINT
- SIGTSTP
- SIGCONT
- SIGTERM
- SIGKILL
- SIGINT
- SIGHUP
SIGINT | SIGTSTP | SIGCONT : Sinais Linux
E vamos aos 3 primeiros sinais SIGINT, SIGTSTP e o SIGCONT
Em nossa ultima aula, usamos o CTRL + C e CTRL+Z, para interromper a execução de um comando e para pausar um processo
Quando utilizamos as teclas CTRL + C no terminal para cancelar um programa**,** isso equivale ao envio do sinal SIGINT ao processo do programa.
Já quando utilizamos as teclas CTRL+Z equivale ao envio do sinal SIGTSTP ao processo, com isso o processo fica suspenso, alocando memória, até que possa ser colocado em execução novamente com os comando fg, bg ou até mesmo com o kill e o sinal SIGCONT, conforme a seguir.
kill -SIGCONT PID
Então, agora que você já sabe que o comando kill envia sinais aos processos e não somente serve para mata-los ou destrui-los, vamos conhecer seu uso na finalização de programas, bem como a forma mais adequada de finalizar processos no sistema.
Terminando processos com Kill e sinal SIGTERM
Para terminar processos de forma amigável, utilizamos o comando kill com o sinal SIGTERM.
Este é o Kill padrão do Linux, O SIGTERM de Sinal 15.
Como você pode enviar um kill SIGTERM para um processo no Linux?
A maneira mais comum de encerrar um processo no Unix/Linux é usar o comando kill, assim:
kill [PID]
O kill SIGTERM é a forma mais segura, elegante e recomendada de finalizar processos no Linux.
Repare que não é necessário informar o sinal do SIGTERM (15)
Ao utilizar o kill com sinal SIGTERM você da oportunidade ao processo se preparar para encerrar e executar tarefas de limpeza e encerramento, tais como encerrar processos filhos, fechar arquivos abertos, pipes, comunicar encerramento a outros processos, etc…
Mas pode ocorrer de o processo se recusar a encerrar por diversos motivos como veremos mais a frente.
Detalhe Importante : Gerenciamento de Processos com kill
Para gerenciar processos em execução, você precisa ser o dono do processo ou o usuário root para enviar sinais a um processo ou finaliza-lo.
Exemplos Práticos de Kill : SIGTERM
Para exemplificar o encerramento de processos com kill SIGTERM, vamos utilizar o comando sleep.
O comando sleep (dormir) é usado para fazer com que o terminal espere por um determinado tempo em segundos, minutos ou horas..
Mais informações consulte o man, digitando no terminal :
man sleep
Por exemplo, vou fazer o terminal dormir por 10 segundos com o comando:
sleep 10
Agora, vamos praticar o kill SIGTERM com este comando.
Vou executar o sleep em background por 3 minutos (180 segundos) com o comando:
sleep 180 &
Isso fará com que o comando execute em segundo plano por 3 minutos.
Resultado:
webmundi@webmundi-VirtualBox:~$ sleep 180 &
[1] 4419
Veja que o comando foi colocado em background e o PID dele é o 4419
Vamos rodar um pstree para ver se ele possui algum processo filho.
ps 4419
ou
pstree 4419
Resultado:
webmundi@webmundi-VirtualBox:~$ ps 4419
PID TTY STAT TIME COMMAND
4419 pts/0 S 0:00 sleep 180
webmundi@webmundi-VirtualBox:~$ pstree 4419
sleep
Agora, vamos executar o kill padrão SIGTERM, digitando
kill 4419
Como usei o comando kill sem informar um sinal ou opção, ele enviou o sinal padrão 15 SIGTERM.
O comando kill não exibe nada em sua saída no terminal e irá enviar o sinal (SIGTERM) para encerramento do processo de forma mais segura possível, encerrando processos filhos e limpando adequadamente o sistema.
Vamos consulta-lo novamente com o comando pstree
webmundi@webmundi-VirtualBox:~$ kill 4419
webmundi@webmundi-VirtualBox:~$ pstree 4419
[1]+ Terminado sleep 180
webmundi@webmundi-VirtualBox:~$ pstree 4419
E veja que ao executar pstree, pela primeira vez ele informa que o processo do sleep 180 foi terminado.
Na segunda vez que executamos o pstree, ele já não mostra mais nada pois o processo foi finalizado.
Mais exemplos práticos de kill SIGTERM no Linux
Vamos abrir também o navegador Firefox e para descobrir seu PID vou executar o comando pidof, mas fique a vontade para executar outros comandos como o ps ou pgrep
webmundi@webmundi-VirtualBox:~$ pidof firefox
4749 4708 4705 4657 4633 4577 4572 4538 4492 4479 4434
Veja que o Firefox abre diversos processos no Linux.
Vamos tentar encerrar 1 dos encerrar processos com SIGTERM digitando:
kill 4749
Porém muito provavelmente, o programa Firefox não irá encerrar ou fechar, pois como já falamos anteriormente existem outros processos executando o programa.
Para isso vamos encerrar os múltiplos processos (Pai e Filhos) com o kill SIGTERM .
Como Matar Múltiplos Processos com o comando kill no Linux
Para matar uma sequência de processos, use o seguinte comando:
kill pid1 pid2 pid3
substitua o pid1, pid2, pid3 pelos PID dos processos que deseja encerrar como é o caso dos pid obtidos com o pidof firefox.
No caso vou encerrar os processos restantes do Firefox com o comando a seguir:
kill 4708 4705 4657 4633 4577 4572 4538 4492 4479 4434
Repare que o comando kill é um assassino silencioso, ele não oferece nenhum feedback no terminal se for bem sucedido ou não.
Porém repare que o navegador Firefox foi finalizado com sucesso.
Mas vamos verificar se existe algum processo do firefoz rodando em beackground. Para isso, temos que executar comandos para verificar os processos como o ps ou pidof para verificarmos se o processo foi encerrado.
Então vamos lá
pidof firefox
E veja que o pidof não retorna nenhum processo do navegador firefox, indicando que seu encerramento foi bem sucedido
Resultado dos comandos
webmundi@webmundi-VirtualBox:~$ pidof firefox
4749 4708 4705 4657 4633 4577 4572 4538 4492 4479 4434
webmundi@webmundi-VirtualBox:~$ kill 4749
webmundi@webmundi-VirtualBox:~$ pidof firefox
4708 4705 4657 4633 4577 4572 4538 4492 4479 4434
webmundi@webmundi-VirtualBox:~$ kill 4708 4705 4657 4633 4577 4572 4538 4492 4479 4434
webmundi@webmundi-VirtualBox:~$ pidof firefox
webmundi@webmundi-VirtualBox:~$
Porém nem tudo são flores, veremos que em alguns casos o kill com SIGTERM pode não fechar os processos
Seja por conta do processo estar esperando salvar dados, ou tenha alguma dependência ou processo filho que não pode ser encerrado.
Neste caso, teremos que adotar outras estratégias de encerramento de processo que veremos a seguir.
Destruindo processos com Kill SIGKILL (kill -9)
Uma das formas mais radicais de se encerrar processos no Linux é o kill com SIGKILL ou kill -9
Este comando faz com que o processo seja encerrado imediatamente sem chances nenhuma de salvar os dados, apagar os arquivos temporários e comunicar outros processos.
Um verdadeiro tiro de canhão para matar uma mosca!
O kill -9 (SIGKILL) não dá chance ao processo de terminar de forma limpa e convencional.
E isto pode ser um problema para o gerenciamento do sistema.
Para aniquilar um processo com SIGKILL no Linux, usamos:
kill -9 PID
Infelizmente, o kill com SIGKILL é usado por muitos usuários sem critério algum.
Este recurso deveria ser usado apenas última instancia para matar processos que não se encerram de forma adequada.
O Problema do uso do Kill com SIGKILL (kill -9)
Muita gente usa o kill -9 pra tudo e o que isso pode ocasionar no sistema ?
E porque o kill -9 pode ser um problema ?
Como já vimos anteriormente, quando um processo é encerrado de forma amigável, ele executa atividades como:
- Desligar conexões de sockets (soquetes).
- Limpar os arquivos temporários.
- Salvar dados
- Comunicar processos e pipes do encerramento, etc.
E isso não acontece quando se usa o kill -9.
No SIGKILL, o sistema simplesmente destrói o processo sem analisar dependências e relacionamentos.
Isso pode deixar Processos filhos zumbis ou órfãos, ocasionar perda de dados e gerar instabilidades.
Quando o Linux pode não consegue encerrar os processos relacionados ao processo pai, os processos filhos e relacionados ficam tentando se comunicar com o processo falecido e ficam consumindo CPU e memória de forma inadequada.
Exemplos de Kill com o sinal SIGKILL : kill -9
Mas vamos a um exemplo prático do kill -9 ou SIGKILL.
Vou abrir o gedit e vou coloca-lo em background pelo terminal :
gedit &
E vou digitar algo no editor gedit e não vou salvar
Exemplo saída
webmundi@webmundi-VirtualBox:~$ gedit &
[1] 3225
Vamos agora, destruir o processo do gedit que é o PID 3225, com o comando:
kill -9 3225
Veja que o Linux não perguntou nada e destruiu o gedit com tudo que havia nele sem salvar o conteúdo digitado, etc…
Consulta processo gedit
webmundi@webmundi-VirtualBox:~$ pidof gedit
[1]+ Morto gedit
Agora imagine utilizar o kill -9, em um servidor de banco de dados com transações em aberto e você simplesmente matar o processo pai que impossibilita, o sistema salvar informações vitais para seu funcionamento ?
Por isso, vamos aprender a encerrar os processos de forma correta no Linux.
Como encerrar corretamente seus processos Linux com Kill
Para encerrar um processo de forma segura e respeitosa no Linux, você pode executar o seguinte roteiro de comandos de kill:
- SIGTERM Tente enviar um SIGTERM usando kill -15 ou kill padrão (kill PID).
- SIGINT Após alguns segundos, se o processo não estiver finalizado, envie um SIGINT (kill -2 PID).
- SIGHUP Se persistir o processo aberto, envie um SIGHUP (kill -1 PID).
O que faz o Kill com sinal SIGHUP Linux?
Se um comando for executado dentro de uma janela de terminal e a janela de terminal for fechada enquanto o processo de comando ainda estiver em execução, ele receberá SIGHUP. [1]
Se o processo que recebe SIGHUP for um shell Unix , como parte do controle de tarefas, ele geralmente interceptará o sinal e garantirá que todos os processos parados continuem antes de enviar o sinal para os processos filhos (mais precisamente, grupos de processos , representados internamente pelo shell como um “trabalho”), que por padrão os encerra. [2]
Mais informações:
https://www.gnu.org/software/libc/manual/html_node/Termination-Signals.html
https://en.wikipedia.org/wiki/SIGHUP
E se o processo não quiser encerrar com estes procedimentos ?
Neste caso temos 3 opções:
- Se você estiver usando um binário externo e ele não parou depois de tudo isso, você provavelmente deve se livrar dele, pode ser um problema, principalmente em servidores.
- Se você está desenvolvendo um programa e não consegue pará-lo corretamente, você deve lidar melhor com as interrupções de sinais de kill.
- Se não tiver jeito, como última opção, você deve apelar para o extermínio do processo,
kill -9
nessa porcaria de processo !
Mas vale tentar contato com o desenvolvedor do software tentando uma solução ou procurar alternativas para este programa.
Conclusão Kill x Sinais : Linux
Um software que não lida bem com interrupção do programa e sinais do Linux é um problema para a administração do sistema.
O Kill com SIGTERM é a maneira padrão e mais segura de matar um processo.
O SIGHUP é uma maneira menos segura de matar um processo do que SIGTERM .
O SIGKILL é a maneira mais insegura de todas.
O conteúdo foi útil ?
Se a esta aula lhe ajudou de alguma forma em seu desenvolvimento profissional, não esqueça de se inscrever no canal ou indicar este vídeo aos seus amigos.
Se você puder e quiser você pode nos apoiar doando qualquer valor através de nosso pix.
Chave pix: [email protected]
Essas doações ajudam a manter o canal e nosso site e também na criação de novos conteúdos.
E por falar em criação de conteúdo, em breve, em nossas futuras vídeo aulas aqui do canal..
Por isso não esqueça de se inscrever no canal e ativar as notificações para ser avisado sobre novos vídeos aqui do canal.
Materiais e leituras que recomendamos para você:
- Como instalar o Linux Mint 20 no Virtualbox 6.1 : Windows 10
- Como Instalar o SQL Developer Oracle no Linux
- Como Instalar o Servidor XAMPP no Linux – Localhost Apache MySQL PHP
- Instalação e configuração do Flutter no Windows 10
- Sobre as oportunidades em desenvolvimento Java
- Como Instalar Tema Escuro no Netbeans : Dark Mode
- Como atualizar o Windows 7 para Windows 10 Grátis
- Como aumentar sua produtividade no Windows com teclas de atalho
- Como se conectar a um computador remoto via Prompt de Comando
- Como Instalar o SQL Developer Oracle no Linux
- DBeaver : Alternativa ao SQL Server Management Studio Linux
- Como listar as maiores tabelas ou objetos Oracle
Loja WebMundi.com : Informática
-
Nova xiaomi tws fone de ouvido sem fio bluetooth 5.0 dual estéreo à prova d’ água esportes hd chamada earbud controle de toque fone de ouvido longo standby
-
Divoom Timebox Evo Bluetooth Portable Speaker with Clock Alarm Programmable LED Display for Pixel Art Creation Unique Gift
-
MIFA F10 Outdoor Wireless Bluetooth Stereo Portable Speaker Built-in mic Shock Resistance IPX6 Waterproof Speaker with Bass
-
Xcell XC-CM-19 Anvil aux 3,5mm Stereo Surround Music RGB Speakers Computer Sound Bar 2.0 PC Notebook Box
+ Ofertas Informática, Computadores e Tecnologia
Obrigado
Esperamos que esta publicação tenha lhe ajudado a aprofundar seus conhecimentos em linux.
Qual é sua experiência em Linux ?
Conte pra nós a sua experiência, adoraríamos saber.
Como entusiasta em desenvolvimento de software, queremos enriquecer sua experiência e conhecimento sobre este produto.
Se você gostou deste post, compartilhe com seus amigos ou nos acompanhe pelas redes sociais.
Tem alguma dúvida ou observação a fazer ?
Além disso, você pode nos ajudar a criar mais conteúdos como este. Como ?
Adquira produtos em nossa Loja Virtual, uma parceria do webmundi.com com as maiores plataformas de comércio eletrônico do Brasil.
Lembrando que comprando em nossa loja você apoia a criação de vídeos gratuitos aqui no site e em nosso canal do YouTube.
Prestigie também nossos apoiadores e anunciantes conhecendo seus produtos e serviços.
É simples e rápido e assim você ajuda a gente a crescer. 👍🏼
Obrigado e um grande abraço