如何重新设置我的登录 shell?

Kus*_*nda 1 login ksh tmux nice

我在一个多用户登录节点上,这是一个大型国家生物信息学计算场的前端节点,运行 Linux。许多用户通过在登录节点上运行计算密集型作业而行为不端。我不。我想乖一点。事实上,我什至希望我的登录 shell 以良好的级别 4 运行,而不是默认的 0(零)。

重新使用登录 shell 的最方便和最简单的方法是什么?

我目前的设置:

我在一个或多个tmux会话中运行 ast-ksh (KornShell 93) 。系统上的默认 shell bash,但 I exec -l ksh93from~/.bash_profile然后我tmux从 my重新附加到任何正在运行的会话~/.profile,或者如果不存在则创建一个新的。

摘自~/.bash_profile:我什至不想bash用棍子触摸,所以我愿意用它做的就是拥有一个exec我喜欢的外壳。在这个系统上改变一个人的默认 shell 并不容易......

if [ -f $HOME/sw/bin/ksh93 ]; then
    exec -l $HOME/sw/bin/ksh93
fi
Run Code Online (Sandbox Code Playgroud)

片段来自~/.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
Run Code Online (Sandbox Code Playgroud)

片段来自~/.tmux.conf

set -g default-shell "$HOME/sw/bin/ksh93"
Run Code Online (Sandbox Code Playgroud)

我会在哪里 renice ksh93,以及如何?

ter*_*don 6

修改您的~/.bash_profile内容应该足够了,因此它显示为:

if [ -f /bin/ksh93 ]
then
    renice -n 4 $$
    exec -l /bin/ksh93
fi
Run Code Online (Sandbox Code Playgroud)

renice -n 4 $$将当前shell(的nice值设置$$)四,使由外壳启动时继承相同的niceness值后续命令。

我没有在 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
Run Code Online (Sandbox Code Playgroud)