Como faço para renunciar meu shell de login?

1

Estou em um nó de login de vários usuários, um nó de front end para um grande farm nacional de computação de bioinformática, executando Linux. Muitos usuários se comportam mal ao executar trabalhos intensivos em computação nos nós de login. Eu não. Eu gostaria de ser legal. Na verdade, eu até quero que meu shell de login seja executado no nível 4 em vez do padrão 0 (zero).

Qual é a maneira mais conveniente e não planejada de renunciar ao shell de login?

Minha configuração atual:

Estou executando o ast-ksh (KornShell 93) em uma ou várias tmux sessões. O shell padrão no sistema em bash , mas eu exec -l ksh93 de ~/.bash_profile e, em seguida, reconecto a qualquer sessão tmux em execução do meu ~/.profile ou crie um novo caso não exista nenhum.

Snippet de ~/.bash_profile : não quero tocar em bash nem com um gravador, por isso tudo o que estou disposto a fazer é ter um exec do meu shell preferido. Não é fácil alterar o shell padrão do usuário neste sistema ...

if [ -f $HOME/sw/bin/ksh93 ]; then
    exec -l $HOME/sw/bin/ksh93
fi

Snippet de ~/.profile : estou detectando se já estou em uma sessão tmux e, se não estou, e estou conectado ao SSH, participo ou gero um.

if [[ -z $TMUX ]]; then
    ssh-add

    if [[ -n $SSH_TTY ]]; then
        if tmux has-session 2>/dev/null; then
            exec tmux attach-session
        else
            exec tmux
        fi
    fi
fi

Snippet de ~/.tmux.conf :

set -g default-shell "$HOME/sw/bin/ksh93"

Onde neste caso eu iria renunciar ksh93 , e como?

    
por Kusalananda 13.06.2015 / 11:21

1 resposta

5

Deve ser suficiente modificar seu ~/.bash_profile para que ele seja:

if [ -f /bin/ksh93 ]
then
    renice -n 4 $$
    exec -l /bin/ksh93
fi

O renice -n 4 $$ definirá o bom valor do shell atual ( $$ ) como quatro, fazendo com que os comandos subsequentes iniciados por esse shell herdem o mesmo valor de niceness.

Eu não testei em uma sessão do tmux, mas funciona como esperado ao efetuar login sem:

$ su - testuser  ## whose ~/.bash_profile contains the lines above
$ ps -eo "%p %y %x %c %n" | grep ksh
16894 pts/9    00:00:00 ksh93             4 #<-- the nice value
    
por 13.06.2015 / 15:10