使用 sudo 计时命令执行时间时,“time”应该在“sudo”之前还是“sudo”之后?

使用 sudo 计时命令执行时间时,“time”应该在“sudo”之前还是“sudo”之后?

当使用 , 计时命令执行时间时sudotime应该在 之前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

相关内容