Linux下查看某进程的详细状态

Linux下用”ps”命令可以查看进程列表中某一个进程的内存及CPU占用信息,那么,如果想查看某一进程详细的状态信息应该如何去做呢。
其实Linux下进程的详细信息会被记录在/proc/PID/status文件中,其中PID为某个进程的Process ID。现在假设有个程序ID为788,那么我们只要

cat /proc/788/status

就可以看到788这个进程的详细信息了。至于如何得到PID,可以用”ps aux | grep ‘进程名'” 找到pid。
或者干脆用一行流:

cat /proc/`ps ax | grep mysql | awk '{print $1}' | head -1`/status

PHP运行于fcgid模式时,上传大文件抛500错误

我在pma上试图导入一个SQL文件时,pma抛给我一个500错误,看日志后发现错误日志为:

mod_fcgid: HTTP request length 135225 (so far) exceeds MaxRequestLen (131072)

我的php是运行在mod_fcgid模式下的,看上去是因为HTTP的请求长度太长,大于现有的131072最大请求长度。看了fcgid的配置文件后,发现并没有配置过MaxRequestLen的参数。看来这个131072的配置是默认的了。于是在fcgid的配置文件里加入这个配置,15728640是15M,因为我的php.ini中设置的最大POST长度是15M,所以把它们设置长一样的:

  MaxRequestLen 15728640

重启APACHE后,上传,导入,OK~

diff的使用及制作patch

VPS上的LANMP都是自己编译出来的,因为个人比较追求新的发布,所以一有新的版本发布,就会上down下来编译更新。之前都会对源码做些个人化的修改后再编译,就经常要对新的发布版本做一样的修改。经常性地这样手动更改很麻烦,所以就想到了制作patch补丁。

diff工具的使用

diff [OPTION]... FILES

FILES 表示多个文件或目录
说明:该命令告诉使用者,为了使文件,如FILES一致,需要修改它们的哪些行。如果用 “-“表示 FILES,则表示标准输入。如果 FILES 是目录,那么 diff 将使用该目录中的同名文件进行比较。
继续阅读diff的使用及制作patch

apache2上配置php-fastcgi


一直以来配置LAMP都会让php以apache handler的方式运行,虽然这样的运行模式会非常高效,但一直觉得它很占我VPS的资源,可怜的128M内存。所以尝试将php以fastcgi的模式运行。

安装

首先安装apache的fastcgi模块,apache下的fastcgi模式有两个:fastcgi_module与fcgid_module,比较后发现fcgid_module比较有优势,所以我选择了fcgid的模块,可以从源安装,也可以从官方下载然后自己编译。图方便,我直接从源安装:

apt-get install libapache2-mod-fcgid

接下去安装php-cgi

apt-get install php5-cgi

如果自己编译的话,记得去掉–with-apxs2,并加上–enable-cgi编译选项。
继续阅读apache2上配置php-fastcgi

php中preg_*函数关于”\”的一个问题

记得之前,我在php中有要写一个正则匹配:要匹配一个字符串中的的一个反斜杠’\’,开始写的是

preg_match("%.+\\%",$str);

但却报了No ending delimiter ‘%’ found in Command line code的错误。于是写成了:

preg_match("%.+\\\\%",$str);

程序正常了,当时也没多管它。昨天翻看PHP手册的时候发现preg_replace函数中有说

To use backslash in replacement, it must be doubled (“\\\\” PHP string).

想了下,这里的”\\\\”应该是在php字符串中,”\\\\”先被转义成了”\\”,然后在正则中,”\\”才又被转义成了”\”。

在Archlinux上使用BFS内核

之前有听一个朋友说起过BFS的内核,周末的时候就研究了一下,然后在网上找了这篇文章,文章末尾有提到很多人在用了BFS的内核后的感受是“快 !人能感觉到的快!”,于是就十分想感受一下这个传说中BFS神器。

在Archlinux中还有一个伟大的东西叫AUR,于是在AUR中找到了这位kernel26-bfs,直接yaourt -S kernel26-bfs,大大省去了patch内核的麻烦。

什么是BFS?

BFS的作者是传说中的澳洲猛士CK(Con Kolivas)——资深内核 hacker。BFS(Brain Fuck Scheduler)内核区别于一般内核的CFS(Completely Fair Schedule) 的任务调度管理器,一般的CFS支持多达几千个的CPU架构,而这个支持是牺牲了一定程度上的性能。于是而 BFS 在其中作了聚会,让内核最多支持 16 个 CPU,让问题的复杂化降低,让算法变得简单高效。

继续阅读在Archlinux上使用BFS内核

无聊两代码

我承认很蛋痛。

<?php
define('猪','头');
define('头','猪');
function 猪(){return 头;}
function 头(){return 猪;}
$头='猪';
$猪='头';
$constant = 'constant';
echo "你就是一${$constant($猪())}${$constant(头)}";
<?php
$a = 1;
function f(){
    global $a;
    $a = 2;
    unset($a);
}
f();
var_dump($a);

总算告一段落了…

做一个网站,从二月份签单,前端设计到4月底,后又被打回重做,终于在5月中通过了前端的“审核”,开始做后台程序,做到今天总算是通过了,算算也将近一个月啊,一个月啊!!!,后续不知道还会不会有问题,从没见过这么挑剔的客户,NNGX。

这个两个礼拜又有很多杂事,NNGX,身心交瘁啊。。。

ispcp中proftpd连接失败

在VPS上装了个ISPCP,以方便主机管理。

装好后发现FTP连不上,在VPS上也看到proftpd已经在运行了。担就是连不上,删除掉ISPCP的proftpd的配置文件,用回默认了便可以连接了。

看来是ISPCP中proftpd的配置问题,diff了两个proftpd.conf文件,差别很大,看来ispcp改到了很多的配置,找了好,最终把目光锁定在proftpd_mod_mysql这个配置中,发现它有连接数据库的配置以某用户名去连接mysql数据库。再检查数据库中的配置,原来mysql并没有创建proftpd配置文件中的用户。用去创建该用户即可连接到proftpd了。

GNOME3 字体更改

Gnome3 中,gnome-tweak-tool工具确实比较弱,有些鸡肋…只能修改一点点东西,包括字体的修改。

1、桌面,窗口等字体修改可以在gnome-tweak-tool中完成。

2、面板字体修改 /usr/share/gnome-shell/theme/gnome-shell.css,但好像不能直接用中文,可以UNICODE,不过,还是建议用英文字体名。

改完后重新载入gnome-shell,或重启X