1 votes

Démarrer un programme via le terminal et le mettre immédiatement dans le bg / bashrc

J'essaie donc de lancer un programme en utilisant le terminal, mais je ne veux pas qu'il soit verrouillé sur ce terminal.

J'ai ajouté un alias dans le bashrc pour un démarrage facile :

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

J'ai aussi essayé ceci :

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

qui, malheureusement, n'a pas non plus fonctionné ou, mieux encore, a fonctionné mais pas comme je l'aurais souhaité puisque le programme n'était pas affiché, mais fonctionnait.

Des idées/indications sur ce que je fais de travers ?

Edit : J'ai oublié de mentionner : Ubuntu 14.04

0voto

David Foerster Points 34353

L'envoi d'un processus en arrière-plan fonctionne différemment de ce que vous supposez, en particulier en association avec sudo . Pour ces raisons, je recommande une approche totalement différente :

  1. Créer un Shell Shell tksuite dans un répertoire se trouvant dans $PATH , par exemple. /usr/bin/tksuite :

    #!/bin/sh
    exec /bin/sh /usr/local/tksuite_client/run_client.sh "$@"
  2. Rendez-le exécutable :

    sudo chmod +x /usr/bin/tksuite
  3. Maintenant vous pouvez lancer le script avec les privilèges de super utilisateur en arrière plan avec

    gksudo tksuite & disown

Alternativement, tout ceci peut être fait dans une fonction Shell.

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

invocable avec tksuite comme vous le souhaitiez.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X