十個鮮為人知的 Linux 命令 - Part 4
繼續我們的"鮮為人知"系列,本系列的第四篇會讓你了解一些有趣 又 動態的命令。這里我們進入實際的教程,沒有很多理論。
本系列的第四篇包含了另外的鮮為人知的Linux命令,這些值得去了解。也許你已經知道了這些命令,毫無疑問你是一個勇于探索的資深Linux用戶。
32. strace Command
strace是一個調試工具并被主要用于Linux的故障排除。它可能在你的系統內沒有默認安裝,你可能需要apt 或者 yum 安裝所需要的包。
使用strace命令追蹤一個命令的執行。
- root@tecmint [~]# strace pwd
示例輸出
- execve("/bin/pwd", ["pwd"], [/* 29 vars */]) = 0
- brk(0) = 0x728000
- mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0df2000
- access("/etc/ld.so.preload", R_OK) = -1 ENOENT (No such file or directory)
- open("/etc/ld.so.cache", O_RDONLY) = 3
- fstat(3, {st_mode=S_IFREG|0644, st_size=38427, ...}) = 0
- mmap(NULL, 38427, PROT_READ, MAP_PRIVATE, 3, 0) = 0x7f29b0de8000
- close(3) = 0
- open("/lib64/libc.so.6", O_RDONLY) = 3
- read(3, "\177ELF\2\1\1\3\0\0\0\0\0\0\0\0\3\0>\0\1\0\0\0\360\355\1I;\0\0\0"..., 832) = 832
- fstat(3, {st_mode=S_IFREG|0755, st_size=1922152, ...}) = 0
- mmap(0x3b49000000, 3745960, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0x3b49000000
- mprotect(0x3b4918a000, 2093056, PROT_NONE) = 0
- mmap(0x3b49389000, 20480, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x189000) = 0x3b49389000
- mmap(0x3b4938e000, 18600, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0x3b4938e000
- close(3) = 0
- mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0de7000
- mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0de6000
- mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29b0de5000
- ....
strace命令有大量的參數和選項,請參考man頁來獲取詳細信息。
33. disown -a && exit 命令
大多數系統管理員使用screen 命令來控制運行在終端后臺的作業。讓我們假設一下如果你有一個長期運行的作業并想要將它從終端中脫離,你可以用screen命令來這么做。但是如果你不知道如何使用screen,那么disown可以用來救急。
disown命令可以在后臺持續運行任務,即使你關閉了終端會話。disown命令的語法是:
- root@tecmint [~]# Command; disown -a && exit
為了在終端中再次脫離一個已經長期運行的任務(譯注:可能已經bg運行了,但是并沒有脫離終端),使用jobs命令來找出任務號,接著使用disown %n,這里的%n是作業號。為了驗證作業確實在運行,使用ps 或者 top 命令。nohup命令也是一個disown命令的替代品。
34. getconf LONG_BIT 命令
上面的命令能顯示你的機器架構是32 bit 或者 64 位?
- root@tecmint [~]# getconf LONG_BIT
- 32
35. 終端上顯示日期
下面的命令是幾個命令的集合,確切地說是一個腳本。對于在shell或者終端下工作的人來說,沒有GUI界面看到當前系統日期是一個乏味的工作。你可以用‘date‘命令查看今天的日期。
只要在提示符后輸入如下的命令你就會在終端的右上角看到日期和時間。
- root@tecmint [~]# while sleep 1;do tput sc;tput cup 0 $(($(tput cols)-29));date;tput rc;done &
36. convert 命令
在寫教程的時候,我經常需要生成輸出,很多時候是圖片格式的輸出。上面的命令集合并不適合我。假設我需要tree命令的圖片格式的輸出(對 /etc/x11 目錄 )。
- root@tecmint:/etc/X11# tree | convert label:@- /home/avi/tree.png
上面命令的輸出可以在一個特定的位置(這里是我的主目錄)下看到,文件名是tree.png。
37. watch -t -n1 “date +%T|figlet”
記住“figlet”命令在我們早期的文章“20 Funny Commands of Linux”中的描述。這個命令非???,這次我們會通過管道輸出到‘figlet‘而在終端上顯示一個動畫電子鐘。
你自己檢查一下,記住你必須已經在系統上安裝了figlet,用apt 或者 yum安裝所需要的包。
- root@tecmint [~]# watch -t -n1 "date +%T|figlet"
示例輸出
- _ ___ ____ ___ _____ _ _ Fri Nov 29 10:29:34 GMT
- / |/ _ \ _|___ \ / _ \ _|___ /| || |
- | | | | (_) __) | (_) (_) |_ \| || |_
- | | |_| |_ / __/ \__, |_ ___) |__ _|
- |_|\___/(_)_____| /_/(_)____/ |_|
38. host 和 dig 命令
雖然“host” 和 “dig”命令不那么鮮為人知,仍然很少使用。host命令是一個DNS查詢工具。
- root@tecmint [~]# host www.google.com
- www.google.com has address 173.194.66.147
- www.google.com has address 173.194.66.105
- www.google.com has address 173.194.66.99
- www.google.com has address 173.194.66.104
- www.google.com has address 173.194.66.106
- www.google.com has address 173.194.66.103
- www.google.com has IPv6 address 2a00:1450:400c:c03::68
(譯注:事實上,我覺得dig命令是***大的,自從有了dig,我就再也不用 nslookup 了。)
- root@tecmint [~]# dig www.google.com
- ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> www.google.com
- ;; global options: +cmd
- ;; Got answer:
- ;; ->>HEADER<
39. dstat 命令
dstat是一個多用途的工具,它會依據系統資源生成統計。默認情況下你的系統可能沒有安裝‘dstat‘。在使用這個彩色的描述系統信息的生成器前使用apt 或者 yum來安裝。
- root@tecmint [~]# dstat
40. bind -p 命令
‘bind -p‘會顯示所有的BASH shell可用的快捷方式。
- root@tecmint [~]# bind -p
- "\C-g": abort
- "\C-x\C-g": abort
- "\e\C-g": abort
- "\C-j": accept-line
- "\C-m": accept-line
- # alias-expand-line (not bound)
- # arrow-key-prefix (not bound)
- # backward-byte (not bound)
- "\C-b": backward-char
- "\eOD": backward-char
- "\e[D": backward-char
- "\e!": complete-command
- "\e/": complete-filename
- "\e@": complete-hostname
- "\e{": complete-into-braces
- "\e~": complete-username
- "\e$": complete-variable
- # copy-backward-word (not bound)
- # copy-forward-word (not bound)
- # copy-region-as-kill (not bound)
- ....
- ....
41. touch /forcefsck
下面的命令會在root目錄下創建一個空的文件夾'forcefsck'。這會強制Linux系統在下次啟動時檢查文件系統。
- root@tecmint [~]# touch /forcefsck
今天這些就是全部。因為你們愛‘鮮為人知的命令‘ ,因此我們將繼續這個系列,本系列的下一篇文章將很快發布。
不要走開繼續關注Tecmint。不要忘記在評論欄里留下你們有價值的反饋。幫我們一個忙,喜愛、分享我們的文章,并幫我們傳播。
via: http://www.tecmint.com/10-lesser-known-effective-linux-commands-part-iv/