时间: 2021-07-31 作者:daque
因为工作的诉求,你不得不劳累地观赏那些令你感触隐晦的艰涩的linux运用步调的证明文献。而后,你将运转训令和编纂树立文献。十足都在平常运转,生存真优美。然而,你领会,好时间不会长久连接下来。当你遇到令人畏缩的“send the process a sighup”提醒时,好时间中断了。 什么是“sighup(启用旗号)”,你怎样发送它?它像是你送给你的爱人的一束花吗?固然你不妨确定这不是一个吩咐行训令,然而,你仍旧试着键入它。固然,这没有截止。而后,你查看一下键盘。哦,没有sighup键。所以你又从新观赏这个运用步调的参考指南,看到底下这段笔墨: 当收到一个hangup(过程中断)旗号时,sshd步调会从新观赏摆设文献。经过实行启用步调时的吩咐及选项来发送sighup旗号,如:/usr/sbin/sshd。 哦,从来是如许。 步调员 vs 运用者 linux步调的在线参考指南作家普遍都要既光顾到最后用户的需要也要光顾到高档步调员的需要。所以,有些证明比拟难懂。然而,不要担忧。此刻咱们就要显现掩盖在那些让人迷惘的实质上头那神奇的面纱。 旗号与过程遏制 这个题目重要属于旗号和过程遏制的范围。对于咱们体例处置员和普遍用户来说,咱们重要关怀的是启用、遏止和从新启用效劳、遏止失控的过程和被挂起的过程,而且尽大概不阻碍体例运转。由于各别的操纵体例和各别的吩咐外壳处置旗号的办法都不沟通,咱们这边只引见linux操纵体例和bash外壳。 旗号是用来与保护步调和过程通讯的。任何震动工作都是一个过程,而保护步调是等候对某些事变做出反馈大概依照议程安置实行工作的后盾效劳。一个步调必需有建在个中的旗号处置步调用来捕捉和应答旗号。在linux中的signal 参考指南证明了百般各别旗号和那些旗号的用处。旗号是由“kill”吩咐发出的。kill -l吩咐不妨表露一个可用旗号列表及其编号。 一切的保护步调和过程都有一个过程id(pid),比方运用ps定名所表露的实质: $ ps aux user pid %cpu %mem tty stat command root 1 0.0 0.1 ? s init [2] 105 7783 0.0 0.2 ? ss /usr/bin/dbus-daemon --system hal 7796 0.0 0.7 ? ss /usr/sbin/hald postfix 7957 0.0 0.2 ? s qmgr -l -t fifo -u -c nagios 8371 0.0 0.2 ? sns /usr/sbin/nagios /etc/nagios/nagios.cfg 这个输入是过程简化的。你在体例中不妨看到更多的行和栏目。即使某些过程耗费了你的十足cpu大概外存,你不妨在这个输入的%cpu和%mem列中创造它们。找到失控的过程的一种更赶快的本领是运用top吩咐,由于依照默许的树立,运用占用cpu资源最多的过程在最上头表露。咱们不妨运用一条“yes”吩咐来尝试一下:$ yes carla is teh awesum 这个吩咐将以很高的速率重复表露“carla is teh awesum”,直到你遏止它运转。这将使你的cpu运用率到达警告线。 $ top ... pid user pr ni virt res shr s %cpu %mem time+ command 12144 carla 25 0 31592 17m 13m r 93.4 3.5 0:50.26 konsole 22236 carla 15 0 2860 468 400 s 4.3 0.1 0:00.97 yes 领会一下这个截止,你会创造少许风趣的事,你会创造,占用cpu最多的步调是konsole假造结尾步调,而不是“yes”吩咐,这是由于“yes”吩咐是在konsole结尾步调中运转的。即使在一个“真实的”遏制台(按ctrl+alt+f2键)中运转同样的吩咐序列,你将看到“yes”吩咐被排在第一位。 有很多遏止“yes”吩咐运转的办法。即使你要回到运转它的shell中,按ctrl+c键就不妨了。大概你不妨在另一个shell顶用“kill”吩咐遏止“yes”吩咐的运转,kill吩咐反面跟pid大概吩咐称呼,如次如示:$ kill 22236 大概$ killall yes 按ctrl+c键发出一个sigint(旗号2),这个旗号是键盘诉求博得遏制权的阻碍旗号。kill和killall这两个吩咐依照默许的树立都发出一个sigterm旗号(编号15)。步调中不妨树立对sigterm旗号(15)是捕获大概忽视,大概以各别的办法证明。所以,即使你的步调对于kill吩咐的反馈与你预期各别,很大概是被kill的目的步调的题目。 中断一个父过程常常也中断了它的子过程。然而,情景并不老是如许。你领会子过程是什么吗?运用ps吩咐加上-f选项就不妨看到,如次所示: $ ps axf 22371 ? r 2:35 _ konsole [kdeinit] 22372 pts/3 ss 0:00 | _ /bin/bash 24322 pts/3 s+ 0:00 | | _ yes carla is teh awesum 22381 pts/4 rs 0:00 | _ /bin/bash 24323 pts/4 r+ 0:00 | | _ ps axf 此刻,回到sighup的话题 sighup的发音是“sig-hup”,是signal hangup的缩写,含意是“遏止旗号”。你怎样发送一个sighup旗号呢?这边有几种办法:# kill -hup [pid] # killall -hup [process-name] # kill -1 [pid] # killall -1 [process-name] 所以,你不妨运用pid大概称呼,旗号称呼大概号子。那么干什么要如许做而不运用/etc/init.d/foo吩咐从新启用呢?运用它们本人的init(初始化)文献来遏制效劳是优先采用的办法,由于那些文献常常包括健康和缺点查看以及特殊的功效。运用“kill”吩咐和旗号的重要因为是尽大概精确地中断挂起和失控的过程,而不用从新启用大概登出。 中断过程 正如你在对于旗号的man page中所看到的,有十几种遏制过程的本领。底下是少许常用的本领: kill -stop [pid] 发送sigstop (17,19,23)遏止一个过程,而并不祛除这个过程。 kill -cont [pid] 发送sigcont (19,18,25)从新发端一个遏止的过程。 kill -kill [pid] 发送sigkill (9)抑制过程登时遏止,而且不实行整理操纵。 kill -9 -1 中断你具有的十足过程。 sigkill和sigstop旗号不许被捕获、封闭大概忽视,然而,其它的旗号不妨。以是这是你的最终兵戈。 bash shell的kil吩咐l bash外壳包括一个内置的kill吩咐,当实行底下吩咐: $ type -all kill kill is a shell built-in kill is /bin/kill 吩咐的截止表白有两个kill吩咐,一个是bash的内置吩咐,另一个是/bin/kill可执路途序。普遍来说这两个吩咐不太大概遇到辩论的情景,然而,即使你真实遇到了kill吩咐动作特殊时,你不妨精确的指定/bin/kill吩咐。 你确定要进一步查看底下的资源中列出的参考资源来领会linux中kill的妙用,由于这是你加入保护linux体例范围的入场券。那些常识不妨让你像做五官科手术一律对体例举行保护,而不必在遇到题目时每一次都从新启用体例,就像咱们领会的某些糟糕的操纵体例那么。 资源 linux cookbook一书的第七章“发端和中断linux” bash (1) - gnu bourne-again shell yes (1) - 在被中断前重复打字与印刷字符 signal (7) - 可用旗号列表 ps (1) - 汇报当进步程的快速照相 kill (1) - 向一个过程发出旗号 killall (1) - 按名字祛除过程 pkill (1) - 按照名字和其它属性察看大概发出过程旗号 skill (1) - 发送一个旗号大概汇报过程状况 xkill (1) - 依照x资源祛除一个存户步调