通过进程的前后台切换方式实现不同应用的切换。
背景:linux启动一个程序后,切换到后台执行,想继续在linux操作。
在Linux中,你可以使用以下几种方法使一个程序在后台启动并退出,但仍然保持其进程运行:
一、Linux启动一个程序在后台执行
1. 使用nohup
和&
:
$ nohup your_program &
使用nohup
命令可以使程序忽略挂断信号(SIGHUP),这样即使你退出了终端,程序也会继续运行。&
符号使程序在后台运行。
2. 使用ctrl+Z
:
如果你已经在前台启动了程序,可以使用ctrl+z
命令将其移到后台:
$ ./your_program# 运行在前台 $ 按 Ctrl + Z# 将程序暂停,并将其移到后台 $ bg#在后台继续运行程序 $ disown -h# 使程序在你退出终端时仍然运行
3.使用screen
:
screen
是一个在UNIX和Linux系统上运行的终端复用器,它允许用户在同一台机器上的一个物理终端上启动多个虚拟终端。
通过创建一个新的会话,你可以在其中运行程序,并且即使退出终端,该会话仍将保持活动状态。随后,你可以重新连接到会话来查看和控制程序的运行。
screen的功能
screen的功能大体有三个:
-
会话恢复
:只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)。这一点和图形界面下的VNC很相似。 -
多窗口
:在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,并可以自由的重定向各个窗口的输入和输出。 -
会话共享
:Screen可以让一个或多个用户从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,可以对窗口进行密码保护。
如何使用screen
:安装 sudo apt install screen
3.1 创建会话
$ screen -S session_name your_program
3.2 要重新连接到此会话:
$ screen -r session_name
3.3 中途退出会话,但程序继续运行:
如果你想从 screen
会话中退出,但不终止正在运行的程序,你可以按下 Ctrl
+ A
,然后按下 D
会话中退出,但不终止正在运行的程序,你可以按下 Ctrl
+ A
,然后按下 D
。
这将会从 screen
会话中分离,但程序仍然在后台运行。
示例:使用secreen开启多个会话在会话中执行程序。
每个会话相当于一个逻辑终端,可以退出会话,让程序依然运行。
$ 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. $
3.4 结束一个 screen
会话:
如果你想结束一个 screen
会话并停止其中的程序,你可以首先使用 screen -r [会话名称或ID]
重新连接到该会话,然后按下 Ctrl
+ C
会话并停止其中的程序,你可以首先使用 screen -r [会话名称或ID]
重新连接到该会话,然后按下 Ctrl
+ C
来终止程序。
接着,你可以使用 exit
或按 Ctrl
+ D
来结束该 exit
或按 Ctrl
+ D
来结束该 screen
会话。
$ screen -S appDemo_session ./appDemo.lua -------------以下在在会话中的逻辑终端显示,退出后会消失 > help Available commands: 1. show 2. exit 3. help 4. run > exit exitCLI ------------- [screen is terminating] $
3.5 创建多个窗口:
在同一个 screen
会话中,你可以使用 Ctrl
+ A
然后再按 C
会话中,你可以使用 Ctrl
+ A
然后再按 C
来创建一个新的窗口。
每个窗口可以有自己的命令行历史。要切换窗口,只需按 Ctrl
+ A
然后按 N
(下一个)或 P
(上一个)。
要关闭窗口,只需按 Ctrl
+ A
然后按 K
,然后选择要关闭的窗口。
3.6 命名窗口:
你可以给窗口命名以方便识别。只需按 Ctrl
+ A
然后按 A
(重命名)。输入新名称并按回车。
3.7 查看所有窗口,
可以按下Ctrl+a
,然后按下w
键。这将显示当前Ctrl+a
,然后按下w
键。这将显示当前screen
会话中的所有窗口列表,包括窗口的编号和名称。
$ screen -S appDemo_session ./appDemo.lua -------------以下在在会话中的逻辑终端显示,退出后会消失 > help Available commands: 1. show 2. exit 3. help 4. run > $ ls appDemo.lua # 按ctrl+A 然后按K,输入y表示结束当前窗口 Really kill this window [y/n]
在一个会话中创建多个窗口
$ ls appDemo.lua # 按三次ctrl+a,然后按c,创建三个各自独立的窗口,每个窗口有自己的命令行历史 # 然后按 ctrl+a,然后按w查看所有窗口 0$ appDemo.lua1$ bash2-$ bash3*$ bash # 现在相当于一个会话appDemo_session中有四个窗口,需要在四个窗口都exit才能退出该会话
二、ctrl+Z停止了进程之后,怎么再进入该程序?
在Unix和Linux系统中,当你使用Ctrl+Z
将一个程序暂停并放到后台时,该程序实际上是被挂起(暂停)了。
为了再次运行这个程序,你可以使用以下方法:
bg
命令可以将挂起的程序放到后台继续运行。bg
fg
命令。fg %1
其中%1
是你想要移到前台的挂起程序的编号。你可以使用jobs
命令查看挂起的程序的编号。
3. jobs:
使用jobs
命令可以列出当前挂起的程序。这些程序的编号可以帮助你确定要使用fg
或bg
命令时应该使用的编号。
jobs -l# 列出所有挂起的程序及其PID
kill
命令。但是,首先确保你真的想要结束它。kill %1
请注意,上述方法主要适用于shell环境中。如果你在图形界面中(如使用X Window System)运行程序,那么你可能需要使用不同的方法来控制程序的运行。
三、综合example示范
$ ./student ===== 学生信息管理系统 ===== 1. 录入学生信息 2. 显示学生信息 3. 查询学生信息 4. 修改学生信息 5. 删除学生信息 6. 退出 请选择操作: ^Z [1]+已停止 ./student $ bg [1]+ ./student & [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 $
$ ./appDemo.lua > help Available commands: 1. show 2. exit 3. help 4. run > ^Z [2]+已停止 ./appDemo.lua $ jobs -l [1]- 1545480 停止./stu11 [2]+ 1545484 停止./appDemo.lua $ bg [2]+ ./appDemo.lua & $ fg %2 ./appDemo.lua Unknown command. Type 'help' for available commands. > help Available commands: 1. show 2. exit 3. help 4. run > ^Z [2]+已停止 ./appDemo.lua
以上是如何在Linux系统下流畅切换不同的应用的详细内容。更多信息请关注PHP中文网其他相关文章!

如果您想在不支持的国家,地区或地区通过VPN使用Chatgpt,您知道哪个是ChatGpt最好的VPN?在这篇文章中,PHP.CN软件将为您提供一些不错的选择。您可以根据要求的人选择一个

如何修复Windows 11/10上的“ XboxPcappft.exe不良图像”问题?来自PHP.CN的这篇文章提出了解决烦人问题的多种方法。请继续阅读。

当您想在OneDrive中删除文件或文件夹时该怎么办,但是发现无法删除OneDrive文件或文件夹?现在,您可以从php.cn读取此帖子,以获取修复“ OneDrive文件无法在Windows 1中删除的最佳解决方案”

启动设备时,错误消息“显示连接可能是有限的”是一个烦人的问题。在PHP.CN的这篇文章中,您可以获取有关导致此问题以及如何快速解决问题的详细信息。

Microsoft向Dev Channel中的内部人员释放了新的构建,它是Windows 11 Build 25115。与Beta通道发布的构建相比,这是一个更高的构建。您可以遵循此PHP.CN帖子以了解有关它的一些相关信息。

如何释放C驱动器上的空间,还是如何清除C驱动器上的浪费?这是PHP.CN关注的主题。如果您的C驱动器充满了旧应用程序和不必要的程序,则可以选择清理它。让我们开始。

Chatgpt已使用GPT-4更新。为了帮助您更好地理解此更新,我们将介绍Chatgpt 4和Chatgpt 3之间的差异。此外,如果要在Windows上恢复已删除的文件,则可以尝试PHP.CN电源数据恢复。

如果使用Windows 11 N或KN版本,如何下载和安装媒体功能包? 在这篇文章中,PHP.CN提供了有关获取Windows 11 Media功能包的分步指南。让我们查看一些细节。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

SublimeText3 Linux新版
SublimeText3 Linux最新版

SecLists
SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3汉化版
中文版,非常好用

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器

PhpStorm Mac 版本
最新(2018.2.1 )专业的PHP集成开发工具