0%

shell 与子进程

shell 与子进程 subshell

子进程

子进程,是从父子进程的概念出发的, unix 操作系统的进程从 init 进程 开始( init 进程 为 1, 而进程号 0 为系统原始进程,以下讨论的进程原则上不包括进程 0) 均有其对应的子进程,就算是由于父进程先行结束导致的孤儿进程,也会被 init 领养,使其父进程 ID 为 1。

创建子进程

常见的创建子进程的方式:

  • & 提交后台作业
  • | 管道
  • () 括号运算
  • 执行外部命令及脚本, ./filenamefilename

不创建子进程的执行方式

  • source filename
  • . filename

Examples

  1. 创建子进程
    28264 root       0:00 /bin/sh -c 3g_lookup /tmp/ethernet/monitor/usb3gDev
    28265 root       0:00 {3g_lookup} /bin/bash /usr/local/sbin/3g_lookup /tmp/ethernet/monitor/usb3gDev
    28270 root       0:00 {exe} sleep 3
  2. 不创建子进程
    29381 root       0:00 /bin/sh -c 3g_lookup /tmp/ethernet/monitor/usb3gDev
    29382 root       0:00 {3g_lookup} /bin/bash /usr/local/sbin/3g_lookup /tmp/ethernet/monitor/usb3gDev

Ref

  1. shell 与 subshell 与执行脚本的几种方式
  2. shell 脚本几种执行方式的区别
  3. 实例解析 shell 子进程