簡體   English   中英

如何使用xterm在另一個終端中生成進程?

[英]how to use xterm to spawn a process in another terminal?

在我的bash腳本中,我嘗試使用以下命令在另一個終端窗口中運行一個進程:

xterm -e /home/mohit/a.out

現在,我想使用tee命令重定向輸出,如下所示:

xterm -e /home/mohit/a.out 2>&1 | tee logfile

但是我沒有在logfile得到任何東西。 任何線索,為什么會這樣?

看起來xterm產生了一個新窗口並在該窗口中執行-e。 該命令完成后,將退出。

由於它是在新的外殼中打開的,因此將stderr stdout等附加到該窗口。

如果您想要打開該窗口並在日志文件中保持打開狀態,則需要引用要由xterm執行的所有內容,否則bash將解釋重定向並通過管道進行處理。 例如

xterm -e /home/mohit/a.out 2>&1 | tee logfile

將由bash轉換為:

使用xterm執行命令/home/mohit/a.out,然后將stderr重定向到stdout並通過管道傳輸到tee中。

當xterm用新的stdout等生成新窗口時,Tee沒有得到任何輸入,因此在日志文件中什么也沒有

嘗試

xterm -e '/home/mohit/a.out 2>&1 | tee logfile'

這將迫使xterm執行整個管道

@peteches已經展示了如何通過將整個命令行提供給-e來捕獲輸出。

您還可以要求xterm使用-l將所有輸出捕獲到日志文件中

xterm -l -e /home/mohit/a.out

它記錄到名為XtermLog.XXXXXXXterm.log.hostname.yyyy.mm.dd.hh.mm.ss.XXXXXX的文件中

您可以使用-lf指定日志文件

xterm -l -lf logfile -e /home/mohit/a.out

缺點是,這不適用於現有文件。 您必須先刪除logfile ,然后xterm才能使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM