This was confusing to me initially as well. I then re-read the local
screen man page for the SYNOPSIS -- the online man page does not give a synopsis) -- and noticed that it said:
screen [ -options ] [ cmd [ args ] ]
... which led me to believe that it wanted to see the
args as independent arguments.
Since you gave that first argument as a quoted value -- '
sleep 2m' -- it tried to execute a command named (exactly) '
sleep 2m', as opposed to what you really wanted, which was
sleep with its own argument of
screen command exited successfully (in my testing), but it did not successfully execute your command.
screen -d -m sleep 2m
ps, which will only show processes associated with the current terminal (of which the SCREEN and related processes are not), use:
which will show it:
$ ps x
PID TTY STAT TIME COMMAND
7514 pts/1 Ss 0:00 -bash
7761 ? Ss 0:00 SCREEN -d -m sleep 2m
7762 pts/2 Ss+ 0:00 sleep 2m
7880 pts/1 R+ 0:00 ps x