当前位置: 首页 > article >正文

【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

http://www.kler.cn/a/548305.html

相关文章:

  • 如何调整 Nginx工作进程数以提升性能
  • vue3 ref/reactive 修改数组的方法
  • 【DuodooBMS】给PDF附件加“受控”水印的完整Python实现
  • 机器视觉--Halcon If语句
  • SQL-leetcode—1661. 每台机器的进程平均运行时间
  • 使用C#元组实现列表分组汇总拼接字段
  • AWS上基于Llama 3模型检测Amazon Redshift里文本数据的语法和语义错误的设计方案
  • 一、敏捷开发概述:全面理解敏捷开发的核心理念
  • 【动态规划篇】:当回文串遇上动态规划--如何用二维DP“折叠”字符串?
  • PHP 字符串处理操作技巧介绍
  • QT c++ QMetaObject::invokeMethod函数 线程给界面发送数据
  • Android Studio - 解决gradle文件下载失败
  • Django运维系统定时任务方案设计与实现
  • Go语言精进之路读书笔记(第二部分-项目结构、代码风格与标识符命名)
  • Spring Boot自动装配原理深度解析
  • 【Vue3源码解析】响应式原理
  • 训练与优化
  • Python的那些事第二十二篇:基于 Python 的 Django 框架在 Web 开发中的应用研究
  • Java常见排序算法及代码实现
  • Spring Boot全局异常处理终极指南:从青铜到王者的实战演进