2013-08-30 20 views
2

這個問題可能已經或可能沒有被問到,我找不到任何地方&我是一個Linux初學者。如何暫時隱藏正在運行的bash腳本的輸出?

我得到一個./start.sh腳本,該腳本在我的RHEL 4服務器上運行,並每隔一秒發送一次跟蹤輸出。示例:跟蹤:服務器在alias 1,2等上運行...它確保服務器不會退出。

我需要運行我的一些DDoS防護工具和掃描儀,因爲它們都在同一時間運行。儘管由於所有的跟蹤輸出我都看不到發生了什麼事!

如何暫時禁用輸出,因爲它正在運行,同時保持它在後臺運行,然後運行我的工具,然後當我完成重新啓用輸出?

+0

這對於SO來說是無關緊要的,但是使用Ctrl-z來停止工作,然後用bg來背景。然後,當你希望再次看到消息時,使用'fg'將它重新帶回前臺。 –

+0

實際上把它放在BG中不會阻止消息被髮送到當前終端。 – OneOfOne

+0

Ctrl + Z似乎不能阻止這項工作。當我輸入bg時,它顯示「bg:current:no such job」,當我鍵入作業時,它什麼也沒有顯示,但我仍然得到跟蹤輸出。我的每一個腳本都與他們有關,所以它很混亂。 – Siqko

回答

1

我可以看到兩個解決方案:

  • 使用screen(優選),或
  • 使用重定向和tail

例如:

$ stdbuf -oL ./start.sh > /tmp/start.sh.log & 
$ tail -f /tmp/start.sh.log 

這樣做後,你可以看到在你的終端的日誌信息。你可以不受懲罰地殺死tail,並且每當你想看到這些消息時就重新開始。當日志文件變得太大,可以縮短它與零:

$ echo -n > /tmp/start.sh.log 

bash的重定向可以無縫地處理文件突然得到截斷。不知道這是否適用於所有炮彈。如果您的外殼出現問題,您可以設置tee

我添加了stdbuf -oL來「鼓勵」shell腳本以行緩衝區stdout。任何緩衝他們自己的輸出的命令都不會受到影響,但它可能會有所幫助。

+0

我試過重定向和尾巴,但它似乎沒有工作。 我所有的劇本都喜歡... CD /家/的Game1 /遊戲 ./gameserver gameserver.conf gameserveralias.conf> game1.log& 睡眠16 遊戲服務器是一個Java/C#程序製作linux,不知道它包含了什麼,但它是發送跟蹤消息的一個,我不想擺脫它,只是想隱藏一分鐘。 我要試試屏幕,我非常感謝所有的幫助。我會告訴你它是怎麼回事,如果有效,它會接受你的答案。謝謝。 – Siqko

+0

嘗試重定向stdout和stderr,例如'./start.sh>&/ tmp/start.log'或'./start.sh> /tmp/start.log 2>&1' –

+0

RHEL4確實很舊,但是那裏還有* screen * RPMs,例如:https://packages.endpoint.com/rhel/4/os/i386/screen-4.0.2-6.i386。rpm – Emmet

相關問題