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,以及如何?
修改您的~/.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)