0%

Lecture11-QA

  • QA

Lecture 11 QA

source script.sh 和 ./script.sh 有什么区别?

  • 这两种情况 script.sh 都会在 bash 会话中被读取和执行,不同点在于哪个会话执行这个命令。 对于 source 命令来说,命令是在当前的 bash 会话中执行的,因此当 source 执行完毕,对当前环境的任何更改(例如更改目录或是定义函数)都会留存在当前会话中。 单独运行 ./script.sh 时,当前的bash会话将启动新的bash会话(实例),并在新实例中运行命令 script.sh。 因此,如果 script.sh 更改目录,新的bash会话(实例)会更改目录,但是一旦退出并将控制权返回给父bash会话,父会话仍然留在先前的位置(不会有目录的更改)。 同样,如果 script.sh 定义了要在终端中访问的函数,需要用 source 命令在当前bash会话中定义这个函数。否则,如果你运行 ./script.sh,只有新的bash会话(进程)才能执行定义的函数,而当前的shell不能。

★各种软件包和工具存储在哪里?引用过程是怎样的? /bin 或 /lib 是什么?

  • /bin - 基本命令二进制文件
  • /sbin - 基本的系统二进制文件,通常是 root 运行的
  • /dev - 设备文件,通常是硬件设备接口文件
  • /etc - 主机特定的系统配置文件
  • /home - 系统用户的主目录
  • /lib - 系统软件通用库
  • /opt - 可选的应用软件
  • /sys - 包含系统的信息和配置
  • /tmp - 临时文件( /var/tmp ) 通常重启时删除
  • /usr/ - 只读的用户数据
    • /usr/bin - 非必须的命令二进制文件
    • /usr/sbin - 非必须的系统二进制文件,通常是由 root 运行的
    • /usr/local/bin - 用户编译程序的二进制文件
  • /var -变量文件 像日志或缓存

Docker和虚拟机有什么区别?

  • Docker 基于容器这个更为概括的概念。关于容器和虚拟机之间最大的不同是,虚拟机会执行整个的 OS 栈,包括内核(即使这个内核和主机内核相同)。与虚拟机不同,容器避免运行其他内核实例,而是与主机分享内核。在Linux环境中,有LXC机制来实现,并且这能使一系列分离的主机像是在使用自己的硬件启动程序,而实际上是共享主机的硬件和内核。因此容器的开销小于完整的虚拟机

    另一方面,容器的隔离性较弱而且只有在主机运行相同的内核时才能正常工作。例如,如果你在macOS 上运行 Docker,Docker 需要启动 Linux虚拟机去获取初始的 Linux内核,这样的开销仍然很大。最后,Docker 是容器的特定实现,它是为软件部署而定制的。基于这些,它有一些奇怪之处:例如,默认情况下,Docker 容器在重启之间不会有以任何形式的存储。

---------------The End---------------