/images/hugo/avatar.png

6.9 脚本示例与练习

脚本示例与练习

/images/linux_mt/linux_mt.jpg

本节是一些常用的脚本示例,可供我们学习参考

1. 条件判断练习

更改主机名

将当前主机名称保存至hostName变量中;主机名如果为空,或者为localhost.localdomain,则将其设置为www.magedu.com;

asyncio

1. 操作系统知识

1.1 并发与并行

并行: 在某一时间点, 存在多于一个进程在运行

并发: 在某一段时间, 存在多于一个进程在运行

1.2 I/O 模型

  1. 同步阻塞I/O
  2. 同步非阻塞I/O
  3. 异步阻塞I/O – I/O多路复用
  4. 异步非阻塞I/O – I/O操作在操作系统内核中完成, 完成后通过应用程序
  5. 信号驱动I/O - 向程序发送信号, I/O操作在用户空间完成
  6. epoll - I/O多路复用的改进版本, 又称为事件驱动模型

附注:

6.8 bash 配置文件

bash 配置文件

/images/linux_mt/linux_mt.jpg

bash 的配置文件也是 shell 脚本,用于定义环境变量,别名或运行一些特殊用途的脚本。比如一些特殊用途的别名,我们不想每次登陆 shell 后都重新设置,可以定义在配置文件中;又比如想将一些特定目录添加到 PATH 环境变量中等等。要理解 bash 的配置文件,我们首先需要明白 bash 的两种登陆类型,它们会分别读取不同的配置文件,所以本节的内容如下:

futrue

1. futrue 的概念

1.1 对 futrue 的理解

期物:

  • 包括:
    • concurrent.futures.Future 类
    • asyncio.Future 类
    • Twisted 的 Deferred 类
    • Tornado 的 Future 类
  • 作用:
    • 指一种对象, 表示异步执行的操作
    • 类的实例表示可能已经完成或者尚未完成的延迟计算
  • 理解:
    • 期物封装待完成的操作, 可以放入队列
    • 完成的状态可以查询, 得到结果(或抛出异常)后可以获取结果(或异常)

2. concurrent.futures

组成:

6.7 程序交互与信号捕捉

程序交互,退出状态与信号捕捉

/images/linux_mt/linux_mt.jpg

本节我们开始学习 bash shell 编程的第七部分,包含以下内容:

  1. 如何在程序执行过程中与用户交互
  2. bash 编程调试
  3. 设置脚本执行的状态返回值
  4. 如何在 bash 中使用 ASCII 颜色
  5. dialog 实现窗口化编程
  6. 信号捕捉

1. 用户交互

bash 中与用户交互主要通过 read 命令完成,read 可以输出一段文字提示用户输入指定内容,并将用户输入保存在特定变量中,read 的使用方式如下

协程

1. 协程的概念

1.1 对协程的理解

协程理解:

  • 协程是用户空间的线程,编程语言必需提供接口实现线程调度
  • python 中 yield 是一种流程控制工具,使用它可以实现协程

生成器的编写风格: