第一章 Linux shell介绍
1.3.0系统启动
1. 第一进程init启动,初始化系统
2. init启动另一进程打开终端处理标准输入,标准输出以及标准错误
3. 终端要求输入用户名<---/bin/login
4. 验证密码
5. /bin/login把环境变量传给shell,建立工作环境并通过/etc/passwd提取User, Home,Shell
1.3.1解析命令
1.把命令通过空格,制表符,拆分成令牌(单个字),回车作为结束符
2.判断命令是否内建命令,是就执行
3.在PATH查找这个命令,是就执行
4.返回退出状态
1.3.2输入命令
1.检查它是不是一个别名
2.如果不是,检查是否是一个内建命令或函数
3.如果不是,检查是不是存在磁盘上的可执行程序
1.4.1进程
进程是处在执行状态下,可以用唯一PID标识的程序
1.4.2Shell执行过程
1.5.4工作目录
工作目录可以被子进程继承,但子进程只能改变自己的工作目录,子进程退出后不影响父进程工作目录。
1.5.5变量
环境变量:继承父进程
局部变量:私用在进程内部创建
1.5.6重定向和管道
定义: 文件说明符分配给一个非终端时,它就成为I/O重新定向
例1. grep 'Tom' file
1.父进程fock子进程,grep子进程包含pid,env,stdin.stdout以及stderror
例2. grep 'Tom' file >tmp
1.父进程fock子进程
2.其中标准输出为tmp文件
例3. grep 'Tom'
1.父进程fock子进程
2.其中标准输入为tmp文件
定义:管道为进程之间的通信服务,前一个命令的输出作为后一个命令的输入。
本质:管道只是kernel内的一块可以被两个进程共享的缓冲区。
作用:管道简化了建立临时文件的麻烦。
例如: who|wc
1. 父进程呼叫pipe系统调用,创建写入管道和读取管道
2. 父进程为who和wc派生出两个进程,都继承了父进程
3. 第一个子进程关闭stdout,利用dup系统调用写入管道,当子进程结束时,输出就会定向到写入管道中
4. 第二个子进程关闭stdin,利用dup系统调用读取管道,stdin就会定向到读取管道中
结果: 当who子进程完成输出就会定向到写入管道,等待wc子进程的读取管道读取内容。
阅读(2338) | 评论(0) | 转发(1) |