plinker/system

系统组件,可让您访问服务器信息。

v3.2.9 2018-07-16 20:55 UTC

README

一个系统组件,可让您访问服务器信息。

安装

使用以下命令通过 composer 安装此包

$ composer require plinker/system

客户端

创建客户端实例如下

<?php
require 'vendor/autoload.php';

/**
 * Initialize plinker client.
 *
 * @param string $server - URL to server listener.
 * @param string $config - server secret, and/or a additional component data
 */
$client = new \Plinker\Core\Client(
    'http://example.com/server.php',
    [
        'secret' => 'a secret password'
    ]
);

// or using global function
$client = plinker_client('http://example.com/server.php', 'a secret password');

方法

设置完成后,您可以通过其命名空间调用类及其方法。

枚举

枚举方法用于在单个调用中调用多个方法,以减少 RPC 请求。

此方法可用于调用单个方法,或带有参数的多个方法。

调用

$client->system->enumerate([
    'arch',
    'hostname',
    'disks' => ['/'],
    'ping' => ['https://google.com'],
]);

// or single method
$client->system->enumerate('disks', ['/']);

响应

Array
(
    [arch] => x86_64
    [hostname] => plinker
    [disks] => Array
        (
            [0] => Array
                (
                    [Filesystem] => /dev/sdb1
                    [Type] => ext4
                    [Size] => 95G
                    [Used] => 85G
                    [Avail] => 5.2G
                    [Used (%)] => 95%
                    [Mounted] => /
                )

        )

    [ping] => -1
)

架构

返回系统架构。

调用

$client->system->arch();

响应

x86_64

清除交换空间

清除交换空间,需要 root 权限,因此应与任务一起使用

调用

$client->system->clear_swap();

响应


CPU 信息

返回关于 CPU 的信息。

调用

$client->system->cpu_info();

响应

Array
(
    [Architecture] => x86_64
    [CPU op-mode(s)] => 32-bit, 64-bit
    [Byte Order] => Little Endian
    [CPU(s)] => 2
    [On-line CPU(s) list] => 0,1
    [Thread(s) per core] => 1
    [Core(s) per socket] => 2
    [Socket(s)] => 1
    [NUMA node(s)] => 1
    [Vendor ID] => AuthenticAMD
    [CPU family] => 16
    [Model] => 4
    [Model name] => AMD Phenom(tm) II X2 555 Processor
    [Stepping] => 3
    [CPU MHz] => 3200.000
    [CPU max MHz] => 3200.0000
    [CPU min MHz] => 800.0000
    [BogoMIPS] => 6429.27
    [Virtualization] => AMD-V
    [L1d cache] => 64K
    [L1i cache] => 64K
    [L2 cache] => 512K
    [L3 cache] => 6144K
    [NUMA node0 CPU(s)] => 0,1
    [Flags] => fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ht syscall nx mmxext fxsr_opt pdpe1gb rdtscp lm 3dnowext 3dnow constant_tsc rep_good nopl nonstop_tsc cpuid extd_apicid pni monitor cx16 popcnt lahf_lm cmp_legacy svm extapic cr8_legacy abm sse4a misalignsse 3dnowprefetch osvw ibs skinit wdt hw_pstate retpoline retpoline_amd rsb_ctxsw vmmcall npt lbrv svm_lock nrip_save
)

磁盘空间

返回剩余磁盘空间百分比。

调用

$client->system->disk_space();

响应

71

磁盘

返回挂载的磁盘。

调用

$client->system->disks();

// dont parse
$client->system->disks(false);

响应

// Parsed
Array
(
    [0] => Array
        (
            [Filesystem] => /dev/sdb1
            [Type] => ext4
            [Size] => 95G
            [Used] => 85G
            [Avail] => 5.2G
            [Used (%)] => 95%
            [Mounted] => /
        )

)

// Unparsed
Filesystem     Type  Size  Used Avail Use% Mounted on
/dev/sdb1      ext4   95G   85G  5.2G  95% /

发行版

获取系统发行版名称。

调用

$client->system->distro();

响应

UBUNTU

清除缓存

清除内存缓存,需要 root 权限,因此应与任务一起使用

调用

$client->system->drop_cache();

响应

true

主机名

获取系统主机名。

调用

$client->system->hostname();

响应

plinker

负载

获取系统的平均负载。

调用

$client->system->load();

响应

Array
(
    [1m] => 1.71
    [5m] => 1.21
    [15m] => 1.14
    [curr_proc] => 3
    [totl_proc] => 1437
    [last_pid] => 3272
)

登录

返回系统登录数组。

调用

$client->system->logins();

响应

Array
(
    [0] => Array
        (
            [User] => root
            [Terminal] => pts/1tmux(2972).%0
            [Date] => Fri May 11 08:25
            [Disconnected] => 11:01
            [Duration] => 02:35
        )

    [1] => Array
        (
            [User] => root
            [Terminal] => pts/1tmux(542).%0
            [Date] => Thu May 10 15:01
            [Disconnected] => 08:11
            [Duration] => 17:09
        )

    [2] => Array
        (
            [User] => Reboot
            [Terminal] => 
            [Date] => 
            [Disconnected] => 
            [Duration] => 
        )

    [3] => Array
        (
            [User] => root
            [Terminal] => pts/1tmux(5310).%0
            [Date] => Thu May 10 07:42
            [Disconnected] => crash
            [Duration] => 07:19
        )
    )
    ... snip
)

机器 ID

返回系统的 machine-id,如果没有则生成一个。

调用

$client->system->machine_id();

响应

82c887bcf6da43e5952fad9fd6ed15b6

内存统计

返回内存统计数组,包括已使用、已缓存和空闲的百分比值。

调用

$client->system->memory_stats();

响应

Array
(
    [used] => 15
    [cache] => 0
    [free] => 85
)

内存总量

获取内存总量(以 KB 为单位)。

调用

$client->system->memory_total();

响应

16167888

netstat

获取网络连接。

调用

$client->system->netstat();

响应

Array
(
    [0] => Array
        (
            [Proto] => tcp
            [Recv-Q] => 0
            [Send-Q] => 0
            [Local Address] => 0.0.0.0:80
            [Foreign Address] => 0.0.0.0:*
            [State] => LISTEN
            [PID/Program] => 1169/nginx:
            [Process Name] => worker
        )
    ... snip
)

Ping

Ping 主机名并返回以毫秒为单位的连接时间。

调用

$client->system->ping('google.com');

响应

31.18

PStree

返回系统进程树。

调用

$client->system->pstree();

响应

systemd-+-Brackets-+-Brackets---Brackets---Brackets-+-{Chrome_ChildIOT}
        |          |                                |-2*[{CompositorTileW}]
        |          |                                |-{Compositor}
        |          |                                |-{HTMLParserThrea}
        |          |                                |-{Renderer::FILE}
        |          |                                |-{WorkerPool/203}
        |          |                                |-{WorkerPool/210}
        |          |                                |-{WorkerPool/212}
        |          |                                `-{WorkerPool/213}
        |          |-Brackets-node-+-5*[{Brackets-node}]
        |          |               `-4*[{V8 WorkerThread}]
        |          |-{AudioThread}
        |          |-2*[{Brackets}]
        |          |-3*[{BrowserBlocking}]
        |          |-{CachePoolWorker}
        |          |-{Chrome_CacheThr}
        |          |-{Chrome_DBThread}
        |          |-{Chrome_DevTools}
        |          |-{Chrome_FileThre}
        |          |-{Chrome_FileUser}
        |          |-{Chrome_IOThread}
        |          |-{Chrome_ProcessL}
        |          |-{CompositorTileW}
        |          |-{IndexedDB}
        |          |-{NetworkChangeNo}
        |          |-{WorkerPool/1747}
        |          |-{gdbus}
        |          |-{gmain}
        |          |-{inotify_reader}
        |          |-{sandbox_ipc_thr}
        |          `-{threaded-ml}
        |-LXDui-0.0.9-x86---{LXDui-0.0.9-x86}
... snip

重启

重启服务器,需要 root 权限,因此应与任务一起使用

调用

$client->system->reboot();

响应

true

CPU 使用率

返回当前 CPU 使用率(百分比值)。

调用

$client->system->cpu_usage();

响应

23

系统更新

检查系统是否有更新。

调用

$client->system->system_updates();

响应

1=has updates, 0=no updates, -1=unknown

Top

获取以数组形式表示的 top 输出。

调用

$client->system->top();

响应

Array
(
    [0] => Array
        (
            [PID] => 27475
            [USER] => user
            [PR] => 20
            [NI] => 0
            [VIRT] => 1785692
            [RES] => 671316
            [SHR] => 140004
            [S] => S
            [%CPU] => 43.8
            [%MEM] => 4.2
            [TIME+] => 29:44.62
            [COMMAND] => chrome
        )
    ... snip
)

总磁盘空间

获取总磁盘空间(以字节为单位)。

调用

$client->system->total_disk_space();

响应

101369536512

Uname

获取系统名称/内核版本。

调用

$client->system->uname();

响应

Linux 4.13.0-41-generic

Uptime

获取系统运行时间字符串。

调用

$client->system->uptime();

响应

up 1 day, 17 hours, 31 minutes

测试

为此组件没有设置测试。

贡献

有关详细信息,请参阅 CONTRIBUTING

安全

如果您发现任何与安全相关的问题,请通过 https://cherone.co.uk 联系我,而不是使用问题跟踪器。

致谢

开发鼓励

如果您使用此项目并从中获利或希望表达您的感激之情,请随时通过 https://www.paypal.me/lcherone 捐赠,谢谢。

赞助商

让您的公司或姓名在文档中以及每个 github 存储库中列出,请联系我了解更多详情 https://cherone.co.uk

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件

查看组织页面以获取更多组件。