有没有办法让 screen 返回会话 id 或 pid?
有没有办法让屏幕在创建新窗口时回显会话 ID?
我正在 perl 中编写脚本,我需要 screen 将会话 id 或 PID 返回给我,因此我将其记录在数组或散列中。
Is there a way to get screen to echo back the session id when it creates a new window?
I am working on script in perl and I need screen to return the session id or the PID to me so I record it in an array or a hash.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您收集这些 pid 的目的是什么?在 Perl 中这可能有点棘手。像 Unix::PID 之类的东西可能会有所帮助( http://metacpan.org/pod/Unix::PID )但我怀疑您的问题没有解决您想要解决的实际问题。
由于您使用的是
screen -dmS
您可以执行以下操作:What is your purpose for gathering these pids? It can be a little tricky in perl. Something like Unix::PID might help ( http://metacpan.org/pod/Unix::PID ) but I have the suspicion that your question does not address the actual problem you are trying to solve.
Since you are using
screen -dmS <somename>
you can do this:检查
屏幕
内运行的任何程序中的环境变量$ENV{'STY'}
。至少在我的 MacOS X 10.6 系统上,它包含会话 ID,例如:
其中第一个字段是 PID。
从外部
屏幕
,您可以运行:来获取所有会话的列表。
如果做不到这一点,就不清楚您如何从脚本中实际启动
screen
,但如果您使用标准fork / exec
模型,则子 PID 在调用后可用fork
将是所需的 PID。有关如何分叉子程序并与其交互的更多详细信息,请参阅 man perlipc。Check for the environment variable
$ENV{'STY'}
within any programs running insidescreen
.On my MacOS X 10.6 system at least, it contains the session ID, e.g.:
and where the first field is the PID.
From outside
screen
, you can run:to get a list of all of your sessions.
Failing that, it's unclear how you're actually starting
screen
from within your script, but if you use a standardfork / exec
model then the child PID available after the call tofork
will be the required PID. Seeman perlipc
for more details on how to fork a child program and interact with it.