我是bash编程的初学者。我想从进程中获取PID,以便使用trap
和kill
来接收和发送信号到同一文件中的程序。
特别是,我开始以这种方式打开一个屏幕的程序:
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
不打印日志文件。有什么建议吗?
答案 0 :(得分:0)
对于您的第一个问题,您正在寻找pgrep
(或进程grep )。
例如,以下内容将返回正在运行的所有 bash 进程的PID列表。
preg bash
如果您阅读文档:
- 信号
定义要发送到每个匹配进程的信号。可以使用数字或符号信号名称。
第二个问题,如果您的-LogFile
版本支持,您可以使用screen
标记。或者在.screenrc
配置文件中指定日志文件。
This has already been answered
如果您无法访问通常放置配置文件.screenrc
的用户主目录,则可以更改$SCREENRC
环境变量以明确设置为备用路径为了它。