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

【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

相关文章:

  • openGauss 3.0 数据库在线实训课程16:学习逻辑结构:表管理4
  • 小白零基础如何用cursor
  • 车载诊断框架 --- ECU运行周期operation cycle
  • MFC 自定义十六进制显示控件
  • 重生之我要当云原生大师(二十)访问网络附加存储:
  • Java:204 基于springboot零食销售商城的设计与实现
  • DOS网络安全
  • 2025年软件测试行业趋势分析
  • Vue2官网教程查漏补缺学习笔记 - Part2深入了解组件 - 4插槽5动态组件异步组件6处理边界情况
  • IntelliJ IDEA集成本地化部署的DeepSeek
  • FaGeL:将LLMs用于具身智能研究的最佳案例
  • export default与export区别
  • Hutool - Cache:简单而强大的缓存实现
  • 书籍推荐:《书法课》林曦
  • Jmeter+Jenkins接口压力测试持续集成
  • 【旋转框目标检测】基于YOLO11/v8深度学习的遥感视角船只智能检测系统设计与实现【python源码+Pyqt5界面+数据集+训练代码】
  • Ubuntu介绍、与centos的区别、基于VMware安装Ubuntu Server 22.04、配置远程连接、安装jdk+Tomcat
  • CMake 判断 Mac编译环境是Intel的还是Arm的?
  • 初识camel智能体(一)
  • 【java面向对象的三大特性】封装、继承和多态
  • 甘肃省政府原党组成员、副省长杨子兴被提起公诉
  • 印巴局势紧张之际,巴基斯坦两天内第二次进行导弹试射
  • 儿童文学作家周晴病逝,享年57岁
  • 五一车市消费观察:政策赋能、企业发力,汽车消费火热
  • 竞彩湃|新科冠军利物浦留力?纽卡斯尔全力冲击欧冠
  • 贵州赤水一处岩体崩塌致4车受损,连夜抢修后已恢复通车