/dev/pts以下にファイルがない時があったのでwコマンドをパースすることにした。(おそらくLXDコンテナ内だからかな)
def idle_by_w_command
cmd = "w | grep #{self.username} | awk '{print $5}'"
output = self._exec(cmd, "admin")
output.split("\n").map{|line|
if line =~ /(\d+)days/
$1.to_i * 3600 * 24
elsif line =~ /(\d+):(\d+)m$/
$1.to_i * 3600 + $2.to_i * 60
elsif line =~ /(\d+):(\d+)$/
$1.to_i * 60 + $2.to_i
elsif line =~ /([0-9]*[.])?[0-9]+s$/
$1.to_i
end
}.compact
end