国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

shell(bash)下“time” 命令的輸出詳解

2019-10-26 18:49:38
字體:
來源:轉載
供稿:網友

前言

相信大家都知道bash下time是一個很有用的命令,它可以為一段腳本或一個程序的執行計時,這通常在粗略比較程序執行效率的時候很方便。但是你會發現,time命令輸出的時間文字不能被簡單地重定向,例如重定向至一個文本文件,只能顯示在屏幕上,這對于非交互計時很不方便。

例如:

$ time find . -name "mysql.sh" >1.txtreal 0m0.081suser 0m0.060ssys  0m0.020s$ time find . -name "mysql.sh" 2>2.txt./work186/sms/bin/mysql.sh./work186/sms/src/scripts/mysql.sh./work186/sms/src/scripts1/mysql.sh./work186/sms1/bin/mysql.sh./work186/sms1/src/scripts/mysql.sh./temp/sms/bin/mysql.sh./temp/sms/src/scripts/mysql.shreal 0m0.068suser 0m0.040ssys  0m0.030s

通過上面的嘗試,發現無法將time的輸出信息重定向到文件里面,為什么?因為time是shell的關鍵字,shell做了特殊處理,它會把time命令后面的命令行作為一個整體來進行處理,在重定向時,實際上是針對后面的命令來的,time命令本身的輸出并不會被重定向的。

關鍵字time設置了一個標記,知道command(find)命令執行完,timing信息才被打印到stderr中。time關鍵字要整個command和管道,還有相關的重定向都要來得高級。這就是為什么簡單的重定向對于time而言不起作用。 這是Bash語法定義的。command之后的重定向對于time而言,是command的一部分。

注:time命令的輸出到標準錯誤(stderr)中

當time命令執行時,command運行于當前shell(也就是time命令所執行的shell)的下一級shell,而time自身的輸出位于當前shell的stderr。像上面所示的那樣重定向只會使得command的stdout被重定向至一個文本文件,而不會輸出time自身的輸出內容。

第一種解決方法,就是將time命令和將要執行的命令行放到一個shell代碼塊中,也就是一對大括號中,要注意空格和分號的使用。

$ { time find . -name "mysql.sh"; } 2>2.txt./work186/sms/bin/mysql.sh./work186/sms/src/scripts/mysql.sh./work186/sms/src/scripts1/mysql.sh./work186/sms1/bin/mysql.sh./work186/sms1/src/scripts/mysql.sh./temp/sms/bin/mysql.sh./temp/sms/src/scripts/mysql.sh$ cat 2.txtreal 0m0.068suser 0m0.030ssys  0m0.040s

第一種方式的嘗試成功了,總結起來就是 { time command-line; } 2>file  注意分隔符的使用。

另外一種方式就是使用子Shell的方式

如下所示:

$ (time find . -name "mysql.sh") 2>2.txt./work186/sms/bin/mysql.sh./work186/sms/src/scripts/mysql.sh./work186/sms/src/scripts1/mysql.sh./work186/sms1/bin/mysql.sh./work186/sms1/src/scripts/mysql.sh./temp/sms/bin/mysql.sh./temp/sms/src/scripts/mysql.sh$ cat 2.txtreal 0m0.083suser 0m0.040ssys  0m0.020s[root@web186 root]#

第二種方式的嘗試也成功了,總結起來就是

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 内丘县| 进贤县| 赤峰市| 临西县| 修武县| 哈密市| 都昌县| 金寨县| 文昌市| 深州市| 乌兰浩特市| 湟中县| 齐河县| 南乐县| 汾阳市| 龙海市| 永定县| 西乌珠穆沁旗| 沅陵县| 新密市| 苗栗市| 凤山县| 尤溪县| 北京市| 广宁县| 漯河市| 甘泉县| 星子县| 长兴县| 平武县| 铜梁县| 芮城县| 潮州市| 望谟县| 灵武市| 武城县| 开鲁县| 杨浦区| 子洲县| 绍兴县| 大田县|