关于cmdline

/proc/$pid/cmdline 记录的是进程的显示名,默认是命令行中的信息,但是也可以修改,比如,php中使用cli_set_process_title()可以修改cmdline;

需要注意的是:

  1. 如果原本的 cmdline 比较长,而修改后的比较短,则cmdline保留原来的长度,多余的部分被修改为’\0’,所以,获取的时候需要处理一下,bash中可以使用strings,php中可以使用trim
  2. 如果原本的cmdline比较短,而修改后的比较长,则会被扩展,而不是截断

 

cmdline vs comm

/proc/$pid/comm 有16字节的限制

PowerShell 入门

PowerShell 是一个可以操作对象的高级shell,是一个支持模块的shell。

如何编写模块?参考:http://www.jb51.net/article/56229.htm 基本上就是在模块目录下写一个包含有一些函数的文件,一个这种文件就是一个模块,然后配之以一个同名(不同扩展名)的manifest文件

 

两种注释方式:

段注释:

 

行注释:

 

实例:

web请求:

方法1:http://blog.csdn.net/qq_34352010/article/details/53572234

方法2:

 

文本处理:

http://www.pstips.net/processing-text-1.html

http://www.pstips.net/processing-text-2.html

http://www.pstips.net/processing-text-3.html

解析url:http://www.pstips.net/processing-text-4.html

获取所有的IPv4地址:

获取ifconfig的ipv4地址:

注意: 正则表达式的正确使用使得事情变得更加利索

 

PowerShell 显示气球提示框: http://www.pstips.net/powershell-displaying-balloon-tip.html

多个对象之间用逗号分隔:

单引号与双引号:

单引号中的单引号,双引号中的双引号:

单引号中连续的两个单引号解释为1个单引号,双引号中连续的两个双引号解释为1个双引号

转移字符

一般都是用反斜线转义,但是powershell中使用反引号来转义,如:

 

命令结果赋值给变量的写法:

使用 $( cmd ) 的写法更舒服一些,更加接近于bash的写法

 

ISE比命令行写起来会舒服一些,不但有提示,还方便查帮助

PowerShell是已模块的形式添加功能的

选中命令时,下面就会出现命令的参数信息,按住ctrl点击命令时,参数信息界面就会隐藏

 

Win7升级Powershell 2.0到3.0

参考: https://www.microsoft.com/en-us/download/details.aspx?id=34595

下载一个十几MB的msu文件,执行安装,重启就行

注意:

如果提示您的系统不支持该更新,则可以尝试更新一下系统,然后在安装,本人遇到问题后,安装了几十个更新之后就可以安装该安装包了;

或者先安装 dotNetFx45_Full_setup.exe  ,在安装上面的下载也可以

 

Virtualbox 磁盘整理

Virtualbox有两个很不爽的地方:

  1. 一旦占用了内存,将不会再释放;多个类似的虚拟机不能内存复用
  2. 磁盘文件很大,且每个虚拟机的磁盘都是一个完整的copy;一旦磁盘文件被撑大,就算内部文件已经被删除,磁盘文件也不会收缩

理论上可以压缩虚拟机的磁盘文件的,基本步骤为: (参考: http://www.cnblogs.com/findumars/p/3897818.html

  1. 整理虚拟机磁盘
  2. 压缩虚拟机磁盘

磁盘工具:

windows: 下载: Sysinternals Suite 执行

该过程比较漫长

磁盘压缩方法:

30G 的磁盘文件可以压缩到22G

关于vagrant

使用vagrant启动的虚拟机总是有一块特殊的网卡,ip地址为10.0.2.15, 这是个什么东东?

为了便于和虚拟机通信以及虚拟机自动上网等原因,vagrant自动为虚拟机创建了一个nat类型的网卡,所有虚拟机上该网卡的ip地址是一样的,所以只存在这一块儿网卡的时候,虚拟机之间没法通信。

vagrant 宿主机和虚拟机之间通信一般采用ssh或winrm,当将本机的2205端口nat到某虚拟机的22端口时,2205端口实际上是有虚拟机进程virtualbox来listen的,即使将上述的网卡down掉,也是能正常建立tcp连接的,这大概和virtualbox虚拟网络的实现方式有关

需要打包的虚拟机只需要保留一个网卡,nat方式的,并且网络连接上设置“自动获取ip地址”

winrm

winrm 协议报文:

 

当windows上存在了一个“未识别的网络”时(该网络被设置为了“公用”),于是winrm就不能使用,错误如下:

表现为: winrm请求虽然已经连接上了,但是不响应client发送的请求报文

理论上来讲,应该可以设置winrm listen的端口,不去listen那个“公用”的网络连接就可以了

 

参考资料: