모든 사용자에 대해 루트로 프로세스를 시작합니다(jupyter 노트북 서버의 경우).

모든 사용자에 대해 루트로 프로세스를 시작합니다(jupyter 노트북 서버의 경우).

jupyter notebook이는 동일한 컴퓨터의 모든 시스템 사용자에 대해 시작해야 하는 특별한 경우일 수 있습니다. 모든 사용자는 동일한 이름을 가진 자신만의 conda 환경(집에 설치됨)을 갖습니다 base. 그러나 단순화를 위해 재부팅 후 모든 사용자에 대해 jupyter Notebook을 시작하는 스크립트를 사용하려고 합니다.

현재 사례는 2~3명의 사용자를 대상으로 합니다.

사용자에게 bash 세션에서 실행하도록 요청

tmux 
conda activate base
jupyter notebook --ip a.b.c.d -- port pqrs

다음으로 Ctrl+btmux d세션을 닫습니다.


신규 사례(사용자 수 증가)

스크립트를 실행하여 root특정 포트의 각 사용자에 대해 jupyter 서버를 시작하십시오.

이를 위해 현재 사용자의 빈 포트에서 노트북을 시작하는 bash 스크립트를 준비했습니다.

#!/bin/bash
source ~/.bashrc
eval "$(conda shell.bash hook)"

conda activate base

current_env=$CONDA_DEFAULT_ENV
echo -e "\t ----------\n\t Current conda environment : " $current_env

################################################
#  get an empty port number between a range

used=$(ss -tulpn | grep -e9{700..800} | awk '{print $5}' | grep -o -E '[^:]+$' | xargs)

#echo -e "\t\t Currently used ports : $used"

# function to generate random number within a range
rnd() {
  out=$(shuf -i 9700-9800 -n 1)
  echo $out
}

val=$(rnd)

# this loop breaks when val is not found in string
while  grep -q "$val" <<<"$string"; do
   #echo "port being used"
   val=$(rnd)
done

#echo "$val"
port=$val

################################################

jupyter notebook --ip a.b.c.d  --port "$port" # start on specific port

################################################
status=$(ss -tulpn  | grep "jupyter" | grep "$port")
echo -e "\t\t $status \n\n"

권한: 사용자는 다른 사용자의 파일을 읽을 수 있습니다. 다른 사용자의 홈 디렉터리에서는 실행이 허용되지 않습니다(루트도 마찬가지).

질문:시스템이 재부팅될 때 모든 서버가 (사용자에 대해) 시작되도록 루트 사용자로 이를 자동화하려면 어떻게 해야 합니까?

  • 한 가지 접근 방식은 nohup대신 명령을 사용 tmux하고 루프의 모든 사용자를 반복하는 것입니다. 어떤 아이디어라도 가능합니다.

jupyterhubUbuntu가 필요하므로 다른 방법을 사용하지 않고 PAM 인증을 구성하는 것은 쉽지 않습니다.

감사해요.

관련 정보