linux系统查看当前时间的命令_linux查看当前时间的命令_linux命令行查看当前时间

time的,用于检测的运行时间,还可以检测显存、I/O等的使用情况。

1linux系统默认有两个time

1一个是bash的外置命令,比较简单

2一个是/usr/bin/time外部命令。

root@SD-20200928IIIF:~# type -a time
time is a  keyword
time is /usr/bin/time

2外置的time命令

查看运行时间:

root@SD-20200928IIIF:~# time php demo.php 
10000
real    0m0.122s
user    0m0.016s
sys 0m0.109s

查看shell运行时间:

root@SD-20200928IIIF:~# time find /etc/php/ -name "php.ini"
/etc/php/7.2/apache2/php.ini
/etc/php/7.2/cli/php.ini
real    0m0.016s
user    0m0.000s
sys 0m0.016s

输出结果统计了三个时间:

real:从进程开始执行到完成所花费的CPU总时间。该时间包括进程执行时实际使用的CPU时间,进程花费在阻塞上的时间(如等待完成I/O操作)和其他进程所花费的时间(Linux是多进程系统,ls在执行过程中,可能会有别的进程占据CPU)。

user:进程执行用户态代码所花费的CPU时间。该时间仅指进程执行时实际使用的CPU时间,而不包括其他进程所使用的时间和本进程阻塞的时间。

sys:进程在内核态运行所花费的CPU时间,即执行内核系统调用所花费的CPU时间。

真正执行时间是多少?答案就是user+sys的时间,但通常情况下,real=user+sys,因此我们就使用real的时间作为程序的执行时间了。

2.1real的几个坑

误区一:real_time=user_time+sys_time

realtime是包含了其他进程的执行时间和进程阻塞时间的,而usrtime+systime其实是不包括其他进程的执行时间和进程阻塞时间的。为此,real_time>user_time+sys_time是十分有可能的。

误区二:real_time>user_time+sys_time

通常来说,在单核CPU系统中,这个关系式是创立的,但假如我们的系统是多核CPU的话,而有些程序是就能同时借助到多核CPU的估算能力的,在这些情况下这个关系式就不组建了。

程序借助多核CPU的估算能力,可以并行地处理多项事务。如同一件工作linux操作系统界面,原先是一个CPU核去做,如今是两个CPU核并行做免费linux主机,这么完成同样工作所耗费的总时间是user_time+sys_time,而两个人并行做却还能在更短的时间内完成,历时为real_time。为此,这些情况下,便出现了real_time

误区三:real_time

多核情况下,real_timeuser_time+sys_time。

里面的三个误区有点绕,但推论很重要,就是real_time和user_time+sys_time的大小关系不是恒久不变的,你须要了解你的Linux服务器,是单核,还是多核,这样就能正确地确定它们的关系。

2.2系统缓存

root@SD-20200928IIIF:~# time find /mnt/d/php_worker/php-command/ -name "*php" > /dev/null 
real    0m0.025s
user    0m0.000s
sys 0m0.031s
root@SD-20200928IIIF:~# time find /mnt/d/php_worker/php-command/ -name "*php" > /dev/null 
real    0m0.021s
user    0m0.016s
sys 0m0.000s

为何同样的命令在第二次执行时快如此多呢?

这个现象跟Linux操作系统的运行原理有关,find命令在第一次执行后,系统会对一些文件做缓存,在第二次执行时,就刚好使用到了这种缓存中的数据,因而执行速率就变快了好多。

3/usr/bin/time命令

它除了可以检测运行时间,还可以检测显存、I/O等的使用情况

linux系统查看当前时间的命令_linux查看当前时间的命令_linux命令行查看当前时间

这儿还用php这个举例

# shell内置time命令
root@SD-20200928IIIF:~# time php demo.php 
10000
real    0m0.095s
user    0m0.031s
sys 0m0.063s
# /usr/bin/time 命令
root@SD-20200928IIIF:~# /usr/bin/time php demo.php 
10000
0.04user 0.07system 0:00.11elapsed 107%CPU (0avgtext+0avgdata 16476maxresident)k
0inputs+0outputs (0major+4801minor)pagefaults 0swaps
# /usr/bin/time 命令也可以使用 time
root@SD-20200928IIIF:~# time php demo.php 
10000
0.03user 0.06system 0:00.09elapsed 96%CPU (0avgtext+0avgdata 16476maxresident)k
0inputs+0outputs (0major+4801minor)pagefaults 0swaps

/usr/bin/time命令输出内容中的最后两行,复印了好多指标数据linux系统查看当前时间的命令,但其实有点冗长难懂。这时我们可以使用一个-v选项,这样可以复印出更详尽的低格后的信息。

root@SD-20200928IIIF:~# time -v php demo.php 
10000
    Command being timed: "php demo.php"
    User time (seconds): 0.00
    System time (seconds): 0.10
    Percent of CPU this job got: 93%
    Elapsed (wall clock) time (h:mm:ss or m:ss): 0:00.11
    Average shared text size (kbytes): 0
    Average unshared data size (kbytes): 0
    Average stack size (kbytes): 0
    Average total size (kbytes): 0
    Maximum resident set size (kbytes): 16476
    Average resident set size (kbytes): 0
    Major (requiring I/O) page faults: 0
    Minor (reclaiming a frame) page faults: 4802
    Voluntary context switches: 0
    Involuntary context switches: 0
    Swaps: 0
    File system inputs: 0
    File system outputs: 0
    Socket messages sent: 0
    Socket messages received: 0
    Signals delivered: 0
    Page size (bytes): 4096
    Exit status: 0

在time命令的输出中,Elapsedtime是通过系统调用gettimeofday获取到的结束时间和起始时间相加得到的。为此,time对于运行时间较短的任务计时时,会形成一定偏差。time命令输出的时间统计精度基本在10微秒级。

3.1time命令输出指标介绍

time命令可以显示的资源共有三大项,分别是:时间、内存和I/O。下边来具体瞧瞧time命令都显示了什么指标数据。

(1)时间

指标

含义

Elapsed(wallclock)time

执行命令所耗费的时间,格式是:[hour]:minute:second

Systemtime

命令执行时在内核模式所耗费的时间,单位是秒

Usertime

linux查看当前时间的命令_linux命令行查看当前时间_linux系统查看当前时间的命令

命令执行时在使用者模式所耗费的时间,单位是秒

PercentofCPUthisjobgot

命令执行时CPU的占用比列。虽然这个数字就是内核模式的CPU时间加上使用者模式的CPU时间乘以总时间

(2)显存

指标

含义

Maximumresidentsetsize

执行程序所占用显存的最大值。单位是KB

Averageresidentsetsize

执行程序所占用显存的平均值,单位是KB

Averagetotalsize

执行程序所占用的显存总数(stack+data+text)的平均大小,单位是KB

Averageunshareddatasize

执行程序所占用的私有数据区(unshareddataarea)的平均大小,单位是KB

Averagestacksize

linux命令行查看当前时间_linux系统查看当前时间的命令_linux查看当前时间的命令

执行程序所占用的私有堆栈(unsharedstack)的平均大小,单位是KB

Averagesharedtextsize

执行程序间共享内容(sharedtext)的平均值,单位是KB

Pagesize

系统显存页的大小,单位是byte。对于同一个系统来说,这是个常数

(3)I/O

指标

含义

Major(requiringI/O)pagefaults

此程序的主要显存页错误发生的次数。所谓的主要显存页错误是指某一显存页己经詈换到SWAP分区中,又被其他程序使用过,该页的内容必须从SWAP分区里再读下来能够使用

Minor(reclaimingaframe)pagefaults

此程序的次要显存页错误发生的次数。所谓的次要显存页错误是指某一显存页其实己经詈换到SWAP中,但仍未被其他程序使用。此时该页的内容并未被破坏linux系统查看当前时间的命令,何必从SWAP分区里读下来即可直接使用

Swaps

此程序被交换到SWAP分区的次数

Involuntarycontextswitches

linux系统查看当前时间的命令_linux命令行查看当前时间_linux查看当前时间的命令

此程序被逼迫中断(如CPU时间用尽)的次数

Voluntarycontextswitches

此程序自愿中断(I/O执行完毕,硬碟读取完成等)的次数

Filesysteminputs

此程序所输入的文件数

Filesystemoutputs

此程序所输出的文件数

Socketmessagesreceived

此程序所收到的SocketMessage

Socketmessagessent

此程序所送出的SocketMessage

Signalsdelivered

此程序所收到的讯号数

Exitstatus

命令退出状态

本文整理参考

本文原创地址://q13zd.cn/tmlzlxtzdyyc.html编辑:刘遄,审核员:暂无