Linux系统中有效地管理进程的8个命令介绍说明

前言
进程管理的作用:

  • 判断服务器健康状态:通过分析进程的状态(内存、CPU占有率等)判断服务器的负载和安全状态
  • 查看系统中的所有进程
  • 杀死进程
本文将给大家详细介绍关于Linux管理进程命令的相关内容,通过这些关键的命令来全程管理你的应用 。
一般来说,应用程序进程的生命周期有三种主要状态:启动、运行和停止 。如果我们想成为称职的管理员,每个状态都可以而且应该得到认真的管理 。这八个命令可用于管理进程的整个生命周期 。
启动进程
启动进程的最简单方法是在命令行中键入其名称,然后按回车键 。如果要启动 Nginx web 服务器,请键入 nginx。也许您只是想看看其版本 。
alan@workstation:~$ nginxalan@workstation:~$ nginx -vnginx version: nginx/1.14.0查看您的可执行路径
以上启动进程的演示是假设可执行文件位于您的可执行路径中 。理解这个路径是可靠地启动和管理进程的关键 。管理员通常会为他们想要的目的定制这条路径 。您可以使用 echo $PATH 查看您的可执行路径 。
alan@workstation:~$ echo $PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binWHICH
使用 which 命令查看可执行文件的完整路径 。
alan@workstation:~$ which nginx/opt/nginx/bin/nginx我将使用流行的 web 服务器软件 Nginx 作为我的例子 。假设安装了 Nginx 。如果执行 which nginx 的命令什么也不返回,那么是找不到 Nginx 了,因为它只搜索您指定的可执行路径 。有三种方法可以补救一个进程不能简单地通过名字启动的情况 。首先是键入完整路径 —— 虽然,我不情愿输入全部路径,您会吗?
alan@workstation:~$ /home/alan/web/prod/nginx/sbin/nginx -vnginx version: nginx/1.14.0第二个解决方案是将应用程序安装在可执行文件路径中的目录中 。然而,这有时可能是办不到的,特别是如果您没有 root 权限 。
第三个解决方案是更新您的可执行路径环境变量,包括要使用的特定应用程序的安装目录 。这个解决方案是与 shell 相关的 。例如,Bash 用户需要在他们的 .bashrc 文件中编辑 PATH= 行 。
PATH="$HOME/web/prod/nginx/sbin:$PATH"现在,重复您的 echo 和 which 命令或者尝试检查版本 。容易多了!
alan@workstation:~$ echo $PATH/home/alan/web/prod/nginx/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/binalan@workstation:~$ which nginx/home/alan/web/prod/nginx/sbin/nginxalan@workstation:~$ nginx -vnginx version: nginx/1.14.0保持进程运行
NOHUP
注销或关闭终端时,进程可能不会继续运行 。这种特殊情况可以通过在要使用 nohup 命令放在要运行的命令前面让进程持续运行 。此外,附加一个 & 符号将会把进程发送到后台,并允许您继续使用终端 。例如,假设您想运行 myprogram.sh。
nohup myprogram.sh &nohup 会返回运行进程的 PID 。接下来我会更多地谈论 PID 。
管理正在运行的进程
每个进程都有一个唯一的进程标识号 (PID)。这个数字是我们用来管理每个进程的 。我们还可以使用进程名称,我将在下面演示 。有几个命令可以检查正在运行的进程的状态 。让我们快速看看这些命令 。
PS
最常见的是 ps 命令 。ps 的默认输出是当前终端中运行的进程的简单列表 。如下所示,第一列包含 PID 。
alan@workstation:~$ psPID TTYTIME CMD23989 pts/0 00:00:00 bash24148 pts/0 00:00:00 ps我想看看我之前启动的 Nginx 进程 。为此,我告诉 ps 给我展示每一个正在运行的进程( -e )和完整的列表( -f ) 。
alan@workstation:~$ ps -efUIDPID PPID C STIME TTYTIME CMDroot10 0 Aug18 ?00:00:10 /sbin/init splashroot20 0 Aug18 ?00:00:00 [kthreadd]root42 0 Aug18 ?00:00:00 [kworker/0:0H]root62 0 Aug18 ?00:00:00 [mm_percpu_wq]root72 0 Aug18 ?00:00:00 [ksoftirqd/0]root82 0 Aug18 ?00:00:20 [rcu_sched]root92 0 Aug18 ?00:00:00 [rcu_bh]root102 0 Aug18 ?00:00:00 [migration/0]root112 0 Aug18 ?00:00:00 [watchdog/0]root122 0 Aug18 ?00:00:00 [cpuhp/0]root132 0 Aug18 ?00:00:00 [cpuhp/1]root142 0 Aug18 ?00:00:00 [watchdog/1]root152 0 Aug18 ?00:00:00 [migration/1]root162 0 Aug18 ?00:00:00 [ksoftirqd/1]alan20506 20496 0 10:39 pts/0 00:00:00 bashalan20520 1454 0 10:39 ?00:00:00 nginx: master process nginxalan20521 20520 0 10:39 ?00:00:00 nginx: worker processalan20526 20506 0 10:39 pts/0 00:00:00 man psalan20536 20526 0 10:39 pts/0 00:00:00 pageralan20564 20496 0 10:40 pts/1 00:00:00 bash

推荐阅读