ulimit 参数说明
选项 [options] | 含义 | 例子 |
-H | 设置硬资源限制,一旦设置不能增加。 | ulimit – Hs 64;限制硬资源,线程栈大小为 64K。 |
-S | 设置软资源限制,设置后可以增加,但是不能超过硬资源设置。 | ulimit – Sn 32;限制软资源,32 个文件描述符。 |
-a | 显示当前所有的 limit 信息。 | ulimit – a;显示当前所有的 limit 信息。 |
-c | 最大的 core 文件的大小, 以 blocks 为单位。 | ulimit – c unlimited; 对生成的 core 文件的大小不进行限制。 |
-d | 进程最大的数据段的大小,以 Kbytes 为单位。 | ulimit -d unlimited;对进程的数据段大小不进行限制。 |
-f | 进程可以创建文件的最大值,以 blocks 为单位。 | ulimit – f 2048;限制进程可以创建的最大文件大小为 2048 blocks。 |
-l | 最大可加锁内存大小,以 Kbytes 为单位。 | ulimit – l 32;限制最大可加锁内存大小为 32 Kbytes。 |
-m | 最大内存大小,以 Kbytes 为单位。 | ulimit – m unlimited;对最大内存不进行限制。 |
-n | 可以打开最大文件描述符的数量。 | ulimit – n 128;限制最大可以使用 128 个文件描述符。 |
-p | 管道缓冲区的大小,以 Kbytes 为单位。 | ulimit – p 512;限制管道缓冲区的大小为 512 Kbytes。 |
-s | 线程栈大小,以 Kbytes 为单位。 | ulimit – s 512;限制线程栈的大小为 512 Kbytes。 |
-t | 最大的 CPU 占用时间,以秒为单位。 | ulimit – t unlimited;对最大的 CPU 占用时间不进行限制。 |
-u | 用户最大可用的进程数。 | ulimit – u 64;限制用户最多可以使用 64 个进程。 |
-v | 进程最大可用的虚拟内存,以 Kbytes 为单位。 | ulimit – v 200000;限制最大可用的虚拟内存为 200000 Kbytes。 |
A. 当程序尝试访问非法的内存地址时,例如访问未分配或者已释放的内存,操作系统会检测到这个错误并向进程发送一个信号(通常是SIGSEGV信号)。进程会根据自定义的信号处理函数来处理这个信号。如果没有为该信号设置自定义处理函数,操作系统会默认将进程终止。
C. ulimit -c设置的是函数调用栈的大小:这个说法是不正确的。ulimit -c命令用于设置生成的核心转储文件的最大大小,而不是设置函数调用栈的大小。函数调用栈的大小可以使用ulimit -s来设置。
D. malloc函数是操作系统最底层申请内存的接口:这个说法是不正确的。malloc函数是C语言标准库中的函数,用于在堆上动态分配内存。它并不直接与操作系统的底层接***互,而是通过操作系统提供的系统调用(如brk或mmap)来向操作系统请求内存。
如果目录 B 与文件 A 所在的目录不在同一个文件系统,则文件 A 的内容会被复制到目录 B 并删除原来的文件 A,这个操作会导致文件 A 的修改时间更新。如果目录 B 与文件 A 所在的目录在同一个文件系统,则文件 A 只会在文件系统目录中的位置被更新,其他元数据信息如 inode 号等都不会改变,这种情况下文件 A 的修改时间不会更新。