定時任務(wù)--java版本號輸出次數(shù)
在定時任務(wù)中有兩個任務(wù)
*?*?*?*?*?source?/etc/profile;sh?/root/test.sh *?*?*?*?*?source?/root/.bash_profile;sh?/root/test.sh
并且都是執(zhí)行/root/test.sh腳本,
#?/root/test.sh java?-version?2>?/root/script.out
這樣的話,java版本號不應(yīng)該被輸出兩次嗎?為什么演示的文件里面只有一次
2018-07-04
感謝這位同學(xué)關(guān)注老師的這門課程
這里
java?-version?2>?
/root/script
.out
這條命令是是將java -version的輸出重定向到script.out中
2>代表shell錯誤重定向輸出, 而不是將java版本號輸出兩次.2并不代表次數(shù),只是一個符號.
相對的1>代表shell標準重定向輸出, 等同于我們平時經(jīng)常用的>
類似的命令可以是 echo "test" > /root/test.out
這里因為java -version的輸出不是一個標準輸出, 所以我們不能用>或者1>去將其輸出重定向到一個文件.
如果這么寫將無法輸出到指定文件, 所以這里只能用2>去將其作為錯誤重定向到一個文件.
如何區(qū)別使用>和2>
老師這里的秘訣就是一般我們的shell自帶的命令例如cat, echo都可以用>去做標準重定向.
第三方的工具, 類似java, php, python我們則需要使用2>去做一個錯誤重定向輸出.
不知道老師這么回答你是否能夠理解?
2018-10-17
是這樣的,老師這邊的重定向使用的是"2>",而不是"2>>"。
單單使用">"的話,會發(fā)生覆蓋;使用">>"是追加(append);
所以老師這邊雖然定時任務(wù)執(zhí)行了這個腳本兩次,但是輸出內(nèi)容發(fā)生了覆蓋,所以只輸出了一次。簡單起見,可以不使用定時任務(wù),直接執(zhí)行這個腳本兩次,并使用不同的輸出定向符,看看效果。
另外,老師的解答里邊使用 > 和 >2的小竅門真的是很受用^-^