bash 経由で次のコマンドを呼び出していますが、screen セッションがまったく作成されません。
screen -d -m time python3 myscript.py ; sleep 1
すると、screen -r
再開する画面がないと表示されます。しかし、私が試してみると:
screen -d -m time python3; sleep 1
それを実行すると、screen -r
Py コンソールが表示されます。
私が何を間違っているのでしょうか?
答え1
screen -d -m time python3 myscript.py
スクリーン セッション内で実行されpython3 myscript.py
、その後終了します。後でスクリーン セッションが表示されない場合は、スクリプトがすでに終了しているためです。
もっと長く実行することを想定していたようですmyscript.py
。何か問題が発生したに違いありません。何が起こっているかを確認するには、出力 (特にエラー) をファイルにリダイレクトしてください。または、別のプログラムを実行してセッションを維持してください。
screen -d -m time sh -c 'python3 myscript.py; echo $?; sleep 999999999'
スクリプトを画面から直接実行すると動作しないが、対話型シェルから実行すると動作する場合、次の 2 つのことを示している可能性が非常に高くなります。
myscript.py
何らかの設定、おそらく環境変数に依存します。自己完結的ではありません。- この設定を間違った場所に設定しています。 で環境変数を設定している可能性がありますが
.bashrc
、これは対話型シェルによってのみ読み取られます。.profile
代わりに で環境変数を設定してください。このファイルはログイン時に読み取られます。