【新品产上线啦】51CTO播客,随时随地,碎片化学习
通过这些关键的命令来全程管理你的应用。
一般来说,应用程序进程的生命周期有三种主要状态:启动、运行和停止。如果我们想成为称职的管理员,每个状态都可以而且应该得到认真的管理。这八个命令可用于管理进程的整个生命周期。
启动进程
启动进程的最简单方法是在命令行中键入其名称,然后按回车键。如果要启动 Nginx web 服务器,请键入 nginx 。也许您只是想看看其版本。
alan@workstation:~$ nginx -
alan@workstation:~$ nginx -v nginx version: nginx/1.14.0
查看您的可执行路径
以上启动进程的演示是假设可执行文件位于您的可执行路径中。理解这个路径是可靠地启动和管理进程的关键。管理员通常会为他们想要的目的定制这条路径。您可以使用 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@workstation:~$ /home/alan/web/prod/nginx/sbin/nginx -v nginx 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/bin -
alan@workstation:~$ which nginx /home/alan/web/prod/nginx/sbin/nginx -
alan@workstation:~$ nginx -v nginx version: nginx/1.14.0
保持进程运行
NOHUP
注销或关闭终端时,进程可能不会继续运行。这种特殊情况可以通过在要使用 nohup 命令放在要运行的命令前面让进程持续运行。此外,附加一个& 符号将会把进程发送到后台,并允许您继续使用终端。例如,假设您想运行 myprogram.sh 。
nohup myprogram.sh &
nohup 会返回运行进程的 PID。接下来我会更多地谈论 PID。
管理正在运行的进程
每个进程都有一个唯一的进程标识号 (PID) 。这个数字是我们用来管理每个进程的。我们还可以使用进程名称,我将在下面演示。有几个命令可以检查正在运行的进程的状态。让我们快速看看这些命令。
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 )。
alan@workstation:~$ ps -ef UID PID PPID C STIME TTY TIME CMD root 1 0 0 Aug18 ? 00:00:10 /sbin/init splash root 2 0 0 Aug18 ? 00:00:00 [kthreadd] root 4 2 0 Aug18 ? 00:00:00 [kworker/0:0H] root 6 2 0 Aug18 ? 00:00:00 [mm_percpu_wq] root 7 2 0 Aug18 ? 00:00:00 [ksoftirqd/0] root 8 2 0 Aug18 ? 00:00:20 [rcu_sched] root 9 2 0 Aug18 ? 00:00:00 [rcu_bh] root 10 2 0 Aug18 ? 00:00:00 [migration/0] root 11 2 0 Aug18 ? 00:00:00 [watchdog/0] root 12 2 0 Aug18 ? 00:00:00 [cpuhp/0] root 13 2 0 Aug18 ? 00:00:00 [cpuhp/1] root 14 2 0 Aug18 ? 00:00:00 [watchdog/1] root 15 2 0 Aug18 ? 00:00:00 [migration/1] root 16 2 0 Aug18 ? 00:00:00 [ksoftirqd/1] alan 20506 20496 0 10:39 pts/0 00:00:00 bash alan 20520 1454 0 10:39 ? 00:00:00 nginx: master process nginx alan 20521 20520 0 10:39 ? 00:00:00 nginx: worker process alan 20526 20506 0 10:39 pts/0 00:00:00 man ps alan 20536 20526 0 10:39 pts/0 00:00:00 pager alan 20564 20496 0 10:40 pts/1 00:00:00 bash
(编辑:ASP站长网)
|