Comment basculer en douceur entre différentes applications sous le système Linux

王林
Libérer: 2024-02-19 15:00:09
avant
630 Les gens l'ont consulté

Réalisez la commutation entre différentes applications grâce à la commutation avant et arrière des processus.

Arrière-plan : une fois que Linux a démarré un programme, il passe en arrière-plan pour son exécution et souhaite continuer à fonctionner sous Linux.

Sous Linux, vous pouvez utiliser les méthodes suivantes pour démarrer et quitter un programme en arrière-plan tout en maintenant son processus en cours d'exécution :

Comment basculer en douceur entre différentes applications sous le système Linux

1. Linux démarre un programme à exécuter en arrière-plan

1. Utiliser nohup& :

$ nohup your_program &
Copier après la connexion

Utilisez le symbole nohup命令可以使程序忽略挂断信号(SIGHUP),这样即使你退出了终端,程序也会继续运行。& pour faire fonctionner le programme en arrière-plan.

2. Utiliser ctrl+Z :

Si vous avez démarré le programme au premier plan, vous pouvez utiliser la commande ctrl+z pour le déplacer en arrière-plan :

$ ./your_program# 运行在前台
$ 按 Ctrl + Z# 将程序暂停,并将其移到后台 
$ bg#在后台继续运行程序
$ disown -h# 使程序在你退出终端时仍然运行
Copier après la connexion

3. Utiliser screen :

screen est un multiplexeur de terminaux fonctionnant sur les systèmes UNIX et Linux qui permet aux utilisateurs de lancer plusieurs terminaux virtuels sur un terminal physique sur la même machine.

En créant une nouvelle session, vous pouvez y exécuter le programme et la session restera active même si vous quittez le terminal. Vous pouvez ensuite vous reconnecter à la session pour visualiser et contrôler l'exécution du programme.

Caractéristiques de l'écran

L'écran a trois fonctions :

  • 会话恢复 : Tant que l'écran lui-même n'est pas terminé, les sessions qui s'y déroulent peuvent être reprises. Ceci est particulièrement utile pour les utilisateurs se connectant à distance : même si la connexion réseau est interrompue, l'utilisateur ne perdra pas le contrôle de la session de ligne de commande qu'il a ouverte. Connectez-vous simplement à nouveau à l'hôte et exécutez screen -r pour reprendre la session. Également lorsque vous quittez temporairement, vous pouvez également exécuter la commande detach pour suspendre l'écran (passer en arrière-plan) tout en vous assurant que les programmes qu'il contient fonctionnent normalement. Ceci est très similaire à VNC sous l'interface graphique.
  • 多窗口 : Dans l'environnement Screen, toutes les sessions s'exécutent indépendamment et ont leurs propres numéros, caches d'entrée, de sortie et de fenêtre. Les utilisateurs peuvent basculer entre différentes fenêtres via des touches de raccourci et rediriger librement l'entrée et la sortie de chaque fenêtre.
  • 会话共享 : Screen permet à un ou plusieurs utilisateurs de se connecter plusieurs fois à une session à partir de différents terminaux et de partager toutes les fonctionnalités de la session (comme voir exactement la même sortie). Il fournit également un mécanisme pour les autorisations d'accès aux fenêtres et peut protéger les fenêtres par mot de passe.

Comment utiliserscreen : Installez sudo apt install screen

3.1 Créer une session

$ screen -S session_name your_program
Copier après la connexion

3.2 Pour vous reconnecter à cette session :

$ screen -r session_name
Copier après la connexion

3.3 Quittez la session à mi-chemin, mais le programme continue de s'exécuter :

Si vous souhaitez quitter une session screen 会话中退出,但不终止正在运行的程序,你可以按下 Ctrl + A,然后按下 D sans mettre fin au programme en cours, vous pouvez appuyer sur Ctrl + A puis sur D.

Cela se détachera de la screen session, mais le programme fonctionnera toujours en arrière-plan.

Exemple : utilisez le secret pour ouvrir plusieurs sessions et exécuter des programmes dans les sessions.

Chaque session équivaut à un terminal logique. Vous pouvez quitter la session et laisser le programme continuer à s'exécuter.

$ screen -S appDemo_session ./appDemo.lua
# 开启新的会话,并执行appDemo脚本程序
> help
Available commands:
1. show
2. exit
3. help
4. run
> 
# 按ctrl+AD 退出会话
[detached from 1546455.appDemo_session]
$ screen -r appDemo_session
[detached from 1546455.appDemo_session]
$
$
$ screen -ls# 查看所有会话
There is a screen on:
1546455.appDemo_session (2024年01月24日 10时01分53秒) (Detached)
1 Socket in /run/screen/S-zsh.
$
Copier après la connexion

3.4 Terminer une screen session :

Si vous souhaitez mettre fin à une screen 会话并停止其中的程序,你可以首先使用 screen -r [会话名称或ID] 重新连接到该会话,然后按下 Ctrl + C session et arrêter les programmes qu'elle contient, vous pouvez d'abord vous reconnecter à la session en utilisant screen -r [nom ou ID de la session] puis appuyer sur Ctrl</code > + <code>C pour terminer le programme.

Ensuite, vous pouvez utiliser exit ou appuyer sur Ctrl + D pour mettre fin à la exit 或按 Ctrl + D 来结束该 screen session.

$ screen -S appDemo_session ./appDemo.lua
-------------以下在在会话中的逻辑终端显示,退出后会消失
&amp;gt; help
Available commands:
1. show
2. exit
3. help
4. run
&amp;gt; exit
exitCLI
-------------
[screen is terminating]
$
Copier après la connexion

3.5 Créer plusieurs fenêtres :

Dans la même screen 会话中,你可以使用 Ctrl + A 然后再按 C session, vous pouvez utiliser Ctrl + A puis appuyer sur C pour créer une nouvelle fenêtre.

Chaque fenêtre peut avoir son propre historique de ligne de commande. Pour changer de fenêtre, appuyez simplement sur Ctrl + A 然后按 N(下一个)或 P (Précédent).

Pour fermer une fenêtre, appuyez simplement sur Ctrl + A 然后按 K et sélectionnez la fenêtre que vous souhaitez fermer.

3.6 Fenêtre de dénomination :

Vous pouvez nommer la fenêtre pour une identification facile. Appuyez simplement sur Ctrl + A 然后按 A(renommer). Entrez le nouveau nom et appuyez sur Entrée.

3.7 Afficher toutes les fenêtres,

Vous pouvez appuyer sur Ctrl+a, puis appuyer sur la touche w. Cela affichera une liste de toutes les fenêtres de la session en cours, y compris le numéro et le nom de la fenêtre. Ctrl+a,然后按下w键。这将显示当前screen

$ screen -S appDemo_session ./appDemo.lua
-------------以下在在会话中的逻辑终端显示,退出后会消失
&amp;gt; help
Available commands:
1. show
2. exit
3. help
4. run
&amp;gt;


$ ls
appDemo.lua
# 按ctrl+A 然后按K,输入y表示结束当前窗口
Really kill this window [y/n]
Copier après la connexion

Créez plusieurs fenêtres en une seule session

$ ls
appDemo.lua
# 按三次ctrl+a,然后按c,创建三个各自独立的窗口,每个窗口有自己的命令行历史


# 然后按 ctrl+a,然后按w查看所有窗口
0$ appDemo.lua1$ bash2-$ bash3*$ bash

# 现在相当于一个会话appDemo_session中有四个窗口,需要在四个窗口都exit才能退出该会话
Copier après la connexion

二、ctrl+Z停止了进程之后,怎么再进入该程序?

在Unix和Linux系统中,当你使用Ctrl+Z将一个程序暂停并放到后台时,该程序实际上是被挂起(暂停)了。

为了再次运行这个程序,你可以使用以下方法:

  • bg (Background) :使用bg命令可以将挂起的程序放到后台继续运行。
  • bg
    Copier après la connexion
  • fg (Foreground) :如果你想要将程序重新移到前台,可以使用fg命令。
  • fg %1
    Copier après la connexion

    其中%1是你想要移到前台的挂起程序的编号。你可以使用jobs命令查看挂起的程序的编号。

    3. jobs:

    使用jobs命令可以列出当前挂起的程序。这些程序的编号可以帮助你确定要使用fgbg命令时应该使用的编号。

    jobs -l# 列出所有挂起的程序及其PID
    Copier après la connexion
  • kill:如果你想要结束一个挂起的程序,可以使用kill命令。但是,首先确保你真的想要结束它。
  • kill %1
    Copier après la connexion

    请注意,上述方法主要适用于shell环境中。如果你在图形界面中(如使用X Window System)运行程序,那么你可能需要使用不同的方法来控制程序的运行。

    三、综合example示范

    $ ./student
    
    ===== 学生信息管理系统 =====
    1. 录入学生信息
    2. 显示学生信息
    3. 查询学生信息
    4. 修改学生信息
    5. 删除学生信息
    6. 退出
    请选择操作: ^Z
    [1]+已停止 ./student
    $ bg
    [1]+ ./student &amp;amp;
    
    [1]+已停止 ./student
    $ jobs -l
    [1]+ 1545288 停止 (tty 输入) ./student
    
    
    $ ./stu11
    
    Student Information Management System
    1. Add Student
    2. Display Students
    3. Search Student
    4. Delete Student
    5. Exit
    Enter your choice: ^Z
    [2]+已停止 ./stu11
    $ jobs -l
    [1]- 1545288 停止 (tty 输入) ./student
    [2]+ 1545290 停止./stu11
    $
    Copier après la connexion
    $ ./appDemo.lua
    &amp;gt; help
    Available commands:
    1. show
    2. exit
    3. help
    4. run
    &amp;gt; ^Z
    [2]+已停止 ./appDemo.lua
    $ jobs -l
    [1]- 1545480 停止./stu11
    [2]+ 1545484 停止./appDemo.lua
    $ bg
    [2]+ ./appDemo.lua &amp;amp;
    $ fg %2
    ./appDemo.lua
    
    Unknown command. Type 'help' for available commands.
    &amp;gt; help
    Available commands:
    1. show
    2. exit
    3. help
    4. run
    &amp;gt; ^Z
    [2]+已停止 ./appDemo.lua
    Copier après la connexion

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

    Étiquettes associées:
    source:mryunwei.com
    Déclaration de ce site Web
    Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
    Tutoriels populaires
    Plus>
    Derniers téléchargements
    Plus>
    effets Web
    Code source du site Web
    Matériel du site Web
    Modèle frontal