Browse > Home / Archive by category '未分类'

| 订阅RSS

[命令集]系统相关的限制信息

二月 22nd, 2009 | No Comments | Posted in 未分类

限制
某些应用程序需要设置可打开最大文件和 socket 数量(像代理服务器,数据库)。 默认限制通常很低。

Linux

每 shell/脚本
shell 的限制是受ulimit 支配的。使用ulimit -a 可查看其状态信息。举个例子,改变可打开最大文件数从
1024 到 10240,可以这么做:
# ulimit -n 10240 # 这只在shell中有用
ulimit 命令可以使用在脚本中来更改对此脚本的限制。
每 用户/进程
登录用户和应用程序的限制可以在/etc/security/limits.conf 中配置。举个例子:

# cat /etc/security/limits.conf
* hard nproc 250 				# 限制所有用户进程数
asterisk hard nofile 409600 			# 限制应用程序可打开最大文件数

系统级

用sysctl来设置内核限制。要使其永久,可以在/etc/sysctl.conf 中进行配置。

# sysctl -a 					# 显示所有系统限制
# sysctl fs.file-max 				# 显示系统最大文件打开数
# sysctl fs.file-max=102400 			# 更改系统最大文件打开数
# cat /etc/sysctl.conf
fs.file-max=102400 				# 在 sysctl.conf 中的永久项
# cat /proc/sys/fs/file-nr 			# 在使用的文件句柄数

3.FreeBSD
每 shell/脚本
在 csh 或 tcsh 中使用limits 命令,在 sh 或 bash 中使用ulimit 命令。
每 用户/进程
在/etc/login.conf 中配置登录后的默认限制。未作限制的值为系统最大限制值。
系统级
内核限制同样使用sysctl 来设置。永久配置,在/etc/sysctl.conf 或/boot/loader.conf 中。其语法与
Linux 相同,只是键值不同。

# sysctl -a 					# 显示所有系统限制
# sysctl kern.maxfiles=XXXX 			# 最大文件描述符数
kern.ipc.nmbclusters=32768 			# 在 /etc/sysctl.conf 中的永久项
kern.maxfiles=65536 				# Squid4 通常用这个值
kern.maxfilesperproc=32768
kern.ipc.somaxconn=8192 			# TCP 列队。apache/sendmail 最好用这个值
# sysctl kern.openfiles 			# 在使用的文件描述符数
# sysctl kern.ipc.numopensockets 		# 已经开启的 socket 数目

详情请看FreeBSD 手册 11章5。
Solaris
在/etc/system 中的下列设置,会提高每个进程可以打开最大文件描述符的数量:

set rlim_fd_max = 4096 				# 一个进程可以打开文件描述符的"硬"限制
set rlim_fd_cur = 1024 				# 一个进程可以打开文件描述符的"软"限制

Linux秘笈6. 用“shopt -s cdspell”自动纠正运行“cd”时候错误的文件路径

二月 15th, 2009 | No Comments | Posted in 未分类

shopt -s cdspell 纠正之前输入错误的文件路径,假如你不擅长输入并且有些错误输入,那么这条对你很有帮助。

# cd /etc/mall 

-bash: cd: /etc/mall: No such file or directory 

shopt -s cdspell 

# cd /etc/mall 

# pwd 

/etc/mail 

Tags: ,

Linux秘笈5. 用dirs, pushd和popd保存一些目录

二月 15th, 2009 | No Comments | Posted in 未分类

你能够使用pushd在堆栈中保存一些目录路径,然后用popd快速访问堆栈中的文件目录路径,下面为这三个命令的解释。

1. dirs: 展示目录堆栈

2. pushd: 向目录堆栈保存目录

3. popd: 从目录堆栈中获得目录,然后cd进去

Dirs输出当前路径和文件目录堆栈中的内容,甚至当目录堆栈为空,dirs将输出当前路径。 

# popd 

-bash: popd: directory stack empty 

# dirs 

# pwd 

/home/ramesh 

怎么使用pushdpopd?先让我们创建一些临时目录,然后通过把他们放入到文件目录堆栈中。

# mkdir /tmp/dir1 

# mkdir /tmp/dir2 

# mkdir /tmp/dir3 

# mkdir /tmp/dir4 

# cd /tmp/dir1 

# pushd . 

# cd /tmp/dir2 

# pushd . 

# cd /tmp/dir3 

# pushd . 

# cd /tmp/dir4 

# pushd . 

# dirs 

/tmp/dir4 /tmp/dir4 /tmp/dir3 /tmp/dir2 /tmp/dir1 

Tags: ,

Linux秘笈4. 用“cd -”切换最后的访问的两个目录

二月 15th, 2009 | No Comments | Posted in 未分类

你能够象下面展示的一样,用“cd-”去切换最后访问的两个目录

# cd /tmp/very/long/directory/structure/that/is/too/deep

# cd /tmp/subdir1/subdir2/subdir3

# cd -

# pwd

/tmp/very/long/directory/structure/that/is/too/deep

# cd -

# pwd

/tmp/subdir1/subdir2/subdir3

# cd -

# pwd

/tmp/very/long/directory/structure/that/is/too/deep

PHP不是面向对象的语言

二月 15th, 2009 | No Comments | Posted in 未分类

摘自”http://michaelkimsal.com/blog/php-is-not-object-oriented/”

PHP确实不是一种面向对象的语言

我喜欢PHP,同时我也大量的使用它,从1996开始我一直使用php,我获得zend认证,使用php做过上亿美元的商业项目。

它的确不是一个面向对象的语言,我希望大家能够平静的认识到这点,或许有一些人试图去增强php支持对象,或许可以做到,但我不那么认为.

我记得在2004年和一些人研究php5,在beta版本的时候,他们都在使用,而且非常喜爱它的”面向对象”特征。然后我问他们,php5还未发布,你们为什么用它开发产品呢?有些人说”在php4不支持面向对象的时候”。

象我的妻子(假如她一直关注PHP)她会说”bollocks”

是的,PHP5已经发布了很多年了,但是我仍然come across 那些说”PHP是面向对象”或者”从PHP5开始,PHP是面向对象”的人们。

看看”面向对象”的单词,这个语言是否真正的面向对象或者象”对象”。

Groovy是面向对象的语言,在这个语言中任何东西都是对象,或者被当成对象(objects, functions, ”primitives”, etc.)

Ruby是面向对象的语言,我不怎么使用它,就像我说的那样,任何东西(number,等)都是对象。

Java同样,除了一些限制例外,任何东西都是对象,

PHP - 有多少东西是对象呢?SPL或许正在朝这个方向进行尝试,但他们不是真正的替代PHP,仅仅是一个调整,在PHP中Strings, arrays, numbers - 既不是对象,也不能作为对象来对待。

Linux秘笈3. 用一条命令实现mkdir和cd两个命令的功能

二月 15th, 2009 | No Comments | Posted in 未分类

有些时候,当你创建了一个新目录之后,你可能想用cd命令立即去浏览这个新目录进行一些其他操作,例如:

# mkdir -p /tmp/subdir1/subdir2/subdir3 

# cd /tmp/subdir1/subdir2/subdir3 

# pwd 

/tmp/subdir1/subdir2/subdir3 

能不能很好的结合mkdir和cd两条命令成一个单一命令吗?加入下面的内容到你的.bash_profile,然后重新登录。

$ vi .bash_profile 

function mkdircd () { mkdir -p ”$@” && eval cd ”\”\$$#\”"; } 

现在,可以用一条命令同时执行mkdir和cd两条命令,例如:

# mkdircd /tmp/subdir1/subdir2/subdir3 

[Note: This creates the directory and cd to it automatically] 

# pwd 

/tmp/subdir1/subdir2/subdir3 

使用wget下载整个页面,包含资源文件

二月 14th, 2009 | No Comments | Posted in 未分类

wget -p –convert-links http://www.foo.com

这条命令将创建一个 www.foo.com的文件夹,并且包含一个index.html页面文件,同时还有一些需要的图片、css等资源文件,需要注意的是,在css中的一些 @imports将不能抓取。

Tags:

Linux秘笈2,高效的利用cd别名去浏览目录

二月 14th, 2009 | No Comments | Posted in 未分类

当你去浏览比较长的目录结构父目录的时候,你可能用cd ..\..之类的,有的时候会非常长,例如:

# mkdir -p /tmp/very/long/directory/structure/that/is/too/deep 

# cd /tmp/very/long/directory/structure/that/is/too/deep 

# pwd 

/tmp/very/long/directory/structure/that/is/too/deep 

# cd ../../../../ 

# pwd 

/tmp/very/long/directory/structure 

 

可以利用如下的三个方法中的任何一种,可以去代替繁琐的 cd ../../../。

方法1:用”..n”去浏览上级目录

在下面的例子中,我们用 ..4回到上层4级目录,用..3回到上层3级目录,用..2回到上层2级目录,在~/.bash_profile中加入如下的一些别名定义并重新登陆。

alias ..=”cd ..” 

alias ..2=”cd ../..” 

alias ..3=”cd ../../..” 

alias ..4=”cd ../../../..” 

alias ..5=”cd ../../../../..” 

# cd /tmp/very/long/directory/structure/that/is/too/deep 

# ..4 

[注意: 用 ..4 向上回4级目录] 

# pwd 

/tmp/very/long/directory/structure/ 

方法2: 仅仅使用一些”.”回到上层目录 

可以使用一些”.”去定义命令的别名。当你输入头两个点的时候,你可能在思考,”将去那个一个目录”,然后每向上回一级目录,就用一个点表示,在你的~/.bash_profile中增加如下内容,然后重新登录,快捷方式将生效。

alias ..=”cd ..” 

 

alias …=”cd ../..” 

alias ….=”cd ../../..” 

alias …..=”cd ../../../..” 

alias ……=”cd ../../../../..” 

# cd /tmp/very/long/directory/structure/that/is/too/deep 

# ….. 

[注意: 用 ..... (5个点)回到上层四级目录] 

# pwd 

/tmp/very/long/directory/structure/ 

方法3: 在cd后面跟点来回到上级目录 

可以使用一些”cd”和”.”去定义命令的别名。当你输入”cd..”的时候,你可能在思考,”将去那个一个目录”,然后每向上回一级目录,就用一个点表示,在你的~/.bash_profile中增加如下内容,然后重新登录,快捷方式将生效。

 

alias cd..=”cd ..” 

alias cd…=”cd ../..” 

alias cd….=”cd ../../..” 

alias cd…..=”cd ../../../..” 

alias cd……=”cd ../../../../..” 

# cd /tmp/very/long/directory/structure/that/is/too/deep 

# cd….. 

[Note: use cd..... 回到上层4级目录] 

# pwd 

/tmp/very/long/directory/structure 

方法4: 通过cd结合数字来回到上层目录 

在下面的例子中,利用cd4回到上级4层目录 

alias cd1=”cd ..” 

alias cd2=”cd ../..” 

alias cd3=”cd ../../..” 

alias cd4=”cd ../../../..” 

alias cd5=”cd ../../../../..”

Tags: ,