shell文件存放在 /bin/bash中(是一个可执行文件)
由于系统默认为 bash shell,但也可以自己启动和退出shell
- /bin/bash 输入即可开启 bash shell
- exit 输入即可退出 shell
因为运行系统后 shell会运行,可以使用 ps-f 来查看进程
一共有两个进程 ,一个为 -bash进程,一个为ps-f 指令的进程,输入bush 然后再输入 ps-f
PID为进程号 PPID为父进程号
出现两个bash的解释:输入bash后生成一个子shell,图中可以看出第二行的bash的父进程为-bush
多次输入bash 就会继承多次bash
孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么这些子进程将成为孤儿进程。
僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程没有调用wait或waitp获取子进程的状态信息,那么子进程的进程描符仍然保存在系统中,这种进程称为死进程。
孤儿进程的处理方式:被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。(不会使资源耗光)
僵尸进程会占用系统资源,可能会使系统不会产生新进程。
进程列表是一种命令分组( command grouping )。另一种命令分组是将命令放入花括号中,并在命令列表尾部加上分号(;)。语法为 { command; } 。使用花括号进行命令分组并不会像进程列表那样创建出子shell 。
例子:
pwd ;ls ;cd /etc/passwd (不会生成子shell)
进程列表:(pwd ;ls ;cd /etc/passwd)(会生成子shell)
sleep x (休眠x秒)
在命令后面加&:把命令置入后台模式,执行后会给出进程号
jobs [选项]
-l | 显示出命令的PID |
协程可以同时做两件事。它在后台生成一个子shell,并在这个子shell中执行命令。
除了会创建子shell之外,协程基本上就是将命令置入后台模式。
- coproc 命令
- coproc 协程名称 { 命令; } 给协程修改名称
修改名称格式:
例如:coproc my_coproc { sleep 500; }
外部命令也称为文件系统命令,并不是 bash shell程序的一部分,外部命令存放在 /bin或/sbin文件中,执行外部命令,会生成一个子进程称为 衍生。
内建命令不需要使用子进程来执行,已经和shell编译成了一 体,作为shell工具的组成部分存在。不需要借助外部程序文件来运行。
type 查看是否内建
type -a 查看是否内建并显示文件位置
是另一个shell的内建命令。命令别名允许你为常用的命令(及其参数)创建另一个名称