Linux 命令 —— lsof 查看打开的文件信息

lsof (list open files)是一个列出当前系统打开文件的工具。拥有查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP),找回/恢复删除的文件等功能。

在 Linux 环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应用程序打开文件的描述符列表提供了大量关于这个应用程序本身的信息,因此通过 lsof 工具能够查看这个列表对系统监测以及排错将是很有帮助的。

因为 lsof 命令需要访问核心内存和各种文件,所以需要 root 用户执行。

命令格式

1
lsof [参数] [文件]

sar —— Linux 上最为全面的系统性能分析工具之一

sar(System Activity Reporter 系统活动情况报告)是目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘 I/O、CPU 效率、内存使用状况、进程活动及 IPC 有关的活动等。

我们可以使用sar命令来获得整个系统性能的报告。这有助于我们定位系统性能的瓶颈,并且有助于我们找出这些烦人的性能问题的解决方法。

Linux 内核维护着一些内部计数器,这些计数器包含了所有的请求及其完成时间和 I/O 块数等信息,sar命令从所有的这些信息中计算出请求的利用率和比例,以便找出瓶颈所在。

sar命令主要的用途是生成某段时间内所有活动的报告,因此必需确保sar命令在适当的时间进行数据采集(而不是在午餐时间或者周末)

sysstat——系统性能监控神器

sysstat是一个软件包,包含监测系统性能及效率的一组工具,这些工具对于我们收集系统性能数据,比如:CPU 使用率、硬盘和网络吞吐数据,这些数据的收集和分析,有利于我们判断系统是否正常运行,是提高系统运行效率、安全运行服务器的得力助手。

官方网站: http://sebastien.godard.pagesperso-orange.fr

包含的工具

  • iostat

    输出CPU的统计信息和所有I/O设备的输入输出(I/O)统计信息

  • mpstat

    关于CPU的详细信息(单独输出或者分组输出)

PHP 实现斐波那契数列的三种方式

斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”。

数列: 0, 1, 1, 2, 3, 5, 8, 13, … 规律: 从第三个数开始,后一个数是前两个数之和 公式: F(0) = 0,F(1) = 1, F(n) = F(n-1) + F(n-2)(n>2,n∈N*)

PHP 实现

递归

> 时间复杂度: `O(2^n)`
1
2
3
4
5
6
7
function fib($n) {
    if ($n == 0 || $n == 1) {
        return $n;
    }

    return fib($n - 1) + fib($n - 2);
}