Apache服务器监控与进程管理命令详解

内容分享2天前发布
0 0 0

table {
border-collapse: collapse;
width: 100%;
margin-bottom: 1rem;
}
th, td {
border: 1px solid #ddd;
padding: 8px;
text-align: left;
}
th {
background-color: #f2f2f2;
}
tr:nth-child(even) {
background-color: #f9f9f9;
}
pre {
background-color: #f8f8f8;
padding: 15px;
border-radius: 4px;
overflow-x: auto;
}

188、尽管ps的输出最初是静态的,但可以通过将ps和watch结合使用使其变为动态。我们将监控Apache HTTPD Web服务器的新连接。请输入一个使用watch、ps和grep来查看apache2连接的命令。


watch 'ps aux | grep apache2' 或 watch "ps aux | grep apache2"

189、虽然最初

ps

的输出是静态的,但可以通过结合

ps


watch

使其动态化。我们将监控Apache HTTPD Web服务器的新连接。现在打开一个Web浏览器或使用像

lynx

这样的命令行浏览器,通过其IP地址与Web服务器建立连接。你在

watch

的输出中观察到了什么?

其中一个由

www-data

拥有的子进程消失了。

190、启动 Web 服务器。确保你知道父进程的 PID。通过向父进程发送 SIGHUP 信号来重启 Apache HTTPD Web 服务器。检查父进程未被杀死且已生成新的子进程。

启动 Web 服务器:


$ sudo systemctl start apache2

确定父进程 PID:


$ ps aux | grep apache2  # 父进程由 root 用户启动

发送 SIGHUP 信号重启服务器:


$ kill -SIGHUP [父进程 PID]

检查父进程和子进程状态:


$ ps aux | grep apache2

191、在Apache2的配置文件中添加值为1的MaxConnectionsPerChild指令(在Debian及其衍生系统中,该配置文件位于/etc/apache2/apache2.conf;在CentOS系列中,位于/etc/httpd/conf/httpd.conf)。别忘了重启Apache2使更改生效。输入一个使用watch、ps和grep来监控Apache2连接的命令。现在打开一个网页浏览器或使用像lynx这样的命令行浏览器,通过其IP地址建立与Web服务器的连接。在watch的输出中你观察到了什么?

使用的命令为:


$ watch 'ps aux | grep apache2'


$ watch "ps aux | grep apache2"

观察到的现象为:一个由

www-data

拥有的子进程消失了。

192、启动 top 命令,使任务按内存使用情况排序。通过高亮显示内存列来验证你输入的命令是否正确。

启动 top 按内存使用排序:$ top -o %MEM;验证命令:按 x

193、使用两个不同的命令来查找由 Apache HTTPD 网络服务器(apache2)派生的所有进程的 PID。

可以使用

pidof apache2


pgrep apache2

这两个命令来查找由 Apache HTTPD 网络服务器(apache2)派生的所有进程的 PID。

194、不使用进程 ID,用两条不同的命令终止所有 apache2 进程。

可以使用以下两条命令:$ pkill apache2 或 $ killall apache2

195、假设你需要终止所有 apache2 实例,且没有时间去查找它们的 PID。如何使用 kill 命令结合默认的 SIGTERM 信号以单行命令完成此操作?

可以使用以下命令:

kill $(pgrep apache2)

kill

pgrep apache2“

kill $(pidof apache2)

kill

pidof apache2“

196、启动top并与之交互,执行以下操作:显示进程的树形视图。

启动top后,按V键可显示进程的树形视图。

197、启动 top 并与之交互,完成以下操作:显示区分用户空间进程和内核空间进程的进程完整路径。

启动

top

后,按

c

键可显示程序的绝对路径并区分用户空间进程和内核空间进程(内核空间进程用方括号表示)。

198、使用 BSD 语法输入 ps 命令来显示由 Apache HTTPD 网络服务器用户(www – data)启动的所有进程。

ps U www-data

199、使用GNU语法输入ps命令来显示由Apache HTTPD Web服务器用户(www – data)启动的所有进程。

ps –user www-data

200、SIGHUP信号可用于重启某些守护进程。以Apache HTTPD Web服务器为例,向父进程(由init启动的进程)发送SIGHUP信号会终止其子进程,之后父进程会重新读取其配置文件、重新打开日志文件并生成一组新的子进程。如何启动Apache HTTPD Web服务器?

使用命令:$ sudo systemctl start apache2

201、SIGHUP信号可用于重启某些守护进程。以Apache HTTPD Web服务器为例,向父进程(由init启动的进程)发送SIGHUP信号会终止其子进程,且父进程会重新读取其配置文件、重新打开日志文件并生成一组新的子进程。那么如何查看Apache HTTPD Web服务器父进程的PID呢?

可以使用命令

$ ps aux | grep apache2

来查看,父进程是由 root 用户启动的进程。

202、如何通过向Apache HTTPD Web服务器的父进程发送SIGHUP信号来重启该服务器?

需要按以下步骤操作:

启动Web服务器:

bash
$ sudo systemctl start apache2

确定父进程的PID:

bash
$ ps aux | grep apache2


父进程是由root用户启动的,假设这里PID为1653;

向父进程发送SIGHUP信号以重启Apache HTTPD Web服务器:

bash
$ kill -SIGHUP 1653

检查父进程未被终止且已生成新的子进程:

bash
$ ps aux | grep apache2

203、SIGHUP信号可以作为重启某些守护进程的一种方式。以Apache HTTPD Web服务器为例,向父进程(由init启动的那个进程)发送SIGHUP信号会终止其子进程。然而,父进程会重新读取其配置文件、重新打开日志文件并生成一组新的子进程。如何检查父进程是否未被终止以及是否生成了新的子进程?

可以使用命令

$ ps aux | grep apache2

进行检查,此时应该能看到父

apache2

进程和两个新的子进程。

204、虽然

ps

命令的输出最初是静态的,但可以通过将

ps


watch

结合使用使其动态化。我们将监控Apache HTTPD Web服务器的新连接情况。需要在apache2的配置文件中添加值为1的

MaxConnectionsPerChild

指令,在Debian及其派生系统中,该配置文件位于

/etc/apache2/apache2.conf

;在CentOS系列中,位于

/etc/httpd/conf/httpd.conf

。添加完成后,要重启apache2以使更改生效。请说明具体操作步骤。

在 Debian 及其派生系统中,编辑

/etc/apache2/apache2.conf

文件,添加:


MaxConnectionsPerChild 1

在 CentOS 系列中,编辑

/etc/httpd/conf/httpd.conf

文件,添加:


MaxConnectionsPerChild 1

然后使用以下命令重启 apache2:


sudo systemctl restart apache2

205、使用命令 $ sudo systemctl start apache2 启动 Web 服务器;使用命令 $ ps aux | grep apache2 确定父进程的 PID;使用命令 $ kill -SIGHUP [PID] 向父进程发送 SIGHUP 信号使 Apache HTTPD Web 服务器重启;使用命令 $ ps aux | grep apache2 检查父进程未被杀死且已生成新的子进程。

这一系列步骤的操作如下:

首先,使用命令

sudo systemctl start apache2

启动 Apache HTTPD Web 服务器。

接着,使用

ps aux | grep apache2

命令查看进程信息,找到由 root 用户启动的父进程及其 PID。

然后,使用

kill -SIGHUP [PID]

(将

[PID]

替换为实际的父进程 PID)向父进程发送 SIGHUP 信号,使服务器重启。

最后,再次使用

ps aux | grep apache2

命令,此时应能看到父进程以及两个新的子进程,以此确认父进程未被杀死且新的子进程已生成。

206、在 Apache2 的配置文件中添加值为 1 的 MaxConnectionsPerChild 指令(在 Debian 及其衍生系统中,该文件位于 /etc/apache2/apache2.conf;在 CentOS 系列中,位于 /etc/httpd/conf/httpd.conf),并重启 Apache2;输入一个使用 watch、ps 和 grep 来监控 Apache2 连接的命令;打开一个网页浏览器或使用如 lynx 这样的命令行浏览器,通过其 IP 地址与 Web 服务器建立连接,并说明在 watch 的输出中观察到了什么。

添加指令并重启 Apache2:在 Debian 及其衍生系统的

/etc/apache2/apache2.conf

或 CentOS 系列的

/etc/httpd/conf/httpd.conf

中添加

MaxConnectionsPerChild 1

这一行,然后使用

sudo systemctl restart apache2

重启。

输入监控命令:

bash
$ watch 'ps aux | grep apache2'




bash
$ watch "ps aux | grep apache2"

建立连接后观察:一个由

www-data

拥有的子进程会消失。

207、使用命令 $ top -o %MEM 启动 top 并按内存使用情况对任务进行排序;通过高亮显示内存列来验证你输入的命令是否正确(按 x)

先执行命令

$ top -o %MEM

启动

top

并按内存使用情况排序任务。

再按

x

键高亮显示内存列以验证命令输入是否正确。

208、如何使用 ps 命令仅显示有关用户、内存使用百分比、CPU 时间使用百分比和完整命令的信息,以及如何使用 ps 命令仅显示用户及其正在使用的程序名称的信息?

要仅显示有关用户、内存使用百分比、CPU 时间使用百分比和完整命令的信息,可使用命令:


$ ps o user,%mem,%cpu,cmd

要仅显示用户及其正在使用的程序名称的信息,可使用命令:


$ ps o user,comm

209、指出以下陈述/特性对应于GNU Screen、tmux还是两者皆有:特性/陈述:默认命令前缀为Ctrl + a;客户端 – 服务器模型;面板是伪终端;杀死一个区域不会杀死其关联的窗口;会话包含窗口;会话可以分离。

默认命令前缀为

Ctrl + a

:GNU Screen;

客户端 – 服务器模型:GNU Screen、tmux;

面板是伪终端:GNU Screen、tmux;

杀死一个区域不会杀死其关联的窗口:GNU Screen、tmux;

会话包含窗口:GNU Screen、tmux;

会话可以分离:GNU Screen、tmux

210、在你的计算机上安装GNU Screen(包名:screen)并完成以下任务:启动该程序,使用什么命令?启动top命令;使用screen的键前缀,打开一个新窗口,然后使用vi打开 /etc/screenrc;在屏幕底部列出窗口;将当前窗口的名称更改为vi;将剩余窗口的名称更改为top。为此,首先显示所有窗口的列表,以便你可以上下移动并选择正确的窗口;再次在屏幕底部显示窗口名称,检查名称是否已更改;现在,分离当前会话并让screen创建一个名为ssh的新会话;也从ssh会话中分离出来,并让screen显示会话列表;现在,使用其PID连接到第一个会话;你应该回到显示top的窗口。水平分割窗口并移动到新的空白区域;让screen列出所有窗口并选择vi显示在新的空白区域;现在,垂直分割当前区域,移动到新创建的空白区域并将其与一个全新的窗口关联;终止除当前区域之外的所有区域(请记住,虽然你杀死了区域,但窗口仍然存在)。然后,退出当前会话的所有窗口,直到会话本身终止;最后,让screen再次列出其会话,通过PID杀死剩余的ssh会话,并检查实际上是否没有剩余会话。

启动程序:通常使用

screen

命令。

启动top:在screen会话中输入

top

并按回车键。

打开新窗口并使用vi打开

/etc/screenrc

:按

Ctrl + a c

打开新窗口,然后输入

vi /etc/screenrc

并按回车键。

列出窗口:按

Ctrl + a w

将当前窗口名称改为vi:按

Ctrl + a A

,输入

vi

并按回车键。

将剩余窗口名称改为top:按

Ctrl + a "

,用箭头键选择窗口,按

Ctrl + a A

,输入

top

并按回车键。

检查名称更改:按

Ctrl + a w

分离会话并创建名为ssh的新会话:按

Ctrl + a d

,输入

screen -S "ssh"

并按回车键。

从ssh分离并显示会话列表:按

Ctrl + a d

,输入

screen -list


screen -ls

使用PID连接到第一个会话:输入

screen -r <实际PID>

水平分割窗口并移动到新区域:按

Ctrl + a S

,按

Ctrl + a Tab

列出窗口并选择vi显示在新区域:按

Ctrl + a "

,标记

vi

并按回车键。

垂直分割区域、移动到新区域并关联新窗口:按

Ctrl + a |

,按

Ctrl + a Tab

,按

Ctrl + a c

终止区域和退出窗口:按

Ctrl + a Q

,输入

exit

退出Bash;在vi中按

Shift + :

,输入

quit

并按回车键。

列出会话、杀死ssh会话并检查:输入

screen -ls

,输入

screen -X -S <实际PID> quit

,再次输入

screen -ls

检查。

211、在你的计算机上安装tmux(包名:tmux)并完成以下任务:启动程序,使用什么命令?启动top(注意在几秒钟内,状态栏中窗口名称会变为top);使用tmux的键前缀,打开一个新窗口,然后使用nano创建~/.tmux.conf;垂直分割窗口并多次减小新创建窗格的大小;现在将当前窗口的名称更改为文本编辑,然后让tmux显示所有会话的列表;使用相同的键组合移动到运行top的窗口并返回当前窗口;从当前会话分离并创建一个名为ssh且窗口名为ssh window的新会话;也从ssh会话分离并再次让tmux显示会话列表;现在,启动一台远程机器并通过ssh连接到你的本地主机。连接建立后,检查tmux会话;在远程主机上,按名称附加到ssh会话;回到你的本地机器,在确保与远程主机的连接先终止的情况下,按名称附加到ssh会话;显示所有会话以供选择并转到你的第一个会话([0])。到达后,按名称杀死ssh会话;最后,从当前会话分离并按名称杀死它。


# Tmux 常用命令说明

## 启动程序
- 启动 tmux 程序命令:`tmux`
- 启动 top 命令:`top`

## 窗口操作
- 打开新窗口并创建 `~/.tmux.conf`:
  - 先按 `Ctrl + b`,再按 `c`
  - 然后输入 `nano ~/.tmux.conf`
- 垂直分割窗口并减小窗格大小:
  - 先按 `Ctrl + b`,再按 `"`
  - 然后按 `Ctrl + b`,接着按 `Ctrl + ↓`
- 更改窗口名称并显示会话列表:
  - 先按 `Ctrl + b`,再按 `,`
  - 输入新名称并按回车
  - 然后按 `Ctrl + b`,再按 `s`
  - 或输入 `tmux ls`

## 会话操作
- 分离当前会话并创建新会话:
  - 先按 `Ctrl + b`,再按 `d`
  - 然后输入 `tmux new -s "ssh" -n "ssh window"`
- 分离 ssh 会话并显示会话列表:
  - 先按 `Ctrl + b`,再按 `d`
  - 然后输入 `tmux ls`
- 在远程主机附加到 ssh 会话:
  - `tmux a -t ssh`(`a` 可替换为 `at` 或 `attach`)
- 本地机器附加到 ssh 会话:
  - `tmux a -d -t ssh`(`a` 可替换为 `at` 或 `attach`)
- 选择会话并杀死 ssh 会话:
  - 先按 `Ctrl + b`,再按 `s`
  - 用箭头键选择会话 0 并按回车
  - 然后输入 `tmux kill-session -t ssh`
- 分离并杀死当前会话:
  - 先按 `Ctrl + b`,再按 `d`
  - 然后输入 `tmux kill-session -t 0`

## 移动窗口
- 移动到下一个窗口:`Ctrl + b`,然后按 `n`
- 移动到上一个窗口:`Ctrl + b`,然后按 `p`

212、screen和tmux都可以通过命令前缀 + : 进入命令行模式。在命令行模式下进行操作,完成以下任务:使screen进入复制模式;使tmux重命名当前窗口;使screen关闭所有窗口并终止会话;使tmux将一个窗格拆分为两个;使tmux关闭当前窗口。


使screen进入复制模式


Ctrl + a :

,然后输入

copy


使tmux重命名当前窗口


Ctrl + b :

,然后输入

rename-window


使screen关闭所有窗口并终止会话


Ctrl + a :

,然后输入

quit


使tmux将一个窗格拆分为两个


Ctrl + b :

,然后输入

split-window


使tmux关闭当前窗口


Ctrl + b :

,然后输入

kill-window

213、当你在 screen 中进入复制模式时,不仅可以使用箭头键、PgUp 或 PgDown 来浏览当前窗口和滚动缓冲区,还可以使用类似 vi 的全屏编辑器。使用此编辑器完成以下任务:◦ 在你的 screen 终端中输出 supercalifragilisticexpialidocious;◦ 现在,复制光标正上方一行中从左到右连续的五个字符;◦ 最后,将所选内容(stice)粘贴回你的命令提示符处。

在 screen 终端中输出 supercalifragilisticexpialidocious:输入

bash
echo supercalifragilisticexpialidocious

复制光标正上方一行中从左到右连续的五个字符:

– 先通过

Ctrl + a - [


Ctrl + a - :

然后输入

copy

进入复制模式

– 接着使用

k

移动到上一行

– 按空格标记选择的起始位置

– 再使用

l

向前移动四个字符

– 按空格标记选择的结束位置

将所选内容(

stice

)粘贴回命令提示符处:按

bash
Ctrl + a - ]

214、假设你想与另一个用户共享一个tmux会话(our_session)。你已经创建了具有正确权限的套接字(/tmp/our_socket),以便你和另一个用户都可以读写。为了让第二个用户能够通过tmux -S /tmp/our_socket a -t成功附加到该会话,还应满足哪两个条件?

两个用户必须有一个共同的组,例如

multiplexer

必须将套接字的所属组更改为该共同的组,使用命令:

bash
chgrp multiplexer /tmp/our_socket

215、screen和tmux都可以通过命令前缀 + : 进入命令行模式。在命令行模式下完成以下任务:让screen进入复制模式;让tmux重命名当前窗口;让screen关闭所有窗口并终止会话;让tmux将一个窗格分割成两个;让tmux关闭当前窗口。

常用命令整理


让screen进入复制模式

按下

Ctrl + a :

然后输入

copy


让tmux重命名当前窗口

按下

Ctrl + b :

然后输入

rename -window


让screen关闭所有窗口并终止会话

按下

Ctrl + a :

然后输入

quit


让tmux将一个窗格分割成两个

按下

Ctrl + b :

然后输入

split -window


让tmux关闭当前窗口

按下

Ctrl + b :

然后输入

kill -window

216、当你在 screen 中进入复制模式时,不仅可以使用方向键、PgUP 或 PgDown 来浏览当前窗口和滚动缓冲区,还可以使用类似 vi 的全屏编辑器。使用此编辑器完成以下任务:在 screen 终端中输出 supercalifragilisticexpialidocious;复制光标正上方一行中从左到右连续的五个字符;最后,将所选内容粘贴回命令提示符处。

在 screen 终端中输出

supercalifragilisticexpialidocious



输入

echo supercalifragilisticexpialidocious

复制光标正上方一行中从左到右连续的五个字符:

进入复制模式(

Ctrl + a - [


Ctrl + a - :

然后输入

copy

),

使用

k

键移动到上一行,按空格键标记选择的起始位置,

使用

l

键向前移动四个字符,再按空格键标记选择的结束位置。

将所选内容粘贴回命令提示符处:


Ctrl + a - ]

217、假设你想与另一个用户共享一个tmux会话(our_session)。你已经创建了具有正确权限的套接字(/tmp/our_socket),以便你和另一个用户都可以读写。为了让第二个用户能够通过tmux -S /tmp/our_socket a -t our_session成功附加到该会话,还应满足哪两个条件?

两个用户必须有一个共同的组,例如

multiplexer

必须将套接字的所属组更改为该共同组,使用命令:

bash
chgrp multiplexer /tmp/our_socket

218、screen和tmux都可以通过命令前缀 + : 进入命令行模式。在命令行模式下完成以下任务:- 让screen进入复制模式。- 让tmux重命名当前窗口。- 让screen关闭所有窗口并终止会话。- 让tmux将一个窗格分割成两个。- 让tmux关闭当前窗口。


让screen进入复制模式

:按下

Ctrl + a

,然后输入

copy


让tmux重命名当前窗口

:按下

Ctrl + b

,然后输入

rename-window


让screen关闭所有窗口并终止会话

:按下

Ctrl + a

,然后输入

quit


让tmux将一个窗格分割成两个

:按下

Ctrl + b

,然后输入

split-window


让tmux关闭当前窗口

:按下

Ctrl + b

,然后输入

kill-window

219、当你在 screen 中进入复制模式时,不仅可以使用箭头键、PgUp 或 PgDown 来浏览当前窗口和滚动缓冲区,还可以使用类似 vi 的全屏编辑器。使用此编辑器完成以下任务:- 在你的 screen 终端中输出 supercalifragilisticexpialidocious。- 现在,复制光标正上方一行中从左到右连续的五个字符。- 最后,将所选内容(stice)粘贴回你的命令提示符处。

在 screen 终端中输入:

bash
echo supercalifragilisticexpialidocious

进入复制模式:

Ctrl + a - [


Ctrl + a - :

然后输入

copy

,使用

k

键移动到上一行,按

Space

键标记选择的起始位置,使用

l

键向前移动四个字符,再按

Space

键标记选择的结束位置。

粘贴所选内容:

Ctrl + a - ]

220、在一个抢占式多任务系统中,当一个低优先级进程正在占用处理器,而一个高优先级进程已排队等待执行时,会发生什么情况?

低优先级进程暂停,高优先级进程将取而代之开始执行。

221、考虑以下 ps -el 列表:F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD 4 S 0 1 0 0 80 0 – 42855 – ? 00:09:59 systemd 1 S 0 2 0 0 80 0 – 0 – ? 00:00:02 kthreadd 1 I 0 3 2 0 60 -20 – 0 – ? 00:00:00 rcu_gp 1 S 0 9 2 0 80 0 – 0 – ? 00:00:49 ksoftirqd/0 1 I 0 10 2 0 80 0 – 0 – ? 00:18:26 rcu_sched 1 I 0 11 2 0 80 0 – 0 – ? 00:00:00 rcu_bh 1 S 0 12 2 0 -40 – – 0 – ? 00:00:08 migration/0 1 S 0 14 2 0 80 0 – 0 – ? 00:00:00 cpuhp/0 5 S 0 15 2 0 80 0 – 0 – ? 00:00:00 cpuhp/1 哪个 PID 的优先级更高?

PID 12的优先级更高,因为

ps

显示的优先级默认范围是 -40 到 99,数值越小优先级越高,PID 12的 PRI 为 -40,小于其他 PID 的 PRI 值。

© 版权声明

相关文章

暂无评论

none
暂无评论...