[英]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.XXXXXX
或Xterm.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.