Isto pode estar na categoria "workaround", mas eu consegui atingir o que eu acho que seu objetivo é colocar o comando ("python dostuff.py" do seu exemplo) em um script de shell, então executando ... screen -d -m "/path/to/that/script"
Informação da versão:
$ screen -v
Screen version 3.09.10 (FAU) 4-Sep-01
Parece que eu tenho uma versão bastante antiga da tela neste sistema! Talvez o comportamento da tela tenha mudado em versões mais recentes para sair automaticamente?
$ 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.
(tela -r; saída)
$ 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
(aguarde 6 segundos)
$ screen -ls
No Sockets found in /tmp/uscreens/S-username.
$ ls now
now
Uma coisa que percebi ao passar por isso foi que minha versão da tela parecia esperar um nome de sessão após -dm
; Eu tive que separar -d
e -m
para passar um argumento de comando.
Tente usar:
ssh user@host screen -d -m python dostuff.py
com um -S
opcional para nomear a sessão como algo específico.