Linux 查看端口占用情况可以使用 lsof 和 netstat 命令。
lsof(list open files)是一个列出当前系统打开文件的工具。
lsof 查看端口占用语法格式:
lsof -i:端口号
查看服务器 8000 端口的占用情况:
# lsof -i:8000
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nodejs 26993 root 10u IPv4 37999514 0t0 TCP *:8000 (LISTEN)
可以看到 8000 端口已经被轻 nodejs 服务占用。
lsof -i 需要 root 用户的权限来执行,如下图:

更多 lsof 的命令如下:
lsof -i:8080:查看8080端口占用
lsof abc.txt:显示开启文件abc.txt的进程
lsof -c abc:显示abc进程现在打开的文件
lsof -c -p 1234:列出进程号为1234的进程所打开的文件
lsof -g gid:显示归属gid的进程情况
lsof d /usr/local/:显示目录下被进程开启的文件
lsof D /usr/local/:同上,但是会搜索目录下的目录,时间较长
lsof -d 4:显示使用fd为4的进程
lsof -i -U:显示所有打开的端口和UNIX domain文件
netstat -tunlp 用于显示 tcp,udp 的端口和进程等相关情况。
netstat 查看端口占用语法格式:
netstat -tunlp | grep 端口号
-t (tcp) 仅显示tcp相关选项
-u (udp)仅显示udp相关选项
-n 拒绝显示别名,能显示数字的全部转化为数字
-l 仅列出在Listen(监听)的服务状态
-p 显示建立相关链接的程序名
例如查看 8000 端口的情况,使用以下命令:
# netstat -tunlp | grep 8000
tcp 0 0 0.0.0.0:8000 0.0.0.0:* LISTEN 26993/nodejs
更多命令:
netstat -ntlp //查看当前所有tcp端口
netstat -ntulp | grep 80 //查看所有80端口使用情况
netstat -ntulp | grep 3306 //查看所有3306端口使用情况
在查到端口占用的进程后,如果你要杀掉对应的进程可以使用 kill 命令:
kill -9 PID
如上实例,我们看到 8000 端口对应的 PID 为 26993,使用以下命令杀死进程:
kill -9 26993
1.光通路诊断面板


提醒按钮:该按钮将前面板上的系统错误指示灯置为提醒方式。在提醒方式下,系统错误指示灯每 2 秒闪烁一次,直至问题得到纠正、系统重新启动或发生新的问题。通过将系统错误指示灯置为提醒方式,可确认您已知道发生的上一个故障,但暂时不立即采取措施来纠正问题。提醒功能由 IMM 控制。
NMI按钮:按下该按钮以强制微处理器发生不可屏蔽中断。它允许您使服务器出现蓝屏并进行内存转储(仅当由 IBM 服务支持人员指导时,才可使用该按钮)。
检查点代码屏幕:该屏幕提供检查点代码,表明系统在引导块和 POST 期间会在该点停止。检查点代码是由 UEFI 生成的字节值或字值。该屏幕不提供错误代码或建议要更换的组件。
复位按钮:按下该按钮可重置服务器并运行开机自检(POST)。您可能需要使用笔尖或拉直的回形针的末端来按该按钮。复位按钮位于光通路诊断面板的右下角。
over spec指示灯:当此指示灯发亮时,表明对电源的需求超过了指定的电源供应。
log指示灯:当此指示灯发亮时,表明事件日志有报错,应该查看事件日志。
link指示灯:当此指示灯发亮时,网卡出现故障。
ps指示灯:当此指示灯发亮时,表明电源出现故障。
pci指示灯:当此指示灯发亮时,表明某个pci 总线发生错误。
sp指示灯:当此指示灯发亮时,表明流处理器遇到错误(sp的作用就是处理由CPU传输过来的数据,处理后转化为显示器可以辨识的数字信号)
fan:当此指示灯点亮时,表明散热风扇或电源风扇出现故障或运行太慢。风扇发生故障还会导致temp 指示灯发亮。
temp 指示灯:当此指示灯发亮时,表明系统温度超出过高。
mem 指示灯:当此指示灯发亮时,表明发生内存错误。
nmi 指示灯:当此指示灯发亮时,表明出现一个不可屏蔽中断(nmi)。
cnfg指示灯:当此指示灯发亮时,表明BIOS配置错误。
cpu 指示灯:当此指示灯发亮时,表明某个微处理器出现故障。
vrm 指示灯:当此指示灯发亮时,表明微处理器托盘上的某个vrm 出现故障。
dasd 指示灯:当此指示灯发亮时,表明某个热插拔硬盘驱动器出现故障。
raid 指示灯:当此指示灯发亮时,表明阵列卡故障。
brd 指示灯:当此指示灯发亮时,表明某个连接的i/o 扩展单元出现故障。
2.操作员信息面板

电源控制按钮外盖:将此外盖滑动到电源控制按钮上方可防止服务器被意外关闭。
电源控制按钮:按下该按钮可手动开启和关闭服务器。
供电指示灯: 如果该指示灯点亮并且不闪烁,表示服务器已开启;如果该指示灯闪烁,表示服务器已关闭并且仍然连接到交流电源;如果该指示灯熄灭,表示没有交流电源或者电源或指示灯本身出现故障。注:如果该指示灯熄灭,并不表示服务器中没有电源。该指示灯可能已烧毁。要切断服务器的所有电源,必须从电源插座中拔出电源线。
以太网图标指示灯:此指示灯可点亮以太网图标。
以太网活动指示灯:如果这些指示灯闪烁,表示在它们指示的端口处存在服务器和网络之间的活动。
定位器指示灯:使用该指示灯可以用肉眼在众多服务器中找到目标服务器。可以使用IBM Director 远程点亮该指示灯,也可以按下定位器按钮手动点亮该指示灯。在启动期间该指示灯也会点亮。在多节点配置中,如果该指示灯闪烁,表示与它对应的服务器是主节点。如果该指示灯持续点亮,表示与它对应的服务器是辅节点。
定位器按钮:按此按钮可以手动打开或关闭定位器指示灯。 在多节点配置中,按该按钮可以打开或关闭配置中所有节点的定位器指示灯。
信息指示灯:如果该指示灯点亮,表示服务器中有某个方面未达到最佳状态,同时光通路诊断会亮起另外一个指示灯,以帮助找出问题。只有在解决了此问题或按了提醒按钮后,该指示灯和光通路诊断面板上的指示灯才会熄灭。
系统错误指示灯:如果该指示灯点亮,表示发生了系统错误。光通路诊断面板上的一个指示灯也会点亮,以帮助找出此错误。
1.服务器启动的过程中按“F10”intelligent provisioning进入智能配置

2.在配置界面点击选择Smart Array P420i,右边执行动作选择Configure

3.选择Unassigned Drives未分配的驱动器,选择要制作的硬盘,然后点击创建。

4.此处以制作raid0为例。如下图,点击创建

5.点击YES,确定继续。

6.右上角点击刷新。

7.可以看到多了一个logical Devices。

1.这不是一个专业的测试工具,不过如果对于测试结果的要求不是很苛刻的话,平时可以使用来对磁盘的读写速度作一个简单的评估.另外由于这是一个免费软件,基本上linux系统上都有安装。
2.DD命令常用参数有
bs=n,block size,每次读取 n bytes 写入,可与 count 联用;
ibs=n,一次读入 bytes 个字节 (default is 512);
obs=n,一次性写 n bytes 个字节 (default is 512);
bs 可以同时设置上边两个参数;
cbs=n,一次转换 n 个 bytes,即转换缓冲区大小。;
count=n, bs 操作的次数,仅拷贝 n 个块,如 dvd: bs=1M count=4430;
skip=n,指 if 后面的原文件跳过 n bytes 再开始读取;
seek=n,指 of 后面的目标文件跳过 n bytes 再开始写入;
3.首先了解两个特殊设备
/dev/null 伪设备,回收站.写该文件不会产生IO
/dev/zero 伪设备,会产生空字符流,对它不会产生IO
1.测试方法:
a.测试磁盘的IO写速度
time dd if=/dev/zero of=test.dbf bs=8k count=300000
如果要测试实际速度 还要在末尾加上 oflag=direct测到的才是真实的IO速度

b.测试磁盘的IO读速度
dd if=test.dbf bs=8k count=300000 of=/dev/null
表示 每次写入/读取8k的数据,执行300000次

c.测试IO同时读和写的速度
time dd if=/dev/sda1 of=test.dbf bs=8k count=300000
同时测试读写速度时生成一个 test.dbf文件

所有测试的数据量较小,仅作为参考。
docker 客户端非常简单 ,我们可以直接输入 docker 命令来查看到 Docker 客户端的所有命令选项。
runoob@runoob:~# docker

可以通过命令 docker command --help 更深入的了解指定的 Docker 命令使用方法。
例如我们要查看 docker stats 指令的具体使用方法:
runoob@runoob:~# docker stats --help

容器使用
获取镜像
如果我们本地没有 ubuntu 镜像,我们可以使用 docker pull 命令来载入 ubuntu 镜像:
$ docker pull ubuntu
启动容器
以下命令使用 ubuntu 镜像启动一个容器,参数为以命令行模式进入该容器:
$ docker run -it ubuntu /bin/bash

参数说明:
-i: 交互式操作。
-t: 终端。
ubuntu: ubuntu 镜像。
/bin/bash:放在镜像名后的是命令,这里我们希望有个交互式 Shell,因此用的是 /bin/bash。
要退出终端,直接输入 exit:
root@ed09e4490c57:/# exit

启动已停止运行的容器
查看所有的容器命令如下:
$ docker ps -a
点击图片查看大图:
使用 docker start 启动一个已停止的容器:
$ docker start b750bbbcfd88

后台运行
在大部分的场景下,我们希望 docker 的服务是在后台运行的,我们可以过 -d 指定容器的运行模式。
$ docker run -itd --name ubuntu-test ubuntu /bin/bash
点击图片查看大图:
![]()
注:加了 -d 参数默认不会进入容器,想要进入容器需要使用指令 docker exec(下面会介绍到)。
停止一个容器
停止容器的命令如下:
$ docker stop <容器 ID>

停止的容器可以通过 docker restart 重启:
$ docker restart <容器 ID>

进入容器
在使用 -d 参数时,容器启动后会进入后台。此时想要进入容器,可以通过以下指令进入:
docker attach
docker exec:推荐大家使用 docker exec 命令,因为此退出容器终端,不会导致容器的停止。
attach 命令
下面演示了使用 docker attach 命令。
$ docker attach 1e560fca3906
注意: 如果从这个容器退出,会导致容器的停止。
exec 命令
下面演示了使用 docker exec 命令。
docker exec -it 243c32535da7 /bin/bash
注意: 如果从这个容器退出,不会导致容器的停止,这就是为什么推荐大家使用 docker exec 的原因。
更多参数说明请使用 docker exec --help 命令查看。
导出和导入容器
导出容器
如果要导出本地某个容器,可以使用 docker export 命令。
$ docker export 1e560fca3906 > ubuntu.tar
导出容器 1e560fca3906 快照到本地文件 ubuntu.tar。
这样将导出容器快照到本地文件。
导入容器快照
可以使用 docker import 从容器快照文件中再导入为镜像,以下实例将快照文件 ubuntu.tar 导入到镜像 test/ubuntu:v1:
$ cat docker/ubuntu.tar | docker import - test/ubuntu:v1
此外,也可以通过指定 URL 或者某个目录来导入,例如:
$ docker import http://example.com/exampleimage.tgz example/imagerepo
删除容器
删除容器使用 docker rm 命令:
$ docker rm -f 1e560fca3906

下面的命令可以清理掉所有处于终止状态的容器。
$ docker container prune
运行一个 web 应用
前面我们运行的容器并没有一些什么特别的用处。
接下来让我们尝试使用 docker 构建一个 web 应用程序。
我们将在docker容器中运行一个 Python Flask 应用来运行一个web应用。
runoob@runoob:~# docker pull training/webapp # 载入镜像
runoob@runoob:~# docker run -d -P training/webapp python app.py
![]()
参数说明:
-d:让容器在后台运行。
-P:将容器内部使用的网络端口映射到我们使用的主机上。
查看 WEB 应用容器
使用 docker ps 来查看我们正在运行的容器:
runoob@runoob:~# docker ps
CONTAINER ID IMAGE COMMAND ... PORTS
d3d5e39ed9d3 training/webapp "python app.py" ... 0.0.0.0:32769->5000/tcp
这里多了端口信息。
PORTS0.0.0.0:32769->5000/tcp
Docker 开放了 5000 端口(默认 Python Flask 端口)映射到主机端口 32769 上。
这时我们可以通过浏览器访问WEB应用

我们也可以通过 -p 参数来设置不一样的端口:
runoob@runoob:~$ docker run -d -p 5000:5000 training/webapp python app.py
docker ps查看正在运行的容器
runoob@runoob:~# docker ps
CONTAINER ID IMAGE PORTS NAMES
bf08b7f2cd89 training/webapp ... 0.0.0.0:5000->5000/tcp wizardly_chandrasekhar
d3d5e39ed9d3 training/webapp ... 0.0.0.0:32769->5000/tcp xenodochial_hoov
容器内部的 5000 端口映射到我们本地主机的 5000 端口上。
网络端口的快捷方式
通过 docker ps 命令可以查看到容器的端口映射,docker 还提供了另一个快捷方式 docker port,使用 docker port 可以查看指定 (ID 或者名字)容器的某个确定端口映射到宿主机的端口号。
上面我们创建的 web 应用容器 ID 为 bf08b7f2cd89 名字为 wizardly_chandrasekhar。
我可以使用 docker port bf08b7f2cd89 或 docker port wizardly_chandrasekhar 来查看容器端口的映射情况。
runoob@runoob:~$ docker port bf08b7f2cd895000/tcp -> 0.0.0.0:5000
runoob@runoob:~$ docker port wizardly_chandrasekhar5000/tcp -> 0.0.0.0:5000
查看 WEB 应用程序日志
docker logs [ID或者名字] 可以查看容器内部的标准输出。
runoob@runoob:~$ docker logs -f bf08b7f2cd89
* Running on http://0.0.0.0:5000/ (Press CTRL C to quit)192.168.239.1 - - [09/May/2016 16:30:37] "GET / HTTP/1.1" 200 -192.168.239.1 - - [09/May/2016 16:30:37] "GET /favicon.ico HTTP/1.1" 404 -
-f: 让 docker logs 像使用 tail -f 一样来输出容器内部的标准输出。
从上面,我们可以看到应用程序使用的是 5000 端口并且能够查看到应用程序的访问日志。
查看WEB应用程序容器的进程
我们还可以使用 docker top 来查看容器内部运行的进程
runoob@runoob:~$ docker top wizardly_chandrasekhar
UID PID PPID ... TIME CMD
root 23245 23228 ... 00:00:00 python app.py
检查 WEB 应用程序
使用 docker inspect 来查看 Docker 的底层信息。它会返回一个 JSON 文件记录着 Docker 容器的配置和状态信息。
runoob@runoob:~$ docker inspect wizardly_chandrasekhar[
{
"Id": "bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85",
"Created": "2018-09-17T01:41:26.174228707Z",
"Path": "python",
"Args": [
"app.py"
],
"State": {
"Status": "running",
"Running": true,
"Paused": false,
"Restarting": false,
"OOMKilled": false,
"Dead": false,
"Pid": 23245,
"ExitCode": 0,
"Error": "",
"StartedAt": "2018-09-17T01:41:26.494185806Z",
"FinishedAt": "0001-01-01T00:00:00Z"
},......
停止 WEB 应用容器
runoob@runoob:~$ docker stop wizardly_chandrasekhar
wizardly_chandrasekhar
重启WEB应用容器
已经停止的容器,我们可以使用命令 docker start 来启动。
runoob@runoob:~$ docker start wizardly_chandrasekhar
wizardly_chandrasekhar
docker ps -l 查询最后一次创建的容器:
# docker ps -l
CONTAINER ID IMAGE PORTS NAMES
bf08b7f2cd89 training/webapp ... 0.0.0.0:5000->5000/tcp wizardly_chandrasekhar
正在运行的容器,我们可以使用 docker restart 命令来重启。
移除WEB应用容器
我们可以使用 docker rm 命令来删除不需要的容器
runoob@runoob:~$ docker rm wizardly_chandrasekhar
wizardly_chandrasekhar
删除容器时,容器必须是停止状态,否则会报如下错误
runoob@runoob:~$ docker rm wizardly_chandrasekharError response from daemon: You cannot remove a running container bf08b7f2cd897b5964943134aa6d373e355c286db9b9885b1f60b6e8f82b2b85. Stop the container before attempting removal or force remove
1.如果硬盘出现告警,根据不同告警状态可以作初始判断和定位。硬盘指示灯状态定义参考如下图。


*参考文档:HP ProLiant DL380 G6 Server Maintenance and Service Guide--June 2009 (Fourth Edition)
1.在开机到下图界面时按F8,进入ipmi配置界面。

2.如下图,在菜单中找到 Network—NIC and TCP/IP 。

3.进入这个界面,在IP Address输入ipmi的地址例如192.168.169.81
Subnet Mask输入掩码:255.255.255.0
Gateway IP Address:192.168.169.1

4.IPMI地址配置完成之后,F10确定退出。

1.在开机到下图界面时按F8,进入ipmi配置界面。

2.如下图,在菜单中找到User/选择Remove可以删除目前的用户

3.进入这个界面,选择用户,按回车即可删除这个用户,ESC取消

4.User中选择Add添加用户。

5.输入添加的用户名,登录的账号和密码,第二次重复校验密码。按F10保存退出。

6.保存完毕后,打开浏览器,输入ipmi地址,用新添加的用户测试能否正常登录。
