Não sou um usuário forte de Linux, mas quero entender melhor o material neste post aqui que fala sobre namespaces Linux
https://stackoverflow.com/questions/44666700/unshare-pid-bin-bash-fork-cannot-allocate-memory
Acho que minha incapacidade de compreensão pode estar relacionada à compreensão insuficiente de "comando", "processo" e talvez algumas outras coisas.
Primeiro, deixe-me explicar um experimento simples que estou usando para minha educação. Abri duas janelas de terminal PUTTY. Em cada janela, fiz um ssh root@[ip of machine]
. Agora que tenho 2 sessões SSH para minha máquina Linux, começo meus experimentos.
Na primeira janela, fiz isso:
root@localhost:~# unshare --pid /bin/bash
bash: fork: Cannot allocate memory
Na segunda janela, fiz isso:
root@localhost:~# ps -aux | grep unshare
root 58188 0.0 0.0 6480 2284 pts/3 R+ 21:49 0:00 grep --color=auto unshare
Aqui estão minhas perguntas:
A segunda janela não mostra nenhuma indicação de
unshare --pid /bin/bash
. Isso ocorre porque o/bin/bash
comando ou o/bin/bash
processo já havia terminado? É por isso que muitos usuários de Linux na internet recomendam usar o--fork
para que o/bin/bash
seja executado no namespace recém-criado?A resposta aceita declarou isto: "Depois que o bash começar a rodar, o bash irá bifurcar vários novos subprocessos para fazer algumas coisas." Não entendi o significado desta frase. Então, na segunda janela do terminal, eu rodei isto:
root@localhost:~# unshare -pf /bin/bash
root@localhost:~# ps -a
PID TTY TIME CMD
58278 pts/2 00:00:00 sudo
58279 pts/2 00:00:00 su
58280 pts/2 00:00:00 bash
58291 pts/2 00:00:00 unshare
58292 pts/2 00:00:00 bash
58299 pts/2 00:00:00 ps
PID 58278 a PID58299 é o que o autor quis dizer com "o bash bifurcará vários novos subprocessos para fazer algumas coisas"?