0%

linux下 tar解压 gz解压 bz2等各种解压文件使用方法_百度文库.

linux下 tar解压 gz解压 bz2等各种解压文件使用方法

.tar

解包:tar xvf FileName.tar

打包:tar cvf FileName.tar DirName

(注:tar是打包,不是压缩!)

———————————————

.gz

解压1:gunzip FileName.gz

解压2:gzip -d FileName.gz

压缩:gzip FileName

.tar.gz 和 .tgz

解压:tar zxvf FileName.tar.gz

压缩:tar zcvf FileName.tar.gz DirName

———————————————

.bz2

解压1:bzip2 -d FileName.bz2

解压2:bunzip2 FileName.bz2

压缩: bzip2 -z FileName

.tar.bz2

解压:tar jxvf FileName.tar.bz2        或tar –bzip xvf FileName.tar.bz2

压缩:tar jcvf FileName.tar.bz2 DirName

———————————————

.bz

解压1:bzip2 -d FileName.bz

解压2:bunzip2 FileName.bz

压缩:未知

.tar.bz

解压:tar jxvf FileName.tar.bz

压缩:未知

———————————————

.Z

解压:uncompress FileName.Z

压缩:compress FileName

.tar.Z

解压:tar Zxvf FileName.tar.Z

压缩:tar Zcvf FileName.tar.Z DirName

———————————————

.zip

解压:unzip FileName.zip

压缩:zip FileName.zip DirName

压缩一个目录使用 -r 参数,-r 递归。例: $ zip -r FileName.zip DirName

———————————————

.rar

解压:rar x FileName.rar

压缩:rar a FileName.rar DirName

rar请到:http://www.rarsoft.com/download.htm 下载!

解压后请将rar_static拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):

[root@www2 tmp]# cp rar_static /usr/bin/rar

———————————————

.lha

解压:lha -e FileName.lha

压缩:lha -a FileName.lha FileName

lha请到:http://www.infor.kanazawa-it.ac.jp/~ishii/lhaunix/下载!

>解压后请将lha拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):

[root@www2 tmp]# cp lha /usr/bin/

———————————————

.rpm

解包:rpm2cpio FileName.rpm | cpio -div

———————————————

.deb

解包:ar p FileName.deb data.tar.gz | tar zxf -

———————————————

.tar .tgz .tar.gz .tar.Z .tar.bz .tar.bz2 .zip .cpio .rpm .deb .slp .arj .rar .ace .lha .lzh .lzx .lzs .arc .sda .sfx .lnx .zoo .cab .kar .cpt .pit .sit .sea

解压:sEx x FileName.*

压缩:sEx a FileName.* FileName

sEx只是调用相关程序,本身并无压缩、解压功能,请注意!

sEx请到: http://sourceforge.net/projects/sex下载!

解压后请将sEx拷贝到/usr/bin目录(其他由$PATH环境变量指定的目录也可以):

[root@www2 tmp]# cp sEx /usr/bin/

 

 

Linux下常见文件解压方法及命令

系统·System

1.以.a为扩展名的文件:

#tar xv file.a

2.以.z为扩展名的文件:

#uncompress file.Z

3.以.gz为扩展名的文件:

#gunzip file.gz

4.以.bz2为扩展名的文件:

#bunzip2 file.bz2

5.以.tar.Z为扩展名的文件:

#tar xvZf file.tar.Z

或 #compress -dc file.tar.Z | tar xvf

6.以.tar.gz/.tgz为扩展名的文件:

#tar xvzf file.tar.gz

或 gzip -dc file.tar.gz | tar xvf -

7.以.tar.bz2为扩展名的文件:

#tar xvIf file.tar.bz2

或 bzip2 -dc file.tar.bz2 | xvf -

8.以.cpio.gz/.cgz为扩展名的文件:

#gzip -dc file.cgz | cpio -div

9.以.cpio/cpio为扩展名的文件:

#cpio -div file.cpio

或cpio -divc file.cpio

10.以.rpm为扩展名的文件安装:

#rpm -i file.rpm

11.以.rpm为扩展名的文件解压缩:

#rpm2cpio file.rpm | cpio -div

12.以.deb为扩展名的文件安装:

#dpkg -i file.deb

13.以.deb为扩展名的文件解压缩:

#dpkg-deb -fsys-tarfile file.deb | tar xvf - ar p

file.deb data.tar.gz | tar xvzf -

14.以.zip为扩展名的文件:

#unzip file.zip

在linux下解压Winzip格式的文件

要是装了jdk的话,可以用jar命令;还可以使用unzip命令。

直接解压.tar.gz文件

xxxx.tar.gz文件使用tar带zxvf参数,可以一次解压开。XXXX为文件名。 例如:

$tar zxvf xxxx.tar.gz 各种压缩文件的解压(安装方法)

 

 

 

文件扩展名 解压(安装方法)

.a ar xv file.a

.Z uncompress file.Z

.gz gunzip file.gz

.bz2 bunzip2 file.bz2

.tar.Z tar xvZf file.tar.Z

compress -dc file.tar.Z | tar xvf -

.tar.gz/.tgz tar xvzf file.tar.gz

gzip -dc file.tar.gz | tar xvf -

.tar.bz2 tar xvIf file.tar.bz2

bzip2 -dc file.tar.bz2 | xvf -

.cpio.gz/.cgz gzip -dc file.cgz | cpio -div

.cpio/cpio cpio -div file.cpio

cpio -divc file.cpio

.rpm/install rpm -i file.rpm

.rpm/extract rpm2cpio file.rpm | cpio -div

.deb/install dpkg -i file.deb

.deb/exrtact dpkg-deb -fsys-tarfile file.deb | tar xvf -

ar p file.deb data.tar.gz | tar xvzf -

.zip unzip file.zip

bzip2 -d myfile.tar.bz2 | tar xvf

tar xvfz myfile.tar.bz2

x 是解压

v 是复杂输出

f 是指定文件

z gz格式

gzip

gzip[选项]要压缩(或解压缩)的文件名

-c将输出写到标准输出上,并保留原有文件。

-d将压缩文件压缩。

-l对每个压缩文件,显示下列字段:压缩文件的大小,未压缩文件的大小、压缩比、未压缩文件的名字

-r递归式地查找指定目录并压缩或压缩其中的所有文件。

-t测试压缩文件是正完整。

-v对每一个压缩和解压缩的文件,显示其文件名和压缩比。

-num-用指定的数字调整压缩的速度。

举例:

把/usr目录并包括它的子目录在内的全部文件做一备份,备份文件名为usr.tar

tar cvf usr.tar /home

把/usr 目录并包括它的子目录在内的全部文件做一备份并进行压缩,备份文件名是usr.tar.gz

tar czvf usr.tar.gz /usr

压缩一组文件,文件的后缀为tar.gz

#tar cvf back.tar /back/

#gzip -q back.tar

or

#tar cvfz back.tar.gz /back/

释放一个后缀为tar.gz的文件。

#tar zxvf back.tar.gz

#gzip back.tar.gz

#tar xvf back.tar

在CentOS系统下,主要有两种方法设置自己安装的程序开机启动。

1、把启动程序的命令添加到/etc/rc.d/rc.local文件中,比如下面的是设置开机启动httpd。

#!/bin/sh

This script will be executed after all the other init scripts.

You can put your own initialization stuff in here if you don’t

want to do the full Sys V style init stuff.

 

touch /var/lock/subsys/local

/usr/local/apache/bin/apachectl start

2、把写好的启动脚本添加到目录/etc/rc.d/init.d/,然后使用命令chkconfig设置开机启动。

例如:我们把httpd的脚本写好后放进/etc/rc.d/init.d/目录,使用

chkconfig –add httpd

chkconfig httpd on

命令即设置好了开机启动。

通过CentOS设置程序开机自启动的方法 | 海哥CentOS Blog.

linux ulimit相关资料 - 朱俊的日志 - 网易博客.

inux ulimit使用
2010-11-08 13:30
ulimit -a 用来显示当前的各种用户进程限制。
Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,
设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个:
ulimit -u 10000
对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言,
最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。
ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024
其他建议设置成无限制(unlimited)的一些重要设置是:
数据段长度:ulimit -d unlimited
最大内存大小:ulimit -m unlimited
堆栈大小:ulimit -s unlimited
CPU 时间:ulimit -t unlimited
虚拟内存:ulimit -v unlimited


暂时地,适用于通过 ulimit 命令登录 shell 会话期间。
永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件,如:


1)、解除 Linux 系统的最大进程数和最大文件打开数限制:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 4100
* hard nofile 4100


说明:* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
2)、让 SSH 接受 Login 程式的登入,方便在 ssh 客户端查看 ulimit -a 资源限制:
a、vi /etc/ssh/sshd_config
把 UserLogin 的值改为 yes,并把 # 注释去掉
b、重启 sshd 服务:
/etc/init.d/sshd restart
3)、修改所有 linux 用户的环境变量文件:
vi /etc/profile
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited



Linux(kernel 2.6.*)下ulimit与core dump
2010-09-13 16:27core dump一般指用户空间的进程在收到signal时,kernel dump出进程终止前的运行环境/状态,用来分析和调试程序。
程序自身问题导致进程在在运行时发生错误,kernel会发出信号将其终止,也可以是人为的kill掉进程。进程收到信号时可以进入自己的信号处理机制,如果没有则进入系统默认的信号处理机制,信号有很多种类,只有部分信号系统的默认处理是core dump,常见的SIGQUIT,在程序运行时按键盘“ctl+\”。


Linux下ulimit命令是bash的“内建”命令,用来控制进程对系统资源的使用,这些限制仅仅适用于有当前shell内运行的进程或者子孙进程,因为子孙进程会继承父进程的资源限制条件。反过来,子孙进程自己修改了资源限制条件,不会影响父进程。命令“ulimit -c [num]”是用来查看和设置core dump文件大小的,num指定core dump文件大小,以K为单位。


core dump出来的文件名默认情况下为“core.PID”,与此设置相关的2个参数是:
/proc/sys/kernel/core_uses_pid 默认为1
/proc/sys/kernel/core_pattern 默认是“core”,可以加上时间戳
[root@localhost]# echo “core%t” > /proc/sys/kernel/core_pattern
这样core dump文件名就是core1284395646.19406,1284395646是从1970到当前时间的秒数,19406是进程号。


用shell脚本验证一下core dump的功能很容易:
用一个脚本sleep.sh来sleep
[root@localhost]# cat sleep.sh
#!/bin/bash
echo “sleep starting”
sleep 100;
echo “sleep end”


运行该脚本后马上按“ctl+\”:


[root@localhost]# ./sleep.sh
sleep starting
./sleep.sh: line 4: 19406 Quit                    (core dumped) sleep 100
sleep end


如果一个进程收到了应该让进程产生core dump的signal,但是没产生core dump文件,可能的原因会有:
1.系统资源限制,core dump文件大小设置为0,或者太小(小于1K)。
1.进程权限不够,没法在磁盘上写文件。
2.系统自身问题,没空间?inode不够?
3.有同名文件存在。
4.SUID的进程运行时不是真实的owner和group。


如果一个程序已经在运行,但不是有当前shell所start的,这时候ulimit命令就起不了作用,可以用ulimit()函数来设置,此函数后来被getrlimit()函数和setrlimit()函数所取代。
用getrlimit()函数来获取当前系统core dump限制:


[root@localhost]# cat getl.c
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <sys/time.h>
#include <sys/resource.h>


int main()
{
struct rlimit s_core;


if ((s_core=(struct rlimit )malloc(sizeof(struct rlimit))) == NULL)
perror(“malloc() error:”);


if (getrlimit(RLIMIT_CORE, s_core) != 0)
perror(“getrlimit() error:”);
else
printf(“current core limit is %d, max core limit is %d\n”, s_core->rlim_cur, s_core->rlim_max);


return 0;
}


用setrlimit()函数设置系统的core dump限制:
[root@localhost]# cat setl.c
#include <unistd.h>
#include <stdio.h>
#include <errno.h>
#include <sys/time.h>
#include <sys/resource.h>


int main()
{
struct rlimit s_core;


if ((s_core=(struct rlimit )malloc(sizeof(struct rlimit))) == NULL)
perror(“malloc() error:”);


s_core->rlim_max=RLIM_INFINITY;
s_core->rlim_cur=204800;


if (setrlimit(RLIMIT_CORE, s_core) != 0)
perror(“setrlimit() error:”);


printf(“the process is going to sleep now…\n”);
sleep(20);
printf(“the process totally sleeped 20s.\n”);


return 0;
}


需要注意的是RLIM_INFINITY对应的值是-1,rlim_cur设置的值是以byte来计算的,kernel在产生core dump文件时,如果系统core dump限制比较小,kernel会做truncate,但是如果太小,core dump文件可能无法产生。运行这个程序,然后马上按“ctl+\”就会产生core dump:


[root@localhost]# ./setl
the process is going to sleep now…
Quit (core dumped)


默认core dump文件产生在程序所在的目录,如果是手动kill可以看到“(core dumped)”标识。当然,core dump会dump出程序的运行环境,这样一来就有不安全因素,如果core dump文件被利用可以获得程序相关信息甚至系统的root权限。
kernel的panic同样可以dump,但是需要考虑的因素更多,更复杂,有兴趣可以google一下kdump,kexec



linux文件句柄数限制,ulimit
2010-06-11 16:07
在Linux下面部署应用的时候,有 时候会遇上Socket/File: Can’t open so many files的问题,其实Linux是有文件句柄限制的,而且默认不是很高,一般都是1024,作为一台生产服务器,其实很容易就达到这个数量,因此我们需 要把这个值改大一些。



我们可以用ulimit -a来查看所有限制值,现在只关心文件句柄数量的问题


open files (-n) 1024


这个就是限制数量


这里,有很多ulimit的文章都说的很含糊,究竟这个1024 是系统的限制,还是用户的限制呢。其实,这个是用户限制来的,完整的说法,应该是当前用户准备要运行的程序的限制。


1、这个限制是针对单个程序的限制


2、这个限制不会改变之前已经运行了 的程序的限制


3、对这个值的修改,退出了当前的 shell就会消失


比如说,我先运行了一个程序A,然后 通过ulimit修改了限制为 2048,然后运行B,然后退出了shell再登录,然后运行C。那就只有B可以打开2048个句柄。


如果我们需要改变整体的限制值,或者 我们运行的程序是系统启动的,应该怎么处理呢


其中一个方法,是想ulimit修改命令放入/etc/profile 里面,但是这个做法并不好


正确的做法,应该是修改/etc /security/limits.conf


里面有很详细的注释,比如


soft nofile 2048


hard nofile 32768


就可以将文件句柄限制统一改成软 2048,硬32768


这里涉及另外一个问题,什么是软限 制,什么是硬限制


硬限制是实际的限制,而软限制,是 warnning限制,只会做出warning


其实ulimit命令本身就有分软硬设置,加-H就是 硬,加-S就是软


默认显示的是软限制,如果修改的时候 没有加上的话,就是两个一起改


配置文件最前面的一位是 domain,设置为星号代表全局,另外你也可以针对不同的用户做出不同的限制


修改了,重新登录用ulimit一开就立刻生效了,不过之前启动过的程序要重新启动才能使用新 的值。我用的是CentOS,似乎有些系统需要重启才 能生效。


ulimit其实就是对单一程序的限制


那系统总限制呢


其实是在这里,/proc/sys /fs/file-max


可以通过cat查看目前的 值,echo来立刻修改


另外还有一个,/proc/sys /fs/file-nr


只读,可以看到整个系统目前使用的文 件句柄数量


查找文件句柄问题的时候,还有一个很 实用的程序lsof


可以很方便看到某个进程开了那些句柄


也可以看到某个文件/目录被什么进程 占用了(umount不了就可以看谁的问题了)



linux ulimit max open files
2010-01-24 20:21有时候在程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。
修改办法:
重启就OK
修改2个文件。
1./etc/security/limits.conf
vi /etc/security/limits.conf
加上:
* soft nofile 8192
* hard nofile 20480


2./etc/pam.d/login
session    required     /lib/security/pam_limits.so



ulimit -a查看 下 OK


另一篇:ulimit值(Linux文件句柄数量)在Centos5(RHEL5)中的调整


http://www.crazylemon.net/linux/173.html



在Linux下面部署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题,比如还有Squid做代理,当文件打开数到900多时速能就非常快的下降,有可能打不开网页.
其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用其实很容易就达到这个数量.


查看方法


我们可以用ulimit -a来查看所有限制值


[root@centos5 ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
max nice (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 4096
max locked memory (kbytes, -l) 32
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
max rt priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 4096
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited||<


其中 “open files (-n) 1024 “是Linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的SOCKET数量,可影响MySQL的并发连接数目).这个值可用ulimit命令来修改,但ulimit命令修改的数值只对当前登录用户的目前使用环境有效,系统重启或者用户退出后就会失效.


系统总限制是在这里,/proc/sys/fs/file-max.可以通过cat查看目前的值,修改/etc/sysctl.conf 中也可以控制.


另外还有一个,/proc/sys/fs/file-nr,可以看到整个系统目前使用的文件句柄数量


查找文件句柄问题的时候,还有一个很实用的程序lsof.可以很方便看到某个进程开了那些句柄.也可以看到某个文件/目录被什么进程占用了.


修改方法
若要令修改ulimits的数值永久生效,则必须修改配置文档,可以给ulimit修改命令放入/etc/profile里面,这个方法实在是不方便,还 有一个方法是修改/etc/sysctl.conf .我修改了,测试过,但对用户的ulimits -a 是不会改变的。只是/proc/sys/fs/file-max的值变了.(我给命令放到rc.local中失败)


我认为正确的做法,应该是修改/etc/security/limits.conf
里面有很详细的注释,比如


soft nofile 32768
* hard nofile 65536


也可以直接运行下面这个shell。直接copy到你的终端中运行就好了.
echo -ne “
* soft nofile 65536
* hard nofile 65536
“ >>/etc/security/limits.conf


就可以将文件句柄限制统一改成软32768,硬65536.配置文件最前面的是指domain,设置为星号代表全局,另外你也可以针对不同的用户做出不同的限制


注意.这个当中的硬限制是实际的限制,而软限制,是warnning限制,只会做出warning.其实ulimit命令本身就有分软硬设置,加-H就是硬,加-S就是软
默认显示的是软限制,如果运行ulimit命令修改的时候没有加上的话,就是两个参数一起改变.


生效


修改完重新登录就可以见到.(我的系统是Centos5.1.修改了,重新登录后就立刻生效.可以用ulimit -a 查看确认.)


如果你使用squid的话,你要在/etc/init.d/squid的文件加入ulimit -HSn 65535.另外,在squid.conf中也要加入max_filedesc 16384


注:上面这种方式只是改变了用户登陆系统后的文件打开数,对于/etc/init.d/nginxphp这种的启动脚本并不起作用,像这种启动脚本,需要在脚本内加一行:


ulimit -HSn 65535


才行。




修改linux相关限制 ulimit
2009-11-14 17:47ulimit:显示(或设置)用户可以使用的资源限制
ulimit -a 显示用户可以使用的资源限制
ulimit unlimited 不限制用户可以使用的资源,但本设置对可打开的最大文件数(max open files)和可同时运行的最大进程数(max user processes)无效。
ulimit -n <可以同时打开的文件数> 设置用户可以同时打开的最大文件数(max open files)
例如:ulimit -n 8192
如果本参数设置过小,对于并发访问量大的网站,可能会出现too many open files的错误
ulimit -u <可以运行的最大并发进程数> 设置用户可以同时运行的最大进程数(max user processes)
例如:ulimit -u 1024
ulimit命令
设置限制  可以把命令加到profile文件里,也可以在/etc/security/limits.conf文件中定义限制。
命令参数
-a  显示所有限制
-c  core文件大小的上限
-d  进程数据段大小的上限
-f  shell所能创建的文件大小的上限
-m  驻留内存大小的上限
-s  堆栈大小的上限
-t  每秒可占用的cpu时间上限
-p  管道大小
-n  打开文件数的上限
-u  进程数的上限
-v  虚拟内存的上限
除可用ulimit命令设置外,也可以在/etc/security/limits.conf文件中定义限制。
domino type item value
domino是以符号@开头的用户名或组名,表示所有用户,type设置为hard or soft。item指定想限制的资源。如cpu,core nproc or maxlogins。value是相应的限制值。



ulimit命令优化linux进程连接数等限制
2010-11-03 20:53在Linux下面部署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题,比如还有Squid做代理,当文件打开数到900多时速能就非常快的下降,有可能打不开网页.其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用其实很容易就达到这个数量



[root@mail data]# ulimit -a
core file size           (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 66560
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                       (-n) 8192
pipe size             (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority               (-r) 0
stack size               (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes               (-u) 66560
virtual memory           (kbytes, -v) unlimited
file locks                       (-x) unlimited
[separator]
其中 “open files (-n) 1024 “是Linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的SOCKET数量,可影响MySQL的并发连接数目).这个值可用ulimit 命令来修改,但ulimit命令修改的数值只对当前登录用户的目前使用环境有效,系统重启或者用户退出后就会失效.
系统总限制是在这里,/proc/sys/fs/file-max.可以通过cat查看目前的值,修改/etc/sysctl.conf 中也可以控制.
另外还有一个,/proc/sys/fs/file-nr,可以看到整个系统目前使用的文件句柄数量
查找文件句柄问题的时候,还有一个很实用的程序lsof.可以很方便看到某个进程开了那些句柄.也可以看到某个文件/目录被什么进程占用了
[root@kyouwar data0]# cat /proc/sys/fs/file-max
372901
[root@kyouwar data0]# cat /proc/sys/fs/file-nr
3200     0       372901

ulimit 用于shell启动进程所占用的资源。
可以使用该命令查看进程占用资源的情况。
使用方法:ulimit [-acdfHlmnpsStvw] [size]
-H 设置硬件资源限制.
-S 设置软件资源限制.
-a 显示当前所有的资源限制.
-c size:设置core文件的最大值.单位:blocks
-d size:设置数据段的最大值.单位:kbytes
ulimit -d unlimited
-f size:设置创建文件的最大值.单位:blocks
-l size:设置在内存中锁定进程的最大值.单位:kbytes
-m size:设置可以使用的常驻内存的最大值.单位:kbytes
ulimit -m unlimited
-n size:设置内核可以同时打开的文件描述符的最大值【每个进程可以打开的文件数目】【也包含打开的SOCKET数量,可影响MySQL的并发连接数目】.单位:n
-p size:设置管道缓冲区的最大值.单位:kbytes
-s size:设置堆栈的最大值.单位:kbytes
ulimit -s unlimited
-t size:设置CPU使用时间的最大上限.单位:seconds
ulimit -t unlimited
-v size:设置虚拟内存的最大值.单位:kbytes 5
-u 设置各linux 用户的最大进程数
ulimit -u 10000

#暂时修改直接使用
ulimit -参数 xx
如:
同时修改软硬设置   ulimit -SHn 4500

永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件,如

1)、解除 Linux 系统的最大进程数和最大文件打开数限制:
vi /etc/security/limits.conf
# 添加如下的行
* soft noproc 11000
* hard noproc 11000
* soft nofile 8192
* hard nofile 8192
#如此每次用户登录后就依照此值设置。


说明:* 代表针对所有用户
noproc 是代表最大进程数
nofile 是代表最大文件打开数
可以将文件句柄限制统一改成软11000,硬11000.配置文件最前面的是指domain,设置为星号代表全局,另外你也可以针对不同的用户做出不同的限制
注意.这个当中的硬限制是实际的限制,而软限制,是warnning限制,只会做出warning.其实ulimit命令本身就有分软硬设置,加-H就是硬,加-S就是软
默认显示的是软限制,如果运行ulimit命令修改的时候没有加上的话,就是两个参数一起改变.

2)、让 SSH 接受 Login 程式的登入,方便在 ssh 客户端查看 ulimit -a 资源限制:
a、vi /etc/ssh/sshd_config
把 UserLogin 的值改为 yes,并把 # 注释去掉
b、重启 sshd 服务:
/etc/init.d/sshd restart
#新版本好像不用设置这个!也没有这个配置选项

3)、修改所有 linux 用户的环境变量文件:
vi /etc/profile
ulimit -u 10000
ulimit -n 4096
ulimit -d unlimited
ulimit -m unlimited
ulimit -s unlimited
ulimit -t unlimited
ulimit -v unlimited

4)、生效
修改完重新登录就可以见到.可以用ulimit -a 查看确认.)

注意:如果你使用squid的话,你要在/etc/init.d/squid的文件加入ulimit -HSn 65535.另外,在squid.conf中也要加入max_filedesc 16384

特殊说明:
注:上面这种方式只是改变了用户登陆系统后的文件打开数,对于/etc/init.d /nginx这种的启动脚本并不起作用,像这种启动脚本,需要在脚本内 程序命令前加一行:
ulimit -HSn 65535

补充:可不设置
生产服务器的配置说明
有时候在程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。
修改2个文件。
1./etc/security/limits.conf
vi /etc/security/limits.conf
加上:
* soft nofile 8192
* hard nofile 20480

2./etc/pam.d/login
session required /lib/security/pam_limits.so
另外确保/etc/pam.d/system-auth文件有下面内容
session required /lib/security/$ISA/pam_limits.so
这一行确保系统会执行这个限制。

3.一般用户的.bash_profile
#ulimit -n 1024
重新登陆ok

Linux 调优基本策略(ulimit) 2010-07-14 00:19 本文介绍了linux下使用ulimit调优linux系统。

系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时,经常使用的一种简单手段。ulimit 是一种 linux 系统的内键功能,它具有一套参数集,用于为由它生成的 shell 进程及其子进程的资源使用设置限制。本文将在后面的章节中详细说明 ulimit 的功能,使用以及它的影响,并以具体的例子来详细地阐述它在限制资源使用方面的影响。

ulimit -a 用来显示当前的各种用户进程限制。

Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况, 设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个: # ulimit -u 10000

对于需要做许多 socket 连接并使它们处于打开状态的 Java 应用程序而言, 最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。

# ulimit -n 4096

将每个进程可以打开的文件数目加大到4096,缺省为1024 其他建议设置成无限制(unlimited)的一些重要设置是:

数据段长度:ulimit -d unlimited 最大内存大小:ulimit -m unlimited 堆栈大小:ulimit -s unlimited CPU 时间:ulimit -t unlimited 虚拟内存:ulimit -v unlimited

暂时地,适用于通过 ulimit 命令登录 shell 会话期间。 永久地,通过将一个相应的 ulimit 语句添加到由登录 shell 读取的文件中, 即特定于 shell 的用户资源文件,如:

1)、解除 Linux 系统的最大进程数和最大文件打开数限制:

vi /etc/security/limits.conf # 添加如下的行

* soft noproc 11000 * hard noproc 11000 * soft nofile 4100 * hard nofile 4100

说明:* 代表针对所有用户 noproc 是代表最大进程数 nofile 是代表最大文件打开数

2)、让 SSH 接受 Login 程式的登入,方便在 ssh 客户端查看 ulimit -a 资源限制: a、vi /etc/ssh/sshd_config 把 UserLogin 的值改为 yes,并把 # 注释去掉 b、重启 sshd 服务: /etc/init.d/sshd restart

3)、修改所有 linux 用户的环境变量文件:

# vi /etc/profile ulimit -u 10000 ulimit -n 4096 ulimit -d unlimited ulimit -m unlimited ulimit -s unlimited ulimit -t unlimited ulimit -v unlimited

有时候在程序里面需要打开多个文件,进行分析,系统一般默认数量是1024,(用ulimit -a可以看到)对于正常使用是够了,但是对于程序来讲,就太少了。 修改2个文件。

1./etc/security/limits.conf vi /etc/security/limits.conf 加上:

* soft nofile 8192 * hard nofile 20480

2./etc/pam.d/login

session required /lib/security/pam_limits.so

另外确保/etc/pam.d/system-auth文件有下面内容

session required /lib/security/$ISA/pam_limits.so

这一行确保系统会执行这个限制。

3.一般用户的.bash_profile

#ulimit -n 1024

重新登陆ok

linux ulimit调优 2010-05-15 11:35ulimit -a 用来显示当前的各种用户进程限制。 Linux对于每个用户,系统限制其最大进程数。为提高性能,可以根据设备资源情况,设置各linux 用户的最大进程数,下面我把某linux用户的最大进程数设为10000个: ulimit -u 10000 对于需要做许多 socket 连接并使它们处于打开状态的Java 应用程序而言,最好通过使用 ulimit -n xx 修改每个进程可打开的文件数,缺省值是 1024。 ulimit -n 4096 将每个进程可以打开的文件数目加大到4096,缺省为1024 其他建议设置成无限制(unlimited)的一些重要设置是: 数据段长度:ulimit -d unlimited 最大内存大小:ulimit -m unlimited 堆栈大小:ulimit -s unlimited CPU 时间:ulimit -t unlimited 虚拟内存:ulimit -v unlimited 公司服务器需要调整 ulimit的stack size 参数调整为unlimited 无限,使用ulimit -s unlimited时只能在当时的shell见效,重开一个shell就失效了。。于是得在/etc/profile 的最后面添加ulimit -s unlimited 就可以了,source /etc/profile使修改文件生效。 如果你碰到类似的错误提示ulimit: max user processes: cannot modify limit: 不允许的操作 ulimit: open files: cannot modify limit: 不允许的操作 为啥root用户是可以的?普通用户又会遇到这样的问题? 看一下/etc/security/limits.conf大概就会明白。 linux对用户有默认的ulimit限制,而这个文件可以配置用户的硬配置和软配置,硬配置是个上限。 超出上限的修改就会出“不允许的操作”这样的错误。 在limits.conf加上 *        soft    noproc 10240 *        hard    noproc 10240 *        soft    nofile 10240 *        hard    nofile 10240 就是限制了任意用户的最大线程数和文件数为10240。

正确配置Linux系统ulimit值的方法

在Linux下面部署应用的时候,有时候会遇上Socket/File: Can’t open so many files的问题;这个值也会影响服务器的最大并发数,其实Linux是有文件句柄限制的,而且Linux默认不是很高,一般都是1024,生产服务器用其实很容易就达到这个数量。下面说的是,如何通过正解配置来改正这个系统默认值。因为这个问题是我配置Nginx+php5时遇到了,所以我将这篇归纳进nginx+apache篇。

查看方法

我们可以用ulimit -a来查看所有限制值 [root@centos5 ~]# ulimit -a core file size          (blocks, -c) 0 data seg size           (kbytes, -d) unlimited max nice                        (-e) 0 file size               (blocks, -f) unlimited pending signals                 (-i) 4096 max locked memory       (kbytes, -l) 32 max memory size         (kbytes, -m) unlimited open files                      (-n) 1024 pipe size            (512 bytes, -p) 8 POSIX message queues     (bytes, -q) 819200 max rt priority                 (-r) 0 stack size              (kbytes, -s) 10240 cpu time               (seconds, -t) unlimited max user processes              (-u) 4096 virtual memory          (kbytes, -v) unlimited file locks                      (-x) unlimited||<

其中 "open files (-n) 1024 "是Linux操作系统对一个进程打开的文件句柄数量的限制(也包含打开的SOCKET数量,可影响MySQL的并发连接数目)。这个值可用ulimit命令来修改,但ulimit命令修改的数值只对当前登录用户的目前使用环境有效,系统重启或者用户退出后就会失效(在布署Nginx+FastCGI我就遇到这个问题,将ulimit -SHn 65535放到/etc/rc.d/rc.local也没起什么作用)

系统总限制是在这里,/proc/sys/fs/file-max。可以通过cat查看目前的值,修改/etc/sysctl.conf 中也可以控制。

另外还有一个,/proc/sys/fs/file-nr,可以看到整个系统目前使用的文件句柄数量。

查找文件句柄问题的时候,还有一个很实用的程序lsof。可以很方便看到某个进程开了那些句柄,也可以看到某个文件/目录被什么进程占用了。

修改方法 若要令修改ulimits的数值永久生效,则必须修改配置文档,可以给ulimit修改命令放入/etc/profile里面,这个方法实在是不方便,还有一个方法是修改/etc/sysctl.conf。我修改了,测试过,但对用户的ulimits -a 是不会改变的,只是/proc/sys/fs/file-max的值变了。

我认为正确的做法,应该是修改/etc/security/limits.conf 里面有很详细的注释,比如 * soft   nofile   32768 * hard nofile 65536 就可以将文件句柄限制统一改成软32768,硬65536。配置文件最前面的是指domain,设置为星号代表全局,另外你也可以针对不同的用户做出不同的限制。

注意:这个当中的硬限制是实际的限制,而软限制,是warnning限制,只会做出warning;其实ulimit命令本身就有分软硬设置,加-H就是硬,加-S就是软 默认显示的是软限制,如果运行ulimit命令修改的时候没有加上的话,就是两个参数一起改变。

生效 因为我平时工作最多的是部署web环境(Nginx+FastCGI外网生产环境和内网开发环境),重新登陆即可(reboot其实也行)我分别用root和www用户登陆,用ulimit -a分别查看确认,做这之前最好是重启下ssh服务,service sshd restart。

Linux 系统设置 ulimit 以及 Core文件的生成 2009年10月27日 星期二 上午 10:54 查看限制情况 ulimit -a

可以看到如下信息

core file size          (blocks, -c) 0 data seg size           (kbytes, -d) unlimited file size               (blocks, -f) unlimited pending signals                 (-i) 1024 max locked memory       (kbytes, -l) 32 max memory size         (kbytes, -m) unlimited open files                      (-n) 1024 pipe size            (512 bytes, -p) 8 POSIX message queues     (bytes, -q) 819200 stack size              (kbytes, -s) 10240 cpu time               (seconds, -t) unlimited max user processes              (-u) 4096 virtual memory          (kbytes, -v) unlimited file locks                      (-x) unlimited

而我们需要修改的是open files (-n) 1024的值

于是命令就是limit -n 2048(随各自需要设置)

-----------------------------------------------------------------------------------

功能说明:控制shell程序的资源。

语  法:ulimit [-aHS][-c <core文件上限>][-d <数据节区大小>][-f <文件大小>][-m <内存大小>][-n <文件数目>][-p <缓冲区大小>][-s <堆叠大小>][-t <CPU时间>][-u <程序数目>][-v <虚拟内存大小>]

补充说明:ulimit为shell内建指令,可用来控制shell执行程序的资源。

参  数: -a  显示目前资源限制的设定。 -c <core文件上限>  设定core文件的最大值,单位为区块。 -d <数据节区大小>  程序数据节区的最大值,单位为KB。 -f <文件大小>  shell所能建立的最大文件,单位为区块。 -H  设定资源的硬性限制,也就是管理员所设下的限制。 -m <内存大小>  指定可使用内存的上限,单位为KB。 -n <文件数目>  指定同一时间最多可开启的文件数。 -p <缓冲区大小>  指定管道缓冲区的大小,单位512字节。 -s <堆叠大小>  指定堆叠的上限,单位为KB。 -S  设定资源的弹性限制。 -t <CPU时间>  指定CPU使用时间的上限,单位为秒。 -u <程序数目>  用户最多可开启的程序数目。 -v <虚拟内存大小>  指定可使用的虚拟内存上限,单位为KB。

------------------

1,说明: ulimit用于shell启动进程所占用的资源.

2,类别: shell内建命令

3,语法格式: ulimit [-acdfHlmnpsStvw] [size]

4,参数介绍:QUOTE: -H 设置硬件资源限制. -S 设置软件资源限制. -a 显示当前所有的资源限制. -c size:设置core文件的最大值.单位:blocks -d size:设置数据段的最大值.单位:kbytes -f size:设置创建文件的最大值.单位:blocks -l size:设置在内存中锁定进程的最大值.单位:kbytes -m size:设置可以使用的常驻内存的最大值.单位:kbytes -n size:设置内核可以同时打开的文件描述符的最大值.单位:n -p size:设置管道缓冲区的最大值.单位:kbytes -s size:设置堆栈的最大值.单位:kbytes -t size:设置CPU使用时间的最大上限.单位:seconds -v size:设置虚拟内存的最大值.单位:kbytes

5,简单实例:

1]在RH8的环境文件/etc/profile中,我们可以看到系统是如何配置ulimit的:CODE: #grep ulimit /etc/profile ulimit -S -c 0 > /dev/null 2>&1

这条语句设置了对软件资源和对core文件大小的设置

2]如果我们想要对由shell创建的文件大小作些限制,如:CODE: #ll h -rw-r--r-- 1 lee lee 150062 7月 22 02:39 h #ulimit -f 100 #设置创建文件的最大块(一块=512字节) #cat h>newh File size limit exceeded #ll newh -rw-r--r-- 1 lee lee 51200 11月 8 11:47 newh

文件h的大小是150062字节,而我们设定的创建文件的大小是512字节x100块=51200字节 当然系统就会根据你的设置生成了51200字节的newh文件.

3]可以像实例1]一样,把你要设置的ulimit放在/etc/profile这个环境文件中.

------------------------------------------------------------------------------------------------------------------

当系统中的一些程序在遇到一些错误以及crash时,系统会自动产生core文件记录crash时刻系统信息,包括内存和寄存器信息,用以程序员日后debug时可以使用。这些错误包括段错误、非法指令、总线错误或用户自己生成的退出信息等等,一般地,core文件在当前文件夹中存放。

core文件有时可能在你发生错误时,并没有出现在你当前的文件夹中,发生这种情况的原因有两个:一个是当前终端被设置为不能弹出core文件;另一种则是core文件被指定了路径。

对于前者,我们可以使用ulimit命令对core文件的大小进行设定。一般默认情况下,core文件的大小被设置为0,这样系统就不dump出core文件了。这时,使用命令:ulimit -c unlimited进行设置,就可以把core文件的大小设置为无限大,同时也可以使用数字来替代unlimited,对core文件的上限制做更精确的设定。

除了可以设置core文件的大小之外,还可以对core文件的名称进行一些规定。这种设置是对/proc/sys/kernel/core_pattern和/proc/sys/kernel/core_uses_pid这两个文件进行修改。改动这两个文件的方法如下:

echo <pattern> > /proc/sys/kernel/core_pattern

echo <"0"/"1"> /proc/sys/kernel/core_uses_pid

并且注意,只有超级用户才可以修改这两个表。

core_pattern接受的是core文件名称的pattern,它包含任何字符串,并且用%作为转移符号生成一些标示符,为core文件名称加入特殊含义。已定义的标示符有如下这些:

%%:相当于%

%p:相当于<pid>

%u:相当于<uid>

%g:相当于<gid>

%s:相当于导致dump的信号的数字

%t:相当于dump的时间

%e:相当于执行文件的名称

%h:相当于hostname

除以上这些标志位外,还规定:

1、末尾的单个%可以直接去除;

2、%加上除上述以外的任何字符,%和该字符都会被去除;

3、所有其他字符都作为一般字符加入名称中;

4、core文件的名称最大值为64个字节(包括'\0');

5、core_pattern中默认的pattern为core;

6、为了保持兼容性,通过设置core_uses_pid,可以在core文件的末尾加上%p;

7、pattern中可以包含路径信息。

------------------------------------------------------------------------------------------------------------------

下面的资料是从互联网上整理的来的,参考文献如下:

http://blog.csdn.net/hanchaoman/archive/2009/08/03/4405655.aspx

http://www.mysys-admin.org/category/general/

1. 可以用ulimit -a 查看一下栈的大小。 在内核2.6.20下, stack size 为8192 kbytes 如果这里没有限制,就栈的大小就只受内存的限制。2G是上限。

2. core 文件 * 开启或关闭core文件的生成 ulimit -c 可以查看是否打开此选项,若为0则为关闭; ulimit -c 0可手动关闭 ulimit -c 1000 为设置core文件大小最大为1000k

ulimit -c unlimited 设置core文件大小为不限制大小

很多系统在默认的情况下是关闭生成core文件的,这个命令可以加到你的profile中去

3.设置Core Dump的核心转储文件目录和命名规则

在默认的情况下,很多系统的core文件是生成在你运行程序的目录下,或者你在程序中chdir后的那个目录,然后在core文件的后面加了一个pid。在实际工作中,这样可能会造成很多目录下产生core文件,不便于管理,实际上,在2.6下,core文件的生成位置和文件名的命名都是可以配置的。

/proc/sys/kernel/core_uses_pid可以控制产生的core文件的文件名中是否添加pid作为扩展,如果添加则文件内容为1,否则为0 proc/sys/kernel/core_pattern可以设置格式化的core文件保存位置或文件名,比如原来文件内容是core-%e 可以这样修改: echo "/tmp/core-%e-%p" > core_pattern 将会控制所产生的core文件会存放到/corefile目录下,产生的文件名为core-命令名-pid-时间戳 以下是参数列表: %p - insert pid into filename 添加pid %u - insert current uid into filename 添加当前uid %g - insert current gid into filename 添加当前gid %s - insert signal that caused the coredump into the filename 添加导致产生core的信号 %t - insert UNIX time that the coredump occurred into filename 添加core文件生成时的unix时间 %h - insert hostname where the coredump happened into filename 添加主机名 %e - insert coredumping executable name into filename 添加命令名

当然,你可以用下列方式来完成 sysctl -w kernel.core_pattern=/tmp/core-%e-%p

这些操作一旦计算机重启,则会丢失,如果你想持久化这些操作,可以在 /etc/sysctl.conf文件中增加: kernel.core_pattern=/tmp/core%p

加好后,如果你想不重启看看效果的话,则用下面的命令: sysctl -p /etc/sysctl.conf

------------------------------------------------------------------------------------------------------------------

高手指教:

    解决的问题: 现有一程序P 长期在服务器上运行,目前经常是每1天死掉一次(段错误)。

    目前解决方法: 用SecureCRT开一个终端,并在服务其上设置ulimit -c nulimited,然后启动程序P。用ulimite -a 命令查询结果如下:

         core file size       (blocks, -c) unlimited data seg size           (kbytes, -d) unlimited file size             (blocks, -f) unlimited pending signals                 (-i) 1024 max locked memory    (kbytes, -l) 32 ............ 表明core文件可以生成。

         并测试利用kill -6 pid能够core文件。

   目前的困难:

         当运行ulimit -c nulimited终端 (并且该终端将程序P启动到后台了 ./P &)关闭,程序P死掉后并没有生成 core文件。 经试验后发现ulimit 命令与终端有关。

   高手指教: 如何设置能够生成core 文件,与终端无关 即,程序启动,关闭终端,当程序死掉(段错误)后能够生成core文件。

在 /etc/security/limits.conf (中设置 redhat衍生系linux) 或 /etc/profile中的: # No core files by default ulimit -S -c 0 > /dev/null 2>&1

注释掉上面一行。

还有其他UNIX类操作系统也有自己的配置文件可以设置。

------------------------------------------------------------------------------------------------------------------ gdb core 多线程 在linux环境下调试多线程,总觉得不像.NET那么方便。这几天就为找一个死锁的bug折腾好久,介绍一下用过的方法吧。

多线程如果dump,多为段错误,一般都涉及内存非法读写。可以这样处理,使用下面的命令打开系统开关,让其可以在死掉的时候生成core文件。 ulimit -c unlimited 这样的话死掉的时候就可以在当前目录看到core.pid(pid为进程号)的文件。接着使用gdb: gdb ./bin ./core.pid 进去后,使用bt查看死掉时栈的情况,在使用frame命令。

还有就是里面某个线程停住,也没死,这种情况一般就是死锁或者涉及消息接受的超时问题(听人说的,没有遇到过)。遇到这种情况,可以使用: gcore pid (调试进程的pid号) 手动生成core文件,在使用pstack(linux下好像不好使)查看堆栈的情况。如果都看不出来,就仔细查看代码,看看是不是在if,return,break,continue这种语句操作是忘记解锁,还有嵌套锁的问题,都需要分析清楚了。

最后,说一句,静心看代码,捶胸顿足是没有用的。

-------------------------------------

1,说明: ulimit用于shell启动进程所占用的资源. 2,类别: shell内建命令 3,语法格式: ulimit [-acdfHlmnpsStvw] [size] 4,参数介绍: -H 设置硬件资源限制. -S 设置软件资源限制. -a 显示当前所有的资源限制. -c size:设置core文件的最大值.单位:blocks -d size:设置数据段的最大值.单位:kbytes -f size:设置创建文件的最大值.单位:blocks -l size:设置在内存中锁定进程的最大值.单位:kbytes -m size:设置可以使用的常驻内存的最大值.单位:kbytes -n size:设置内核可以同时打开的文件描述符的最大值.单位:n -p size:设置管道缓冲区的最大值.单位:kbytes -s size:设置堆栈的最大值.单位:kbytes -t size:设置CPU使用时间的最大上限.单位:seconds -v size:设置虚拟内存的最大值.单位:kbytes 5,简单实例: 5.举例 在Linux下写程序的时候,如果程序比较大,经常会遇到“段错误”(segmentation fault)这样的问题,这主要就是由于Linux系统初始的堆栈大小(stack size)太小的缘故,一般为10M。我一般把stack size设置成256M,这样就没有段错误了!命令为: ulimit   -s 262140 如果要系统自动记住这个配置,就编辑/etc/profile文件,在 “ulimit -S -c 0 > /dev/null 2>&1”行下,添加“ulimit   -s 262140”,保存重启系统就可以了! 1]在RH8的环境文件/etc/profile中,我们可以看到系统是如何配置ulimit的: #grep ulimit /etc/profile ulimit -S -c 0 > /dev/null 2>&1 这条语句设置了对软件资源和对core文件大小的设置 2]如果我们想要对由shell创建的文件大小作些限制,如: #ll h -rw-r--r-- 1 lee lee 150062 7月 22 02:39 h #ulimit -f 100 #设置创建文件的最大块(一块=512字节) #cat h>newh File size limit exceeded #ll newh -rw-r--r-- 1 lee lee 51200 11月 8 11:47 newh 文件h的大小是150062字节,而我们设定的创建文件的大小是512字节x100块=51200字节 当然系统就会根据你的设置生成了51200字节的newh文件. 3]可以像实例1]一样,把你要设置的ulimit放在/etc/profile这个环境文件中. 用途 设置或报告用户资源极限。 语法 ulimit [ -H ] [ -S ] [ -a ] [ -c ] [ -d ] [ -f ] [ -m ] [ -n ] [ -s ] [ -t ] [ Limit ] 描述 ulimit 命令设置或报告用户进程资源极限,如 /etc/security/limits 文件所定义。文件包含以下缺省值极限: fsize = 2097151 core = 2097151 cpu = -1 data = 262144 rss = 65536 stack = 65536 nofiles = 2000 当新用户添加到系统中时,这些值被作为缺省值使用。当向系统中添加用户时,以上值通过 mkuser 命令设置,或通过 chuser 命令更改。 极限分为软性或硬性。通过 ulimit 命令,用户可将软极限更改到硬极限的最大设置值。要更改资源硬极限,必须拥有 root 用户权限。 很多系统不包括以上一种或数种极限。 特定资源的极限在指定 Limit 参数时设定。Limit 参数的值可以是每个资源中指定单元中的数字,或者为值 unlimited。要将特定的 ulimit 设置为 unlimited,可使用词 unlimited。 注:在 /etc/security/limits 文件中设置缺省极限就是设置了系统宽度极限, 而不仅仅是创建用户时用户所需的极限。 省略 Limit 参数时,将会打印出当前资源极限。除非用户指定 -H 标志,否则打印出软极限。当用户指定一个以上资源时,极限名称和单元在值之前打印。如果未给予选项,则假定带有了 -f 标志。 由于 ulimit 命令影响当前 shell 环境,所以它将作为 shell 常规内置命令提供。如果在独立的命令执行环境中调用该命令,则不影响调用者环境的文件大小极限。以下示例中正是这种情况: nohup ulimit -f 10000 env ulimit 10000 一旦通过进程减少了硬极限,若无 root 特权则无法增加,即使返回到原值也不可能。 关于用户和系统资源极限的更多信息,请参见 AIX 5L Version 5.3 Technical Reference: Base Operating System and Extensions Volume 1 中的 getrlimit、setrlimit 或 vlimit 子例程。 标志 -a     列出所有当前资源极限。 -c     以 512 字节块为单位,指定核心转储的大小。 -d     以 K 字节为单位指定数据区域的大小。 -f     使用 Limit 参数时设定文件大小极限(以块计),或者在未指定参数时报告文件大小极限。缺省值为 -f 标志。 -H     指定设置某个给定资源的硬极限。如果用户拥有 root 用户权限,可以增大硬极限。任何用户均可减少硬极限。 -m     以 K 字节为单位指定物理存储器的大小。 -n     指定一个进程可以拥有的文件描述符的数量的极限。 -s     以 K 字节为单位指定堆栈的大小。 -S     指定为给定的资源设置软极限。软极限可增大到硬极限的值。如果 -H 和 -S 标志均未指定,极限适用于以上二者。 -t     指定每个进程所使用的秒数。 退出状态 返回以下退出值: 0     成功完成。 >0     拒绝对更高的极限的请求,或发生错误。 示例 要将文件大小极限设置为 51,200 字节,输入: ulimit -f 100

1 NSArray a = @[ @”aaa” ,@”bbb” ,@”ccccc” ]

id obj2 = a[0]

NSDictionary b = @{@"a":@"a333" ,@"ddd":@"dddd" } 

id obj2 = dict[@"key1"]

NSNumber *number; number = @'X'; number = @12345; number = @12345ul; number = @12345ll; number = @123.45f; number = @123.45; number = @YES;

property属性简化

property方便自动生成变量的getter 和setter。在.h文件中声明之后,不需要在.m文件中加上@synthesize关键字

3 typedef enum Week:NSUInteger{ Moday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday

    }Week;

工具箱 – iceskysl@eoe – eoe开发者社区.

工具箱

我08年开始使用Mac电脑,工作生活都离不开,如下是我常用的工具,供参考



常用工具




    • Chrome(推荐):自从用了chrome,就没有其他浏览器再能吸引我了,强烈推荐这个(我更喜欢dev版的)

    • Adium :兼容多种聊天账户,我用来开MSN,Google Talk 和 Google App Talk;

    • QQ for Mac:随着QQ的不断升级,现在的已经很棒了,算一款合格的mac软件了;

    • MPlayerX: 之前用的比较多的是VLC,后来发现了Mplayerx就几本不使VLC了,非常强大的视屏播放器;

    • Pixelmator:是个画图工具

    • FileZilla: FTP工具,在使windows的时候就使的FTP软件,尤其喜欢其支持sftp方式的连接和传输

    • 7zX:非常强大的压缩软件,压缩出来的中文兼容windows

    • Evernote:文字纪录,非常强大可以同步的记事本软件,比记事本强大好多倍,有了这个其他的文字纪录类的软件就不需要了(配合ios或者android客户端使用更棒),这个文章就是在Evernote里写的;

    • dropbox:资料同步软件,也非常强大,把自己的文件同步一份,走到哪里都是主场,非常好用(国内部分区域被墙,自己想办法);

    • IMKQIM:比较老牌的输入法,很不错,FIT就用的比较少了;

    • Quicksilver:非常棒的软件,快速启动,不用苦哈哈手工去找;



专业工具




    • TextMate:号称是编程人员的神器,其实无论哪个工具用熟了都很好,TextMate确实很优秀,优秀到尽管其中文字体支持的不好,还是必须的装;

    • MacVim:这个也是神器,把Vim用好到走到哪里都不怕;

    • iTerm:必备软件,管理SSH链接

    • MongoHub:管理MongoDB的工具

    • Sequel Pro:mysql管理工具,很强大;

    • MySQLWorkbench:mysql管理,用来做表结构设计的;

    • GitHub:用github的同学必备,很好用

    • GitX:可视化的git工具,你没有理由不用他

    • Balsamiq Mockups:原型图工具,非常棒

    • OmniGraffle Professional: 专业画图工具,其他的都不需要了;

    • Mindjet MindManager:脑图工具

    • RESTClient:REST测试工具

    • KeyCastr:显示快捷键工具

    • keycue:显示软件的快捷键

ruby没有python那么难用,虽然python功能也很强 。

用ruby上传下载文件到amazons3 ,几句代码搞定。

1 gem install aws-sdk

2

&nbsp;

&nbsp;

AWS.config(
:access_key_id => 'xxxxxxxxxx',
:secret_access_key => 'xxxxxxxxxxxxxxx')

s3=AWS::S3.new
s3.buckets.each do|bucket|
puts bucket.name
end

#upload
b =s3.buckets['test']
obj=b.objects['ttt/11.jpg']
puts obj

obj.write(Pathname.new('h:/2.jpg'),:acl=>'public_read')
#downloading file
obj=b.objects['100.jpg']
jpg=obj.read
File.open('h:/1001.jpg', 'wb') do |file|
obj.read do |chunk|
file.write(chunk)
end
end

&nbsp;

&nbsp;

nokogiri这个gem实在好用,配合spidr ,可以很方便的抓取网页 或图片。

spidr使用nokogiri

所以要灵活的话还是要用nokogiri 。

&nbsp;

require ‘net/http’
require “open-uri”
require ‘nokogiri’

weburl=’http://slide.eladies.sina.com.cn/fa/slide_3_22147_9430.html#p=17
doc = Nokogiri::HTML.parse(open(weburl), nil, ‘gb2312’) #不这样写会有乱码
doc.css(‘dl dd’).each do |link|

puts link.content

rescue
puts ‘error’
end
学习教程:

http://ruby.bastardsbook.com/chapters/html-parsing/

&nbsp;

&nbsp;