Ouvrez plusieurs «terminaux» sans interface graphique (startx)

12

Je ne sais pas si le titre est explicite, mais je voulais avoir plusieurs terminaux (deux pour l'instant suffiraient) ouverts sans avoir à démarrer le bureau.

Je veux avoir un script PHP en cours d'exécution (à temps plein) et pouvoir continuer à utiliser mon terminal Raspi tel qu'il est lorsque je démarre mon Raspi avec Raspbian.

pasadinhas
la source
vous connectez-vous directement à votre pi?
SteveIrwin
Salut ce que vous vouliez peut être fourni par dvtm. brain-dump.org/projects/dvtm
cgte

Réponses:

8

Utilisez simplement Alt + F1-F12, vous pouvez donc avoir 12 onglets de console différents sans démarrer une interface graphique

nnm
la source
c'est en fait l'option que j'utilise actuellement :)
pasadinhas
1
Cela ne fonctionne pas sur Raspbian, il n'y a pas de connexion sur aucun des autres ttys.
AndreKR
9

Si vous êtes sur la console (clavier et écran attachés), vous devriez pouvoir utiliser le système de console virtuelle Linux pour basculer entre plusieurs terminaux en utilisant (ctrl-) alt-F1 à F12 et plus avec shift.

Le nombre de terminaux configurés et le nombre d'entre eux ayant des processus Getty (qui vous demandent un identifiant et un mot de passe) dépendent de la configuration .

XTL
la source
2
+1 parce que lorsqu'il est directement connecté à la machine, c'est le moyen "standard" d'obtenir une autre connexion, et ne nécessite pas d'installer screen / tmux ..
Kiirani
6

Encore mieux que ce qui screenest (à mon avis) tmux. Vous pouvez l'installer via sudo apt-get install tmux. Consultez également la page de manuel avec man tmux.

Vous pouvez le démarrer en tapant tmuxsur l'une de vos consoles (voir la réponse de XTL).

Voici les commandes les plus importantes ( C-b dsignifie: appuyez simultanément sur Ctrl et B, puis sur D):

  • C-b d détacher la session
  • tmux attach sur le shell pour rattacher une session en cours
  • C-b " diviser l'image courante horizontalement (un nouveau shell est démarré)
  • C-b % diviser l'image courante verticalement (un nouveau shell est démarré)
  • C-b arrow (up, down, left, right) naviguer entre les fenêtres dans le cadre actuel
  • C-b c nouveau cadre (le nouveau shell est démarré)
  • C-b n image suivante
  • C-b l dernière image
  • C-b benvoyer C-bà l'application en cours d'exécution
Arne
la source
Fervent défenseur de tmux ici aussi. La configuration de la ligne d'état est beaucoup plus simple et elle gère mieux les redessins.
codé le
1
Il convient de noter que tmux n'a pas le même comportement que screen en ce qui concerne l'attachement de la session à plusieurs VT ("screen -x")
Kiirani
3

Vous pouvez également le faire avec l'écran. Avec écran, vous pouvez même vous détacher de votre session écran, vous déconnecter, vous connecter, puis vous reconnecter à votre session écran sans rien perdre. Les programmes continueront de s'exécuter et toutes les sorties continueront d'être affichées sur les terminaux dont vous vous êtes déconnecté.

Quelques liens vers des didacticiels d'écran:

http://www.rackaid.com/resources/linux-screen-tutorial-and-how-to/

http://magazine.redhat.com/2007/09/27/a-guide-to-gnu-screen/

Un lien vers un fil de discussion avec quelques conseils utiles .screenrc:

https://bbs.archlinux.org/viewtopic.php?id=55618

Un tutoriel spécifique au Raspberry Pi:

http://raspi.tv/2012/using-screen-with-raspberry-pi-to-avoid-leaving-ssh-sessions-open

Eric
la source
3
  1. Si le script php que vous souhaitez exécuter n'interagit pas avec l'utilisateur ou doit être saisi,

    vous pouvez utiliser la &commande qui envoie le script en arrière-plan

    Voici un exemple.

    pi@raspberrypi ~ $php code1 &
    

    Cela enverra le script en arrière-plan où il continuera à fonctionner.

  2. Si vous utilisez ssh dans votre terminal, vous pouvez ssh dans le même utilisateur deux fois et avoir deux terminaux.

  3. Si vous souhaitez ouvrir plusieurs terminaux à partir d'une session ssh,

    Vous devriez regarder l'écran ou encore mieux installer byobuqui est un écran enveloppant.

    byobu est un wrapper qui permet d'ouvrir facilement de nouveaux écrans avec une simple touche de fonction au lieu d'une combinaison de touches de ctrl-a. Il affiche également une ligne d'état avec tous les terminaux virtuels ouverts qui peuvent être nommés.

    Une autre fonctionnalité intéressante est le fait que tout votre écran peut rester en place pendant que votre connexion ssh est déconnectée. Vous vous connectez à nouveau via ssh et appelez byobu et tout est comme avant.

J'espère que cela aide.

SteveIrwin
la source
2

Pour être complet, une autre option consiste à utiliser byobu . C'est une couche pratique en haut de l' écran GNU . Il fournit de belles valeurs par défaut et est à mon sens plus facile à utiliser. Je l'utilise personnellement sur mon Rapsberry Pi et cela fonctionne très bien. Pour l'installer, tapez simplement:

$ sudo apt-get install byobu

Une fois installé, configurez-le via:

$ byobu-config

Vous pouvez y choisir de le démarrer automatiquement lors de la connexion, et de basculer entre les applets de notification d'état ( disponibilité, chargement, date ... )

entrez la description de l'image ici

En remarque, ce type de console virtuelle est également utile pour partager la même entrée / sortie de console entre différents utilisateurs sur différentes machines (vous pouvez l'appeler partage d'écran en mode texte ).

Laurent Grégoire
la source
J'ai essayé byobou l'autre jour et je n'étais pas content. Le contrôle via les touches de fonction était très instable. Ne fonctionnait pas sur OS X, avait également des problèmes sous Debian. Je m'en tiendrai à tmux et à ses commandes. Les touches de fonction entrent également en collision avec mc (midnight commander).
Arne
Quant au conflit de touches de fonction avec mc , vous pouvez les changer sur byobu (vous pouvez facilement sélectionner entre deux modes différents via byobu-config).
Laurent Grégoire
2

Puisque votre exigence initiale était de lancer un script PHP en arrière-plan, vous pouvez utiliser la commande nohup. Exemple:

$ nohup php myscript.php &

Une fois lancée, la commande spécifiée comme argument de ligne de commande pour nohupest exécutée en arrière-plan , et ses entrées / sorties sont dissociées du terminal qui l'a démarrée, pour empêcher le SIGHUPsignal (d'où le nohupnom) d'être envoyé au processus d'arrière-plan lorsque vous quittez la console de démarrage (signal provoquant généralement la fermeture du programme). La sortie est redirigée vers un fichier (par défaut nohup.out).

Pour plus d' informations: man nohup.

Pour une réponse meilleure et plus complète, vous voudrez peut-être "démoniser" complètement votre programme. Vous pouvez probablement trouver des ressources sur le Web qui expliquent comment le faire avec des scripts PHP.

Laurent Grégoire
la source
Certains shells (bash, zsh?) Ont également une commande disownpour empêcher le blocage des processus d'arrière-plan sélectionnés.
XTL