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

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

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

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

/bin/bash
-bash
-bash
-bash
/bin/bash
bash
/bin/bash
/bin/bash
bash

ETC..

有什么区别?

答案1

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

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

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

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

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

相关内容