実行に時間がかかるスクリプトがあり、画面を使用して実行しています。
ssh user@host screen -dm "python dostuff.py"
これで問題は、dostuff.pyが実行を完了した後にスクリーンセッションを終了することを確認する方法です。エラーのため、または正しく終了しました。
答え1
これはおそらく「解決方法」カテゴリに属していますが、コマンド(例では「python dostuff.py」)をシェルスクリプトに入れてから実行して目標を達成することができました。... screen -d -m "/path/to/that/script"
バージョン情報:
$ screen -v
Screen version 3.09.10 (FAU) 4-Sep-01
私のシステムにはかなり古いバージョンの画面があるようです。最新バージョンでは、画面の動作が自動シャットダウンに変更された可能性がありますか?
$ screen -ls
No Sockets found in /tmp/uscreens/S-username.
$ screen -dm "ls"
$ screen -ls
There is a screen on:
32112694.ls (Detached)
1 Socket in /tmp/uscreens/S-username.
(スクリーン-r;終了)
$ screen -ls
No Sockets found in /tmp/uscreens/S-username.
$ cat runme
#!/bin/sh
sleep 6
ls > now
$ screen -d -m ./runme
$ ps -ef|grep sleep
username 9633926 9437204 0 14:55:23 pts/1 0:00 grep sleep
username 15532242 10223670 0 14:55:21 pts/6 0:00 sleep 6
(6秒ほどお待ちください)
$ screen -ls
No Sockets found in /tmp/uscreens/S-username.
$ ls now
now
このプロセスを進めながら実現したことの1つは、私の画面バージョンです-dm
。後ろにセッション名が必要です。コマンドパラメータを渡すには、-d
を分離する必要があります。-m
以下を試してください。
ssh user@host screen -d -m python dostuff.py
-S
セッション名を具体的に指定できます。