ps中不显示使用screen命令的sleep命令

ps中不显示使用screen命令的sleep命令

我正在使用屏幕并在分离模式下在终端中运行 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

但该命令没有显示睡眠。我在这里做错了什么?

答案1

最初这也让我感到困惑。然后我重新阅读了本地screen手册页的概要——在线手册页没有给出概要)——并注意到它说:

screen [ -options ] [ cmd [ args ] ]

...这让我相信它希望将cmdargs视为独立的论点。

由于您将第一个参数作为带引号的值 - ' sleep 2m' - 它尝试执行名为(确切地说)' ' 的命令sleep 2m,而不是您执行的命令真的想要的,这是sleep有自己的说法的2m。该screen命令成功退出(在我的测试中),但确实如此不是成功执行你的命令。

使用,而不是:

screen -d -m sleep 2m

而不是ps,它只会显示与当前终端关联的进程(其中 SCREEN 和相关进程是不是), 使用:

ps x

这将显示它:

$ 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
 # ...

答案2

使用nohup就够了吗?它将显示在ps屏幕中运行它可能会使进程隐藏在屏幕进程中的位置。

bash 就是一个例子。

nohup your-command &

如果您想退出此终端会话,您可能需要使用at作业命令。

at now + 1 minute

nohup your-command &

(ctrl-d)

相关内容