使用打开的屏幕在bash文件中获取PID

时间:2017-06-27 08:59:25

标签: linux bash shell awk pid

我是bash编程的初学者。我想从进程中获取PID,以便使用trapkill来接收和发送信号到同一文件中的程序。

特别是,我开始以这种方式打开一个屏幕的程序:

screen -d -m  "start program"
process_id=`/bin/ps -fu $USER| grep "program" | grep -v "grep" | awk '{print $2}'`

变量process_id包含两个PID,而不是一个。如果我在没有屏幕的情况下运行,我就没有这个问题(无论如何,我必须打开屏幕)。

有没有人能解决这个问题?

另一个问题:如果我写

screen -d -m  "start program">log

不打印日志文件。有什么建议吗?

1 个答案:

答案 0 :(得分:0)

对于您的第一个问题,您正在寻找pgrep(或进程grep )。

例如,以下内容将返回正在运行的所有 bash 进程的PID列表。

preg bash

如果您阅读文档:

  

- 信号
      定义要发送到每个匹配进程的信号。可以使用数字或符号信号名称。

第二个问题,如果您的-LogFile版本支持,您可以使用screen标记。或者在.screenrc配置文件中指定日志文件。

This has already been answered

编辑:

如果您无法访问通常放置配置文件.screenrc的用户主目录,则可以更改$SCREENRC环境变量以明确设置为备用路径为了它。