Linux系统中通过ps命令查看进程状态,可以看到系统启动时间。但如果启动超过一天,它会变成问号。那如何获取这些进程的启动时间呢?
在Linux系统中,时间管理有两个基本概念:xtime和jiffies。
xtime主要给time系函数使用,结构比较简单(include\linux\time.h):
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds, 纳秒,以前的版本是微秒*/
};
tv_sec就是大家平常所说的unix时间戳,在CMOS中维护,关机时由电池维持正常运行。
系统启动时,通过get_cmos_time()取cmos时间赋值。运行时,通过设置系统定时器,每隔一段时间触发一个节拍,他们管这个节拍叫tick。每触发一次tick,就会通过update_wall_time_one_tick()来更新xtime。
而jiffies是内核中的一个全局变量,它的功能看起来很简单:记录从系统启动以来的tick数。但它就是解开我们问题的关键。
在/proc/<pid>/stat中( 源码请参考proc_pid_stat(),文件是fs/proc/array.c ),维护了进程的很多状态信息,其中第22项是进程启动时的jiffies值,通过它可以计算出进程启动时,系统已经开机的时间。把这个时间加上系统启动时间(/proc/stat),就可以得到进程启动时间。
最后得到的脚本如下:
#!/bin/sh
function show_start_time( )
{
pid=$1
JIFFIES=`cat /proc/$pid/stat | cut -d" " -f22`
UPTIME=`grep btime /proc/stat | cut -d" " -f2`
START_SEC=$(( $UPTIME + $JIFFIES / 100 ))
date -d "1970-01-01 UTC $START_SEC seconds"
}
if [ $# > 1 ]
then
for pid in $@; do show_start_time ${#pid};done
fi
while read pid; do show_start_time ${#pid}; done
脚本中100是“用户可见”的tick频率(tick_rate),它的值等于我们熟悉的常量CLOCKS_PER_SEC。为什么要说“用户可见”呢?实际上,新版本的内核tick_rate,已经远高于100了(i386的是1000),但以前很多程序,都依赖于这个数。为了兼容,于是内核又做了一层封装。
这两个命令是查看MySQL状态很常用的两个命令,它们的语法很相似:
SHOW [GLOBAL | SESSION] STATUS [LIKE 'pattern' | WHERE expr]
SHOW [GLOBAL | SESSION] VARIABLES [LIKE 'pattern' | WHERE expr]
作用也很类似,都是用于查看MySQL服务器的状态。
在日常使用中,有时会分不清:什么时候用variables,什么时候用status?查看具体某个状态,应该使用哪条命令?
以前本人都是记住了某些常用的几个值,遇到不熟悉的,就两个都试一次,囧。
今天翻了一下手册,才知道了它们的区别:
SHOW VARIABLES shows the values of MySQL system variables.
SHOW STATUS provides server status information
show variables查看的是mysql系统变量,是MySQL系统运行时的参数,如字符集设置、版本信息、默认参数等,除非手动修改,否则运行时一般不会改变;
而status是MySQL服务器运行统计,如打开的表数量、命令计数、qcache计数等。
了解了这些区别后,查询状态时就可以很快的区分出应该用哪条命令了。
安装syntaxHighlighter后,发现了一个问题:如果插入的代码段中,含有较长的行,超过了代码块Box的长度。这种情况下,预期它是可以换行的,但实际上在googlechome主题下并未换行,导致超出部分的代码不可见。
通过搜索引擎发现,还是有不少人有相同的问题。于是就折腾了一下:
- SyntaxHighlighter 2.0后,已经支持自动换行了,并可以通过wrap-lines的配置来打开或者关闭。于是尝试将wrap-lines设置为true,依旧不能正常换行,未解决问题。
- 尝试换主题,发现默认主题下,换行是可以正常工作的
- 不同主题会影响到显示效果的,主要是CSS。于是开始怀疑是CSS冲突。 用Firebug分析比较两个主题的CSS,逐渐注意到white-space这一选项。
- 在googlechrome主题下,经过计算后的white-space值是pre,而默认主题下,计算结果为normal。
- 再次搜索,在cssmagic的一篇文章中(很清晰明白,推荐阅读),找到以下表格:
-
white-space 属性值一览表
| 属性值 |
空白符 |
换行符 |
自动换行 |
最早出现于 |
normal |
合并 |
忽略 |
允许 |
CSS 1 |
nowrap |
合并 |
忽略 |
不允许 |
CSS 1 |
pre |
保留 |
保留 |
不允许 |
CSS 1 |
pre-wrap |
保留 |
保留 |
允许 |
CSS 2.1 |
pre-line |
合并 |
保留 |
允许 |
CSS 2.1 |
折腾的结论如下:
- 对于定制较高的主题,要注意主题与插件的CSS冲突
- 本文适用的syntaxHighlighter为2.1.364
在godaddy注册过域名的朋友都知道,煮一个米就会免费送一个空间。这个空间很不错:
- 速度快,ping值很理想,打开页面速度很满意(200ms左右)
- 空间大(10G),流量大(3000G),对于本站之流的小博客站,绰绰有余
- 有丰富的PHP/MySQL支持
但缺点很明显:它的顶部有一个巨大的广告,让人无法接受。linux无论动态还是静态页面,都有这个广告。但windows主机的php页面,是没有这个广告的(静态的也有),而我们知道wordpress基于php,因此,对于我等穷人,选它的windows主机来做wordpress站,还是很不错的选择。
- 申请域名和免费开通空间,网上资料很多,就不浪费笔墨了,可以参考openboy的文章。但要注意,开通空间时,请选择Windows Hosting,并开通PHP支持。
- 进入管理面板,选择Database->MySQL,在打开的mysql管理页面中,初始化用户、创建数据库。
因为godaddy的mysql和windows机器是独立的,wordpress默认的localhost无法连接到mysql,所以还应该找到mysql的地址。打开phpMyqlAdmin
登录pma后,在打开的管理页面,就可以看到这个信息了:
- 安装wordpress,需要注意的是:将数据库的ip要填上面记下来的IP。
- 几分钟后,wordpress站就新鲜出炉了。
今天上Google时,赫然发现主页居然是吃豆人,更让人意外的是:耐心等待一会,它居然可以玩:

原来这是Google为了纪念PAC-MAN 30周年而特意制作的。小时候就很喜欢玩这个游戏,很开心玩了一会,不亦乐乎。只可惜三条命,现在水平大降,玩一会就死了。
但折腾的时候,发现了两个好玩的地方:
1. 多按一次页面上的Insert Coin,会进入双人模式,屏幕上会出现两个pac-(wo)man,一个用方向 键控制,一个是wasd控制
2. 发现它居然是用js和图片做出来的,完全保证了跨平台性、很赞。