A. linux怎么修改文件打开数
limits.conf 文件实际是 Linux PAM(插入式认证模块,Pluggable Authentication Moles)中 pam_limits.so 的配置文件,而且只针对于单个会话。
limits.conf的格式如下:
username|@groupname type resource limit
username|@groupname:设置需要被限制的用户名,组名前面加@和用户名区别。也可以用通配符*来做所有用户的限制。
type:有 soft,hard 和 -,soft 指的是当前系统生效的设置值。hard 表明系统中所能设定的最大值。soft 的限制不能比har 限制高。用 - 就表明同时设置了 soft 和 hard 的值。
resource:
core - 限制内核文件的大小
date - 最大数据大小
fsize - 最大文件大小
memlock - 最大锁定内存地址空间
nofile - 打开文件的最大数目
rss - 最大持久设置大小
stack - 最大栈大小
cpu - 以分钟为单位的最多 CPU 时间
noproc - 进程的最大数目
as - 地址空间限制
maxlogins - 此用户允许登录的最大数目
要使 limits.conf 文件配置生效,必须要确保 pam_limits.so 文件被加入到启动文件中。查看 /etc/pam.d/login 文件中有:
session required /lib/security/pam_limits.so
例如:修改文件描述符大小(65536)
vi /etc/security/limits.conf
* soft nofile 65536
* hard nofile 65536
在线:
# ulimit -n 65535
# ulimit -n
65535
# ulimit -a
core file size (blocks, -c) unlimited
data seg size (kbytes, -d) unlimited
scheling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 3806
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 65535
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) 3806
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
B. 怎么查看Linux的core开关,以及如何打开和关闭
mp文件可以在程序crash时,方便我们查看程序crash的地方和上下文信息。在window下,要能生成mp文件,需要自己编写相应的代码。不过现在网上可以找到相应的代码,只要把它下载后然后加到自己的工程中去,就可以了!在linux下面就简单的许多。只要打开相应的开关,linux会自动在程序crash时生成相应的core文件。这个文件和window下的mp文件类似。
下面是简单的一些步骤:
1.查看当前是否已经打开了此开关
通过命令:ulimit -c 如果输出为 0
,则代表没有打开。如果为unlimited则已经打开了,就没必要在做打开。
2.通过命令打开
ulimit -c unlimited .然后通过步骤1,可以监测是否打开成功。
3.如果你要取消,很简单:ulimit -c 0 就可以了
通过上面的命令修改后,一般都只是对当前会话起作用,当你下次重新登录后,还是要重新输入上面的命令,所以很麻烦。我们可以把通过修改
/etc/profile文件 来使系统每次自动打开。步骤如下:
1.首先打开/etc/profile文件
一般都可以在文件中找到 这句语句:ulimit -S -c 0 /dev/null
2&1.ok,根据上面的例子,我们只要把那个0 改为
unlimited 就ok了。然后保存退出。
2.通过source /etc/profile 使当期设置生效。
3.通过ulimit -c 查看下是否已经打开。
其实不光这个命令可以加入到/etc/profile文件中,一些其他我们需要每次登录都生效的都可以加入到此文件中,因为登录时linux都会加载此文件。比如一些环境变量的设置。
还有一种方法可以通过修改/etc/security/limits.conf文件来设置,这个方法没有试过,也是网上看到。不过上面两种就可以了!
最后说一下生成core
mp文件的位置,默认位置与可执行程序在同一目录下,文件名是core.***,其中***是一个数字。core
mp文件名的模式保存在/proc/sys/kernel/core_pattern中,缺省值是core。通过以下命令可以更改core
mp文件的位置(如希望生成到/tmp/cores目录下)
echo “/tmp/cores/core”
/proc/sys/kernel/core_pattern
设置完以后我们可以做个测试,写个程序,产生一个异常。然后看到当前目录会有个core*的文件。然后我们可以
gdb core。* 程序 进行调试。
C. linux 的 ulimit 可以限制一些参数, nobody这种不可登录的用户是否受限 如何查看限制
root@qfgz:~# cat /etc/security/limits.conf
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain> <type> <item> <value>
#
#Where:
#<domain> can be:
# - an user name
# - a group name, with @group syntax
# - the wildcard *, for default entry
# - the wildcard %, can be also used with %group syntax,
# for maxlogin limit
# - NOTE: group and wildcard limits are not applied to root.
# To apply a limit to the root user, <domain> must be
# the literal username root.
#
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item> can be one of the following:
# - core - limits the core file size (KB)
# - data - max data size (KB)
# - fsize - maximum filesize (KB)
# - memlock - max locked-in-memory address space (KB)
# - nofile - max number of open files
# - rss - max resident set size (KB)
# - stack - max stack size (KB)
# - cpu - max CPU time (MIN)
# - nproc - max number of processes
# - as - address space limit (KB)
# - maxlogins - max number of logins for this user
# - maxsyslogins - max number of logins on the system
# - priority - the priority to run user process with
# - locks - max number of file locks the user can hold
# - sigpending - max number of pending signals
# - msgqueue - max memory used by POSIX message queues (bytes)
# - nice - max nice priority allowed to raise to values: [-20, 19]
# - rtprio - max realtime priority
# - chroot - change root to directory (Debian-specific)
#
#<domain> <type> <item> <value>
#
#* soft core 0
#root hard core 100000
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#ftp - chroot /ftp
#@student - maxlogins 4
* soft nofile 65535
* hard nofile 65535
root soft nofile 65535
root hard nofile 65535
root soft core unlimited
root hard core unlimited
# End of file
D. 安装linux系统Kmp需要启用不
kmp是在系统崩溃、死锁或者死机的时候用来转储内存运行参数的一个工具和服务
不需要分析内核崩溃原因的话,不用开启,需要的时候再开启也可以。
kmp 是一种先进的基于 kexec 的内核崩溃转储机制。当系统崩溃时,kmp 使用 kexec 启动到第二个内核。第二个内核通常叫做捕获内核,以很小内存启动以捕获转储镜像。第一个内核保留了内存的一部分给第二内核启动用。由于 kmp 利用 kexec 启动捕获内核,绕过了 BIOS,所以第一个内核的内存得以保留。这是内核崩溃转储的本质。
kmp 需要两个不同目的的内核,生产内核和捕获内核。生产内核是捕获内核服务的对像。捕获内核会在生产内核崩溃时启动起来,与相应的 ramdisk 一起组建一个微环境,用以对生产内核下的内存进行收集和转存。
(4)unlimitedlinux扩展阅读
kmp是在系统崩溃、死锁或者死机的时候用来转储内存运行参数的一个工具和服务。
打个比方,如果系统一旦崩溃那么正常的内核就没有办法工作了,在这个时候将由kmp产生一个用于capture当前运行信息的内核,该内核会将此时的内存中的所有运行状态和数据信息收集到一个mp core文件中以便于Red Hat工程师分析崩溃原因,一旦内存信息收集完成,系统将自动重启。这和以前的diskmp,netmp是同样道理。只不过kmp是RHEL6特有的。
查看Linux系统是否打开kmp:
执行命令:ulimit -c 如果输出为 0 ,则代表没有打开。如果为unlimited则已经打开。
临时打开/关闭Linux的kmp方法:
ulimit -c unlimited 打开;
ulimit -c 0 关闭;
E. linux普通用户 如何修改最大进程数限制 求
个可以通过修改 vi //etc/login
session required pam_loginuid.so
如果自己是 Linux 普通用户,用 Hard
的话可以减少最大可用的进程数;lib64/pam_limits.so
/limits.conf
vpsee hard nproc 32
@student hard nproc 32
@faculty hard nproc 64
上面的配置文件意思是说限制 vpsee 这个用户只能 fork 32 个进程;然后限制 student 这个用户组的每个成员最多能
fork 32 个进程;etc/pam.so
# vi /security/limits, -d) unlimited
scheling priority (-e) 0
file size (blocks,但是就不能重新增大这个限制了;用 Soft 的话可以自己自由增大和减小限制(ulimit,-H 和 -S
的详细说明可以参看 man ulimit)。不同的 Linux 版本对这个 ulimit -u 的默认值不同.d/security/pam_limits,不过这个无所谓,不过改成32后就不能再改成比32更大的了(比如64),只能再改成比32小
的: Operation not permitted
$ ulimit -a
core file size (blocks,ulimit 不带 -H 和 -S 参数的时候同时设置 Hard 和 Soft:
$ ulimit -u
8256
$ ulimit -u 32
$ ulimit -u 64
-bash: ulimit: max user processes: cannot modify limit,所以这个要看不同的发行版本;限制 faculty 这个用户组的每个成员最多能 fork 64 个进程。不过要事先检查系统是否有
pam_limits.so 这个模块以及是否已经加载:
# ls /lib64/security47, -s) 10240
cpu time (seconds
F. 怎样限制Linux用户的进程数
这个可以通过修改 vi /etc/security/limits.conf 文件来设定:
# vi /etc/security/limits.conf
vpsee hard nproc 32
@student hard nproc 32
@faculty hard nproc 64
上面的配置文件意思是说限制 vpsee 这个用户只能 fork 32 个进程;然后限制 student 这个用户组的每个成员最多能
fork 32 个进程;限制 faculty 这个用户组的每个成员最多能 fork 64 个进程。不过要事先检查系统是否有
pam_limits.so 这个模块以及是否已经加载:
# ls /lib64/security/pam_limits.so
/lib64/security/pam_limits.so
# vi /etc/pam.d/login
session required pam_loginuid.so
如果自己是 Linux 普通用户,不是 root 用户不能修改 limits.conf 和重启系统的话,可以用 ulimit
来临时限制自己允许创建的进程数,ulimit 有 Hard 和 Soft 两种方法限制,用 Hard
的话可以减少最大可用的进程数,但是就不能重新增大这个限制了;用 Soft 的话可以自己自由增大和减小限制(ulimit,-H 和 -S
的详细说明可以参看 man ulimit)。不同的 Linux 版本对这个 ulimit -u 的默认值不同,在 CentOS
上默认情况下最大运行进程数是 8256,在 Fedora 上是
1024,所以这个要看不同的发行版本,不过这个无所谓,反正可以改,不过改成32后就不能再改成比32更大的了(比如64),只能再改成比32小
的,ulimit 不带 -H 和 -S 参数的时候同时设置 Hard 和 Soft:
$ ulimit -u
8256
$ ulimit -u 32
$ ulimit -u 64
-bash: ulimit: max user processes: cannot modify limit: Operation not permitted
$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 8256
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
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 32
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
G. 我们想建一个教育培训的网站,但是不知道怎么选主机,您能给一些建议吗
是教育培训机构的官方网站
还是教育培训资料共享平台
还是教育培训论坛???
官方网站可以直接到万网、西部数码等大型网络主机提供商处购买,选择500M--到1G全能主机,最好附带mysql数据库或者sql数据库的机型
后两种建议使用服务器,并且建议使用海外服务器,国内服务器备案方面较为麻烦
H. linux 文件描述符最大是多少怎么计算的
最大值是系统相关的,linux shell 输入如下命令就知道,其中的“-n: file descriptors”就是最大限制值。
# ulimit -a
-f: file size (blocks) unlimited
-t: cpu time (seconds) unlimited
-d: data seg size (kb) unlimited
-s: stack size (kb) 8192
-c: core file size (blocks) 0
-m: resident set size (kb) unlimited
-l: locked memory (kb) 64
-p: processes 128
-n: file descriptors 1024
-v: address space (kb) unlimited
-w: locks unlimited
-e: scheling priority 0
-r: real-time priority 0
I. linux 设置堆栈大小 为无限制
你好。
执行命令ulimit -a,查看栈大小的限制。
通过使用 ulimit -s 数字 进行设置。
J. 如何设置 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
-------------
对于solaris
其实在系统里面有这样一个命令ulimit,以下是ulimit -a执行的结果:
time(seconds) unlimited
file(blocks) unlimited
data(kbytes) unlimited
stack(kbytes) 8192
coremp(blocks) unlimited
nofiles(descriptors) 1024
memory(kbytes) unlimited
其中nofiles就是文件描述符的变量值,该值受rlim_fd_cur这个参数的影响,可以用ulimit -n number命令来修改。但不管怎么改,程序仍然不能突破fd=256的限制。在Solaris Tunable Parameters Reference Manua这本书里面能查到以下的资料:
A 32-bit program using standard I/O is limited to 256 file descriptors。
A 64-bit program using standard I/O can use up to 2 billion descriptors。
这也就是说32位的程序是没有办法突破这个限制的,只有64位的程序才能使用高达2亿个文件描述符,SUN的软硬件在很早以前就实现了64位的架构,现在唯一要解决的就是将程序编译成64位程序,为了生成64位程序,就必须要有64位的编译器(其实不是这样的),如果你去www.sunfreeware.com下载64位编译器gcc,网站上没有特别注明是64位的gcc,但是会有个意外的收获,就是该软件的说明里面注明了只要在用gcc编译的时候加上-m64的option就能生成64位程序了。
于是用gcc -m64去编译生成一个64位程序后,用ulimit -n 102400将number of fd设成很大的情况下,所有问题迎刃而解,再也不存在文件描述符不够用的情况。
在/etc/system文件设置rlimi_fc_max和rlim_fd_cur格式如下:
* set hard limit on file descriptors
set rlim_fd_max = 4096
* set soft limit on file descriptors
set rlim_fd_cur = 1024
命令ulimit使用格式如下:
usage: ulimit [ -HSacdfnstv ] [ limit ]
ulimit -a是显示各参数的设置值,ulimit -n是用来设置fd的最大值的。
*************************************************
修改文件描述符限制
Solaris有两个参数控制进程可打开的文件描述符:rlim_fd_max,rlim_fd_cur。前者修改是个硬设置,修改需要权限,后者是个软设置,用户可以limit或者setrlimit() 修改,该值最大不能超过前者。一般我们在/etc/system里修改这两个参数
set rlim_fd_max = 65535
set rlim_fd_cur = 65535
==========================
ulimit 用于shell启动进程所占用的资源。
可以使用该命令查看进程占用资源的情况。
使用方法:ulimit [-acdfHlmnpsStvw] [size]
-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的:
#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这个环境文件中.
如果针对所有用户设置,可在/etc/security/limits.conf 设置.