您当前的位置:网站首页>太初,有用办理进程的 8 个 Linux 指令,江南春古诗

太初,有用办理进程的 8 个 Linux 指令,江南春古诗

2019-04-09 22:15:16 投稿作者:admin 围观人数:302 评论人数:0次

(点击上方大众号,可快速重视)


英文:Alan Formy-duval,翻译:Linux我国/heguangzhi

linux.cn/article-10020-1.html



一般来说,运用漂洋过海来看你原唱程序进程的生命周期有三种首要状况:发动、运转和中止。假如咱们想成为胜任的处理员,每个状况都能够并且应该得到仔细的处理。这八个指令可用于处理进程的整个生命周期。


发动进程


发动进程的最简略办法是在指令行中键入其称号,然后按回车键。假如要发动 Nginx web 服务器,请键入 nginx 。或许您仅仅想看看其版别。


alan@workstation:~$ nginx

 

alan@workstation:~$ nginx -v

nginx version: nginx/1.14.0


检查您的可履行途径


以上发动进程的演示是假定可履行文件坐落您的可履行途径中。了解这个途径是可靠地发动太初,有用处理进程的 8 个 Linux 指令,江南春古诗和处理进程的要害。处理员一般会为他们想要的意图定制这条途径。您能够运用 echo $PATH 检查您的可履行途径。


alan@workstation:~$ echo $PATH

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin


WHICH


运用 which 指令检查可履行文件的完好途径。


alan@workstation:~$ which nginx

/opt/nginx/bin/nginx


我将运用盛行的 web 服务器软件 Nginx 作为我的比方。假定装置了 Nginx。假如履行 which nginx 的指令什么也不回来,那么是找不到 Nginx 了,由于它只查找您指定的可履行途径。有三种办法能够弥补一个进程不能简略地经过姓名发动的状况。首要是键入完好途径 —— 尽管,我不甘愿输入悉数途径,您会吗?


alan@workst太初,有用处理进程的 8 个 Linux 指令,江南春古诗ation:~$ /home/alan/w太初,有用处理进程的 8 个 Linux 指令,江南春古诗eb/prod/nginx/sbin/nginx -v

nginx version: nginx/1.14.0


第二个解决方案是将运用程序装置在可履行文件途径中的目录中。可是,这有时或许是办不到的,特别是假如您没有 root 权限。


第三个解决方案是更新您的可履行途径环境变量,包含要运用的特定运用程序的装置目录。这个解决方案是与 shell 相关的。例如,Bash 用户需求在他们的 .bashrc 文件中修改 PATH= 行。


PATH="$HOME/web/prod/nginx/sbin:$PATH"


现在,重复您的 太初,有用处理进程的 8 个 Linux 指令,江南春古诗echo 和 which 指令或许测验检查版别。简略多了!


alan@workstation:~$ echo $PATH

/home/alan/web/prod/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin

 

alan@workstation:~$ which nginx

/home/alan/web/prod/nginx/sbin/nginx

 

alan@workstation:~$ nginx -v                                       &上海南站nbsp;        撒贝宁婚姻走到止境;

ngin撸死你资源网x version: 村庄四月古诗nginx/1.14.0


坚持进程运转


NOHUP


刊出或封闭终端时,进程或许不会持续运转。这种特殊状况能够经过在要运用 nohup 指令放在要运转的指令前面让进程持续运转。此外,附加一个& 符号将会把进程发送到后台,并答应您持续运用终端。例如,假定您想运转 myprogram.sh 。


nohup myprogram.sh &


nohup 会回来运转进程的 PID。接下来我会更多地议论 PID。


处理正在运转的进程


每个进程都有一个仅有的进程标识号 (PID教父3) 。这个数字是咱们用来处理每个进程的。咱们还能够运用进程称号,我将在下面演示。有几个指令能够检查正在运转的进程的状况。让咱们快速看看这些指令。


PS


最常见的是 ps 指令。ps 的默许输出是当时终端中运转的进程的简略列表。如下所示,榜首列包含 PID。


alan@workstation:~$ ps

PID TTY          TIME CMD

23989 pts/0    00:00:00 bash

24148 pts/0    00:00:00 ps


我想看看我之前发动的 Nginx 进程。为此,我通知 ps 给我展现每一个正在运转的进程(-e)和完好的列表(-f)。



您能够在上面 ps 指令的输出麝手中看到 Nginx 进程。这个指令显现了将近 300 行,可是我在这个比方中缩短了它。能够幻想,企图处理 300 行进程信息有点紊乱。咱们能够将这个输出输送到 grep,过滤一下仅显现 nginx。



的确更好了。咱们能够很快看到,Nginx 有 20520 和 20521 的 PID。


PGREP


pgrep 玄指令愈加简化独自调用 grep 遇到的问题。


alan@workstation:~$ pgrep nginx

20520

20521


假定您在一个保管环境中,多个用户正在运转几个不同的 Nginx 实例。您能够运用 -u 选项将其别人扫除在输出之外。


alan@workstation:~$ pgrep -u alan nginx

20520

20521


PIDOF


另一个好用的是 pidof。此指令将检查特定二进制文件的 PID,即便另一个同名进程正在运转。为了树立一个比方,我将我的 Nginx 复制到第二个目录,并以相应的途径前缀发动。在现实生活中,这个实例或许坐落不同的方位,例如由不同用户具有的目录。太初,有用处理进程的 8 个 Linux 指令,江南春古诗假如我运转两个 Nginx 实例,则pidof 输出显现它们的一切进程。



运用 grep 或 pgrep 将显现 PID 数字,但咱们或许无法区分哪个实例是哪个。


alan@w太初,有用处理进程的 8 个 Linux 指令,江南春古诗orkstation:~$ pgrep nginx

20881

20882

20895

20896


pidof 指令可用于承认每个特定 Nginx 实例的 PID。


alan@workstatiococo奶茶加盟n:~$ pidof /home/alan/web/prod/nginxsec/sbin/nginx泡泡电影

20882 20881

 

alan@workstation:~$ pidof /home/alan/web/prod/nginx/sbin/nginx

20896 20895


TOP


top 指令现已有好久的前史了,关于检查运转进程的细节和快速辨认内存耗费等问题是十分有用的。其默许视图如下所示。



能够经过键入字母 s 和您喜爱的更新秒数来更改更新距离。为了更简略监控咱们的示例 Nginx 小泡芙妈妈进程,咱们能够运用 -p 太初,有用处理进程的 8 个 Linux 指令,江南春古诗选项并传递 PID 来调用 top。这个输出要洁净得多。



在处理进程,特别是中止进程时,正确承认 PID 是十分重要。此外,假如以这种办法运用 top,每逢这些进程中的一个中止或一个新进程开始时,top 都需求被奉告有新的进程。


中止进程


KILL


风趣的是厨师校园,没有 stop 指令。在 Linux 中,有 kill 指令。kill 用于向进程发送信号。最常用的信号是“中止”(SIGTERM)或“杀死”(SIGKILL)。可是,还有更多。下面是一些比方。完好的列表能够用 kill -L 显现。



留意第 9 号信号是 SIGKILL,一般,咱们会宣布比方 kill -9 20896 这样的指令。默许信号是 15,这是 SIGTERM。请记住,许多应女配捉妖日志用程序都有自己的中止办法。Nginx 运用 -s 选项传递信号,如 stop 或 reload。一般,我更喜爱运用运用程序的特定办法来中止操作。可是,我将演示用 kill 指令来中止 Nginx 进程 20896,然后用 pgrep 承认它现已中止。PID 20896 就不再呈现。


alan@workstation:~$ kill -9 20896

 

alan@workstation:~$ pgrep nginx

20881

20882

20895

22123


PKILL


指令 pkill 类似于 pgrep,由于它能够按称号查找。这意味着在运用 pkill 时有必要十分当心。在我的 Nginx 示例中,假如我只想杀死一个 Nginx 实例,珀姣苏我或许不会挑选运用它。我能够将 Nginx 选项 -s stop 传递给特定的实例来消除它,或许我需求运用 grep 来过滤整个 ps 输出。


/home/alan/web/prod/nginx/sbin/nginx -s stop

/home/alan/web/prod/nginxsec/sbin/nginx -s stop


假如我想运用 pkill,我能够包含 -f 选项,让 pkill 过滤整个指令行参数。这当然也适用于 pgrep。所以,在履行 pkill -武界神刀f 之前,首要我能够用 pgrep -a 承认一下黑白灰平行国际吧。


alan@workstation:~$ pgrep -a nginx

20881 nginx: master process ./nginx -p /home/alan/web/prod/nginxsec

20882 nginx: worker process

20895 nginx: master process nginx

20896 nginx: worker process


我也能够用 pgrep -f 缩小我的成果。pkill 运用相同参数会中止该进程。


alan@workstation:~$ pgrep -f nginxsec

20881

                        &头孢克肟颗粒nbsp;    青鸟加速器              

alan@workstation:~$ pkill -f nginxsec


pgrep(尤其是 pkill)要记住的要害点是,您有必要一直保证翊洁吧查找成果准确性,这样您就不会无意中影响到过错的进程。


大多数这些指令都有许多指令行选项,所以我总是主张阅览每一个指令的 man 手册页。尽管大多数这些指令都存在于 Linux、Solaris 和 BSD 等平台上,但也有一些不同之处。在指令行作业或编写脚本时,一直测验并随时预备根据需求进行更正。



【关于投稿】


假如我们有原创好文投稿,请直接给公号发送留言。


① 留言格局:
【投稿】+《 文章标题》+ 文章链接

② 示例:
【投稿】《不要自称是程序员,我十多年的 IT 职场总结》:http://blog.jobbole.com/94148/

③ 最终请附上您的个人简介哈~



看完本文有收成?请共享给更多人

重视「Linux 爱好者」,提高Linux技术

the end
市场再一次为之疯狂,茅台证券交易