我有 5 个进程从一个终端运行 ( T1
)。所有这些都在后台运行,但会生成大量输出。
现在,从其他终端 ( T2
),我想使用KILL pid
命令杀死其中一个。然后几秒后60
,我想重新启动相同的进程(这显然会得到不同的pid)。
我的脚本看起来像
KILL 1524
sleep 60
myProcess
问题是,在此之后,T2
由于进程的输出,终端也变得无法使用。如果我想再次做同样的事情,我将不得不启动另一个终端。是否有可能强制该过程开始T1
?
答案1
那么你能让输出出现在另一个终端中——尽管我怀疑你是否真的想要这样做。为此:
找到您想要输出的终端的 tty;最简单的方法就是跑步
tty
。这应该打印类似:/dev/pts/42
。在另一个终端中,运行:
command > /dev/pts/42 &
。如果您想同时执行 stderr 和 stdout:command > /dev/pts/42 2>&1 &
这仅适用于同一用户(由于权限),并且它不会重定向输入(并且重定向输入不会真正起作用,因为您将与 shell 进行斗争)。
更好的解决方案是将输出重定向到文件 ( command > outfile
),然后您可以使用less
、tail
等来观看它。或者,使用screen
/tmux
在一个终端内运行多个会话。