ps 输出中 bash、-bash 和 /bin/bash 之间的区别

Swa*_*air 3 bash ps

有人在服务器上的 bash(以 root 身份登录)中产生了一个 while true 循环。它不断产生进程,幸运的是它退出了,但我需要杀死父进程。我开始知道它是直接从命令行生成的,而不是从脚本生成的,所以我搜索了“-bash”并杀死了 root 拥有的那些进程。它工作得很好。

当你这样做时ps aux,在命令列中会出现不同的 bash 变体。

/bin/bash
-bash
-bash
-bash
/bin/bash
bash
/bin/bash
/bin/bash
bash
Run Code Online (Sandbox Code Playgroud)

等等..

有什么区别?

Chr*_*own 5

前导破折号表示登录 shell,来自man bash

登录 shell 是参数零的第一个字符是 a-或以--login选项开头的shell 。

当 bash 作为交互式登录 shell 或作为具有--login选项的非交互式 shell 调用时,它首先从文件中读取并执行命令/etc/profile(如果该文件存在)。读取该文件后,它会按该顺序查找~/.bash_profile~/.bash_login、 和~/.profile,并从第一个存在且可读的命令中读取和执行命令。--noprofile当 shell 启动时可以使用该选项来禁止这种行为。

当登录 shell 退出时,bash 从文件中读取并执行命令~/.bash_logout(如果存在)。

bash并且/bin/bash是相同的,只是调用方式不同(前者不是使用完整路径调用的)。