A B C
B C
C
22.显示并设置进程资源限度:ulimit
系统的可用资源是有限的,如果不限制用户和进程对系统资源的使用,则很容易陷入资源耗尽的地步,而使用ulimit可以控制进程对可用资源的访问。默认情况下Linux系统的各个资源都做了软硬限制,其中硬限制的作用是控制软限制(换言之,软限制不能高于硬限制)。使用ulimit-a可以查看当前系统的软限制(使用命令ulimit-a–H可查看系统的硬限制)。下面是该命令的运行结果,笔者对每行输出都做了注解。
- [root@localhost ~]# ulimit -a
#core
文件大小,单位是block
,默认为0
core file size (blocks, -c) 0
#
数据段大小,单位是kbyte
,默认不做限制
data seg size (kbytes, -d) unlimited
#
调度优先级,默认为0
scheduling priority (-e) 0
#
创建文件的大小,单位是block
,默认不做限制
file size (blocks, -f) unlimited
#
挂起的信号数量,默认是8192
pending signals (-i) 8192
#
最大锁定内存的值,单位是kbyte
,默认是32
max locked memory (kbytes, -l) 32
#
最大可用的常驻内存值,单位是kbyte
,默认不做限制
max memory size (kbytes, -m) unlimited
#
最大打开的文件数,默认是1024
open files (-n) 1024
#
管道最大缓冲区的值
pipe size (512 bytes, -p) 8
#
消息队列的最大值,单位是byte
POSIX message queues (bytes, -q) 819200
#
程序的实时性优先级,默认为0
realtime priority (-r) 0
#
栈大小,单位是kbyte
stack size (kbytes, -s) 10240
#
最大cpu
占用时间,默认不做限制
cpu time (seconds, -t) unlimited
#
用户最大进程数,默认是8192
max user processes (-u) 8192
#
最大虚拟内存,单位是kbyte
,默认不做限制
virtual memory (kbytes, -v) unlimited
#
文件锁,默认不做限制
file locks (-x) unlimited
每一行中都包含了相应的改变该项设置的参数,以最大可以打开的文件数为例(open files默认是1024),想要增大至4096则按照如下命令设置(可参照此方法调整其他参数)。
#
设置最大打开的文件数
#
该命令会同时设置硬限制和软限制
[root@localhost ~]# ulimit -n 4096
#
使用-S
参数单独设置软限制
[root@localhost ~]# ulimit -S -n 4096
#
使用-H
参数单独设置硬限制
[root@localhost ~]# ulimit -H -n 4096
使用ulimit直接调整参数,只会在当前运行时生效,一旦系统重启,所有调整过的参数就会变回系统默认值。所以建议将所有的改动放在ulimit的系统配置文件中。相关配置方法请参考笔者对相关配置文件的注释。
- [root@localhost ~]# cat etcsecurity/limits.conf
# etcsecurity/limits.conf
#
该文件是ulimit
的配置文件,任何对系统的ulimit
的修改都应该写入该文件
#
请将所有的设置写到该文件的最后
#Each line describes a limit for a user in the form:
#
配置应该写成下面这行的格式,即每个配置占用1
行,每行4
列
#
每列分别是<domain> <type> <item> <value>
#<domain> <type> <item> <value>
#
#
其中:
#<domain>
可以取的值如下:
# -
一个用户名
# -
一个组名,组名前面用@
符号
# -
通配符*
# -
通配符%
#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
#
#<type>
只有以下两个可用值:
# - soft
用于设置软限制
# - hard
用于设置硬限制
#<type> can have the two values:
# - "soft" for enforcing the soft limits
# - "hard" for enforcing hard limits
#
#<item>
的值可以是以下任意一种:
# - core - core
文件大小的限制 (KB)
# - data -
最大数据段限制 (KB)
# - fsize -
最大文件大小 (KB)
# - memlock -
最大锁定的内存大小 (KB)
# - nofile -
最大打开文件数
# - rss -
最大常驻内存值 (KB)
# - stack -
最大栈空间大小 (KB)
# - cpu -
最大CPU
使用时间 (MIN)
# - nproc -
最大进程数
# - as -
虚拟地址空间
# - maxlogins -
某用户的最大登录数
# - maxsyslogins -
系统用户最大登录数
# - priority -
用户进程的运行优先级
# - locks
–
用户最大可以锁定文件的数量
# - sigpending -
最大挂起的信号量数
# - msgqueue - POSIX
信号队列使用的最大内存值 (bytes)
# - nice -
最大nice
值
# - rtprio -
最大实时优先级
#
#<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
# - 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
# - rtprio - max realtime priority
#
#<domain> <type> <item> <value>
#
#
以下是使用样例,请参照配置
#* soft core 0
#* hard rss 10000
#@student hard nproc 20
#@faculty soft nproc 20
#@faculty hard nproc 50
#ftp hard nproc 0
#@student - maxlogins 4
23.测试表达式:test
该命令用于测试表达式EXPRESSION的值,根据测试结果返回0(测试失败)或1(测试成功)。由于该命令非常强大且在Shell脚本中非常重要,所以将会专门使用一节来讲解。其基本用法如下:
- [root@localhost ~]# test EXPRESSION