ps aux とかだと出てくる時間は system+user の合計時間? らしくて、純粋な累積時間じゃないので、対象のプロセスがいつ起動したのか? を追跡できないっぽい。
journal とかに記録されている (systemctl で管理している) とかだとそっちから追えば良いけど、以外とそうじゃないやつなど調べたい時どうするのか、という感じだったけど、 ps のオプションで指定できる lstart で確認できる。
lstart コマンドの実行が始まった正確な時刻を、 strftime(3) で規定された ‘%c’ フォーマットで表示します。 https://nxmnpg.lemoda.net/ja/1/ps
実際にやってみた
puma が thread 0,16 とかで動いている環境。
[ec2-user@degeneracy ~]$ ps -eo pid,comm,lstart,args| { head -n 1; grep puma; }
PID COMMAND STARTED COMMAND
476376 ruby Tue Apr 1 03:08:34 2025 puma 3.12.1 (unix:///var/www/example/shared/tmp/sockets/puma.sock)
こんな感じ。
だいたい「これちゃんと起動できてないんじゃないの?!」みたいな問い合わせに「じゃあ再起動しますか?」の証跡として合わせて出す、みたいな話になりがちなので覚えておきたい。