流畅切换Linux的应用程序

流畅切换Linux的应用程序

  • 流畅切换Linux的应用程序
    • 一.Linux启动一个程序在后台执行
      • 1. 使用`nohup`和`&`:
      • 2. 使用`ctrl+Z`:
      • 3.使用`screen`:
        • 3.1 创建会话
        • 3.2 要重新连接到此会话:
        • 3.3 中途退出会话,但程序继续运行:
        • 3.4 结束一个 `screen` 会话:
        • 3.5 **创建多个窗口**:
        • 3.6 **命名窗口**:
        • 3.7 查看所有窗口,
    • 二.ctrl+Z停止了进程之后,怎么再进入该程序?
    • 三.综合example示范

流畅切换Linux的应用程序

通过进程的前后台切换方式实现不同应用的切换。

背景: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。这将会从 screen 会话中分离,但程序仍然在后台运行。

示例:使用secreen开启多个会话在会话中执行程序。每个会话相当于一个逻辑终端,可以退出会话,让程序依然运行。

$ screen -S appDemo_session ./appDemo.lua
# 开启新的会话,并执行appDemo脚本程序
> help
Available commands:1. show2. exit3. help4. run
>   
# 按ctrl+A  D 退出会话
[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 来终止程序。接着,你可以使用 exit 或按 Ctrl + D 来结束该 screen 会话。

$ screen -S appDemo_session ./appDemo.lua
-------------以下在在会话中的逻辑终端显示,退出后会消失
> help
Available commands:1. show2. exit3. help4. run
> exit
exitCLI
-------------
[screen is terminating]
$
3.5 创建多个窗口:

在同一个 screen 会话中,你可以使用 Ctrl + A 然后再按 C 来创建一个新的窗口。每个窗口可以有自己的命令行历史。要切换窗口,只需按 Ctrl + A 然后按 N(下一个)或 P(上一个)。要关闭窗口,只需按 Ctrl + A 然后按 K,然后选择要关闭的窗口。

3.6 命名窗口:

你可以给窗口命名以方便识别。只需按 Ctrl + A 然后按 A(重命名)。输入新名称并按回车。

3.7 查看所有窗口,

可以按下Ctrl+a,然后按下w键。这将显示当前screen会话中的所有窗口列表,包括窗口的编号和名称。

$ screen -S appDemo_session ./appDemo.lua
-------------以下在在会话中的逻辑终端显示,退出后会消失
> help
Available commands:1. show2. exit3. help4. 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.lua  1$ bash  2-$ bash  3*$ bash# 现在相当于一个会话appDemo_session中有四个窗口,需要在四个窗口都exit才能退出该会话

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

在Unix和Linux系统中,当你使用Ctrl+Z将一个程序暂停并放到后台时,该程序实际上是被挂起(暂停)了。为了再次运行这个程序,你可以使用以下方法:

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

其中%1是你想要移到前台的挂起程序的编号。你可以使用jobs命令查看挂起的程序的编号。
3. jobs
使用jobs命令可以列出当前挂起的程序。这些程序的编号可以帮助你确定要使用fgbg命令时应该使用的编号。

jobs -l  # 列出所有挂起的程序及其PID
  1. kill
    如果你想要结束一个挂起的程序,可以使用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$ ./stu11Student 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. show2. exit3. help4. run
> ^Z
[2]+  已停止               ./appDemo.lua
$ jobs -l
[1]- 1545480 停止                  ./stu11
[2]+ 1545484 停止                  ./appDemo.lua
$ bg
[2]+ ./appDemo.lua &
$ fg %2
./appDemo.luaUnknown command. Type 'help' for available commands.
> help
Available commands:1. show2. exit3. help4. run
> ^Z
[2]+  已停止               ./appDemo.lua

学会了没,感谢大家点赞,收藏+关注,欢迎关注我的公众号:CoderSong,永远热爱思考,热爱生活,持续分享更多有价值的文章,与君共勉,共同成长

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/763282.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十节HarmonyOS 常用容器组件3-GridRow

1、描述 栅格容器组件,仅可以和栅格子组件(GridCol)在栅格布局场景中使用。 2、子组件 可以包含GridCol子组件。 3、接口 GridRow(options:{columns: number | GridRowColumnOption, gutter?: Length | GutterOption, Breakpoints?: B…

把 Taro 项目作为一个完整分包,Taro项目里分包的样式丢失

现象: 当我们把 Taro 项目作为原生微信小程序一个完整分包时,Taro项目里分包的样式丢失,示意图如下: 原因: 在node_modules/tarojs/plugin-indie/dist/index.js文件里,限制了只有pages目录下会被引入app.w…

Springboot实现qq邮件的发送

一、打开必要的邮件设置 首先登录qq邮箱官网登录之后,在设置中将传输协议给打开,我们需要用这个秘钥作为发件人的邮箱授权。 这里开启之后,记住这个秘钥。 二、代码编写 首先我们将作为发送邮件的账户信息写入配置文件。 spring:mail:hos…

windows server 下的mysql 8.0.28修改数据库目录

1. 查看当前数据库存储位置 show global variables like %datadir%; 默认是:C:\ProgramData\MySQL\MySQL Server 8.0\Data 2. 修改 C:\ProgramData\MySQL\MySQL Server 8.0\my.ini配置文件。如下: datadirD:/ProgramData/MySQL/MySQL Server 8.0/Dat…

小兴教你做平衡小车-JGB37-520电机介绍

文章目录 1 前言2 分析电机安装板3 介绍电机驱动板3.1 电机驱动板原理图3.2 电机驱动板PCB图3.2 电机驱动板3D效果图 1 前言 为了更好的对JGB37-520这款电机有个了解,这里直接上图应该会清晰些。这款电机带有霍尔编码器,方便对车轮的转速进行采集。咱们…

vulnhub-----pWnOS1.0靶机

文章目录 1.信息收集2.漏洞测试3.爆破hash4.提权 首先拿到一台靶机,就需要知道靶机的各种信息(IP地址,开放端口,有哪些目录,什么框架,cms是什么,网页有什么常见的漏洞,如sql注入&…

第2讲-Memory(3)主存

主存储器 多模块存储器

数据库系统概论-第16章 数据仓库与联机分析处理技术

概念性的介绍,一略而过,不重要。 16.1 数据仓库技术 16.2 联机分析处理技术 16.3 数据挖掘技术 16.4 大数据时代的新型数据仓库 16.5 小结

3d画线生成模型之后最大化找不到---模大狮模型网

当你在3D建模软件中画线生成模型后,如果最大化找不到该模型,可能是因为以下几种情况导致: 模型位置偏移: 可能你在绘制线条时,将模型画在了视图界面之外,导致最大化时无法看到。尝试平移或旋转模型&#x…

vue3中如何实现多个侦听器(watch)

<body> <div id"app"><input type"button" value"更改名字" click"change"> </div> <script src"vue.js"></script> <script>new Vue({el: #app,data: {food: {id: 1,name: 冰激…

透视未来工厂:山海鲸可视化打造数字孪生新篇章

在信息化浪潮的推动下&#xff0c;数字孪生工厂项目正成为工业制造领域的新宠。作为一名山海鲸可视化的资深用户&#xff0c;我深感其强大的数据可视化能力和数字孪生技术在工厂管理中的应用价值&#xff0c;同时我们公司之前也和山海鲸可视化合作制作了一个智慧工厂项目&#…

Matlab与高光谱遥感:环境监测的新时代

光谱和图像是人们观察世界的两种方式&#xff0c;高光谱遥感通过“图谱合一”的技术创新将两者结合起来&#xff0c;大大提高了人们对客观世界的认知能力&#xff0c;本来在宽波段遥感中不可探测的物质&#xff0c;在高光谱遥感中能被探测。以高光谱遥感为核心&#xff0c;构建…

三星工厂突发大火···  | 百能云芯

据韩媒报道&#xff0c;三星SDI位于韩国京畿道龙仁市基兴区的器兴工厂发生火灾。火灾发生在当地时间周四下午15:37左右&#xff0c;持续约20分钟后被扑灭。 幸运的是&#xff0c;此次火灾并未造成人员伤亡&#xff0c;但火场附近的一些帐篷已经被烧毁。消防部门目前正在调查火灾…

Windows 11 安装 WSL2

一、 概述 之前公司的服务器版本一直是ubuntu 16.04&#xff0c;然后再拉取新项目代码时编译报错找不到GLIBCXX_3.4.22 查看版本&#xff1a;strings /usr/lib/x86_64-linux-gnu/libstdc.so.6 | grep GLIBC ubuntu 16.04版本太低&#xff0c;更换20.04版本&#xff0c;所以就…

【JDBC编程】Java连接MySQL的五个步骤

目录 JDBC编程 1.JDBC的使用 2.数据库连接Connection 3.Statement对象 4.ResultSet对象 JDBC编程 JDBC编程运用了MySQL提供的 Java 的驱动包 mysql-connector-java &#xff0c;需要基于 Java 操作 MySQL 即需要该驱动包。同样的&#xff0c; 要基于 Java 操作 Oracle 数据库…

demo版多人聊天系统

目录 ​编辑 一&#xff0c;引入 二&#xff0c;在Server端修改的代码 1&#xff0c;保存用户信息功能实现 2&#xff0c;拼接消息 3&#xff0c;广播消息 三&#xff0c; Client端要修改的代码 四&#xff0c;效果演示 一&#xff0c;引入 在上一篇文章udp网络服务器中&a…

MySQL索引优化

示例 CREATE TABLE employees (id int(11) NOT NULL AUTO_INCREMENT,name varchar(24) NOT NULL DEFAULT COMMENT 姓名,age int(11) NOT NULL DEFAULT 0 COMMENT 年龄,position varchar(20) NOT NULL DEFAULT COMMENT 职位,hire_time timestamp NOT NULL DEFAULT CURRENT_TI…

PyTorch深度学习:如何提升遥感影像的地物分类精度?

我国高分辨率对地观测系统重大专项已全面启动&#xff0c;高空间、高光谱、高时间分辨率和宽地面覆盖于一体的全球天空地一体化立体对地观测网逐步形成&#xff0c;将成为保障国家安全的基础性和战略性资源。未来10年全球每天获取的观测数据将超过10PB&#xff0c;遥感大数据时…

【算法杂货铺】分治

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 快速排序 &#x1f4c2;75. 颜色分类 - 力扣&#xff08;LeetCode&#xff09; &#x1f4c2; 912. 排序数组 - 力扣&#xff08;LeetCode&#xff09; &#x1f4c2; 215. 数组中的第K个最大元素 - 力扣&#xff08;Lee…

突然发现!原来微信批量自动加好友这么简单!

你知道如何更好地管理和利用微信资源&#xff0c;实现客户拓展和沟通吗&#xff1f;下面就教大家一招&#xff0c;帮助大家实现统一管理多个微信号以及批量自动加好友。 想要统一管理多个微信号&#xff0c;不妨试试微信管理系统&#xff0c;不仅可以多个微信号同时登录&#…