标签:linux process-management shell-script
参见英文答案 > How to check how long a process has been running? 8个
在linux中,从/ proc / PID / stat,我可以获得start_time(22:nd)字段,该字段指示内核启动后该进程启动多长时间.
什么是将其转换为秒段以来的时代格式的好方法?将它添加到/ proc / stat的btime?
基本上,我正在寻找过程的时代,而不是它何时开始.我的第一种方法是将正在调查的进程的start_time与当前进程的start_time进行比较(假设它没有运行很长时间).
当然必须有更好的方法.
在查看https://www.kernel.org/doc/Documentation/filesystems/proc.txt时,我没有发现任何明显的与年龄相关的参数
那么,我目前所拥有的是:
process age = (current_utime - ([kernel]btime + [process]start_time))
在shell脚本中更有效的任何替代方法? (理想情况下,DST更改正确)
解决方法:
从版本3.3.0开始,Linux上的procps-ng的ps有一个etimes输出字段,它给出了自进程启动以来经过的时间(以秒为单位)(顺便说一下,自上次经过的时间不一定)进程执行命令的时间(如果有的话!)(进程在进程名称中运行该进程的时间),因此可能没有您想象的那么有用).
所以你可以这样做:
ps -o etimes= -p "$pid"
对于作为Unix纪元时间的开始时间(使用GNU日期):
(export TZ=UTC0 LC_ALL=C; date -d "$(ps -o lstart= -p "$pid")" +%s)
请注意,您不能使用/ proc / $pid的修改时间. That is just the time those files were instantiated与进程的开始时间无关.
标签:linux,process-management,shell-script 来源: https://codeday.me/bug/20190812/1644460.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。