strace 查看一个命令执行的源码
跟踪程式执行时的系统调用和所接收的信号.通常的用法是strace执行一直到commande结束.
并且将所调用的系统调用的名称、参数和返回值输出到标准输出或者输出到-o指定的文件.
strace是一个功能强大的调试,分析诊断工具.你将发现他是一个极好的帮手在你要调试一个无法看到源码或者源码无法在编译的程序
<code class="language-ruby hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;"> -c <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#统计每一系统调用的所执行的时间,次数和出错的次数等. </span> -<span class="hljs-constant" style="box-sizing: border-box;">C</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#Like -c but also print regular output while processes are running</span> -d <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#输出strace自身的关于标准错误的调试信息. </span> -f <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#跟踪由fork调用所产生的子进程. </span> -ff <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#如果提供-o filename,则所有进程的跟踪结果输出到相应的filename.pid中,pid是各进程的进程号. 此与-c不兼容</span> -h <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#输出简要的帮助信息. </span> -i <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#打印系统调用时候的入口指针. </span> -q <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#禁止输出关于脱离的消息. </span> -r <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#进入每一个系统调用时打印一个相对时间戳,一个系统调用的开始和下一个系统调用接替时,两者之间的时间. </span> -t <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#在输出中的每一行前加上时间信息. </span> -tt <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#时间信息精确到微妙</span> -ttt <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#时间信息精确到微妙,而且时间表示为unix时间戳</span> -<span class="hljs-constant" style="box-sizing: border-box;">T</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#显示每一调用所耗的时间. </span> -v <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#Print unabbreviated versions of environment, stat, termios, etc. calls</span> -<span class="hljs-constant" style="box-sizing: border-box;">V</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#输出strace的版本信息. </span> -x <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#打印所有非ascii字符串以十六进制字符串格式显示。</span> -xx <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#所有字符串以十六进制形式输出. </span> -a column <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#设置返回值的输出位置.默认 为40. </span> -e expr <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#指定一个表达式,用来控制如何跟踪.格式如下: </span> [qualifier=][!]value1[,value2]... qualifier只能是 trace,abbrev,verbose,raw,signal,read,write其中之一.value是用来限定的符号或数字.默认的 qualifier是 trace.感叹号是否定符号.例如<span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:</span> -eopen等价于 -e trace=open,表示只跟踪open调用.而-etrace!=open表示跟踪除了open以外的其他调用.有两个特殊的符号 all 和 none. 注意有些shell使用!来执行历史记录里的命令,所以要使用反斜杠 -e trace=set <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#只跟踪指定的系统调用.例如:-e trace=open,close,rean,write表示只跟踪这四个系统调用.默认的为set=all. </span> -e trace=file <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#只跟踪有关文件操作的系统调用. </span> -e trace=process <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#只跟踪有关进程控制的系统调用. </span> -e trace=network <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#跟踪与网络有关的所有系统调用. </span> -e strace=signal <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#跟踪所有与系统信号有关的 系统调用 </span> -e trace=ipc <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#跟踪所有与进程通讯有关的系统调用 </span> -e abbrev=set <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#设定 strace输出的系统调用的结果集.-v等与abbrev=none.默认为abbrev=all. </span> -e raw=set <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#将指 定的系统调用的参数以十六进制显示. </span> -e signal=set <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#指定跟踪的系统信号.默认为all.如 signal=!SIGIO(或者signal=!io),表示不跟踪SIGIO信号. </span> -e read=set <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#输出从指定文件中读出的数据.例如: -e read=3,5 </span> -e write=set <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#输出写入到指定文件中的数据. </span> -o filename <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#将strace的输出写入文件filename </span> -<span class="hljs-constant" style="box-sizing: border-box;">O</span> overhead <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#设置追踪系统的总开销(microseconds)</span> -p pid <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#跟踪指定的进程pid. </span> -s strsize <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#指定输出的字符串的最大长度.默认为32.文件名一直全部输出. </span> -<span class="hljs-constant" style="box-sizing: border-box;">S</span> sortby <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#-c选项的输出以规定的标准显示为直方图</span> -u username <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;">#以username 的UID和GID执行被跟踪的命令</span> strace -c -p <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4149</span> strace -e=all -p <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4149</span> strace -<span class="hljs-constant" style="box-sizing: border-box;">T</span> -tt -e all -p <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4149</span> strace -p <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5689</span> strace -<span class="hljs-constant" style="box-sizing: border-box;">T</span> -tt -p <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">5689</span> strace -<span class="hljs-constant" style="box-sizing: border-box;">T</span> -tt -f rake dx_show_1 strace -<span class="hljs-constant" style="box-sizing: border-box;">T</span> -tt -f rake dx_show_1 > <span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/tmp/strace</span>_ruby_221.txt strace -<span class="hljs-constant" style="box-sizing: border-box;">T</span> -tt -f -o /tmp/strace_ruby_221.txt rake dx_show_1 strace -o output.txt -<span class="hljs-constant" style="box-sizing: border-box;">T</span> -tt -e trace=all -p <span class="hljs-constant" style="box-sizing: border-box;">PID</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li><li style="box-sizing: border-box; padding: 0px 5px;">39</li><li style="box-sizing: border-box; padding: 0px 5px;">40</li><li style="box-sizing: border-box; padding: 0px 5px;">41</li><li style="box-sizing: border-box; padding: 0px 5px;">42</li><li style="box-sizing: border-box; padding: 0px 5px;">43</li><li style="box-sizing: border-box; padding: 0px 5px;">44</li><li style="box-sizing: border-box; padding: 0px 5px;">45</li><li style="box-sizing: border-box; padding: 0px 5px;">46</li><li style="box-sizing: border-box; padding: 0px 5px;">47</li><li style="box-sizing: border-box; padding: 0px 5px;">48</li><li style="box-sizing: border-box; padding: 0px 5px;">49</li><li style="box-sizing: border-box; padding: 0px 5px;">50</li><li style="box-sizing: border-box; padding: 0px 5px;">51</li><li style="box-sizing: border-box; padding: 0px 5px;">52</li><li style="box-sizing: border-box; padding: 0px 5px;">53</li><li style="box-sizing: border-box; padding: 0px 5px;">54</li><li style="box-sizing: border-box; padding: 0px 5px;">55</li><li style="box-sizing: border-box; padding: 0px 5px;">56</li><li style="box-sizing: border-box; padding: 0px 5px;">57</li><li style="box-sizing: border-box; padding: 0px 5px;">58</li><li style="box-sizing: border-box; padding: 0px 5px;">59</li><li style="box-sizing: border-box; padding: 0px 5px;">60</li><li style="box-sizing: border-box; padding: 0px 5px;">61</li><li style="box-sizing: border-box; padding: 0px 5px;">62</li><li style="box-sizing: border-box; padding: 0px 5px;">63</li><li style="box-sizing: border-box; padding: 0px 5px;">64</li><li style="box-sizing: border-box; padding: 0px 5px;">65</li><li style="box-sizing: border-box; padding: 0px 5px;">66</li><li style="box-sizing: border-box; padding: 0px 5px;">67</li></ul>
iostat / iotop 查看IO
iostat通过观察设备的活跃时间和他们平均传输率之间的关系来监视系统的输入/输出设备负载。iostat生成的报告可以用于修改系统配置从而更好在物理硬盘间平衡输入/输出的报告。
<code class="language-ruby hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">iostat iostat -k iostat -m iostat -x iostat -k <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span> iostat -c <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">3</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">6</span> iostat -d hda2 hda6 <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">2</span> <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li></ul>
lsof 查看 列出当前系统打开文件的工具
lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过lsof工具能够查看这个列表对系统监测以及排错将是很有帮助的
<code class="language-ruby hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">lsof `which httpd` /<span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/那个进程在使用apache的可执行文件 lsof /etc</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/passwd /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/那个进程在占用/etc</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/passwd lsof /dev</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/hda6 /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/那个进程在占用hda6 lsof /dev</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/cdrom /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/那个进程在占用光驱 lsof -c sendmail /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/查看sendmail进程的文件使用情况 lsof -c courier -u ^zahn /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/显示出那些文件被以courier打头的进程打开,但是并不属于用户zahn lsof -p 30297 /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/显示那些文件被pid为30297的进程打开 lsof -D /tmp</span> 显示所有在/tmp文件夹中打开的instance和文件的进程。但是symbol文件并不在列 lsof -u100<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> /<span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/查看uid是100的用户的进程的文件使用情况 lsof -utony /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/查看用户tony的进程的文件使用情况 lsof -u^tony /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/查看不是用户tony的进程的文件使用情况(^是取反的意思) lsof -i /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/显示所有打开的端口 lsof -i:80 /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/显示所有打开80端口的进程 lsof -i -U /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/显示所有打开的端口和UNIX domain文件 lsof -i UDP@[url]www.akadia.com:123 /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/显示那些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接 lsof -i tcp@ohaha.ks.edu.tw:ftp -r /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/不断查看目前ftp连接的情况(-r,lsof会永远不断的执行,直到收到中断信号,+r,lsof会一直执行,直到没有档案被显示,缺省是15s刷新) lsof -i tcp@ohaha.ks.edu.tw:ftp -n /</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/lsof -n 不将IP转换为hostname,缺省是不加上-n参数 lsof abc.txt 显示开启文件abc.txt的进程 lsof -c abc 显示abc进程现在打开的文件 lsof -c -p 1234 列出进程号为1234的进程所打开的文件 lsof -g gid 显示归属gid的进程情况 lsof +d /usr</span><span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/local/</span> 显示目录下被进程开启的文件 lsof +<span class="hljs-constant" style="box-sizing: border-box;">D</span> /usr/local/ 同上,但是会搜索目录下的目录,时间较长 lsof -d <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span> 显示使用fd为<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">4</span>的进程 lsof -i 用以显示符合条件的进程情况 lsof -i[<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">46</span>] [protocol][<span class="hljs-variable" style="color: rgb(102, 0, 102); box-sizing: border-box;">@hostname</span>|hostaddr][<span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">:service|port</span>] <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">46</span> --> <span class="hljs-constant" style="box-sizing: border-box;">IPv4</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">or</span> <span class="hljs-constant" style="box-sizing: border-box;">IPv6</span> protocol --> <span class="hljs-constant" style="box-sizing: border-box;">TCP</span> <span class="hljs-keyword" style="color: rgb(0, 0, 136); box-sizing: border-box;">or</span> <span class="hljs-constant" style="box-sizing: border-box;">UDP</span> hostname --> <span class="hljs-constant" style="box-sizing: border-box;">Internet</span> host name hostaddr --> <span class="hljs-constant" style="box-sizing: border-box;">IPv4</span>地址 service --> <span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/etc/service</span>中的 service name (可以不止一个) port --> 端口号 (可以不止一个)</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li><li style="box-sizing: border-box; padding: 0px 5px;">34</li><li style="box-sizing: border-box; padding: 0px 5px;">35</li><li style="box-sizing: border-box; padding: 0px 5px;">36</li><li style="box-sizing: border-box; padding: 0px 5px;">37</li><li style="box-sizing: border-box; padding: 0px 5px;">38</li></ul>
netstat 显示各种网络相关信息,如网络连接,路由表,接口状态 (Interface Statistics),masquerade 连接,多播成员 (Multicast Memberships) 等等
<code class="language-ruby hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">-a (all)显示所有选项,默认不显示<span class="hljs-constant" style="box-sizing: border-box;">LISTEN</span>相关 -t (tcp)仅显示tcp相关选项 -u (udp)仅显示udp相关选项 -n 拒绝显示别名,能显示数字的全部转化成数字。 -l 仅列出有在 <span class="hljs-constant" style="box-sizing: border-box;">Listen</span> (监听) 的服務状态 -p 显示建立相关链接的程序名 -r 显示路由信息,路由表 -e 显示扩展信息,例如uid等 -s 按各个协议进行统计 -c 每隔一个固定时间,执行该netstat命令。 netstat -nap|grep <span class="hljs-constant" style="box-sizing: border-box;">LISTEN</span>|grep <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">80</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li></ul>
df 用来检查linux服务器的文件系统的磁盘空间占用情况
<code class="language-ruby hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">必要参数: -a 全部文件系统列表 -h 方便阅读方式显示 -<span class="hljs-constant" style="box-sizing: border-box;">H</span> 等于“-h”,但是计算式,<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>K=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1000</span>,而不是<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1</span>K=<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1024</span> -i 显示inode信息 -k 区块为<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1024</span>字节 -l 只显示本地文件系统 -m 区块为<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1048576</span>字节 --no-sync 忽略 sync 命令 -<span class="hljs-constant" style="box-sizing: border-box;">P</span> 输出格式为<span class="hljs-constant" style="box-sizing: border-box;">POSIX</span> --sync 在取得磁盘信息前,先执行sync命令 -<span class="hljs-constant" style="box-sizing: border-box;">T</span> 文件系统类型 选择参数: --block-size=<区块大小> 指定区块大小 -t<文件系统类型> 只显示选定文件系统的磁盘信息 -x<文件系统类型> 不显示选定文件系统的磁盘信息 --help 显示帮助信息 --version 显示版本信息 df -h</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li></ul>
free 显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。
<code class="language-ruby hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">-b 以<span class="hljs-constant" style="box-sizing: border-box;">Byte</span>为单位显示内存使用情况。 -k 以<span class="hljs-constant" style="box-sizing: border-box;">KB</span>为单位显示内存使用情况。 -m 以<span class="hljs-constant" style="box-sizing: border-box;">MB</span>为单位显示内存使用情况。 -g 以<span class="hljs-constant" style="box-sizing: border-box;">GB</span>为单位显示内存使用情况。 -o 不显示缓冲区调节列。 -s<间隔秒数> 持续观察内存使用状况。 -t 显示内存总和列。 -<span class="hljs-constant" style="box-sizing: border-box;">V</span> 显示版本信息。 free -m/g</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li></ul>
lsb_release LSB是Linux Standard Base的缩写,lsb_release命令用来显示LSB和特定版本的相关信息
<code class="language-ruby hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">-v, --version 显示版本信息 -i, --id 显示发行版的<span class="hljs-constant" style="box-sizing: border-box;">ID</span> -d, --description 显示该发行版的描述信息 -r, --release 显示当前系统是发行版的具体版本号 -c, --codename 发行版代号 -a, --all 显示上面的所有信息 -s, --short 输出简短的描述信息 -h, --help 显示帮助信息 lsb_release -a </code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li><li style="box-sizing: border-box; padding: 0px 5px;">5</li><li style="box-sizing: border-box; padding: 0px 5px;">6</li><li style="box-sizing: border-box; padding: 0px 5px;">7</li><li style="box-sizing: border-box; padding: 0px 5px;">8</li><li style="box-sizing: border-box; padding: 0px 5px;">9</li><li style="box-sizing: border-box; padding: 0px 5px;">10</li><li style="box-sizing: border-box; padding: 0px 5px;">11</li><li style="box-sizing: border-box; padding: 0px 5px;">12</li><li style="box-sizing: border-box; padding: 0px 5px;">13</li><li style="box-sizing: border-box; padding: 0px 5px;">14</li><li style="box-sizing: border-box; padding: 0px 5px;">15</li><li style="box-sizing: border-box; padding: 0px 5px;">16</li><li style="box-sizing: border-box; padding: 0px 5px;">17</li><li style="box-sizing: border-box; padding: 0px 5px;">18</li><li style="box-sizing: border-box; padding: 0px 5px;">19</li><li style="box-sizing: border-box; padding: 0px 5px;">20</li><li style="box-sizing: border-box; padding: 0px 5px;">21</li><li style="box-sizing: border-box; padding: 0px 5px;">22</li><li style="box-sizing: border-box; padding: 0px 5px;">23</li><li style="box-sizing: border-box; padding: 0px 5px;">24</li><li style="box-sizing: border-box; padding: 0px 5px;">25</li><li style="box-sizing: border-box; padding: 0px 5px;">26</li><li style="box-sizing: border-box; padding: 0px 5px;">27</li><li style="box-sizing: border-box; padding: 0px 5px;">28</li><li style="box-sizing: border-box; padding: 0px 5px;">29</li><li style="box-sizing: border-box; padding: 0px 5px;">30</li><li style="box-sizing: border-box; padding: 0px 5px;">31</li><li style="box-sizing: border-box; padding: 0px 5px;">32</li><li style="box-sizing: border-box; padding: 0px 5px;">33</li></ul>
pgrep 检查在系统的中活动进程,报告进程属性匹配命令行上指定条件的进程的ID
<code class="language-ruby hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">pgrep cron pgrep java man pgrep</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>
ps/grep/awk/xargs
ps -ef | grep api_agent | grep -v grep| awk ‘{print $2}’| xargs kill -9
tail
tail -n 100 rainbows.error.log -A5/B5/C
gem/which
gem which em-http-request
curl/time
<code class="language-ruby hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">curl -vv curl -d <span class="hljs-string" style="color: rgb(0, 136, 0); box-sizing: border-box;">''</span> <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">http:</span>/<span class="hljs-regexp" style="color: rgb(0, 136, 0); box-sizing: border-box;">/xxx time curl -vv ''</span></code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li></ul>
find/exec
find . -name file_name -exec grep -in ‘^ncommons’ {} \;
find . -name Gemfile -print -exec grep “^gem .*github” {} \;
dig 追查DNS
DNS 配置
/etc/resolv.conf
ruby / profile
<code class="language-ruby hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">gem install profile ruby -rprofile example.rb ruby -<span class="hljs-constant" style="box-sizing: border-box;">S</span> rake ruby -rprofile -<span class="hljs-constant" style="box-sizing: border-box;">S</span> rake some_executable</code><ul class="pre-numbering" style="box-sizing: border-box; position: absolute; width: 50px; top: 0px; left: 0px; margin: 0px; padding: 6px 0px 40px; border-right-width: 1px; border-right-style: solid; border-right-color: rgb(221, 221, 221); list-style: none; text-align: right; background-color: rgb(238, 238, 238);"><li style="box-sizing: border-box; padding: 0px 5px;">1</li><li style="box-sizing: border-box; padding: 0px 5px;">2</li><li style="box-sizing: border-box; padding: 0px 5px;">3</li><li style="box-sizing: border-box; padding: 0px 5px;">4</li></ul>
网络接口参数配置文件
<code class="language-ruby hljs has-numbering" style="display: block; padding: 0px; color: inherit; box-sizing: border-box; font-family: 'Source Code Pro', monospace;font-size:undefined; white-space: pre; border-radius: 0px; word-wrap: normal; background: transparent;">/etc/network/interfaces <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># The loopback interface</span> auto lo iface lo inet loopback <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># The first network card - this entry was created during the Debian installation</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># (network, broadcast and gateway are optional)</span> auto eth<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> iface eth<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> inet static address <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.1</span> netmask <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">255.255</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">255.0</span> network <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span> broadcast <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.255</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># gateway 192.168.1.1</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># name 以太网局域网网卡</span> auto <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">eth0:</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> iface <span class="hljs-symbol" style="color: rgb(0, 102, 102); box-sizing: border-box;">eth0:</span><span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> inet static address <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.2</span> netmask <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">255.255</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">255.0</span> network <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.0</span> broadcast <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.255</span> gateway <span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">192.168</span>.<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">1.1</span> 下面是一个从<span class="hljs-constant" style="box-sizing: border-box;">DHCP</span>服务器自动获得<span class="hljs-constant" style="box-sizing: border-box;">IP</span>地址的示例: <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># /etc/network/interfaces -- configuration file for ifup(8), ifdown(8)</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># The loopback interface</span> auto lo iface lo inet loopback <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># The first network card - this entry was created during the Debian installation</span> <span class="hljs-comment" style="color: rgb(136, 0, 0); box-sizing: border-box;"># (network, broadcast and gateway are optional)</span> auto eth<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> iface eth<span class="hljs-number" style="color: rgb(0, 102, 102); box-sizing: border-box;">0</span> inet dhcp</code>