Scripting

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

  • April 10, 2019

我正在使用螢幕和分離模式在終端中執行睡眠命令。

一旦螢幕立即返回,我正在執行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

但是該命令沒有顯示睡眠。我在這裡做錯了什麼?

這最初也讓我感到困惑。然後我重新閱讀了screenSYNOPSIS 的本地手冊頁——線上手冊頁沒有給出概要)——並註意到它說:

screen [ -options ] [ cmd [ args ] ]

…這使我相信它希望將cmdandargs視為獨立的論點。

由於您將第一個參數作為引用值給出 - ’ 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
# ...

引用自:https://unix.stackexchange.com/questions/511443