Linux配置程序后台运行(前后台来回切换)

news2024/11/19 2:37:56

Linux配置程序后台运行

在日常开发过程中,会遇到我们在前台运行程序,此时我们临时有事,但不能关闭终端,否则程序就会在电脑熄屏(终端session断开后)停止运行。

  • 那么作为一个合格的开发,就必须要知道如何让程序在后台运行,以及如何将后台运行的程序拉回前台。
  • 配置后台运行:
    方法一:nohup xxx &
    方法二:ctrl+z配合bg(background)
    方法三:screen
  • 后台程序拉回前台:
    1. jobs:查看jobID
    2. fg:fg %1,将jobID为1的作业拉回前台

1 配置程序后台运行

①nohup xxxx &

如果我们程序还没有运行,可以通过这种方式直接让程序在后台运行。

# outlog.txt 表示将终端输出保存到txt中
# 2>&1 表示将错误输出2定向到标注输出1中一起输出
# & 后台挂起
#0 表示stdin标准输入,用户键盘输入的内容
#1 表示stdout标准输出,输出到显示屏的内容
#2 表示stderr标准错误,报错内容
#2>&1是一个整体,>左右不能有空格,即将错误内容重定向输入到标准输出中去。
nohup ./test.sh > outlog.txt 2>&1 &

#如果不指定输出文件,默认会输出到nohup.out中
nohup ./test.sh &

# 查看是否后台运行成功,是否为running
jobs

在这里插入图片描述

②ctrl+Z加bg 作业编号

jobs查看作业,方框中为作业编号

如果我们已经在前台运行了程序,那么可以通过这种方式,将程序调整为后台运行。

  1. 使用Ctrl+z将正在前台运行的命令暂停这时命令以暂停的状态被扔到了后台
  2. jobs:查看后台作业情况
  3. bg %作业编号,例:bg %1

在这里插入图片描述

③screen

1 安装及基本操作
# 1 安装
# sudo apt-get install screen # ubuntu
sudo yum install screen #centos
# 查看是否安装成功
screen -v

# 2 使用
# 新建了一个叫testbg的窗口并进入
screen -S testbg
# 退出当前窗口,回到主窗口,窗口会出现[detached]提示
Ctrl a +d

# 恢复窗口
screen -ls #列出窗口列表

screen -r 2637 #进入2637线程,恢复count会话窗口

# 杀死窗口,再用screen -ls 可以看到该窗口后面的(???dead)字样
#说明窗口死了,但是仍在占用空间。这时需要清除窗口
kill -9 窗口ID 
# 清理死去的窗口
screen -wipe
2 配置后台运行
  1. 新建窗口
# 新建一个名为testbg的窗口
screen -R testbg

在这里插入图片描述
在这里插入图片描述

  1. 运行程序
    在这里插入图片描述

  2. ctrl+A ,然后再按下d,此时脱离窗口,来到外部窗口。开始的程序就在后台窗口运行,不会因为当前窗口退出而退出。
    在这里插入图片描述
    在这里插入图片描述

  3. 如果想进入之前窗口,可通过screen -r ID重新进入

# 查看窗口列表
screen -ls
# 重新进入窗口
screen -r 窗口ID

在这里插入图片描述
之前的程序正常运行:在这里插入图片描述

2 将后台运行程序拉回前台

fg %作业编号

jobs查看作业,方框中为作业编号

# 将任务调回前台运行 fg+ %jobID
fg %23

在这里插入图片描述

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

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

相关文章

Redis-更新策略,缓存穿透,缓存雪崩,缓存击穿

Redis-更新策略,缓存穿透,缓存雪崩,缓存击穿 1.缓存更新 策略 淘汰策略超时剔除主动更新 更新策略:先修改数据库还是先删除缓存 结论:先修改数据库,因为缓存的操作比较快,容易产生数据不一致更新缓存还是删除缓存? …

字符串转换为List<String>时候抛出异常:com.alibaba.fastjson2.JSONException: TODO : s

前言: 一个字符串想要能够转换为 List,其本身必须是具备 List 属性的字符串。 问题现象: 项目中需要对第三方接口返回的字符串转换为 List,就想到了使用 fastjson 来处理。 代码如下: Object obj data.get(SignC…

Canal介绍原理及安装

Canal 扩展篇 1.Canal介绍、 链接: https://github.com/alibaba/canal Canal 主要用途是基于 MySQL 数据库增量日志解析,提供增量数据订阅和消费,工作原理如下: Canal 模拟 MySQL slave 的交互协议,伪装自己为 MySQL slave &am…

启动nginx时报错:signal process started

解决方案,直接使用该命令启动,指向nginx.conf配置文件: nginx -c /www/wdlinux/nginx/conf/nginx.conf 启动成功:

JD抓包 | 安卓app抓包

去年11月份左右搞过一次安卓抓包, 搞了很久试了很多方法, 才弄好. 时隔半年, 安卓抓包依然是令我头疼的问题 这次简单记录一下过程(细节太多我也说不清) JD的有效信息接口通常是以下这样的, 其他的接口并没有返回太多"有用"的信息 https://api.m.jd.com/client.act…

使用 Prometheus 在 KubeSphere 上监控 KubeEdge 边缘节点(Jetson) CPU、GPU 状态

作者:朱亚光,之江实验室工程师,云原生/开源爱好者。 KubeSphere 边缘节点的可观测性 在边缘计算场景下,KubeSphere 基于 KubeEdge 实现应用与工作负载在云端与边缘节点的统一分发与管理,解决在海量边、端设备上完成应…

AI来了,Spring还会远吗?(Spring AI初体验)

目录 一、创建项目二、first demo1、application.properties2、ChatController3、结果 三、个人思考 一、创建项目 官方文档的Getting Started 最低要求:JDK17 阿里云的Server URL(https://start.aliyun.com/)搜不到Spring AI,…

『VUE』17. Dom与模板引用(详细图文注释)

目录 回顾之前的操作ref 属性借助dom使用原生js总结 欢迎关注 『VUE』 专栏,持续更新中 欢迎关注 『VUE』 专栏,持续更新中 回顾之前的操作 之前的这些操作都是我们使用vue为我们渲染的对象,再来操作dom 内容改变{{ 模板语法 }}属性改变 v-bind:添加事…

稀碎从零算法笔记Day49-LeetCode:设计哈希集合

题型:模拟 链接:705. 设计哈希集合 - 力扣(LeetCode) 来源:LeetCode 题目描述 不使用任何内建的哈希表库设计一个哈希集合(HashSet)。 实现 MyHashSet 类: void add(key) 向哈…

LangChain入门:14.LLMChain:最简单的链的使用

摘要 本文将介绍LangChain库中LLMChain工具的使用方法。LLMChain将提示模板、语言模型(LLM)和输出解析器整合在一起,形成一个连贯的处理链,简化了与语言模型的交互过程。我们将探讨LLMChain的技术特点、应用场景以及它解决的问题…

PostgreSQL入门到实战-第三十弹

PostgreSQL入门到实战 PostgreSQL教程网站官网地址PostgreSQL概述更新计划 PostgreSQL教程网站 https://www.postgresqltutorial.com/ 官网地址 声明: 由于操作系统, 版本更新等原因, 文章所列内容不一定100%复现, 还要以官方信息为准 https://www.postgresql.org/PostgreS…

OpenHarmony实战开发-Actor并发模型对比内存共享并发模型

内存共享并发模型指多线程同时执行复数任务,这些线程依赖同一内存并且都有权限访问,线程访问内存前需要抢占并锁定内存的使用权,没有抢占到内存的线程需要等待其他线程释放使用权再执行。 Actor并发模型每一个线程都是一个独立Actor&#xf…

MySQL limit N offset M 速度慢?来实际体验下

直接开始 有一张表:trade_user,表结构如下: mysql> desc trade_user; ------------------------------------------------------------------ | Field | Type | Null | Key | Default | Extra | -------------…

wpf下RTSP|RTMP播放器两种渲染模式实现

技术背景 在这篇blog之前,我提到了wpf下播放RTMP和RTSP渲染的两种方式,一种是通过控件模式,另外一种是直接原生RTSP、RTMP播放模块,回调rgb,然后在wpf下渲染,本文就两种方式做个说明。 技术实现 以大牛直…

群晖双硬盘实时备份(WebDAV Server+Cloud Sync)

安装和设置 WebDAV Server WebDAV 是一种基于HTTP的协议扩展,它允许用户在远程Web服务器上进行文档的编辑和管理,就如同这些文件存储在本地计算机上一样。使用WebDAV,用户可以创建、移动、复制和修改文件和文件夹。 安装和设置 Cloud Sync…

Spring5深入浅出篇:Spring自定义类型转换器

Spring5深入浅出篇:Spring自定义类型转换器 类型转换器 首先要知道什么叫做类型转换器 ,我们通过配置的属性值是以字符串的形式为什么在查看对象成员变量时已经变成了int,这就是Spring的内置类型转换器帮我们做了自动类型转换. 作⽤:Spring通过类型转换器把配置⽂件…

性能分析与限流策略

性能分析与限流策略 常用HTTP服务压测工具介绍 在项目正式上线之前,我们通常需要通过压测来评估当前系统能够支撑的请求量、排查可能存在的隐藏bug,同时了解了程序的实际处理能力能够帮我们更好地匹配项目的实际需求,节约资源成本 压测相关…

服务器主机关机重启告警

提取时间段内系统操作命名,出现系统重启命令,若要出现及时联系确认 重启命令: reboot / init 6 / shutdown -r now(现在重启命令) 关机命令: init 0 / shutdown -h now(关机&#…

C++ 多态实现机制

考虑下面的 C 程序&#xff1a; class A {void func(){} };class B:public A {void func(){} };int main(void) {cout << sizeof(A) << " " << sizeof(B) << endl;return 0; } 输出结果是&#xff1a;1 1 再考虑下面很相似的程序&#xf…

QtCreater 使用

QtCreater 创建项目 1.刚进入 QtCreater 的界面是这样的一个界面 ① 创建一个新的文件&#xff0c;那么我们就选择左上角的 “文件” ② 点击新建文件&#xff0c;或者也可以直接使用快捷键 CtrlN 此时就会弹出对话框&#xff0c;让我们选择想要创建的文件&#xff1a; Appli…