vCSA 6.0 のシェルのタイムアウト値について

vCSA シェルのタイムアウト値はバージョンによって異なります。

vCSA 6.0 の場合には、シェルタイムアウト値がデフォルトで 3600秒 (1H) になっていたり、vCSA 6.0 u1 の場合には 900秒 (15分) になっていたりします。

vCSA 6.0 では、タイムアウト値として設定できる 最大値は、231 – 1 = 2,147,483,647秒 で、計算して見ると 約 68年 になります。

・ 2,147,483,647 秒 / 86,400(1日の秒数) = 24,855.13480324074 日

・ 24,855.13480324074 日 / 365 日 = 68.09625973490614 年

シェル切替えを有効にするコマンド shell.set --enabled True の有効期限がデフォルトで 1時間になっているので、1時間が経つと enableddisabled に変わり、有効期限が切れた状態になってしまうので、Command> shell を実行しても切替わらなくなります。

vCSA のシェルタイムアウト値を無期限に設定する前に、簡単に、以下のテストを実施してから設定するようにします。

  • timeout 値として 10 秒を設定
  • 10 秒後、shell を実行し、はじかれることを確認
  • 再度、timeout 値として 10 秒を設定
  • 10 秒以内に、shell を実行し、切替わることを確認
  • timeout 値を設定してから 10 秒が経過した時点で exit でシェルから抜け、Command> プロンプトに戻る
  • shell を実行し、はじかれることを確認 (有効期限切れ)
  • timeout 値を無期限に設定

Step 1. vCSA 6.0 シェル timeout 期限切れテスト

vCSA 6.0 シェル timeout 期限切れテストRaw Code(S)Raw Code(T)
#### timeout 値として 10 を設定
Command> shell.set --enabled True --timeout 10

#### 10 秒後、shell を実行し、はじかれることを確認
Command> shell
Shell is disabled.

#### 再度、timeout 値として 10 を設定
Command> shell.set --enabled True --timeout 10

#### 10 秒以内に、shell を実行し、切替わることを確認
Command> shell
#

#### 10 秒が経過した時点で exit でシェルから抜け、Command> プロンプトに戻る
# exit
logout
Command>

#### shell を実行し、はじかれることを確認 (有効期限切れ)
Command> shell
Shell is disabled.

Step 2. vCSA 6.0 シェル timeout 値を無期限に設定

shell.set --enabled True --timeout <SEC>Raw Code(S)Raw Code(T)
Command> shell.set --enabled True --timeout 2147483647

これで、68年間は、シェル切替え設定をしなくても良くなりました。

vCSA 6.0 u1 から timeout の上限が変わった?

後で気が付いたのですが、vCSA 6.0 u1 からシェルタイムアウト値の上限が変わったみたいです。

最近、vCSA 6.0 から vCSA 6.0 u1 へアップグレードしたのですが、たまたま vCSA の OS にログインする必要があって、上記のコマンドを実行してみたら以下のエラーで起こられました。

確認して見たら設定できる MAX 値が 86400秒 (1日) に変わってました。

shell.set --enabled True --timeout <SEC>Raw Code(S)Raw Code(T)
Command> shell.set --enabled True --timeout 2147483647
Error in method: The maximum timeout is 86400 seconds(1 day). (code 2005)
Attributes: {}

tmout.sh を修正し、直接タイムアウト値を設定

OS のログインユーザにタイムアウト値を適用する tmout.sh を修正し、直接タイムアウト値を設定します。

まずは、tmout.sh の中身を確認し、どうなっているか確認します。

TMOUT=900 になっているので、シェルタイムアウトのデフォルト値として 900秒 (15分) が設定されていることが分かります。

tmout.sh 修正前の確認Raw Code(S)Raw Code(T)
Command> shell

# cat /etc/profile.d/tmout.sh
TMOUT=900
readonly TMOUT
export TMOUT
mesg n 2>/dev/null

# echo $TMOUT
900

後は、TMOUT=900 の値を増やします。

この例では、シェルタイムアウト値を 900秒 (15分) → 900000秒 (250時間) に変更します。

設定を確認するためには、完全にログアウトし、再度ログインする必要があるので、設定が終わったら一回ログインし直して、設定が反映されていることを確認します。

/etc/profile.d/tmout.shRaw Code(S)Raw Code(T)
#TMOUT=900
TMOUT=900000
readonly TMOUT
export TMOUT
mesg n 2>/dev/null
# exit

Command> exit

#### 再度ログインしてから以下を実行

Command> shell

# echo $TMOUT
900000

以上、vCenter Server Appliance 6.0 シェルのタイムアウト値変更 でした。