Loading... <h1 id="process-manager" style="font-size: 2.6em;margin: 1.2em 0px 0.6em;font-family: inherit;line-height: 1.1;color: inherit">Process Manager</h1> <hr /> <ul style="margin-bottom: 1.1em;line-height: 1.6" class=" list-paddingleft-2"> <li> <p>工作管理 </p> </li> <ul class=" list-paddingleft-2"> <li> <p>jobs</p> </li> <li> <p>ctrl+z,&</p> </li> <li> <p>bg,fg</p> </li> <li> <p>nohup</p> </li> </ul> <li> <p>进程,资源管理 </p> </li> <ul class=" list-paddingleft-2"> <li> <p>查看:pstree,ps,top,vmstat,pmap</p> </li> <li> <p>查询:pgrep,pidof,fuser,lsof</p> </li> <li> <p>管理:kill,nice,renice</p> </li> </ul> <li> <p>管理软件or命令 </p> </li> <ul class=" list-paddingleft-2"> <li> <p>htop</p> </li> <li> <p>glances</p> </li> <li> <p>dstat</p> </li> </ul> <li> <p>任务计划 </p> </li> <ul class=" list-paddingleft-2"> <li> <p>at</p> </li> <li> <p>crontab</p> </li> </ul> <li> <p>额外常用的命令和工具 </p> </li> <ul class=" list-paddingleft-2"> <li> <p>iostat</p> </li> <li> <p>sar </p> </li> <li> <p>iftop</p> </li> </ul> </ul> <hr /> <h2 id="工作管理" style="font-family: inherit;line-height: 1.1;color: inherit;margin: 1.2em 0px 0.6em;font-size: 2.15em">工作管理</h2> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">什么是工作管理? <br />工作管理(job control)能够有效的管理当前bash前景与背景中的工作,众所周知,一个终端只能同时进行一个工作,那如果我想多个工作同时进行怎么办,那就要用到所谓的工作管理的方法。</p> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">工作管理有什么用? <br />将前景中的程序放到背景中暂定或运行,使得一个终端可以同时进行多项工作。</p> <h3 id="jobs显示当前bash背景中所有的工作与状态" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">jobs:显示当前bash背景中所有的工作与状态</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">jobs [-l] [%job_id] :显示当前所有工作或指定的工作。</p> <pre class="prettyprint hljs-dark"><code class="hljs cpp">-l:显示PID<br /><br />[root@xiao ~]<span class="hljs-preprocessor" style="line-height: 1.6"># jobs</span><br />[<span class="hljs-number">1</span>] Stopped man ftp<br />[<span class="hljs-number">2</span>]- Stopped ping <span class="hljs-number">192.168</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span><br />[<span class="hljs-number">3</span>]+ Stopped vim a<br /><br />[JOB_ID]mark status jobs_name<br /><br />JOB_ID:工作的ID,以时间向上递增,数字越小,表示越早放入背景。<br />mark:标识进程顺序,<span class="hljs-string">'+'</span>为当前工作,<span class="hljs-string">'-'</span>为上一个工作,空为前两个之前的工作。<br />status:工作的状态,runing表示在背景中运行,stopped表示在背景中停止。<br />jobs_name:被放入背景中的工作内容或指令。<br /></code></pre> <h3 id="ctrlz将程序暂停并放入当前bash的背景中" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">ctrl+z:将程序暂停并放入当前bash的背景中。</h3> <pre class="prettyprint hljs-dark"><code class="hljs cpp">[root@xiao ~]<span class="hljs-preprocessor" style="line-height: 1.6"># ping <span class="hljs-number">192.168</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span></span><br />PING <span class="hljs-number">192.168</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span> (<span class="hljs-number">192.168</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span>) <span class="hljs-number">56</span>(<span class="hljs-number">84</span>) bytes of data.<br />^Z<br />[<span class="hljs-number">4</span>]+ Stopped ping <span class="hljs-number">192.168</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span><br /></code></pre> <h3 id="将程序放入当前bash的背景中执行" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">&:将程序放入当前bash的背景中执行。</h3> <pre class="prettyprint hljs-dark"><code class="hljs cpp">[root@xiao ~]<span class="hljs-preprocessor" style="line-height: 1.6"># ping <span class="hljs-number">192.168</span><span class="hljs-number">.0</span><span class="hljs-number">.1</span> &</span><br /></code></pre> <h3 id="bg将背景中的工作状态变更为running" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">bg:将背景中的工作状态变更为running。</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">bg [%jobs_id]</p> <h3 id="bg将背景中的工作放回前景中执行" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">bg:将背景中的工作放回前景中执行。</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">fg [%jobs_id]</p> <hr /> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">假设我们现在将一个工作丢入背景中去执行,然后我们就退出了当前终端,我们背景中的工作还会继续执行么?NO,因为我们其实使用ctrl+z或者&都只是将工作丢入当前终端的背景中,那如果我们想要把工作丢入系统背景中改怎么办,那就来看看nohup这个命令。</p> <h3 id="nohup将工作丢入系统背景中离线管理" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">nohup:将工作丢入系统背景中,离线管理。</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">nohup [command] [&]</p> <pre class="prettyprint hljs-dark"><code class="hljs css"><span class="hljs-tag">nohup</span> <span class="hljs-tag">ping</span> 192<span class="hljs-class">.168</span><span class="hljs-class">.0</span><span class="hljs-class">.1</span> 在前景中工作<br /><span class="hljs-tag">nohup</span> <span class="hljs-tag">ping</span> 192<span class="hljs-class">.168</span><span class="hljs-class">.0</span><span class="hljs-class">.1</span> & 在背景中工作<br /><br /><span class="hljs-tag">ps</span>.由于是在系统前景背景中执行,所以所有输出都与当前终端无关,系统就会将输出信息保存在当前目录下<span class="hljs-tag">nohup</span><span class="hljs-class">.out</span>这个文件中。<br /></code></pre> <h2 id="进程资源管理" style="font-family: inherit;line-height: 1.1;color: inherit;margin: 1.2em 0px 0.6em;font-size: 2.15em">进程,资源管理</h2> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">什么是进程? <br />进程(process)是程序运行时的一个对程序的一个copy,是一个程序的实例,存在自己的生命周期,即进程运行开始和进程结束。</p> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">进程有什么功能? <br />能够让操作系统更加有效,有序的管理,使用计算机资源。</p> <h3 id="pstree显示进程树" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">pstree:显示进程树</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">pstree [option] [pid | user]</p> <pre class="prettyprint hljs-dark"><code class="hljs cpp"> -a:all<br /> -p:显示PID<br /> ...<br /><br /> [root@xiao ~]<span class="hljs-preprocessor" style="line-height: 1.6"># pstree -p </span><br /> systemd(<span class="hljs-number">1</span>)─┬─AliHids(<span class="hljs-number">1012</span>)─┬─{AliHids}(<span class="hljs-number">1013</span>)<br /> │ ├─{AliHids}(<span class="hljs-number">1014</span>)<br /> │ ├─{AliHids}(<span class="hljs-number">1016</span>)<br /> │ ├─{AliHids}(<span class="hljs-number">1017</span>)<br /> │ ├─{AliHids}(<span class="hljs-number">1018</span>)<br /> │ ├─{AliHids}(<span class="hljs-number">1020</span>)<br /><br /> ...<br /><br /> ps.可以看出我的系统是centos6还是<span class="hljs-number">7</span>呢?看第一个程序systemd就知道啦~,centos7啦!<br /></code></pre> <h3 id="ps显示当前进程的快照信息" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">ps:显示当前进程的快照信息。</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">ps [options]</p> <pre class="prettyprint hljs-dark"><code class="hljs cpp">a:以BSD风格显示当前终端的进程信息。 注意BSD风格是不带-的哦!<br />u:以BSD风格显示当前用户的进程信息。<br />x:以BSD风格显示与当前终端无关的信息。<br /><br />-e:显示所有进程信息。<br />-l:显示长信息。<br />-f:显示全框架扩展信息。<br />-h:以树状显示。<br /><br />常用用法:<br /> ps aux<br /> ps -elf<br /> ps -eh<br /> ...<br /><br />字段含义:<br />[root@xiao ~]<span class="hljs-preprocessor" style="line-height: 1.6"># ps aux</span><br />USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND<br />root <span class="hljs-number">1</span> <span class="hljs-number">0.0</span> <span class="hljs-number">0.3</span> <span class="hljs-number">41076</span> <span class="hljs-number">3532</span> ? Ss <span class="hljs-number">15</span>:<span class="hljs-number">57</span> <span class="hljs-number">0</span>:<span class="hljs-number">01</span> /usr/lib/systemd/systemd --switched-root --s<br />root <span class="hljs-number">2</span> <span class="hljs-number">0.0</span> <span class="hljs-number">0.0</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> ? S <span class="hljs-number">15</span>:<span class="hljs-number">57</span> <span class="hljs-number">0</span>:<span class="hljs-number">00</span> [kthreadd]<br />root <span class="hljs-number">3</span> <span class="hljs-number">0.0</span> <span class="hljs-number">0.0</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> ? S <span class="hljs-number">15</span>:<span class="hljs-number">57</span> <span class="hljs-number">0</span>:<span class="hljs-number">00</span> [ksoftirqd/<span class="hljs-number">0</span>]<br />root <span class="hljs-number">5</span> <span class="hljs-number">0.0</span> <span class="hljs-number">0.0</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> ? S< <span class="hljs-number">15</span>:<span class="hljs-number">57</span> <span class="hljs-number">0</span>:<span class="hljs-number">00</span> [kworker/<span class="hljs-number">0</span>:<span class="hljs-number">0</span>H]<br /><br />USER:进程的属主<br />PID:PID号<br />%CPU:占用的当前CPU百分比<br />%MEM:占用的当前内存百分比<br />VSZ:虚拟内存大小。<br />RSS TTY:常驻内存集大小,无法被交换的内存空间。<br />STAT:进程状态<br /> S:sleep,可中断睡眠。<br /> D:不可中断睡眠。<br /> R:running,运行中。<br /> T:stop,停止的。<br /> Z:zombie,僵尸程序。<br /> N:NICE,低优先级。<br /> <:高优先级。<br /> l:多线程进程。<br /> s:是多个进程的首进程。<br /> +:前台进程组进程。<br />START:被触发的时间<br />TIME:实际占用的CPU运行时间<br />COMMAND:触发的命令<br /></code></pre> <h3 id="top动态显示当前系统状态及进程信息" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">top:动态显示当前系统状态及进程信息。</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">top [option]</p> <pre class="prettyprint hljs-dark"><code class="hljs haml">-<span class="ruby" style="line-height: 1.6">d <span class="hljs-comment">#:#秒刷新一次。</span><br /></span>-<span class="ruby" style="line-height: 1.6">b:以批次刷新。<br /></span>-<span class="ruby" style="line-height: 1.6">n:刷新的次数。<br /></span>-<span class="ruby" style="line-height: 1.6">p:指定某一个<span class="hljs-constant">PID</span>单独检测。</span><br /></code></pre> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">top是一个以交互界面为主的监控当前系统资源,进程状态的工具。 **</p> <pre class="prettyprint hljs-dark"><code class="hljs cpp">交互命令:<br /> P:按照使用的CPU百分比排序。<br /> M:按照占用内存的百分比排序。<br /> T:按照实际占用的CPU时间和排序。<br /> N:按照PID排序。<br /> <span class="hljs-number">1</span>:显示第一颗CPU核心信息<br /> ...<br /> k:按下k之后输入一个PID,然后输入信号传递执行。<br /> r:按下r之后输入一个PID,然后输入nice值设置。<br /> q:quit<br /> ...<br /><br />字段含义:<br />top - <span class="hljs-number">21</span>:<span class="hljs-number">05</span>:<span class="hljs-number">05</span> up <span class="hljs-number">5</span>:<span class="hljs-number">07</span>, <span class="hljs-number">2</span> users, load average: <span class="hljs-number">0.00</span>, <span class="hljs-number">0.01</span>, <span class="hljs-number">0.05</span><br />Tasks: <span class="hljs-number">96</span> total, <span class="hljs-number">1</span> running, <span class="hljs-number">95</span> sleeping, <span class="hljs-number">0</span> stopped, <span class="hljs-number">0</span> zombie<br />%Cpu(s): <span class="hljs-number">0.0</span> us, <span class="hljs-number">0.0</span> sy, <span class="hljs-number">0.0</span> ni, <span class="hljs-number">99.7</span> id, <span class="hljs-number">0.0</span> wa, <span class="hljs-number">0.0</span> hi, <span class="hljs-number">0.0</span> si, <span class="hljs-number">0.3</span> st<br />KiB Mem : <span class="hljs-number">1015476</span> total, <span class="hljs-number">829448</span> <span class="hljs-built_in">free</span>, <span class="hljs-number">39864</span> used, <span class="hljs-number">146164</span> buff/cache<br />KiB Swap: <span class="hljs-number">0</span> total, <span class="hljs-number">0</span> <span class="hljs-built_in">free</span>, <span class="hljs-number">0</span> used. <span class="hljs-number">838364</span> avail Mem <br /><br />PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND <br /><span class="hljs-number">25</span> root <span class="hljs-number">20</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> S <span class="hljs-number">0.3</span> <span class="hljs-number">0.0</span> <span class="hljs-number">0</span>:<span class="hljs-number">01.98</span> rcuos/<span class="hljs-number">0</span> <br /><br />LINE1: <br /> <span class="hljs-number">21</span>:<span class="hljs-number">05</span>:<span class="hljs-number">05</span>:系统当前时间。<br /> up <span class="hljs-number">5</span>:<span class="hljs-number">07</span>:系统已经运行了多久。<br /> <span class="hljs-number">2</span> users:有几个用户在线。<br /> load average: <span class="hljs-number">0.00</span>, <span class="hljs-number">0.01</span>, <span class="hljs-number">0.05</span> :CPU平均负载,<span class="hljs-number">1</span>分钟,<span class="hljs-number">5</span>分钟,<span class="hljs-number">15</span>分钟。<br />LINE2:<br /> Tasks: <span class="hljs-number">96</span> total:进程总数<br /> <span class="hljs-number">1</span> running:运行数量<br /> <span class="hljs-number">95</span> sleeping:睡眠数量 <br /> <span class="hljs-number">0</span> stopped:停止数量 <br /> <span class="hljs-number">0</span> zombie:僵尸数量<br />LINE3:<br /> <span class="hljs-number">0.0</span> us:用户空间占用CPU百分比 <br /> <span class="hljs-number">0.0</span> sy:内核空间占用CPU百分比 <br /> <span class="hljs-number">0.0</span> ni:更改过NICE值得进程所占用CPU百分比 <br /> <span class="hljs-number">99.7</span> id:空闲的CPU百分比 <br /> <span class="hljs-number">0.0</span> wa:IO等待所占用的CPU百分比 <br /> <span class="hljs-number">0.0</span> hi:硬中断所占用的CPU百分比 <br /> <span class="hljs-number">0.0</span> si:软中断所占用的CPU百分比 <br /> <span class="hljs-number">0.3</span> st:虚拟化所占用的CPU百分比<br />LINE4:<br /> <span class="hljs-number">1015476</span> total:内存总大小<br /> <span class="hljs-number">829448</span> <span class="hljs-built_in">free</span>:空闲的内存<br /> <span class="hljs-number">39864</span> used:被使用的内存<br /> <span class="hljs-number">146164</span> buff/cache:缓冲/缓存所占用的内存<br />LINE5:<br /> <span class="hljs-number">0</span> total:swap数量。<br /> <span class="hljs-number">0</span> <span class="hljs-built_in">free</span>:swap空闲的数量<br /> <span class="hljs-number">0</span> used:使用的swap<br /> <span class="hljs-number">838364</span> avail Mem:真正可用的内存大小<br />LINE6<br />LINE7:<br /> PID:PID号<br /> USER:进程属主<br /> PR:进程优先级<br /> NI:NICE值<br /> VIRT:进程使用的虚拟内存总量。<br /> RES:进程使用的物理内存总量。<br /> SHR:共享内存大小。<br /> S:status<br /> %CPU:占用的当前CPU百分比<br /> %MEM:占用的当前内存百分比<br /> TIME:实际占用的CPU运行时间<br /> COMMAND:触发的命令<br /></code></pre> <h3 id="vmstat显示当前虚拟内存状态" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">vmstat:显示当前虚拟内存状态</h3> <pre class="prettyprint hljs-dark"><code class="hljs cpp">vmstat [option] [延迟秒数<span class="hljs-preprocessor" style="line-height: 1.6"># 侦测次数#]</span><br /> -S [K | M]:单位,KB MB<br /> ...<br /><br />字段含义:<br />[root@xiao ~]<span class="hljs-preprocessor" style="line-height: 1.6"># vmstat -S M <span class="hljs-number">1</span> <span class="hljs-number">2</span></span><br />procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----<br /> r b swpd <span class="hljs-built_in">free</span> buff cache si so bi bo in cs us sy id wa st<br /> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">810</span> <span class="hljs-number">18</span> <span class="hljs-number">124</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">6</span> <span class="hljs-number">1</span> <span class="hljs-number">71</span> <span class="hljs-number">200</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">100</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span><br /> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">810</span> <span class="hljs-number">18</span> <span class="hljs-number">124</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span> <span class="hljs-number">90</span> <span class="hljs-number">214</span> <span class="hljs-number">0</span> <span class="hljs-number">1</span> <span class="hljs-number">99</span> <span class="hljs-number">0</span> <span class="hljs-number">0</span><br /><br />r:运行中的进程数量<br />b:不可中断的进程数量<br />swpd:内存总量<br /><span class="hljs-built_in">free</span>:空闲的内存<br />buff:缓冲区大小<br />cache:缓存区大小<br />si:swap in<br />so:swap out<br />bi:block in<br />bo:block out<br />in:系统终端次数<br />cs:系统事件切换次数<br />us:用户空间<br />sy:系统空间<br />id:cpu空闲<br />wa:IO读取占用CPU百分比<br />st:虚拟化占用CPU百分比<br /></code></pre> <h3 id="pmap显示虚拟内存与物理地址空间的对应关系" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">pmap:显示虚拟内存与物理地址空间的对应关系</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">pmap [PID]</p> <pre class="prettyprint hljs-dark"><code class="hljs cpp">[root@xiao ~]<span class="hljs-preprocessor" style="line-height: 1.6"># pmap <span class="hljs-number">1</span></span><br /><span class="hljs-number">1</span>: /usr/lib/systemd/systemd --switched-root --system --deserialize <span class="hljs-number">21</span><br /><span class="hljs-number">00007f</span>81aafbe000 <span class="hljs-number">16</span>K r-x-- libuuid.so<span class="hljs-number">.1</span><span class="hljs-number">.3</span><span class="hljs-number">.0</span><br /><span class="hljs-number">00007f</span>81aafc2000 <span class="hljs-number">2044</span>K ----- libuuid.so<span class="hljs-number">.1</span><span class="hljs-number">.3</span><span class="hljs-number">.0</span><br /><span class="hljs-number">00007f</span>81ab1c1000 <span class="hljs-number">4</span>K r---- libuuid.so<span class="hljs-number">.1</span><span class="hljs-number">.3</span><span class="hljs-number">.0</span><br /><span class="hljs-number">00007f</span>81ab1c2000 <span class="hljs-number">4</span>K rw--- libuuid.so<span class="hljs-number">.1</span><span class="hljs-number">.3</span><span class="hljs-number">.0</span><br /><span class="hljs-number">00007f</span>81ab1c3000 <span class="hljs-number">224</span>K r-x-- libblkid.so<span class="hljs-number">.1</span><span class="hljs-number">.1</span><span class="hljs-number">.0</span><br /><span class="hljs-number">00007f</span>81ab1fb000 <span class="hljs-number">2048</span>K ----- libblkid.so<span class="hljs-number">.1</span><span class="hljs-number">.1</span><span class="hljs-number">.0</span><br /><span class="hljs-number">00007f</span>81ab3fb000 <span class="hljs-number">12</span>K r---- libblkid.so<span class="hljs-number">.1</span><span class="hljs-number">.1</span><span class="hljs-number">.0</span><br /></code></pre> <h3 id="pgrep根据进程名查询进程pid" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">pgrep:根据进程名查询进程PID</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">pgrep [-l 显示PID和P—NAME] [process_name]</p> <h3 id="pidof根据进程名查询进程pid类似pgrep" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">pidof:根据进程名查询进程PID,类似pgrep</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">pidof [process_name]</p> <h3 id="fuser根据文件查询pid" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">fuser:根据文件查询PID</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">fuser [PATH]</p> <h3 id="lsof列出当前系统所打开的文件" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">lsof:列出当前系统所打开的文件</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">lsof [option] <br />-u username : username <br />-g giu : gid <br />…</p> <hr /> <h3 id="kill传递一个信号给指定进程" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">kill:传递一个信号给指定进程。</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">kill [-signal] [PID]</p> <pre class="prettyprint hljs-dark"><code class="hljs cpp">常用信号: <br /> SIGHUP <span class="hljs-number">1</span> 终端线路挂断<br /> SIGINT <span class="hljs-number">2</span> 键盘输入的中断命令,从终端输入 Ctrl-C 时发生<br /> SIGKILL <span class="hljs-number">9</span> KILL信号<br /> SIGTERM <span class="hljs-number">15</span> 正常结束<br /><br />ps.具体的信号可参考 man signal 命令<br /></code></pre> <h3 id="nice为一个进程设置nice值只能将nice值向比较大的数字设置无法设置" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">nice:为一个进程设置nice值,只能将nice值向比较大的数字设置,无法设置-#。</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">nice -n # COMMAND</p> <h3 id="renice为一个进程设置nice值随意设置需要权限" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">renice:为一个进程设置nice值,随意设置,需要#权限。</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">renice # PID</p> <h2 id="管理软件or命令" style="font-family: inherit;line-height: 1.1;color: inherit;margin: 1.2em 0px 0.6em;font-size: 2.15em">管理软件or命令 <em style="line-height: 1.6">*</em></h2> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">Linux中,对比TOP这些古老又经典的工具,还有有许多非常方便的软件可以供我们使用来监控管理系统,下面我们就来认识一下吧。</p> <h3 id="htop交互式的查看进程信息top的增强版" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">htop:交互式的查看进程信息,top的增强版</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">htop [option]</p> <pre class="prettyprint hljs-dark"><code class="hljs haml">-<span class="ruby" style="line-height: 1.6">d:更新频率。<br /></span>-<span class="ruby" style="line-height: 1.6">u:指定username<br /></span>-<span class="ruby" style="line-height: 1.6">p:指定pid</span><br /></code></pre> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">交互命令:</p> <pre class="prettyprint hljs-dark"><code class="hljs avrasm"><span class="hljs-label" style="line-height: 1.6">P:</span>以CPU占用百分比排序。<br /><span class="hljs-label" style="line-height: 1.6">M:</span>以MEM占用百分比排序。<br /><span class="hljs-label" style="line-height: 1.6">T:</span>按实际占用的CPU运行时间的和来排序。<br />F1:打开帮助菜单。<br />F2:打开设置界面。<br />F3:按照PID或者USER字段查询,删除字段,需 ctrl+backspace。<br />F4:按照PID或者USER字段过滤,删除字段,需 ctrl+backspace。<br />F5:以树状显示进程。<br />F6:按照选择的字段排序。<br />F7:减小NICE值。<br />F8:加上NICE值。<br />F9:选定指定进程,传递选择的信号。<br />F10:退出,quit。<br /></code></pre> <h3 id="glances一个跨平台的基于多视窗的监测工具" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">glances:一个跨平台的基于多视窗的监测工具</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">glances [option]</p> <pre class="prettyprint hljs-dark"><code class="hljs haml">-<span class="ruby" style="line-height: 1.6">t:指定刷新频率。<br /></span>-<span class="ruby" style="line-height: 1.6">s:启动service模式。<br /></span>-<span class="ruby" style="line-height: 1.6">c:启动client模式。<br /></span>-<span class="ruby" style="line-height: 1.6"><span class="hljs-constant">P</span>:指定service <span class="hljs-constant">IP</span></span><br /></code></pre> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">交互命令:</p> <pre class="prettyprint hljs-dark"><code class="hljs mathematica">a:自动排序。<br />c:CPU占用百分比排序。<br />m:MEM占用百分比排序。<br />p:进程名排序。<br />i:<span class="hljs-keyword">I</span>/<span class="hljs-keyword">O</span>速率,比例排序。<br />d:显示/隐藏 磁盘<span class="hljs-keyword">I</span>/<span class="hljs-keyword">O</span>状况。<br />f:显示/隐藏 文件系统状况。<br />n:显示/隐藏 网络状况。<br />s:显示/隐藏 sensors状况。<br />y:显示/隐藏 hddtemp状况。<br />z:隐藏/显示 process 列表<br />l:显示/隐藏 日志。<br />b:切换网络 bits和Bytes 的单位显示<br />w:删除警告日志信息。<br />x:删除警告和重要日志信息。<br /><span class="hljs-number">1</span>:全局CPU或者每颗CPU的信息。<br />t:显示网络的组合<span class="hljs-keyword">I</span>/<span class="hljs-keyword">O</span>信息。<br />u:显示积累的网络<span class="hljs-keyword">I</span>/<span class="hljs-keyword">O</span>信息。<br />h:help<br />q:quit<br /></code></pre> <h3 id="dstat生成系统资源统计工具" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">dstat:生成系统资源统计工具</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">dstat [options] [刷新频率 [次数]]</p> <pre class="prettyprint hljs-dark"><code class="hljs haml">-<span class="ruby" style="line-height: 1.6">c [-<span class="hljs-constant">C</span> {cpu1,cpu2,total}...]:显示<span class="hljs-constant">CPU</span>信息与每颗的<span class="hljs-constant">CPU</span>核心信息。<br /></span>-<span class="ruby" style="line-height: 1.6">d [-<span class="hljs-constant">D</span> {sda,sdb,total}...]:显示磁盘与指定的磁盘信息。<br /></span>-<span class="ruby" style="line-height: 1.6">s [-<span class="hljs-constant">S</span> {swap1,swap2,total}...]:显示磁盘与指定的磁盘信息。<br /></span>-<span class="ruby" style="line-height: 1.6">m:menmory信息。<br /></span>-<span class="ruby" style="line-height: 1.6">n:network信息。<br /></span>-<span class="ruby" style="line-height: 1.6">p:process信息。<br /></span>-<span class="ruby" style="line-height: 1.6">r:<span class="hljs-constant">I</span>/<span class="hljs-constant">O</span>信息。<br /></span>-<span class="ruby" style="line-height: 1.6">s:system的信息,中断与事件交换。</span><br /></code></pre> <h2 id="任务计划" style="font-family: inherit;line-height: 1.1;color: inherit;margin: 1.2em 0px 0.6em;font-size: 2.15em">任务计划</h2> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">任务计划是什么? <br />当我们要指定计算机在某一时刻执行某一任务就需要用到任务计划了。 <br />任务计划的功能? <br />使系统在指定的时间执行指定的程序。</p> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">比如说我们想要在晚上11点发一封邮件给某人,或者定时每天晚上10点备份文件,那就要用到接下来的命令了!</p> <h3 id="at单一任务计划设置" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">at:单一任务计划设置</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">at [option] [TIME]</p> <pre class="prettyprint hljs-dark"><code class="hljs haml">-<span class="ruby" style="line-height: 1.6">l:列出当前所有计划。<br /></span>-<span class="ruby" style="line-height: 1.6">d [id]:删除计划。<br /></span>-<span class="ruby" style="line-height: 1.6">m:无论有没有输出都发一封邮件到用户邮箱。<br /></span>-<span class="ruby" style="line-height: 1.6">c [id]:列出任务要执行的详细指令内容</span><br /></code></pre> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">时间格式:</p> <pre class="prettyprint hljs-dark"><code class="hljs cpp">HH:MM YYYY-MM-DD <span class="hljs-number">04</span>:<span class="hljs-number">30</span> <span class="hljs-number">2016</span>-<span class="hljs-number">05</span>-<span class="hljs-number">30</span><br />[HH:MM YYYY-MM-DD,now]+[NUMBER<span class="hljs-preprocessor" style="line-height: 1.6"># [minutes|hours|days|weeks]] </span><br /> now+<span class="hljs-number">1</span>day <br /> <span class="hljs-number">4</span>:<span class="hljs-number">00</span>+<span class="hljs-number">2</span>hour <br /> <span class="hljs-number">5</span>:<span class="hljs-number">00</span> <span class="hljs-number">2016</span>-<span class="hljs-number">06</span>-<span class="hljs-number">31</span>+<span class="hljs-number">1</span>hour<br /></code></pre> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">写入执行指令的方式:</p> <pre class="prettyprint hljs-dark"><code class="hljs cpp"><span class="hljs-number">1.</span>直接在at的交互界面中写入,然后ctrl+d退出即可。<br /> [root@xiao ~]<span class="hljs-preprocessor" style="line-height: 1.6"># at <span class="hljs-number">5</span>:<span class="hljs-number">00</span> <span class="hljs-number">2016</span>-<span class="hljs-number">06</span>-<span class="hljs-number">30</span>+<span class="hljs-number">1</span> hour</span><br /> at> cat /etc/passwd<br /> at> <EOT> 按下ctrl+d<br /> job <span class="hljs-number">18</span> at Thu Jun <span class="hljs-number">30</span> <span class="hljs-number">06</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span> <span class="hljs-number">2016</span><br /><span class="hljs-number">2.</span>通过管道传输。<br /> [root@aliyun ~]<span class="hljs-preprocessor" style="line-height: 1.6"># echo <span class="hljs-string">"cat /etc/passwd"</span> | at <span class="hljs-number">5</span>:<span class="hljs-number">00</span> <span class="hljs-number">2016</span>-<span class="hljs-number">06</span>-<span class="hljs-number">30</span>+<span class="hljs-number">1</span> hour</span><br /> job <span class="hljs-number">19</span> at Thu Jun <span class="hljs-number">30</span> <span class="hljs-number">06</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span> <span class="hljs-number">2016</span><br /><span class="hljs-number">3.</span>通过输入重定向(<span class="hljs-built_in">stdin</span>).<br /> [root@aliyun ~]<span class="hljs-preprocessor" style="line-height: 1.6"># at <span class="hljs-number">5</span>:<span class="hljs-number">00</span> <span class="hljs-number">2016</span>-<span class="hljs-number">06</span>-<span class="hljs-number">30</span>+<span class="hljs-number">1</span> hour < a.sh </span><br /> job <span class="hljs-number">20</span> at Thu Jun <span class="hljs-number">30</span> <span class="hljs-number">06</span>:<span class="hljs-number">00</span>:<span class="hljs-number">00</span> <span class="hljs-number">2016</span><br /></code></pre> <hr /> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">我们知道at只能设置一次任务计划,也就是说我们如果想要在每次的同一个时段执行一个命令,是无法完成的,所以,如果我们想要安排循环例行执行的任务计划就要使用接下来这个命令。。</p> <h3 id="crontab设置循环例行任务计划" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">crontab:设置循环例行任务计划</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">crontab [options] [-e]</p> <pre class="prettyprint hljs-dark"><code class="hljs haml"> -<span class="ruby" style="line-height: 1.6">u [username]:只有管理员才能使用,为指定用户设置任务计划。<br /></span> -<span class="ruby" style="line-height: 1.6">l:查询crontab的工作内容。<br /></span> -<span class="ruby" style="line-height: 1.6">r:移除所有的crontab的工作内容。<br /></span> -<span class="ruby" style="line-height: 1.6">i:删除时先要确认。<br /></span> -<span class="ruby" style="line-height: 1.6">e:编辑crontab的工作内容。<br /></span><br /> [m] [h] [d] [m] [week] username command<br /></code></pre> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">时间格式:</p> <pre class="prettyprint hljs-dark"><code class="hljs cpp">*:所有的值。<br /><span class="hljs-number">1</span>,<span class="hljs-number">3</span>,<span class="hljs-number">5</span>:指定多个值。<br /><span class="hljs-number">1</span>-<span class="hljs-number">5</span>:指定范围内的所有值。<br /></code></pre> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6"><em style="line-height: 1.6">/#:时间间隔, </em>/2表示每两个小时。</p> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">crontab是怎么实现的呢?</p> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6"><img src="/upload/ucgwl3edr5r.png" alt="cratab" title="" style="border: 0px;vertical-align: middle;max-width: 100%" /></p> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">crontab的文件</p> <pre class="prettyprint hljs-dark"><code class="hljs gradle"><span class="hljs-regexp">/etc/</span>crontab:存放了crontab的系统设定档案,以及root的任务计划。<br /><span class="hljs-regexp">/etc/</span>cron.d<span class="hljs-comment">/*:存放了自我开发软体的系统设定档案和各自的任务计划。<br /> 以上的设定档中其中设定了使用的shell ,可执行文件的PATH路径信息,邮件发送给哪个用户。<br />/var/spool/cron/USERNAME:存放了用户的任务计划档案。</span><br /></code></pre> <h2 id="额外常用的命令和工具" style="font-family: inherit;line-height: 1.1;color: inherit;margin: 1.2em 0px 0.6em;font-size: 2.15em">额外常用的命令和工具</h2> <h3 id="iostat监控系统设备的io状况" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">iostat:监控系统设备的io状况</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">iostat [options] [刷新频率[刷新次数]]</p> <pre class="prettyprint hljs-dark"><code class="hljs haml"> -<span class="ruby" style="line-height: 1.6">d:输出磁盘的io状况。<br /></span> -<span class="ruby" style="line-height: 1.6">p [device]:指定磁盘。<br /></span> -<span class="ruby" style="line-height: 1.6">c:输出cpu使用状况。<br /></span> -<span class="ruby" style="line-height: 1.6">x:输出扩展信息 <br /></span> -<span class="ruby" style="line-height: 1.6">t:输出搜集数据时的时间</span><br /></code></pre> <h3 id="sar系统活动情况报告" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">sar:系统活动情况报告</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">sar [option] [刷新频率[刷新次数]]</p> <pre class="prettyprint hljs-dark"><code class="hljs haml"> -<span class="ruby" style="line-height: 1.6">u:输出<span class="hljs-constant">CPU</span>使用情况的统计信息<br /></span> -<span class="ruby" style="line-height: 1.6">v:输出inode、文件和其他内核表的统计信息<br /></span> -<span class="ruby" style="line-height: 1.6">d:输出每一个块设备的活动信息<br /></span> -<span class="ruby" style="line-height: 1.6">r:输出内存和交换空间的统计信息<br /></span> -<span class="ruby" style="line-height: 1.6">b:显示<span class="hljs-constant">I</span>/<span class="hljs-constant">O</span>和传送速率的统计信息<br /></span> -<span class="ruby" style="line-height: 1.6">a:文件读写情况<br /></span> -<span class="ruby" style="line-height: 1.6">c:输出进程统计信息,每秒创建的进程数<br /></span> -<span class="ruby" style="line-height: 1.6"><span class="hljs-constant">R</span>:输出内存页面的统计信息<br /></span> -<span class="ruby" style="line-height: 1.6">y:终端设备活动情况<br /></span> -<span class="ruby" style="line-height: 1.6">w:输出系统交换活动信息<br /></span> -<span class="ruby" style="line-height: 1.6">n {<span class="hljs-constant">DEV</span>|<span class="hljs-constant">EDEV</span>|<span class="hljs-constant">NFS</span>|<span class="hljs-constant">NFSD</span>|<span class="hljs-constant">SOCK</span>|<span class="hljs-constant">ALL</span>}:输出指定的网络信息</span><br /></code></pre> <h3 id="iftop监测网卡实时流量反向解析ip显示端口信息" style="font-family: inherit;line-height: 1.6;color: inherit;margin: 1.2em 0px 0.6em;font-size: 1.7em">iftop:监测网卡实时流量,反向解析IP,显示端口信息。</h3> <p style="margin-top: 0px;margin-bottom: 1.1em;line-height: 1.6">iftop [option]</p> <pre class="prettyprint hljs-dark"><code class="hljs haml"> -<span class="ruby" style="line-height: 1.6">i [device]:指定监测的设备<br /></span> -<span class="ruby" style="line-height: 1.6"><span class="hljs-constant">B</span>:单位为<span class="hljs-constant">Byte</span><br /></span> -<span class="ruby" style="line-height: 1.6">n:主机信息直接显示ip<br /></span> -<span class="ruby" style="line-height: 1.6"><span class="hljs-constant">N</span>:端口信息直接显示端口号<br /></span> -<span class="ruby" style="line-height: 1.6"><span class="hljs-constant">F</span> <span class="hljs-constant">IP_ADDR</span>/<span class="hljs-constant">MASK</span><span class="hljs-symbol">:</span>监测特定网络的流量</span></code></pre> <p></p> 最后修改:2021 年 12 月 10 日 10 : 53 AM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 赞赏作者 支付宝微信