jupyter notebook
これは、同じコンピュータ上のすべてのシステムユーザーに対して起動する必要がある特別な場合です。すべてのユーザーには、同じ名前の独自のconda環境(自宅にインストールされている)がありますbase
。しかし、簡単にするために、再起動後にすべてのユーザーに対してjupyter Notebookを起動するスクリプトを使用しようとしています。
現在のケースは2〜3人のユーザーを対象としています。
ユーザーにbashセッションで実行するように依頼する
tmux
conda activate base
jupyter notebook --ip a.b.c.d -- port pqrs
次に、Ctrl+b
tmuxd
セッションを閉じます。
新規事例(ユーザー数増加)
スクリプトを実行して、特定のポート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
してループ内のすべてのユーザーを繰り返すことです。どんなアイデアでも可能です。
jupyterhub
Ubuntuが必要なので、他の方法を使用せずにPAM認証を設定するのは簡単ではありません。
ありがとうございます。