h3c路由器高级限速

H3C路由器(H3C MSR50-40),支持标准限速、高级限速。

最近,有个高级限速的需求,根据时间段限速,网络工程师搞了1天,没搞定;

我仔细看了看,发现时间段的定义是inactive状态的:

另外,display time-range all    也显示inactive 的

原因: 路由器时间不对,设置的限速时间段是上班时间,然而,路由器时间错了8小时多

 

另外一个问题:

当对限速不太熟悉时,通过界面来配置是比较简单的,但是,特殊的需求未必能在界面上配置的出来

criu 热迁移进程示例

Dump a process

To dump a process, run:

where,
-D : directory to save image files
-t : PID of process to dump

Convert criu images to core dump

Continuing with the examples above where we dumped the process with PID 1234, we can generate the core dump with the crit utility that comes with criu:

where,
-i : input directory with criu images
-o : output directory for the core dump

To find the generate core dump file:

Check the information with readelf:

Start debugging with GDB:

Resume the process

To resume a process from dump files:

where,
-d : detach criu from the process after resume

 

 

测试:

脚本 a.php

启动:

dump:

restore:

截屏:

参考:

Dump, debug, resume process with criu

criu 编译安装

由于yum源中的criu版本是1.6.1 ,而最新版已经是2.x了,所以,学习一下编译安装

编译很简单,主要是依赖: https://criu.org/Installation#Dependencies

  • protobuf-c-compiler
  • libnet-devel
  • protobuf-python
  • protobuf-devel
  • protobuf-c-devel
  • libcap-devel
  • libnl3-devel
  • libaio-devel

yum 安装:

使用过程中,可能用到的python类库:

PHP 中执行命令的几种方式比较

system/exec 函数:

这两个函数会利用/bin/sh 指定的shell来执行指定的命令,所以,指定的命令实际上不仅可以包含可以执行的命令和参数,还可以是对应shell的内置命令以及shell支持的控制结构。

缺点: 无法区分标准输出与标准错误

注意: 这两个函数执行的外部命令默认继承了php进程的标准输入、标准输出和标准错误,你可以通过返回值得到进程的标准输出,但是标准错误却悄悄地流进了php进程定义的标准错误输出里面去了;更加隐晦的是,对于php-fpm进程来讲,该外部进程也默认listen(继承来的)了php-fpm监听的端口,但是肯定不会去处理php-fpm请求,一般情况下不会有问题,特殊情况下回让你莫名其妙

pcntl_exec 函数

该函数会取代当前执行的进程空间,而且是不会再回到当前进程空间,可能你很少会用到该函数,但是,当你确实需要该函数的时候,却又是没有其他函数可以替代的,如:

echo 2 是不可能被执行到的

注意: pcntl_exec不同于其他函数,并不会使用shell来执行指定的命令,而且指定的命令需要是要执行的可执行文件的全路径

proc_open 函数

这个是我最喜欢的函数:

  1. 可以通过proc_close得到外部进程的返回值
  2. 可以定义外部进程的标准输入、标准输出、标准错误,并且可以区分外部进程的标准输出和标准错误
  3. 一定程度上还可以实现并行执行多个外部命令

 

proc_open 示例:

 

Linux之进程会计

什么是进程会计?

进程会计记录了什么时间启动了什么进程,进程的属主是什么,进程的结束时间等信息。

linux默认并没有开启进程会计,那么如何开启进程会计呢?

centos中提供了一个叫做psacct的软件包,其中包含accton 、lastcomm、ac、sa、dump-acct、dump-utmp几个命令,可以帮助我们开启、关闭、查看进程会计信息,简要介绍如下:

accton   on|off|file

打开、关闭进程会计,也可以直接accton file来指定进程会计信息的记录位置,同时开启进程会计;注意:

  1. 进程会计信息的默认存储位置: /var/account/pacct
  2. 进程会计信息存储文件需要预先手动创建(touch一个就行)

实现原理:

linux提供了一个acct系统调用,用来通知内核信息进程会计:

accton on 等同于: acct(“/var/account/pacct”)

accton off等同于: acct(NULL)
(注意:有的版本可能不能accton off,而是不带任何参数就意味着off)

 

lastcomm: 查看进程会计信息

 

sa:统计进程会计信息

dump-utmp