Comandos Linux

Comando Bash trap

Comando Bash trap
Um comando bash embutido que é usado para executar um comando quando o shell recebe qualquer sinal é chamado de 'trap'. Quando ocorre qualquer evento, o bash envia a notificação por qualquer sinal. Muitos sinais estão disponíveis no bash. O sinal mais comum de bash é SIGINT (Interrupção de Sinal). Quando o usuário pressiona CTRL + C para interromper qualquer processo do terminal, este sinal é enviado para notificar o sistema.  Como você pode usar o comando trap para lidar com diferentes tipos de sinais é explicado neste tutorial.

Sintaxe:

trap [-lp] [[arg] signal_spec…]

ou

armadilha [ação] [sinal]
Chave Descrição
-eu É usado para exibir a lista de todos os nomes de sinais com o número correspondente.
-p É usado para exibir o comando de sinal ou comando trap para signal_spec.
arg É usado para executar um comando quando o shell recebe o (s) sinal (es).
signal_spec Ele contém o nome do sinal ou o número do sinal.

Comando Trap sem qualquer opção e arg

Execute o seguinte comando no terminal para exibir a lista de todos os comandos associados a cada condição. Se algum comando 'trap' não for definido antes, o seguinte comando não exibirá nenhuma informação.

$ trap

Comando Trap com opção -l

Execute o seguinte comando no terminal para exibir a lista de todos os nomes de sinais com número.

$ trap -l

A saída do comando acima irá mostrar a lista de 64 sinais com números.

Defina o comando trap para ERR e EXIT

O primeiro comando a seguir irá definir um comando 'trap' que será executado quando ocorrer qualquer erro de shell ou quando o shell for encerrado. Este comando 'trap' irá remover temp.TXT arquivo da localização atual. O comando 'ls' é usado para verificar o temp.TXT o arquivo existe ou não está no local atual. por último saída comando é usado para fechar o terminal e executar o comando 'trap' que é definido antes.

$ trap 'rm temp.txt 'err sair
$ ls
$ exit

A seguinte saída aparecerá após a execução dos comandos acima.

Agora, se o usuário abrir o terminal novamente após sair e executar o comando 'ls', então temp.TXT arquivo não existirá.

Defina o comando 'trap' com o número do sinal de SIGUP, SIGQUIT e SIGKILL

O número do sinal de SIGUP, SIGQUIT e SIGKILL são 1, 3 e 9. O primeiro comando a seguir irá definir uma armadilha para esses três sinais. Quando algum desses sinais ocorrer, a mensagem “O comando Trap é executado”Irá imprimir.  Execute o seguinte comando no terminal.

$ trap 'comando echo Trap executado' 1 3 9

Quando o usuário pressionará Ctrl + C para gerar o sinal atribuído pelo comando 'trap', em seguida, o 'eco' o comando do comando trap será executado e a seguinte saída aparecerá.

Defina o comando 'trap' para SIGTERM em um script

SIGTERM sinal é usado para encerrar o processo imediatamente, liberando seus recursos. Crie um arquivo bash chamado 'armadilha.sh'com o seguinte código. Um loop for infinito é declarado no script que imprimirá um texto continuamente até SIGTERM sinal ocorre. O usuário deve pressionar Ctrl + Z para gerar SIGTERM sinal.

armadilha.sh

#!/ bin / bash
 
# Defina uma armadilha para os sinais SIGINT e SIGTERM
trap "echo O programa foi encerrado."SIGTERM SIGINT
 
# Exibir mensagem para gerar SIGTERM
echo "Pressione Ctrl + Z pare o processo"
 
#Inicializar a variável do contador, i
i = 1
 
# declarar infinito para loop
para(;;)
Faz
#Imprimir mensagem com contador i
echo “executando o loop por $ i vezes”
#Aumente o contador em um
((i ++))
feito

Execute o script executando o seguinte comando e pressione Ctrl + Z para gerar SIGTERM sinal. A seguinte saída semelhante aparecerá.

$ bash trapscript.sh

Defina um comando 'trap' para executar uma função com base em um sinal particular

Você pode associar um comando 'trap' a qualquer função definida pelo usuário. Crie um bash chamado trapfunc.sh e adicione o seguinte script. Aqui, uma função personalizada chamada função () é declarado para imprimir uma mensagem simples, "Tarefa completa". Um loop for-in é definido para ler e imprimir a lista de todos os arquivos e pastas do diretório de trabalho atual. 'armadilha' comando que é definido no início da lista irá chamar a função, função () quando o programa termina.

trapfunc.sh

#!/ bin / bash
# Chamar função func ao sair
trap func exit
# Declare a função
function func ()
 
echo "Tarefa concluída"

# Leia os arquivos e pastas da lista de diretórios atual usando o loop for
para eu em *
Faz
echo "$ i"
feito

Execute o script do terminal.

Execute o script.

$ bash trapfunc.sh

A seguinte saída mostra que, "Tarefa completa”O texto é impresso após a impressão de todos os arquivos e pastas do diretório atual.

Conclusão

Este tutorial mostra como o comando 'trap' pode ser usado no Linux para fazer qualquer tarefa automatizada com base no sinal gerado. Ajuda os usuários a rastrear diferentes tipos de erros e tomar as medidas adequadas que podem ser atribuídas antes usando este comando. Muitos programas ou scripts alocam alguns recursos particulares quando executados no sistema. Se algum programa ou script em execução sair ou terminar de forma anormal, os recursos usados ​​por esse programa serão bloqueados. O comando 'trap' pode ser usado para resolver este problema. A tarefa de limpeza de recursos pode ser feita facilmente usando este comando. Espero que o leitor tenha uma ideia clara dos usos deste comando depois de ler este tutorial.

Remapeie os botões do mouse de maneira diferente para software diferente com o controle de botão do mouse X
Talvez você precise de uma ferramenta que possa fazer o controle do seu mouse mudar com cada aplicativo que você usa. Se for esse o caso, você pode ex...
Análise do mouse sem fio Microsoft Sculpt Touch
Recentemente li sobre o Microsoft Sculpt Touch mouse sem fio e decidi comprá-lo. Depois de usá-lo por um tempo, decidi compartilhar minha experiência ...
AppyMouse na tela Trackpad e ponteiro do mouse para tablets Windows
Os usuários de tablets costumam perder o ponteiro do mouse, especialmente quando costumam usar laptops. Os smartphones e tablets touchscreen vêm com m...