2014-09-29 53 views
1

我有一個腳本,我從cron調用並將其輸出重定向到一個文件中。在bash中獲取重定向位置

Crontab中充滿了另一個腳本,它也會生成stdout重定向的位置,它可以根據很多因素進行更改。

我想知道,在我的腳本中,什麼文件stdout被重定向。

有沒有辦法做到這一點,沒有任何配置文件或將文件位置作爲參數傳遞給腳本?

感謝

回答

0

readlink -f /proc/$$/fd/1

$$ ...行書

/proc/[pid]/fd/1的PID ... 1是標準輸出的文件描述符,它表現爲一個符號鏈接到實際文件

0

從您的shell腳本中,您可以使用:

/proc/$$/fd/1 

這是你的shell進程的標準輸出($$)。

你可以試試這個:

#!/bin/bash 

readlink /proc/$$/fd/1 

如果調用此script.sh,運行script.sh > /tmp/f.out 當你讀文件/tmp/f.out的內容,這將是:

/tmp/f.out 
1

你可以使用lsof;可能會有更簡單的方法將輸出限制爲文件名。

lsof -d 1 -a -p $$ -Fn | awk '/^n/ { print substr($1, 2); }' 

如果您的操作系統沒有/proc文件系統,這非常有用。