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. |
- O comando Trap sem valor arg ou com valor '-' arg irá repor o sinal especificado para o seu valor original.
- O comando Trap com valor de arg 'nulo' irá ignorar o sinal especificado enviado pelo shell ou comando.
- Um signal_spec com o valor, saída (0) irá executar arg após sair do shell.
- Um signal_spec com o valor depurar iráexecutar arg antes de cada comando único.
- Um signal_spec com o valor Retorna irá executar arg sempre que uma função shell for executada ou um script executado por “.”.
- Um signal_spec com o valor errar irá executar o arg sempre que houver falha no comando.
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.
$ trapComando 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 -lA 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 9Quando 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.shA 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.