Linux中tail程式輸出到文件

Linux中tail程式輸出到文件

我知道我們可以使用以下格式將螢幕輸出重定向到文件:

$ your_program > /tmp/output.txt

但是當我使用下面的命令時,它說“-bash:/home/user/errors.txt:權限被拒絕”

sudo tail /var/log/apache2/error.log > ~/errors.txt

我可以知道如何使這個輸出起作用嗎? ~/errors.txt 不存在。在使用重定向命令之前是否需要先建立此 txt 檔案?

答案1

在管道後面,sudo 不起作用。我不知道為什麼你不能寫入你的家 - 也許該文件屬於 root?

 sudo tail /var/log/apache2/error.log | sudo tee ~/errors.txt

也許您需要管道後面的不同用戶。當然,您不需要預先存在的文件。

答案2

當您編寫 時sudo somecommand > ~/errors.txt,正在呼叫(並與您一起執行)的 shellsudo是執行重定向和開啟 的 shell ~/errors.txt。看將標準輸出重定向到您沒有寫入權限的文件。通常這種情況下的問題是您希望 root 寫入該文件;請參閱連結的問題以了解執行此操作的方法。

在這裡,奇怪的是您無法寫入主目錄中的檔案。有可能您之前將一些輸出儲存為 root 中的文件/home/user/errors.txt,並且該文件現在存在並且屬於 root。刪除該檔案(只要您具有 的寫入權限,就可以執行此操作/home/user,然後您就可以以您的使用者身分建立它。

rm ~/errors.txt
sudo tail /var/log/apache2/error.log > ~/errors.txt

如果該檔案確實不存在,那麼您在主目錄中沒有寫入權限。雖然技術上可行,而且實際上偶爾對某些受限用戶有用,但這是非常不尋常的。

相關內容