すべてのユーザーに対してrootとしてプロセスを開始します(jupyterノートブックサーバーの場合)。

すべてのユーザーに対してrootとしてプロセスを開始します(jupyterノートブックサーバーの場合)。

jupyter notebookこれは、同じコンピュータ上のすべてのシステムユーザーに対して起動する必要がある特別な場合です。すべてのユーザーには、同じ名前の独自のconda環境(自宅にインストールされている)がありますbase。しかし、簡単にするために、再起動後にすべてのユーザーに対してjupyter Notebookを起動するスクリプトを使用しようとしています。

現在のケースは2〜3人のユーザーを対象としています。

ユーザーにbashセッションで実行するように依頼する

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

次に、Ctrl+btmuxdセッションを閉じます。


新規事例(ユーザー数増加)

スクリプトを実行して、特定のポート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"

権限:ユーザーは他のユーザーのファイルを読み取ることができます。他のユーザーのホームディレクトリでは実行できません(ルートも同様)。

質問:システムの再起動時にすべてのサーバーが(ユーザーに対して)起動するようにrootユーザーとして自動化するにはどうすればよいですか。

  • 1つのアプローチは、nohup代わりにコマンドを使用tmuxしてループ内のすべてのユーザーを繰り返すことです。どんなアイデアでも可能です。

jupyterhubUbuntuが必要なので、他の方法を使用せずにPAM認証を設定するのは簡単ではありません。

ありがとうございます。

関連情報