2021/12/25

ref:Inotify Watches Limit

就是在 /etc/sysctl.d/ 下新增一個 10-idea.conf
fs.inotify.max_user_watches = 524288
然後 run
sudo sysctl -p --system

2021/12/23

systemd service delay 40 sec

單純的只是要比原來的啟動時間(dep) delay 40 sec 的話。
有很多作法,timer, target. 最後這個最簡單: 就是用 Sleep
然後要加上
TimeoutStartSec=infinity
這樣就不會出現 Error。
然後加上一個 Pre
ExecStartPre=/bin/sleep 40
這個地方如果有 run script,也可以在 script 中 sleep。

這樣,systemctl start 時,如果在 sleep 中,會看到狀態是 sleep 40

2021/12/21

sshd ClientAliveInterval, ClientAliveMax

sshd 的 config file (sshd_config),有兩項設定:
ClientAliveInterval
ClientAliveMax
是用來偵測/決定 Client 是不是存在的設定。

如果沒有收到任何 Client送來的封包,超過 ClientAliveInterval,就會送一個 null request packet 給 client,提醒他。
如果還是沒有收到,等 ClientAliveInterval 後,再送一次。
這樣一直送超過 ClientAliveMax 次之後,就把這個 Client 連線踢掉。

其中,如果有任一次收到,就重新計數。

所以,如果要 1min timeout 的話,有幾種設法:
ClientAliveInterval 10
ClientAliveMax 5
或是
ClientAliveInterval 60
ClientAliveMax 0
後者的設法,就是不用送 null request 給 client 了,時間到直接切掉。

在 server 端,用 who 可以看到連線的 idle time。
但是這個 idle time 只代表 client 沒有輸入任何 command 的時間(idle)。
跟 沒有收到封包 不一樣。
因為 有些(大部分) ssh client 都會定期送 keepalive 封包給 server。
如果開啟 sshd debug mode (-d)就可以定期看到 (about 30sec)
debug1: Got 100/24 for keepalive
debug1: Got 100/25 for keepalive
debug1: Got 100/26 for keepalive
debug1: Got 100/27 for keepalive
如果收到這格,sshd 就會reset ClientAliveInterval 的計數。
但是,who 不會清調 idle 的計數。
所以,只要 ssh client 維持連線,即使不輸入任何東西,sshd 端 who 的 idle 時間超過了 ClientAliveInterval*(ClientAliveMax+1),一樣不會被切掉。

2021/12/14

official docker support nvidia

真的變得這麼簡單?
基本就照這一篇 的說明,把 install command copy-paste 就可以了。
就是...
加入 nvidia-docker 的 apt repo
apt install nvidia-docker2,重新啟動docker。就可以了。

然後 tesorflow 也提供支援 nvidia-docker 的image