次から渡されたスタックオーバーフローここに属するので:
起動後しばらくして起動したサービスのCPUとメモリ使用量を記録したいと思います(webappmgr.service
)。この目的のために、私はそれに依存し、呼び出されwebappmgr
た後に実行する必要がある別の簡単なロギングサービスを作成しましたperftrace.service
。これにより、top
合計出力がawk
ファイルに継続的に書き込まれます/tmp/webapp.top
。
[Unit]
Description=Perftrace
After=webappmgr.service
[Service]
User=root
Type=oneshot
RemainAfterExit=yes
ExecStart=/bin/bash -c 'top -b -H -p $(pgrep webappmgr) | awk \'{ print strftime("%%H:%%M:%%S", systime())" " $0 }\' > /tmp/webapp.top &'
[Install]
WantedBy=webappmgr.service
システムが起動してwebappmgr
実行されるperftrace
とsystemctl start perftrace
。ファイルで/tmp/webapp.top
私が見たいものを見ることができます。
04:26:27 2596 testuser 20 0 1887640 24092 17068 S 0.0 0.5 0:00.27 webappmgr
04:26:27 2622 testuser 20 0 1887640 24092 17068 S 0.0 0.5 0:00.06 JSEngine
04:26:27 2628 testuser 20 0 1887640 24092 17068 S 0.0 0.5 0:00.01 webappmgr
04:26:27 2629 testuser 20 0 1887640 24092 17068 S 0.0 0.5 0:00.00 webappmgr
04:26:27 2630 testuser 20 0 1887640 24092 17068 S 0.0 0.5 0:00.00 webappmgr
04:26:27 2631 testuser 20 0 1887640 24092 17068 S 0.0 0.5 0:00.00 webappmgr
04:26:27 2632 testuser 20 0 1887640 24092 17068 S 0.0 0.5 0:00.00 FileDownloa+
ただし、perftrace.service
bootの直後にシステムが起動するようにシステムを有効にして再起動すると、ファイルにはwebappmgr
まったく異なる出力が表示されます。
04:31:03 %Cpu(s): 33.1 us, 17.7 sy, 0.1 ni, 41.2 id, 1.2 wa, 4.3 hi, 2.5 si, 0.0 st
04:31:03 KiB Mem : 4667484 total, 1369968 free, 2187548 used, 1109968 buff/cache
04:31:03 KiB Swap: 0 total, 0 free, 0 used. 2373988 avail Mem
04:31:03
04:31:06 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
04:31:06
04:31:06 top - 04:31:06 up 1 min, 1 user, load average: 40.87, 12.93, 4.54
04:31:06 Threads: 0 total, 0 running, 0 sleeping, 0 stopped, 0 zombie
04:31:06 %Cpu(s): 11.2 us, 15.5 sy, 0.0 ni, 66.8 id, 0.8 wa, 3.5 hi, 2.1 si, 0.0 st
04:31:06 KiB Mem : 4667484 total, 1362788 free, 2194416 used, 1110280 buff/cache
04:31:06 KiB Swap: 0 total, 0 free, 0 used. 2367116 avail Mem
04:31:06
04:31:09 PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
04:31:09
04:31:09 top - 04:31:09 up 1 min, 1 user, load average: 40.87, 12.93, 4.54
04:31:09 Threads: 0 total, 0 running, 0 sleeping, 0 stopped, 0 zombie
04:31:09 %Cpu(s): 11.9 us, 16.2 sy, 0.0 ni, 66.0 id, 0.0 wa, 3.6 hi, 2.2 si, 0.0 st
04:31:09 KiB Mem : 4667484 total, 1358060 free, 2199204 used, 1110220 buff/cache
04:31:09 KiB Swap: 0 total, 0 free, 0 used. 2362388 avail Mem
04:31:09
perftraceサービスを手動で開始するのと同様の出力を取得するにはどうすればよいですか?
ExecStart
繰り返しの間に2秒の休憩時間を置いて、while-trueループ(つまり、単一のバッチでtopを実行)で呼び出されるスクリプトを起動するように変更することで、この問題を解決しましたが、top -b -n 1 ...
意味のある結果も提供できませんでした。すべてのCPU負荷は0%です。