Suprimindo o logout msg ubuntu

2

Eu adicionei várias linhas para serem executadas no sistema /etc/bash.bashrc , como notificação de login via e-mail, etc. Notei que, sobre exit que invoca logout , os sistemas imprimem essas linhas para os usuários como:

USER@IP:~$ exit
logout
[1]+  Done                    cat /home/USER/a.txt | ssmtp [email protected]
Connection to IP closed.

Como posso suprimir isso no meu sistema?

    
por Amir 14.04.2018 / 22:24

1 resposta

4

A parte [1]+ Done ... da sua saída parece vir do controle de trabalho da Bash. Você geralmente obtém quando um comando que você iniciou em background termina, assim:

$ sleep 1 &
[1] 20931

$ 
[1]+  Done                    sleep 1

Uma solução para suprimir essas saídas de controle de tarefas é iniciar o comando background em um subshell, colocando-o entre parênteses:

$ ( sleep 1 &)

$ 

Eu não sei dizer se isso é apropriado na sua situação, porque você ainda não mostrou seus comandos reais e essa abordagem vem com algumas desvantagens:

O trabalho não pode mais ser controlado (por exemplo, jobs , bg , fg commands), mas como ele é executado a partir de um script de inicialização, presumo que ele não seria destinado de qualquer maneira.
Se o comando estivesse modificando seu ambiente (por exemplo, configurando variáveis ou alterando o diretório de trabalho), isso afetaria apenas a subshell e não mais o restante do script.

Outra maneira é fazer com que o shell esqueça o trabalho depois que ele começou a usar disown , como:

$ sleep 1 & disown
[1] 27248

$ 

Dessa forma, no entanto, ele também não será mais encerrado quando o shell sair, portanto, ele poderá continuar sendo executado após o logout do usuário, se eu entendi isso corretamente (corrija-me, caso contrário).

Fontes e outras leituras:

por Byte Commander 14.04.2018 / 22:59