检查进程环境变量

使用 env 命令可以查看系统当前的环境变量。有时候我们希望能够查看一个处在运行状态的进程的环境变量。

在 Linux 系统下面,进程的环境变量信息可以通过 /proc/<pid>/environ 文件查看:

1
$ cat /proc/<pid>/environ

该命令的输出格式不太容易读,所有的信息挤在了同一行。使用 tr 命令将空字符替换为换行符,将会使所有的环境变量按行显示:

1
$ cat /proc/<pid>/environ | tr \\0 \\n

在 Mac OSX 系统下面,可以使用下面的命令,其中的 -E 选项表示打印进程的环境变量:

1
$ ps -p <pid> -wwwE

不过上面提到的方法并没有覆盖到所有的情况。进程的环境变量来自于两部分:进程初始化时由加载器载入的环境变量(来自于系统、父进程或者 exec 系统调用的参数);和进程执行过程中由 setenv 函数动态设置或修改的环境变量。前面的命令仅会显示第一部分的环境变量。

进程的环境变量保存在全局变量 char **__environ 中。要想显示由进程动态修改的环境变量,首先必须有这个进程的符号表,然后通过 ptrace 系统调用(比如使用 gdb)来查看。

Mac下,Beyond Compare软件破解

一、原理
Beyond Compare 每次启动后会先检查注册信息,试用期到期后就不能继续使用。解决方法是在启动前,先删除注册信息,然后再启动,这样就可以永久免费试用了。

二、下载
首先下载 Beyond Compare 最新版本,链接如下:https://www.scootersoftware.com/download.php

三、安装
下载完成后,直接安装。

四、创建 BCompare 文件

  1. 进入 Mac 应用程序目录下,找到刚刚安装好的 Beyond Compare,路径如下:/Applications/Beyond Compare.app/Contents/MacOS
  2. 修改启动程序文件 BCompare 为 BCompare.real
  3. 在当前目录下新建一个文件 BCompare,文件内容如下:
1
2
3
#!/bin/bash
rm "/Users/$(whoami)/Library/Application Support/Beyond Compare/registry.dat"
"`dirname "$0"`"/BCompare.real $@
  1. 保存 BCompare 文件。
  2. 修改文件的权限:
1
chmod a+x /Applications/Beyond\ Compare.app/Contents/MacOS/BCompare

以上步骤完成后,再次打开 Beyond Compare 就可以正常使用了。

查看mac共享热点所有链接设备

首先先关闭 WiFi 共享,运行下面的命令,并记录下都有哪些端口,比如 en0, en1, bridge0, fw0 等等:

ifconfig

记录好后,打开共享后再运行上面的命令,观察两次端口的变化。我的情况是多出了 bridge100

运行下面的命令,将 bridge100 换成你的系统对应值:

1
arp -i bridge100 -a

它会显示所连接的设备的 IP 和 MAC 地址,比如我的显示如下:

1
2
3
4
5
$ arp -i bridge100 -a

? (192.168.2.2) at ac:cf:c5:28:f3:e7 on bridge100 ifscope [bridge]

? (192.168.2.3) at 5c:f7:d3:aa:15:aa on bridge100 ifscope [bridge]

上面的结果是两个我的手机。

当然它不会特别及时地更新,比如当断掉一个连接后,系统会过一会儿才会更新,并显示连接设备状况,比如我的:

1
2
3
4
5
$ arp -i bridge100 -a

? (192.168.2.2) at (incomplete) on bridge100 ifscope [bridge]

? (192.168.2.3) at 5c:f7:c3:1a:55:aa on bridge100 ifscope [bridge]

第一个的 MAC 地址没有了,说明它断开了。
这个只是一个能用的例子,无法做到路由器那样的比较实时的反映网络状态。