<p>假设您希望进程的PID在屏幕中运行,我的回答是<a href="https://stackoverflow.com/a/28395244/343302">in another question on this site</a>。答案如下:</p>
<p>您可以在这里获得屏幕会话的PID,如下所示:</p>
<pre><code>$ screen -ls
There are screens on:
1934.foo_Server (01/25/15 15:26:01) (Detached)
1876.foo_Webserver (01/25/15 15:25:37) (Detached)
1814.foo_Monitor (01/25/15 15:25:13) (Detached)
3 Sockets in /var/run/screen/S-ubuntu.
</code></pre>
<p>假设您希望在<code>foo_Monitor</code>屏幕会话中在Bash中运行程序的PID。使用<code>foo_Monitor</code>屏幕会话的PID,通过搜索ppid(父PID)来获取在其中运行的<code>bash</code>会话的PID:</p>
^{pr2}$
<p>现在只获取<code>bash</code>会话的PID:</p>
<pre><code>$ ps -el | grep 1814 | grep bash | awk '{print $4}'
1815
</code></pre>
<p>现在我们需要一个带有<em>PID的过程。只需嵌套命令,这一次使用<code>-v</code>标志<code>grep bash</code>来获得<em>而不是</em>bash的进程:</p>
<pre><code>echo $(ps -el | grep $(ps -el | grep 1814 | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
23869
</code></pre>
<p><strong>只需将1814替换为实际PID或屏幕会话:</strong></p>
<pre><code>echo $(ps -el | grep $(ps -el | grep SCREEN_SESSION_PID | grep bash | awk '{print $4}') | grep -v bash | awk '{print $4}')
</code></pre>