重导和管道
重导和管道不能单独使用,需要配合其他命令一起使用
重导
重导可将命令结果输出到文件中,有两种形式”>”和”>>”
“>”是将结果输出到文件中,将该文件中的原内容覆盖
1 | ls -a > dir.txt |
“>>”是将结果追加到文件中
1 | ls -a >> dir.txt |
在一个查询周期中,MySQL任何时刻都有一个状态,该状态可能会变化很多次,可以使用show full processlist
来进行查看
阻塞IO模型 默认情况下,所有文件操作都是阻塞的。 在进程空间中调用recvfrom,其系统调用直到数据包到达且被复制到应用进程的缓冲区中或者发生错误才返回,在此期间会一直等待。
非阻塞IO模型 recvfrom从应用层到内核的时候,如果缓冲区没有数据的话,就直接返回一个EWOULDBLOCK错误,然后轮询检查这个状态,看内核是否有数据到来
IO复用模型 linux中提供了select/poll,通过将一个或多个fd传递给select或poll系统调用,阻塞在select操作上,这样select/poll就可以侦测多个fd是否处于就绪状态。不过其是顺序扫描且支持的fd数量有限。
升级版的epoll基于事件驱动方式代替顺序扫描,当有fd就绪时,调用回调函数进行通知,性能更高
信号驱动IO模型 通过系统调用sigaction执行一个信号处理函数(该系统调用会立即返回,进程继续工作,非阻塞)。当数据准备就绪时,为该进程生成一个SIGIO信号,通过信号回调通知应用程序调用recvfrom来读取数据
内核通知我们何时可以开始一个IO操作,还需要通过recvfrom来读取数据,在将数据从内核复制到自己的缓冲区
异步IO 告知内核启动某个操作,并让内核在整个操作(包括数据从内核复制到用户自己的缓冲区)完成后通知。
内核通知我们操作何时已经完成