로그인 셸을 어떻게 다시 등록하나요?

로그인 셸을 어떻게 다시 등록하나요?

저는 Linux를 실행하는 대규모 국가 생물정보학 컴퓨팅 팜의 프런트 엔드 노드인 다중 사용자 로그인 노드를 사용하고 있습니다. 많은 사용자가 로그인 노드에서 잘못된 행동을 하고 계산 집약적인 작업을 실행했습니다. 나는 아니에요. 나는 좋은 사람이 되고 싶다. 사실 저는 로그인 쉘이 기본 0(영) 대신 좋은 레벨 4에서 실행되기를 원합니다.

쉘에 다시 로그인하는 가장 편리하고 소박한 방법은 무엇입니까?

내 현재 설정:

tmux하나 이상의 세션에서 ast-ksh(KornShell 93)를 실행하고 있습니다. 시스템의 기본 셸은 이지만 bash실행 중인 세션 exec -l ksh93~/.bash_profile 다시 연결하거나 세션이 없으면 새 세션을 만듭니다.tmux~/.profile

출처: 막대기를 가지고도 ~/.bash_profile만지고 싶지 않기 때문에 내가 가장 좋아하는 껍질만 가지고 싶습니다. 이 시스템에서 기본 쉘을 변경하는 것은 쉽지 않습니다...bashexec

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

발췌 ~/.profile: 이미 세션에 있는지 감지하고 tmux그렇지 않은 경우 SSH를 통해 로그인하면 세션을 연결하거나 생성합니다.

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

다음의 스니펫 ~/.tmux.conf:

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

어디서 ksh93, 어떻게 포기해야 할까요?

답변1

~/.bash_profile다음과 같이 수정하면 충분합니다 .

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

renice -n 4 $$현재 셸( )의 Niceness 값을 4로 설정 하면 $$해당 셸에서 실행되는 후속 명령이 동일한 Niceness 값을 상속하게 됩니다.

tmux 세션에서 테스트하지는 않았지만 tmux 세션 없이 로그인하면 예상대로 작동합니다.

$ 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

관련 정보