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

Get PID in bash file with open screen

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

具体我是这样启动程序开屏的:

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

变量process_id包含两个PID,不是一个。如果我运行没有屏幕,我没有这个问题(反正我必须打开屏幕)。

有人解决这个问题吗?


另一个问题:如果我写

screen -d -m  "start program">log

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

对于你的第一个问题,pgrep(或process grep)就是你要找的。

例如,以下将 return 所有 bash 进程的 PID 列表 运行.

preg bash

如果您阅读文档:

-signal
Defines the signal to send to each matched process. Either the numeric or the symbolic signal name can be used.


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

This has already been answered.


编辑:

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