Linux应用程序流畅切换
通过进程的前后台切换方式实现不同应用的切换。
背景:linux启动一个程序后,切换到后台执行,想继续在linux操作。
在Linux中,你可以使用以下几种方法使一个程序在后台启动并退出,但仍然保持其进程运行:
一.Linux启动一个程序在后台执行
1.使用nohup
和&
:
1 | $ nohup your_program & |
使用nohup
命令可以使程序忽略挂断信号(SIGHUP),这样即使你退出了终端,程序也会继续运行。&
符号使程序在后台运行。
2. 使用ctrl+Z
:
如果你已经在前台启动了程序,可以使用ctrl+z
命令将其移到后台:
1 | $ ./your_program # 运行在前台 |
3.使用screen
:
screen
是一个在UNIX和Linux系统上运行的终端复用器,它允许用户在同一台机器上的一个物理终端上启动多个虚拟终端。
它可以创建一个新的会话,并在该会话中运行你的程序。这样,即使你退出了终端,会话仍然保持活动状态。你可以重新连接到这个会话,查看和控制程序。
screen的功能
screen的功能大体有三个:
- *
会话恢复
*:只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。 - *
多窗口
*:在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。 - *
会话共享
*:Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。
如何使用screen
:安装 sudo apt install screen
3.1 创建会话
1 | $ screen -S session_name your_program |
3.2 要重新连接到此会话:
1 | $ screen -r session_name |
3.3 中途退出会话,但程序继续运行:
如果你想从 screen
会话中退出,但不终止正在运行的程序,你可以按下 Ctrl
+ A
,然后按下 D
。这将会从 screen
会话中分离,但程序仍然在后台运行。
示例:使用secreen开启多个会话在会话中执行程序。每个会话相当于一个逻辑终端,可以退出会话,让程序依然运行。
1 | screen -S appDemo_session ./appDemo.lua |
3.4 结束一个 screen
会话:
如果你想结束一个 screen
会话并停止其中的程序,你可以首先使用 screen -r [会话名称或ID]
重新连接到该会话,然后按下 Ctrl
+ C
来终止程序。接着,你可以使用 exit
或按 Ctrl
+ D
来结束该 screen
会话。
1 | screen -S appDemo_session ./appDemo.lua |
3.5 创建多个窗口:
在同一个 screen
会话中,你可以使用 Ctrl
+ A
然后再按 C
来创建一个新的窗口。每个窗口可以有自己的命令行历史。要切换窗口,只需按 Ctrl
+ A
然后按 N
(下一个)或 P
(上一个)。要关闭窗口,只需按 Ctrl
+ A
然后按 K
,然后选择要关闭的窗口。
3.6 命名窗口:
你可以给窗口命名以方便识别。只需按 Ctrl
+ A
然后按 A
(重命名)。输入新名称并按回车。
3.7 查看所有窗口,
可以按下Ctrl+a
,然后按下w
键。这将显示当前screen
会话中的所有窗口列表,包括窗口的编号和名称。
1 | screen -S appDemo_session ./appDemo.lua |
在一个会话中创建多个窗口
1 | ls |
二.ctrl+Z停止了进程之后,怎么再进入该程序?
在Unix和Linux系统中,当你使用Ctrl+Z
将一个程序暂停并放到后台时,该程序实际上是被挂起(暂停)了。为了再次运行这个程序,你可以使用以下方法:
- **bg (Background)**:
使用bg
命令可以将挂起的程序放到后台继续运行。
1 | bg |
- **fg (Foreground)**:
如果你想要将程序重新移到前台,可以使用fg
命令。
1 | fg %1 |
其中%1
是你想要移到前台的挂起程序的编号。你可以使用jobs
命令查看挂起的程序的编号。
3. jobs:
使用jobs
命令可以列出当前挂起的程序。这些程序的编号可以帮助你确定要使用fg
或bg
命令时应该使用的编号。
1 | jobs -l # 列出所有挂起的程序及其PID |
- kill:
如果你想要结束一个挂起的程序,可以使用kill
命令。但是,首先确保你真的想要结束它。
1 | kill %1 |
请注意,上述方法主要适用于shell环境中。如果你在图形界面中(如使用X Window System)运行程序,那么你可能需要使用不同的方法来控制程序的运行。
三.综合example示范
1 | ./student |
1 | ./appDemo.lua |
- 本文作者: CoderSong
- 本文链接: https://jack-song-gif.github.io/2024/03/11/Linux应用程序流畅切换/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!