亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

定時任務--java版本號輸出次數

在定時任務中有兩個任務

*?*?*?*?*?source?/etc/profile;sh?/root/test.sh
*?*?*?*?*?source?/root/.bash_profile;sh?/root/test.sh

并且都是執行/root/test.sh腳本,

#?/root/test.sh
java?-version?2>?/root/script.out

這樣的話,java版本號不應該被輸出兩次嗎?為什么演示的文件里面只有一次

正在回答

2 回答

感謝這位同學關注老師的這門課程

這里java?-version?2>?/root/script.out

這條命令是是將java -version的輸出重定向到script.out中

2>代表shell錯誤重定向輸出, 而不是將java版本號輸出兩次.2并不代表次數,只是一個符號.


相對的1>代表shell標準重定向輸出, 等同于我們平時經常用的>

類似的命令可以是 echo "test" > /root/test.out


這里因為java -version的輸出不是一個標準輸出, 所以我們不能用>或者1>去將其輸出重定向到一個文件.

如果這么寫將無法輸出到指定文件, 所以這里只能用2>去將其作為錯誤重定向到一個文件.


如何區別使用>和2>

老師這里的秘訣就是一般我們的shell自帶的命令例如cat, echo都可以用>去做標準重定向.

第三方的工具, 類似java, php, python我們則需要使用2>去做一個錯誤重定向輸出.


不知道老師這么回答你是否能夠理解?



2 回復 有任何疑惑可以回復我~
#1

程序小工 提問者

謝謝老師的回答,幫助我理解了2>的用法。不過我想問的問題,不是那個2的問題,而是兩個定時任務的問題 * * * * * source /etc/profile;sh /root/test.sh * * * * * source /root/.bash_profile;sh /root/test.sh 這兩個定時任務都執行/root/test.sh腳本的話,test.sh不是被執行了兩次嗎?
2018-07-04 回復 有任何疑惑可以回復我~
#2

一路向北

感謝這位同學 這里邊的確執行了兩次shell腳本,我們視頻里是為了演示不同的引入環境變量的方式
2018-07-09 回復 有任何疑惑可以回復我~
#3

champ

怎么感覺老師一直get不到問題點呢?他是想問,既然執行了2次,輸出里面應該有2條版本信息,而視頻里面只有一次,是因為覆蓋的原因,還是其他原因?
2018-09-21 回復 有任何疑惑可以回復我~
#4

一路向北 回復 champ

感謝這位同學的關注,這里因為是重定向寫入,第二次會將第一次所重定向的的文件覆蓋
2018-09-21 回復 有任何疑惑可以回復我~
查看1條回復

是這樣的,老師這邊的重定向使用的是"2>",而不是"2>>"。

單單使用">"的話,會發生覆蓋;使用">>"是追加(append);

所以老師這邊雖然定時任務執行了這個腳本兩次,但是輸出內容發生了覆蓋,所以只輸出了一次。簡單起見,可以不使用定時任務,直接執行這個腳本兩次,并使用不同的輸出定向符,看看效果。

另外,老師的解答里邊使用 > 和 >2的小竅門真的是很受用^-^

0 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

定時任務--java版本號輸出次數

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號