Isolando o programa CLI que utiliza a variável de ambiente HOME para salvar o estado para executar a execução paralela

1

Histórico: Usando um utilitário CLI que salva determinado estado no diretório pessoal do usuário - no Linux e no Unix usa a localização na variável de ambiente "$HOME" . Este programa é executado no script shell no trabalho Jenkins. Sempre que houver duas tarefas em execução que usem entradas diferentes para o programa, haverá um conflito, pois o estado do programa é salvo no diretório $HOME .

Tentando isolar o utilitário para a execução da tarefa, pensei em alterar a variável de ambiente $HOME , que parece funcionar para um teste limitado:

if [ -d "newhome" ]; then
  echo "newhome dir already exists"
  rm -r newhome 
fi
mkdir newhome
old_home="$HOME"
HOME="./newhome"

# rest of shell script is here

HOME="$old_home"

Pode haver várias tarefas usando o mesmo utilitário e até várias execuções simultâneas da mesma tarefa. Há alguma conseqüência de tal mudança para o resto do ambiente, outros empregos, etc? Devo usar chroot ou algum outro método?

    
por artdanil 08.12.2017 / 08:01

1 resposta

1

Além do fato de que o script realmente exclui newhome , que é uma string estática no script, não vejo nenhum problema sério com essa solução alternativa.

A exclusão do diretório newhome será um problema se houver processos simultâneos executando esse mesmo script, já que o diretório pode ser removido por um novo processo enquanto um processo antigo ainda está sendo usado.

    
por 07.02.2018 / 12:58