台灣最大程式設計社群網站
線上人數
1967
 
會員總數:240902
討論主題:186660
歡迎您免費加入會員
討論區列表 >> Linux / Unix >> Centos7 Script手動執行可以顯示echo字串但啟動執行或是排程執行就不行?
[ 變換順序 ]  
[我要回覆]
1
回應主題 加入我的關注話題 檢舉此篇討論 將提問者加入個人黑名單
Centos7 Script手動執行可以顯示echo字串但啟動執行或是排程執行就不行?
價值 : 5 QP  點閱數:116 回應數:6

樓主

s5904163
門外漢
0 1
22 3
發送站內信

各位前輩好,小弟本身對script不是很熟,自己在網路上有找到我需要的範例,reboot+count次數,如下圖片內容。

我的Centos7開機後是進入文字模式,這個script用手動執行都很正常加了echo需要顯示出來的字串都可以顯示出來,但是當我把它加進rc.local的自動啟動內,雖然script可以被啟動但echo後面那些字串就不會顯示了。

也有看過使用crontab排程執行script的方式,但一樣的我設定好crontab的排程時間後script有被執行但內容的echo後面那些字串不會顯示出來,手動執行script(sh /home/xxx.sh)可以正常顯示。

自己摸索了好久還是不了解原因,希望能夠透過各位前輩的幫助解決這個問題。

謝謝。

搜尋相關Tags的文章: [ echo ] ,
本篇文章發表於2017-10-04 00:15
別忘捐VP感謝幫助你的人 新手會員瞧一瞧
1樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
當使用背景式的運行,如cron或是rc。
其輸出裝置就已經不是你的介面內了。自然也就看不到輸出結果了。

如真想得到輸出結果的內容。最好是善用檔案輸出,再去查看該檔案。
本篇文章回覆於2017-10-04 12:04
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
2樓
作者回應

s5904163
檢舉此回應
感謝浩瀚星空版主的回覆。
請問crontab或是rc.local有辦法做到即時的顯示script字幕嗎?
好像有聽過可以做到但我自己搜尋了一段時間還是找不到正確的方式...
crontab我是有看過實機可以這樣做,只是我還不曉得是如何做到的(可能有搭配其他方式一起進行)~~再麻煩各位能慷慨解惑。

謝謝!
本篇文章回覆於2017-10-04 17:06
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
3樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
其實你這樣的要求是一件很奇特的事。

都已經要求在背景運行了。居然還需要前台顯示作業。
那為何不就乾脆不要用背景運行不就好了??

一般像這樣想知道背景式運行的情況的做法,其實也只有一種方式。
就如我上面說的,在背景運行的情況將輸出的畫面導向儲存到一個檔案。

你只要隨時查看這個檔案就行了。
本篇文章回覆於2017-10-05 10:13
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
4樓
作者回應

s5904163
檢舉此回應
浩瀚星空您好,
我已經了解用存出結果的方式,之後再去讀取它這樣的方式了。

但小弟一開始沒弄懂我用的兩個方式都是後台的自動執行,如果我想把我的script可以在前台自動執行加上輸出echo內容在畫面,請問應該用什麼方式?
再麻煩前輩們協助指點~
本篇文章回覆於2017-10-05 13:52
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
5樓
回應

浩瀚星空
捐贈 VP 給 浩瀚星空 檢舉此回應
放棄自動執行。
我只能給你這樣的答案了。

另外一個方式,但要搭配你的連結軟體。一般連結軟體,有可以在登入時自動下命令。
但這是透過軟體的自動下指令。比較不太一樣。

另外一招我就不太確定是否可行,因為我並沒有用過,或許你可以試試看

在其
/etc/profile (for all users)

/home/users/USERNAME/.bash_profile (for 單一 user USERNAME代表帳號,依帳號名稱不同而有所不同)
這兩個檔案都是Shell Script,當使用者"登入"Linux時,
優先會執行的是/etc/profile,接下來才會執行自己目錄下的.bash_profile

這邊是登入後才會運行。只是我不確定的是他是前景運行還是背景式運行。
不過如果說明是對的,因該是像windows系統的autoexec.bat的意思一樣才對。

但是如果你又要開機自動執行。又想要登入後看到訊息的情況。那就得分開兩部份程式來寫了。
一個開機自動運行不用變動,但要做訊息寫入檔案。
另一個寫成登入運行,其運行只是去讀取其檔案而已。

這邊還是要提醒你一下好了。
自動運行的方式,一般來說我們會指的是開機運行自動執行。
所以再開機處理完成,並沒有任何一個用戶登入在系統,自然也無法將其訊息輸出到任何畫面處理。
(因為也無畫面可供顯示)
所以你只能用檔案來充當前景來記錄畫面。

所以你先要了解這個性質。在不可能做到的情況下是沒辦法硬要要求做的。
本篇文章回覆於2017-10-05 16:28
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
6樓
作者回應

s5904163
檢舉此回應
謝謝提供建議,我目前使用的方式是把rhgb拿掉,讓畫面可以看到背景運作的內容,然後將echo後面加上可以輸出的指令,把script放在rc.local。
這樣也是一個方式,我會再試試版主建議的方法,非常謝謝以上的幫忙。
本篇文章回覆於2017-10-10 23:08
== 簽名檔 ==
--未登入的會員無法查看對方簽名檔--
[ 變換順序 ]   
1

回覆
如要回應,請先登入.