歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux基礎 >> Linux技術

使用Linux重定向解決nohup.out無寫權限問題

■場景

執行nohup命令的時候,經常會出現下面這種沒有寫入權限的錯誤。

nohup: ignoring input and appending output to `nohup.out'

nohup: failed to run command `/etc/nginx_check.sh': Permission denied

■linux重定向:

0、1和2分別表示標准輸入、標准輸出和標准錯誤信息輸出,可以用來指定需要重定向的標准輸入或輸出。

在一般使用時,默認的是標准輸出,既1。當我們需要特殊用途時,可以使用其他標號。

例如,將某個程序的錯誤信息輸出到log文件中:./program 2>log。這樣標准輸出還是在屏幕上,但是錯誤信息會輸出到log文件中。

另外,也可以實現0,1,2之間的重定向。2>&1:將錯誤信息重定向到標准輸出。

Linux下還有一個特殊的文件/dev/null,它就像一個無底洞,所有重定向到它的信息都會消失得無影無蹤。

這一點非常有用,當我們不需要回顯程序的所有信息時,就可以將輸出重定向到/dev/null。

如果想要正常輸出和錯誤信息都不顯示,則要把標准輸出和標准錯誤都重定向到/dev/null, 例如:

# ls 1>/dev/null 2>/dev/null

還有一種做法是將錯誤重定向到標准輸出,然後再重定向到 /dev/null,例如:

# ls >/dev/null 2>&1

注意:此處的順序不能更改,否則達不到想要的效果,此時先將標准輸出重定向到 /dev/null,然後將標准錯誤重定向到標准輸出,

由於標准輸出已經重定向到了/dev/null,因此標准錯誤也會重定向到/dev/null,於是一切靜悄悄。

■關於nohup

在使用nohup命令的時候,經常由於輸出nohup.out的路徑沒有寫入權限,而無法使用nohup。

這是可以使用Linux重定向的方法,將nohup.out重定向至一個有寫入權限的路徑,或者直接扔到/dev/null中。

nohup ./program >/dev/null 2>/dev/null &

或者

nohup ./program >/dev/null 2>&1 &

Copyright © Linux教程網 All Rights Reserved