流畅切换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.rhkb.cn/news/282382.html

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

相关文章

STM32的简单介绍

STM32是一种基于ARM Cortex-M内核的32位微控制器,由意法半导体公司开发和生产。STM32具有丰富的外设和功能,适用于各种应用场合,如工业控制、消费电子、物联网、人机交互等。STM32的优势包括低功耗、高性能、高可靠性、易于开发等。STM32的系…

上海晋名室外暂存柜助力新技术皮革制品生产行业安全

本周上海晋名又有一台室外危化品暂存柜项目通过验收,此次项目主要用于新技术皮革制品生产行业油桶、化学品等物资的室外暂存安全。 用户单位创立于2004年,是一家从事新技术皮革制品加工、生产的外资企业。 上海晋名作为一家专注工业安全防护领域&#…

基于消失点的相机自标定

基于消失点的相机自标定 附赠最强自动驾驶学习资料:直达链接 相机是通过透视投影变换来将3D场景转换为2D图像。在射影变换中,平行线相交于一点称之为消失点。本文详细介绍了两种利用消失点特性的标定方法。目的是为根据实际应用和初始条件选择合适的标…

SpingBoot集成Rabbitmq及Docker部署

文章目录 介绍RabbitMQ的特点Rabbitmq术语消息发布接收流程 Docker部署管理界面说明Overview: 这个页面显示了RabbitMQ服务器的一般信息,例如集群节点的名字、状态、运行时间等。Connections: 在这里,可以查看、管理和关闭当前所有的TCP连接。Channels: …

component-右侧抽屉组件

1.右侧抽屉组件 点击筛选&#xff0c;右侧抽屉滑出&#xff0c;点击取消或者点击空白处抽屉收起。 2.代码 <template><div class"all" click"hidden()"><!-- 抽屉 --><div class"drawer"><div class"drawerBo…

js处理数组分类

const obj [{"groupingType": "1","remark": "梨花带雨","totalRmbMoney": 7,"kyeGroupingType": "广州一组"},{"groupingType": "2","remark": "99","…

【蓝桥杯】第15届蓝桥杯青少组stema选拔赛C++中高级真题答案(20240310)

一、选择题 第 1 题 第 2 题 表达式1000/3的结果是( A )。 A.333 B.333.3 C.334 D.333.0 第 3 题 下列选项中&#xff0c;判断a等于1并且b等于1正确的表达式是( B )。 A.!((a!1)&&(b!1)) B.!((a!1)||(b!1)) C.!(a1)&&(b1) D.(a1)&&(b1) 【解析】 A…

测试用例设计指南

软件测试设计是测试过程中重要的测试活动&#xff0c;怎么样设计测试用例能提高我们测试的效率和质量&#xff0c;从以下几个方面做了简单的讲解。 1 测试用例设计原则 测试用例设计的基本原则包括&#xff1a;有效性、清晰性、可复用性、可维护性、完整性、兼容性、易操作性…

【数据可视化】Echarts官方文档及常用组件

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 前言2. Echarts官方文档介绍3. ECharts基础架构及常用术语3.1 ECharts的基础架构3.2 ECharts的常用术语3.2.1 ECharts的基本名词3.2.2 ECharts的图表名词 4. 直角坐标系下的网格及坐标轴4.1 直角坐标系下的网格4.2…

360企业安全浏览器兼容模式显示异常某个内容不显示 偶发现象 本地无法复现情况js

360企业安全浏览器兼容模式显示异常 &#xff0c;现象测试环境频发 &#xff0c;本地连测试无法复现&#xff0c;线上反馈问题。 出现问题的电脑为windows且使用360企业安全浏览器打开兼容模式可复现 复现过程&#xff1a; 不直接点击超链接跳转页面 &#xff0c;登录后直接通…

vue3+threejs新手从零开发卡牌游戏(三):尝试在场景中绘制一张卡牌

首先我们思考下&#xff0c;一张最简单的卡牌有哪些东西构成&#xff1a;卡牌样式和卡牌数据。一张卡牌有正面和背面&#xff0c;有名称、属性、种族、攻击力等数据&#xff0c;我们先不考虑数据&#xff0c;先尝试在场景中绘制一张卡牌出来。 一、寻找卡牌素材 为了简单我直…

【考研数学】如何打牢基础?刷1800/1000/880/660还是教材?

如果想要用课后题来复习的话&#xff0c;可以从网上找一份复习题单来对照着做&#xff0c;这样可以把一些非重点内容忽略过去&#xff0c;提高我们复习的效率。 如果备考考研数学的话&#xff0c;专门的练习册更好一些。因为课后习题同类型的题目比较少&#xff0c;对于总结能…

持续领跑!腾讯云NDR再获Gartner®认可

近日&#xff0c;国际研究机构Gartner发布《Competitive Landscape&#xff1a;Network Detection and Response》&#xff08;以下简称“报告”&#xff09;&#xff0c;腾讯被列为NDR案例厂商&#xff08;NDR for SaaS and Cloud Identity Applications&#xff09;。 腾讯云…

需求:JSON数据显示null值或者不显示null值

使用hutool的工具类 import cn.hutool.json.JSON; import cn.hutool.json.JSONConfig; import cn.hutool.json.JSONUtil;public class Main {public static void main(String[] args) {String sss "{\"1\":\"a\",\"2\":null}";// 不…

【vue-小知识】var、let 和 const之间的区别

文章目录 结论1、重复定义变量名var&#xff1a;允许重复定义变量名let和const&#xff1a;不可以重复定义变量名 2、修改值var&#xff1a;允许修改值let&#xff1a;允许修改值const&#xff1a;不允许修改值&#xff0c;会报错 3、变量提升var : 支持变量提升let和const&…

程序猿成长之路之番外篇——矩阵算法

今天在复习线性代数知识的过程中&#xff0c;用java语言简单实现了一下矩阵算法。 数学知识回顾 1.什么是矩阵 在数学领域&#xff0c;矩阵就像一个表格&#xff0c;将数据排放进去&#xff0c;形成一个矩形。我们习惯用一个大括号把矩阵内的数据包括进来。 1.矩阵 在数学领域…

Linux系统部署DolphinScheduler任务调度系统并实现无公网IP远程访问

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问&#xff0c;结合内…

黑马现有java课程框架及其功能梳理

目录 高并发相关提高通信效率Netty作用&#xff1a;哪些框架使用它&#xff1a; ChannelChannelHandler 和 ChannelPipelineEventLoop 和 EventLoopGroup**涉及的名词解释&#xff1a;**NIOSocketNginx 高并发相关 主要用来解决IO密集型程序&#xff08;大量文件读写&#xff…

python矢量算法-三角形变化寻找对应点

1.算法需求描述 现有随机生成的两个三角形A与B&#xff0c;在三角形A中存在Pa&#xff0c;使用算法计算出三角形B中对应的点Pb 2.python代码 import numpy as np # 计算三角形A的面积 def area_triangle(vertices): return 0.5 * np.abs(np.dot(vertices[0] - vertices[…

大数据架构设计

本博客地址&#xff1a;https://security.blog.csdn.net/article/details/136657478 一. 基本概念 1、解决传统数据架构无法及时响应用户请求的常用解决方法&#xff1a; ● 增加异步处理队列&#xff0c;通过工作处理层批量处理异步处理队列中的数据修改请求。 ● 建立数据库…