码迷,mamicode.com
首页 > 系统相关 > 详细

Linxu Shell 介绍

时间:2020-04-12 18:57:07      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:列表   模式   EOS   执行   img   有一个   linx   文件中   root   

Shell 的启动

每个用户的登陆自动启动的 Shell 在 /etc/passwd 文件中定义。例如我们可以使用 cat /etc/passwd 命令查看 root 用户在配置文件中配置默认启动的 Shell。从下图中可以看到,root 用户默认启动的 Shell 是 /bin/bash 这个 Shell。

技术图片

Shell 的父子关系

在父 Shell 中执行 /bin/bash 命令会打开一个新的子 Shell,再执行命令的话就是在子 Shell中执行的。首先在当前 Shell 中执行 /bin/bash,然后再执行 ps --forest 命令查看进程关系,可以看到如下结果。这里显示有两个 Shell,它们的关系是父子关系,同时在子 Shell 中有一个 ps 进程,它是子 Shell 的子进程。可以使用 exit 命令退出当前 Shell,若当前 Shell 为登陆时创建的 Shell,则会退出登陆。

技术图片

  • 进程列表

    使用小括号包裹一组命令可以使该组命令成为进程列表,即启动一个子 Shell 来执行这组命令。可以通过命令 echo $BASH_SUBSHELL 来判断是否有子 Shell 生成。该命令返回 0 则表明没有子 Shell 生成;如果返回 1 或者更大值,则表明有子 Shell 生成。例如下面的命令 (pwd; echo $BASH_SUBSHELL)。它的返回值为 1 。表明有一个子 Shell。

    技术图片

  • 后台使用

    将进程置于后台模式,可以在子 Shell 中处理繁重的工作,同时不会让子 Shell 的 IO 受制于终端。例如利用 (tar -cf testuser.tar /home/testuser; tar -cf root.tar /home/root)& 后台进程创建备份文件。
    使用协程。协程可以同时做两件事。它在后台生层一个子 Shell,并在这个子 Shell 中执行命令。

    # 启动一个协程
    coproc cat
    # 往协程输入数据
    echo "hello" >& ${COPROC[1]}
    # 读取协程的输入数据
    read -u "${COPROC[0]}" a
    # 显示读取数据
    echo $a
    

参考

[1] : Linux 命令行和 Shell 脚本编程大全
[2] : Is coproc command the same as command &?
[3] : Bash编程之协作进程coproc

Linxu Shell 介绍

标签:列表   模式   EOS   执行   img   有一个   linx   文件中   root   

原文地址:https://www.cnblogs.com/sparkchan/p/12686567.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!