欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 健康 > 养生 > 【Docker】Docker Run 中指定 `bash` 和 `sh` 参数的区别:深入解析与实践指南

【Docker】Docker Run 中指定 `bash` 和 `sh` 参数的区别:深入解析与实践指南

2025/2/21 3:25:21 来源:https://blog.csdn.net/LHRan_ran_/article/details/145646209  浏览:    关键词:【Docker】Docker Run 中指定 `bash` 和 `sh` 参数的区别:深入解析与实践指南

文章目录

    • 引言
    • 一、`docker run` 中指定 `bash` 和 `sh` 的区别
      • 1. `bash` 和 `sh` 的基本概念
      • 2. 在 `docker run` 中指定 `bash` 和 `sh`
        • 2.1 使用 `bash` 作为 Shell 解释器
        • 2.2 使用 `sh` 作为 Shell 解释器
      • 3. `bash` 和 `sh` 的主要区别
      • 4. 如何选择 `bash` 或 `sh`
    • 二、`ps -ef` 和 `ps aux` 中参数的含义
      • 1. `ps` 命令简介
      • 2. `ps -ef` 中 `ef` 的含义
      • 3. `ps aux` 中 `aux` 的含义
      • 4. `ps -ef` 和 `ps aux` 的区别
    • 三、`aux` 参数在 Docker 命令和 Shell 命令中的关联与区别
      • 1. 在 Shell 命令中的 `aux`
      • 2. 在 Docker 命令中的 `aux`
      • 3. 关联与区别
    • 四、总结

引言

在使用 Docker 运行容器时,我们经常需要通过 docker run 命令指定容器的启动参数。其中,bashsh 是两种常见的 Shell 解释器,它们在功能和用法上有一些显著的区别。此外,ps -efps aux 是 Linux 系统中常用的进程查看命令,它们的参数 efaux 也常常让人感到困惑。本文将深入探讨 docker run 中指定 bashsh 的区别,并分析 ps -efps aux 中参数的含义及其在 Docker 命令和 Shell 命令中的关联与区别。


一、docker run 中指定 bashsh 的区别

1. bashsh 的基本概念

  • bashbash(Bourne Again Shell)是 Linux 系统中最常用的 Shell 解释器之一。它是 sh 的增强版,支持更多的特性和功能,例如命令行编辑、命令历史、脚本调试等。
  • shsh(Bourne Shell)是 Unix 系统中最原始的 Shell 解释器。它的功能相对简单,主要用于执行基本的脚本任务。

2. 在 docker run 中指定 bashsh

docker run 命令中,我们可以通过 -it 参数启动一个交互式终端,并指定使用 bashsh 作为 Shell 解释器。例如:

docker run -it ubuntu bash
docker run -it ubuntu sh
2.1 使用 bash 作为 Shell 解释器
  • 功能丰富bash 提供了更多的功能,例如命令行补全、命令历史、条件判断、循环控制等。
  • 交互性强bash 更适合用于交互式操作,尤其是在需要频繁输入命令的场景中。
  • 兼容性bash 完全兼容 sh,可以执行 sh 脚本。

示例

docker run -it ubuntu bash
2.2 使用 sh 作为 Shell 解释器
  • 轻量级sh 的功能相对简单,适合执行基本的脚本任务。
  • 兼容性sh 是 Unix 系统的标准 Shell,具有更好的跨平台兼容性。
  • 资源占用少:由于功能较少,sh 的资源占用比 bash 更少。

示例

docker run -it ubuntu sh

3. bashsh 的主要区别

特性bashsh
功能丰富度支持更多特性(如命令行补全、历史记录)功能较为简单
交互性更适合交互式操作适合执行简单脚本
兼容性完全兼容 sh是 Unix 标准 Shell
资源占用较高较低
脚本支持支持复杂脚本适合简单脚本

4. 如何选择 bashsh

  • 交互式操作:如果需要频繁输入命令或使用高级功能(如命令行补全),建议使用 bash
  • 脚本执行:如果只需要执行简单的脚本任务,建议使用 sh
  • 资源限制:在资源受限的环境中(如嵌入式系统),使用 sh 可以减少资源占用。

二、ps -efps aux 中参数的含义

1. ps 命令简介

ps 是 Linux 系统中用于查看进程状态的命令。它支持多种参数选项,用于显示不同的进程信息。

2. ps -efef 的含义

  • -e:显示所有进程(包括其他用户的进程)。
  • -f:以完整格式显示进程信息,包括 UID、PID、PPID、C、STIME、TTY、TIME 和 CMD。

示例

ps -ef

输出示例

UID        PID  PPID  C STIME TTY          TIME CMD
root         1     0  0 10:00 ?        00:00:01 /sbin/init
root         2     0  0 10:00 ?        00:00:00 [kthreadd]

3. ps auxaux 的含义

  • a:显示所有用户的进程(包括其他用户的进程)。
  • u:以用户友好的格式显示进程信息,包括 USER、PID、%CPU、%MEM、VSZ、RSS、TTY、STAT、START、TIME 和 COMMAND。
  • x:显示没有控制终端的进程。

示例

ps aux

输出示例

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.1  12345  6789 ?        Ss   10:00   0:01 /sbin/init
root         2  0.0  0.0      0     0 ?        S    10:00   0:00 [kthreadd]

4. ps -efps aux 的区别

特性ps -efps aux
显示格式完整格式用户友好格式
包含信息UID、PID、PPID、CMD 等USER、%CPU、%MEM、COMMAND 等
适用场景查看进程的父子关系查看进程的资源占用情况

三、aux 参数在 Docker 命令和 Shell 命令中的关联与区别

1. 在 Shell 命令中的 aux

在 Shell 命令中,auxps 命令的参数,用于显示所有用户的进程信息,并以用户友好的格式输出。

2. 在 Docker 命令中的 aux

在 Docker 命令中,aux 并不是一个常见的参数。Docker 命令通常使用其他参数来管理容器和镜像,例如 docker ps -a 用于显示所有容器。

3. 关联与区别

  • 关联aux 在 Shell 命令中用于查看进程信息,而在 Docker 中,docker ps 用于查看容器信息。两者都用于监控系统资源的使用情况。
  • 区别auxps 命令的专用参数,而 Docker 命令有自己的一套参数体系,例如 -a-q-f 等。

四、总结

  • docker run 中,bashsh 是两种常见的 Shell 解释器,bash 功能更丰富,适合交互式操作,而 sh 更轻量,适合执行简单脚本。
  • ps -efps aux 是 Linux 系统中常用的进程查看命令,efaux 分别表示不同的输出格式和信息内容。
  • aux 在 Shell 命令中用于查看进程信息,而在 Docker 命令中并不常见,Docker 使用其他参数来管理容器和镜像。

希望本文能帮助 C++ 程序员更好地理解 Docker 和 Shell 命令的使用,提升容器化开发和系统管理的效率。


参考文献

  • Docker 官方文档: https://docs.docker.com/
  • Linux ps 命令手册: https://man7.org/linux/man-pages/man1/ps.1.html

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词