Raj*_*jan 4 scripting gnu-screen ps
我在终端中使用屏幕和分离模式运行 sleep 命令。
一旦屏幕立即返回,我就会运行ps
命令来验证睡眠是否正在运行。
$ screen -d -m 'sleep 2m'
[raj@localhost ~]$ ps
PID TTY TIME CMD
22795 pts/0 00:00:00 bash
22869 pts/0 00:00:00 ps
Run Code Online (Sandbox Code Playgroud)
但是命令没有显示睡眠。我在这里做错了什么?
Jef*_*ler 10
这最初也让我感到困惑。然后我重新阅读了screen
SYNOPSIS的本地手册页——在线手册页没有给出概要)——并注意到它说:
Run Code Online (Sandbox Code Playgroud)screen [ -options ] [ cmd [ args ] ]
...这让我相信它希望将cmd
和args
视为独立的论点。
由于您将第一个参数作为带引号的值提供 - ' sleep 2m
' - 它试图执行一个名为(完全)' sleep 2m
'的命令,而不是您真正想要的,它sleep
带有自己的参数2m
. 该screen
命令成功退出(在我的测试),但它并没有成功地执行你的命令。
改用:
screen -d -m sleep 2m
Run Code Online (Sandbox Code Playgroud)
而不是ps
,它只会显示与当前终端关联的进程(其中 SCREEN 和相关进程不是),使用:
ps x
Run Code Online (Sandbox Code Playgroud)
这将显示它:
$ 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
# ...
Run Code Online (Sandbox Code Playgroud)