【问题标题】:Get PID in bash file with open screen在打开屏幕的 bash 文件中获取 PID
【发布时间】:2017-06-27 08:59:24
【问题描述】:

我是 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

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

【问题讨论】:

    标签: linux bash shell awk pid


    【解决方案1】:

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

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

    preg bash
    

    如果您阅读文档:

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


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

    This has already been answered.


    编辑:

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

    【讨论】:

    • 亲爱的艾曼,非常感谢。我解决了第一个问题。对于第二个问题:我的版本不支持“-LogFile”;我无法修改 .screenrc,因为我使用的是外部服务器并且我没有权限。请问还有其他打印日志文件的方法吗?谢谢!
    • @Byba,如果您无法访问用户主目录,您可以更改$SCREENRC 环境变量以显式设置为替代.screenrc 配置文件。欢迎你:)
    • @Byba,很高兴为您提供帮助 :) 我已将该部分添加到答案中。
    猜你喜欢
    • 1970-01-01
    • 2021-10-23
    • 2023-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-12
    • 1970-01-01
    • 2013-07-25
    相关资源
    最近更新 更多