systemctl起動時に予期しないトップ出力

systemctl起動時に予期しないトップ出力

次から渡されたスタックオーバーフローここに属するので:

起動後しばらくして起動したサービスの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実行されるperftracesystemctl 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.servicebootの直後にシステムが起動するようにシステムを有効にして再起動すると、ファイルには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%です。

ベストアンサー1

おすすめ記事