Does licence matter?

天下大势,合久必分,分久必合。

最近,以Linus为首的Linux Kernel阵营和以Richard Stallman为首的FSF之间分歧越来越大,起因是GNU GPL v3。Richard Stallman全力推行第三版的GPL许可,符合其偏执、理想化的个人形象,而Linus这次的行为也符合其一贯的思维方式。唯一变化了的是环境,所谓时过境迁。

新情况出现后,原来并肩作战的兄弟之间出现了裂痕,似乎令人扼腕痛惜。然而换个角度想,这种变化也是必然,我相信即使是过去,在FSF这面大旗下,也是一颗颗同床异梦的心。同样的手段,不同的人用来获取不同的目的。所以,当Stallman与时俱进,挥舞着大旗向自己心中的方向前进时,部分人不得不做出选择——是放弃自己的利益继续跟着FSF走呢?还是放弃FSF而追寻自己的利益?

说实话,我从没有认真读过任何一种许可的文本,也对Linux Kernel没太大兴趣,尤其是,我还没有写出有价值的程序并采用GPL,所以在这件事上,也没什么太多可说的。可是,如果最终分裂不可避免,我会怎么选择呢?也许对我来说,不会有太大的变化,但是在心里头,会偏向Richard Stallman一方,因为我一向十分钦佩此人,一个极具理想化色彩的人,做起事来却一板一眼,脚踏实地。

Syslog

使用Proc::Daemon可以非常方便的写一个daemon程序,可是这样的程序看不见、摸不着,我们怎样才能知道它干了什么呢?最简单的方法是维护一个日志文件,向里面输出一些动作记录,以便跟踪和调试;更通用的方法是使用syslog,daemon程序只需把日志信息传给syslogd(也是一个daemon),syslogd则负责把不同程序的日志信息存到相应的日志文件里。

Cygwin里面也带有syslogd,运行syslogd-config就把syslogd安装为Windows Service,首次安装后要手工打开该服务才能够使用。

Perl脚本可以使用Unix::Syslog向syslogd发送日志信息。下面的程序是一个简单的例子:

#!/usr/bin/perl
use Unix::Syslog qw(:macros);
use Unix::Syslog qw(:subs);
openlog("hello.pl", LOG_PERROR|LOG_CONS, LOG_LOCAL7);
syslog(LOG_INFO, "hello, world");
closelog;

缺省的(在/etc/syslog.conf里面设置),日志信息输出到/var/log/messages,运行上面的程序后,该文件里会增加一条信息,类似于:

Sep 12 13:09:35 machine-name hello.pl: hello, world

通过修改/etc/syslog.conf文件,我们可以将不同程序的日志信息存放到不同的日志文件里,具体操作参见man syslog.conf。