gpt4 book ai didi

linux - 我可以捕获我启动的另一个进程的输出吗?

转载 作者:太空宇宙 更新时间:2023-11-04 10:04:42 25 4
gpt4 key购买 nike

我目前正在使用 >/dev/null & 让 Perl 脚本 A 完全独立地运行 Perl 脚本 B,并且它工作正常。脚本 B 运行时不会返回任何输出,并且在脚本 A 结束时保持事件状态,即使我的终端 session 结束也是如此。

不是说我需要它,但如果我想的话,有没有办法重新获取它的输出?

谢谢

最佳答案

您的代码框架可能如下所示:

#!/usr/bin/perl
# I'm a.pl
#...
system "b.pl > ~/b.out &";
while (1)
{
my $time = localtime;
my ($fsize, $mtime) = (stat "/var/log/syslog")[7,9];
print "syslog: size=$fsize, mtime=$mtime at $time\n";
sleep 60;
}

而 b.pl 可能看起来像:

#!/usr/bin/perl
# I'm b.pl
while (1)
{
my $time = localtime;
my $fsize_a = (stat "/var/log/auth.log")[7];
my $fsize_s = (stat "/var/log/syslog")[7];
print "fsize: syslog=$fsize_s auth.log=$fsize_a at $time\n";
sleep 60;
}
  • a.pl 和 b.pl 独立完成工作。
  • b.pl 被 a.pl 作为后台作业调用,将其输出发送到 b.out(不会弄乱 a.pl 的屏幕)
  • 您可以从其他终端读取 b.out,或在 a.pl 完成后(或当 a.pl 暂时置于后台时)

关于终止两个脚本:

  • `ctrl-c` for a.pl
  • `killall b.pl` for b.pl

注意:

  • 即使您终止终端(假设您的终端作为桌面应用程序运行),b.pl 也永远不会终止,因此您不需要 `nohup` 命令来帮助。 (也许只在控制台有用)
  • 如果你的b.pl可能时不时的吐出错误信息,那么你还是需要处理它的stderr。它留作你的作业。

关于linux - 我可以捕获我启动的另一个进程的输出吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53380929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com