如何从另一个终端在一个终端中运行进程

如何从另一个终端在一个终端中运行进程

我有 5 个进程从一个终端运行 ( T1)。所有这些都在后台运行,但会生成大量输出。

现在,从其他终端 ( T2),我想使用KILL pid命令杀死其中一个。然后几秒后60,我想重新启动相同的进程(这显然会得到不同的pid)。

我的脚本看起来像

KILL 1524
sleep 60
myProcess

问题是,在此之后,T2由于进程的输出,终端也变得无法使用。如果我想再次做同样的事情,我将不得不启动另一个终端。是否有可能强制该过程开始T1

答案1

那么你让输出出现在另一个终端中——尽管我怀疑你是否真的想要这样做。为此:

  1. 找到您想要输出的终端的 tty;最简单的方法就是跑步tty。这应该打印类似:/dev/pts/42

  2. 在另一个终端中,运行:command > /dev/pts/42 &。如果您想同时执行 stderr 和 stdout:command > /dev/pts/42 2>&1 &

这仅适用于同一用户(由于权限),并且它不会重定向输入(并且重定向输入不会真正起作用,因为您将与 shell 进行斗争)。

更好的解决方案是将输出重定向到文件 ( command > outfile),然后您可以使用lesstail等来观看它。或者,使用screen/tmux在一个终端内运行多个会话。

相关内容