logout via shell script

1

Eu estou fazendo alguma operação via shell script. Se esse script for bem-sucedido, continue com o logout do usuário atual. Não consigo encontrar uma maneira de sair do usuário atual. Eu tentei usar saída, mas parece que está saindo do processo atual, não o shell. PS: Eu não posso usar pkill para matar a sessão para o usuário atual, pois há muitos processos que percorrem esse usuário, pois é um usuário genérico. Além disso, como esse é um usuário genérico, vários outros companheiros de equipe podem estar conectados ao sistema por meio desse usuário e também podem matar sua sessão.

    
por anurag 24.01.2016 / 09:07

4 respostas

1

Se o script for para o mesmo shell que o que você está usando ao executá-lo, você poderia apenas source em vez de executá-lo como um novo processo, então exit deve desconectar você com êxito.

i.e. em vez de ./script.sh você faz source ./script.sh . A razão para essa diferença é que source é um comando shell builtin que faz com que seu shell atual execute os comandos no arquivo, se você executar o script sem source um novo processo é criado para executá-lo e é por isso que sair não sai do seu concha.

    
por 24.01.2016 / 14:29
0
alias exit='./your_script && exit'
    
por 24.01.2016 / 09:11
0

Experimente este comando:

killall gnome-session
    
por 24.01.2016 / 09:32
0

Primeiro, vamos esclarecer algumas noções básicas antes de começar minha resposta

AFAIK

  1. Um terminal só pode ter um shell de login, no entanto, vários usuários podem estar usando o mesmo terminal com shell de não-login.
  2. Esse shell de login pode ser um TTY ou PTS ( Diferença entre tty e pts )
  3. O shell de login pode ter outros shells não de login ( O que são shells de login / não-login )
  4. exit é para sair do shell de não-login (você não pode logout do shell de não-login)
  5. logout é para sair do TTY ( logout só pode ser usado com o login-shell)
  6. Como verificar se você está em um terminal de login ou não-login

Se você estiver em TTY

(./your_script && <task_you want_to_continue>) || logout

ou

(./your_script && <task_you want_to_continue>) || exit

Se você está no PTS

(./your_script && <task_you want_to_continue>) || who -u; 
echo 'enter PID of login shell user you want to logout'; read PID; kill $PID;

Fonte da resposta acima

Remove "<" and ">" tags and place your task in the above scripts.

Eu não sei porque logout e exit não funcionam no PTS como no TTY, mas espero que isso resolva o seu problema.

Eu tenho cerca de 4 meses no Linux, então por esse padrão eu deveria ser chamado de novato. Quaisquer melhorias na resposta serão apreciadas se você encontrar algo errado.

    
por 04.07.2017 / 14:20