Linux 板


LINE

忍不住回一下... ※ 引述《zchien (小建)》之銘言: : 我用unix 系統 UNIX的商標權由國際開放標準組織所擁有 只有符合單一UNIX規範的UNIX系統才能使用UNIX這個名稱 否則只能稱為類UNIX(UNIX-like)。 既然你來到這個版, 我猜你是用 Linux, 就直接說用 Linux 吧 : 寫sh時,遇到了一個bug ,就是浮點數無法運算 我猜你的意思是 寫 shell script. : 我使用ntpdate去校正時間, 並且記錄校正了多少時間 : 例如:需要校正的時間是 0.000304 s : 我寫 : ntpdate -p 10.37.82.23 > time.txt 不知道你是用哪一個系統? Linux 用 ntpdate -p 10.37.82.23 應該會報錯吧?! usage: ntpdate [-46bBdqsuv] [-a key#] [-e delay] [-k file] [-p samples] \ [-o version#] [-t timeo] server ... 或是你是指 ntpdate -q 10.37.82.23 ? : NTP= grep delay time.txt | awk ' ' {print $6} 上面的語法應該也會報錯吧? NTP=$(grep delay time.txt | awk '{print $6}') : # $NTP will show 類似 0.000304 : if [ $NTP -le 0.100001 ];then : ntpdate -u 10.37.82.23 : fi 先不管 能不能用小數點的問題. 為什麼 小於等於 0.100001 秒才更新? 如果 offset 大於 0.100001 秒就不更新? : # 如果NTP server 連線異常, $NTP will show 0.000000 : if [ $NTP -eq 0.000000 ];then : echo "NTP server not connect" : fi : 上面第一個if 會 不成立 , 可能類似浮點數運算, 他以為兩個都是0 : 第二個if 也會顯示錯誤, [0.000000 -eq 0.000000 ] 他竟然顯示不相等 : 請問這是什麼原因,我可以怎麼修正 應該不會是不成立或是不相等吧? -eq 應該會直接罵人, 類似: ./test.sh: line n: [: 0.000000: integer expression expected 首先, 既然你是用 > time.txt, 會一直被覆蓋, 所以假設 time.txt 並沒有要保留. 那其實可以直接一路 | 到底 NTP=$(ntpdate -q 10.37.82.23 | grep delay | awk '{print $6}') 然後都已經用 awk 了, 可以不用特別再叫 grep 出來跑龍套 NTP=$(ntpdate -q 10.37.82.23 | awk '/delay/{print $6}') 另外, 不知道你有沒有發現, 這樣你得到的 NTP 後面其實會有一個 , $ ntpdate -q clock.stdtime.gov.tw server 211.22.103.158, stratum 2, offset 0.000697, delay 0.03252 4 Dec 22:41:21 ntpdate[1947]: adjust time server 211.22.103.158 offset 0.000697 sec 這應該會影響你後面的判斷式 把它去掉比較好一些 NTP=$(ntpdate -q 10.37.82.23 | awk '/delay/{print $6}'|sed -e 's/,$//') 或是可以在 awk print 時先乘 1000000, 然後往後都可以用 us(微秒) 來處理 這樣 awk 會自己把 , 去掉, 也間接避開了小數點運算的限制 NTP=$(ntpdate -q 10.37.82.23 | awk '/delay/{print $6*1000000}') if [ "$NTP" -le "100001" ];then ntpdate -u 10.37.82.23 fi if [ "$NTP" -eq "0" ];then echo "NTP server not connect" fi 先不管不能判斷小數點, 邏輯判斷上 0.000000 也是 -le 0.100001 呀... 把兩個 if 合在一起吧. NTP=$(ntpdate -q 10.37.82.23 | awk '/delay/{print $6*1000000}') if [ "$NTP" -eq "0" ];then echo "NTP server not connect" elif [ "$NTP" -le "100001" ];then ntpdate -u 10.37.82.23 fi 雖然機率不比中樂透高, 有考慮過如果剛剛好 offset 是 0.000000 秒嗎? man ntpdate: DIAGNOSTICS ntpdate’s exit status is zero if it finds a server and updates the clock, and nonzero otherwise. ntpdate 有錯誤時的 return code 不是 0, 建議用這個來判斷比較好. #!/bin/sh ntp_response=$(ntpdate -q 10.37.82.23 2>&1) rc=$? if [ "${rc}" -ne "0" ];then echo "ntpdate error, return code: ${rc}" else ntp_offset=$(echo ${ntp_response} | awk '/delay/{print $6*1000000}') if [ "${ntp_offset}" -le "100001" ];then echo "offset: ${ntp_offset}" ntpdate -u 10.37.82.23 fi fi 大概是醬~ 最後有兩個問題還是不解. 1. 為什麼 offset -le 0.100001 才要 -u, 超過 0.100001 不處理嗎? 2. 有考慮直接改用 ntpd 嗎? --



※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.133.28.48
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Linux/M.1543937183.A.3AC.html ※ 編輯: rickieyang (220.133.28.48), 12/04/2018 23:30:15
1F:推 kdjf: 看以前發的文很可能是solaris系列,所以參數之類不同不奇怪 12/05 00:57
2F:推 zchien: 感謝回覆,solaris和你上面指令應該相同,很多指令都是硬 12/05 23:35
3F:→ zchien: 記的,所以上面可能寫的不完全,明天上班,我在試看看,感 12/05 23:35
4F:→ zchien: 恩 12/05 23:35
5F:推 zchien: Server上面有跑程式,如果時間瞬間差太大,程式會當機, 12/05 23:43
6F:→ zchien: 所以寫crontab 讓他每小時校時 12/05 23:43
7F:→ kdjf: 那就更適合ntpd,他本身就考慮到時間不能突然跳動的問題了 12/06 01:22
8F:→ kdjf: 只是你系統上不一定有現成的 12/06 01:23
9F:→ rexsony: 喔喔,高手過招果然很多學習的主體地方 12/06 18:18
10F:推 jamselee: 版上高手好多 12/10 07:16
11F:推 TPPCMAN: 這是 高手高手高高手了吧 12/12 11:31







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:Tech_Job站內搜尋

TOP