A execução de um script bash como root impede a execução assíncrona?

1

O script abaixo get é executado de forma diferente se for executado como usuário root.

#!/bin/sh

gnome-terminal -x sleep 10 
echo 'Why must I wait for sleep to finish?'

Se for executado como um usuário comum, a mensagem será impressa ao lado do terminal recém-aberto que espera 5 segundos.

Se executado como usuário root, a mensagem não será impressa até que o primeiro comando não termine.

Detalhes do sistema:

  • Ubuntu 12.4
  • whereis gnome-terminal é o mesmo para usuário root e padrão

Qual é a explicação para tal comportamento?

    
por TheMeaningfulEngineer 07.03.2014 / 18:06

2 respostas

1

Eu não posso reproduzir isso. Tanto como usuário comum quanto com sudo , a mensagem é impressa assim que o gnome-terminal aparece. Aparentemente, gnome-terminal é baseado em background automaticamente (você pode ver executando gnome-terminal diretamente da linha de comando), então a mensagem é impressa antes que o comando sleep seja concluído. É equivalente a correr

gnome-terminal -x sleep 10 &

Se você estiver realmente observando um comportamento diferente quando executado como root, poderá ter um% diferentegnome-terminal no $ PATH da raiz.

    
por 07.03.2014 / 18:34
1

Quando você executa o script como usuário, você já tem uma janela do terminal do gnome. Se você tentou abrir a segunda janela do terminal gnome, ele envia informações para o primeiro e selfcloses (a mesma situação com o Firefox, o Chromium). Quando você executa o script como superusuário, o superusuário não possui janelas do terminal gnome.

Tente fechar todas as janelas do gnome-terminal e execute "gksu gnome-terminal". O script se comportará como o usuário.

    
por 10.03.2014 / 11:44