[linux]fork、source、exec、ulimit

exec和source都属于bash内部命令(builtins commands),在bash下输入man exec或man source能够查看全部的内部命令信息。 linux

bash shell的命令分为两类:外部命令和内部命令【type -a command 查看】。外部命令是经过系统调用或独立的程序实现的,如sed、awk等等。内部命令是由特殊的文件格式(.def)所实现,如cd、history、exec等等。 shell

shell变量大体分为三种类型: bash

1》内部变量:系统提供,不用定义,不能修改 函数

变量 含义
$0 当前脚本的文件名
$n 传递给脚本或函数的参数。n 是一个数字,表示第几个参数。例如,第一个参数是$1,第二个参数是$2。
$# 传递给脚本或函数的参数个数。
$* 传递给脚本或函数的全部参数。
$@ 传递给脚本或函数的全部参数。被双引号(" ")包含时,与 $* 稍有不一样,下面将会讲到。
$? 上个命令的退出状态,或函数的返回值。
$$ 当前Shell进程ID。对于 Shell 脚本,就是这些脚本所在的进程ID。
$*,$@:不被双引号(" ")包含时,都以"$1" "$2" … "$n" 的形式输出全部参数。 可是当它们被双引号(" ")包含时,"$*" 会将全部的参数做为一个总体,以"$1 $2 … $n"的形式输出全部参数;"$@" 会将各个参数分开,以"$1" "$2" … "$n" 的形式输出全部参数。

2》环境变量:系统提供,不用定义,能够修改,好比当前进程及其子进程使用的 PATH、PWD、SHELL 等 ui

3》用户变量:用户定义,能够修改 spa

【fork】 线程

fork是linux的系统调用,父进程建立一个子进程(child process)。子进程从父进程那里得到必定资源并继承父进程的环境!环境变量传给子进程的变量,只能单向从父进程传给子进程。无论子进程的环境变量如何变化,都不会影响父进程的环境变量。 orm

【source】命令即点(.)命令。 继承

在 bash下输入man source,找到source命令解释处,能够看到解释"Read and execute commands from filename in the current shell environment and ..."。从中能够知道,source命令是在当前进程中执行参数文件中的各个命令,而不是另起子进程(或sub-shell)。 进程

source命令是在当前进程中执行参数文件中的各个命令,而不是另起子进程(或sub-shell)。

【exec】

在bash下输入man exec,找到exec命令解释处,能够看到有"No new process is created."这样的解释,这就是说exec命令不产生新的子进程。那么exec与source的区别是什么呢?

exec命令在执行时会把当前的shell process关闭,而后换到后面的命令继续执行。

表 1. 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。
相关文章
相关标签/搜索