当使用 , 计时命令执行时间时sudo
,time
应该在 之前sudo
还是之后sudo
?
time sudo command
或者
sudo time command
哪一个是正确的?
输出对我来说似乎很不同
[esolve@xxt ~]$ sudo time ls
193.144.21.131_udp.folder lockfile run_udp.sh udp_folder
50IP.txt my_ip_host_site send_udp_log udp_receiver
ip_each_site raw_udp_client ssh.log
0.00user 0.00system 0:00.00elapsed ?%CPU (0avgtext+0avgdata 3088maxresident)k
0inputs+0outputs (0major+236minor)pagefaults 0swaps
[esolve@xxt ~]$ time sudo ls
193.144.21.131_udp.folder lockfile run_udp.sh udp_folder
50IP.txt my_ip_host_site send_udp_log udp_receiver
ip_each_site raw_udp_client ssh.log
real 0m0.004s
user 0m0.003s
sys 0m0.002s
[esolve@xxt ~]$
为什么他们会这样?
答案1
time sudo command
执行 shell 的time
内置命令(如果有),而sudo time command
始终执行time
程序搜索路径 ( $PATH
) 中的可执行文件。
time sudo command
包括命令所花费的时间sudo
,反之sudo time command
则不包括。
您应该使用sudo time command
,因为sudo
的处理时间很小但并不总是可以忽略不计,并且如果用户需要输入密码,它的挂钟时间可能会大很多。
答案2
看起来在 Debian Stretch 上“sudo 时间”不起作用
# sudo time ls
sudo: time: command not found
# time sudo ls
created
real 0m0,007s
user 0m0,002s
sys 0m0,006s
在 Debian 延伸上:
# whereis time
time: /usr/include/time.h /usr/share/man/man7/time.7.gz /usr/share/man/man3/time.3am.gz /usr/share/man/man2/time.2.gz
在 Debian 杰西上:
# whereis time
time: /usr/bin/time /usr/include/time.h /usr/share/man/man3/time.3am.gz /usr/share/man/man1/time.1.gz /usr/share/man/man2/time.2.gz /usr/share/man/man7/time.7.gz