Iniciando o programa via terminal e colocando-o imidiatamente no bg / bashrc

1

Então eu estou tentando iniciar um programa usando o terminal, mas eu também não quero que ele seja bloqueado para o dito terminal.

Eu adicionei um alias dentro do bashrc para facilitar a inicialização:

alias tksuite='sudo sh /usr/local/tksuite_client/run_client.sh && ^Z && bg && disown'

Eu também tentei isso:

alias tksuite='sudo sh /usr/local/tksuite_client/run_client.sh  \& && disown'

que, infelizmente, também não funcionou ou melhor dito, funcionou, mas não como eu gosto de ser desde que o programa não estava mostrando, mas estava em execução.

Alguma idéia / indicação de que estou errado?

Editar: Esqueci de mencionar: Ubuntu 14.04

    
por Shaeldon 22.10.2014 / 11:15

1 resposta

0

O envio de um processo para o segundo plano funciona de maneira diferente do que você supõe especialmente em combinação com sudo . Por essas razões, recomendo uma abordagem totalmente diferente:

  1. Crie um script de shell tksuite em algum diretório que esteja em $PATH , e. g. /usr/bin/tksuite :

    #!/bin/sh
    exec /bin/sh /usr/local/tksuite_client/run_client.sh "$@"
    
  2. Torne-o executável:

    sudo chmod +x /usr/bin/tksuite
    
  3. Agora você pode iniciar o script com privilégios de superusuário em segundo plano com

    gksudo tksuite & disown
    

Como alternativa, tudo isso pode ser feito em uma função shell

tksuite() {
    gksudo -- sh /usr/local/tksuite_client/run_client.sh "$@" &
    disown
}

invocável com tksuite como você pretendia.

    
por David Foerster 22.10.2014 / 13:34