有一定工作經驗的運維人基本都會遇到這樣的場景,某個窗口自動斷開了,提示超時:
[oracle@jystdrac1 ~]$ timed out waiting for input: auto-logout
如果你使用的是SecureCRT,很多人可能會想到工具有反空閑的設置,也是網上能輕易搜到的常用解決方案,可以在超時時間內定時發送一些信息,使得會話保持活躍狀態。
--比如定時發送“~”,但有時也會不好用:
[oracle@jystdrac1 ~]$ ~timed out waiting for input: auto-logout
--比如定時發送回車"\n",測試還比較好用:
但要注意這實際有非常大的隱患,可能引起誤操作:
不妨試想一下你遠程桌面到某環境想刪除某個目錄下以.log結尾的日志文件,
當你想要輸入`rm -rf *.log`,但當只輸入到`rm -rf *`時,網絡故障遠程桌面斷了,遠程桌面上的CRT終端還在
那么接下來的自動定時"\n" 回車,就是一場災難了,會把目錄下所有文件都刪除掉。。
那追溯下為什么會有這樣的自動超時限制,有這樣的變量(這里為了方便演示,設置了10s間隔的超時):
[oracle@jystdrac1 ~]$ echo $TMOUT
10
如果我們嘗試臨時設置TMOUT變量為0,就可以起到當前會話不會超時斷開的作用(下面測試驗證設置后,超過10s也未斷開):
[oracle@jystdrac1 ~]$ export TMOUT=0
[oracle@jystdrac1 ~]$ echo $TMOUT
0
[oracle@jystdrac1 ~]$
[oracle@jystdrac1 ~]$ date
Fri Apr 3 21:04:16 CST 2020
[oracle@jystdrac1 ~]$ date
Fri Apr 3 21:04:28 CST 2020
[oracle@jystdrac1 ~]$
但有一點需要注意,這個參數通常是root用戶下,/etc/profile文件設置的,如果同時設置了readonly TMOUT
export TMOUT=10
readonly TMOUT
那么,就不會允許你臨時設置或取消TMOUT的值,如果你嘗試這樣做,會收到明確的提示:
[oracle@jystdrac1 ~]$ export TMOUT=0
-bash: TMOUT: readonly variable
[oracle@jystdrac1 ~]$
[oracle@jystdrac1 ~]$ unset TMOUT
-bash: unset: TMOUT: cannot unset: readonly variable
[oracle@jystdrac1 ~]$
[oracle@jystdrac1 ~]$ echo $TMOUT
10
這種情況就得考慮在超時時間內,反空閑發送"\n"回車了。但也同樣面臨上面說到的那種風險。
或者以后當你知道自己操作必然是執行很久怕會話斷掉,可以考慮nohup 命令 &后台執行的方式。
