一、screen

首先介绍下screen,screen是Linux下的一个任务容器,开启了之后就可以让任务在后台执行而不会被网络中断或者是终端退出而影响到。

在Linux中有一些耗时比较久的操作(例如备份,下载大文件)会占用着终端会话,如果中间因为人为或者非人为的因素退出后就会导致任务被中断掉。

在嵌入式中常用在编译的时候,想让它在后台运行

0. 安装

#CentOS
yum install screen
#Debian/Ubuntu
apt-get install screen

screen使用

  1. 创建

创建一个screen,用于执行其他任务

screen -S s1
#-S可以指定screen的名称,当然也可以不去指定,直接用
screen
#不过本人这里建议大家指定名称呢,这样可以快速的知道某个screen的作用,
#例如:`screen -S debug`、`screen -S test`.而且重新接入的时候,名称可以使用Tab键补全的

创建之后会,进入一个screen里面。一开始很容易绕晕。

在screen里面不能向上翻页,这个是个可以辨别是不是在screen里的方法。

另外Ctrl+a也用不了(PS:Ctrl+a在Linux命令行里面是跳转到命令行开头),因为Ctrl+a是screen里面的快捷键所以原本的功能没有了。

补充:进入screen后需要到行首可以使用Ctrl+a、a

  1. 从screen里面临时退出
screen -d

也可以使用快捷键,Ctrl+a、d

从screen里面临时退出之后,可以去做其他的事情。screen的任务依然可以继续往下执行,而且不受终端连接影响。

当然,如果因为意外原因退出了终端,screen里面的任务依然可以不受影响的。

从新接入那个screen

screen -r s1
#s1是先前创建的screen的名称,当然用pid也可以达到一样的效果
  1. 列出当前的screen
screen -ls

ls出来的screen后面会显示状态,(Detached)或者(Attached)。

(Attached)表示已接入该screen

(Detached)表示没有接入

  1. 退出某个screen

sept1. 先进入那个screen

screen -r s1

sept2. 然后退出

exit

screen常用快捷键

Ctrl+a c   :在当前screen会话中创建窗口
Ctrl+a d : 效果与screen -d相同,卸载当前会话
Ctrl+a w :显示当前会话中的窗口列表,显示在标题栏中
Ctrl+a n :切换到下一个窗口
Ctrl+a p :切换到上一个窗口
Ctrl+a 0-9 :在第0个窗口和第9个窗口之间切换

二、作业任务管理

先来解释一下,这个“作业任务”实际上就是Linux里边在跑的程序,那么这些程序捏。有时候我们需要频繁切换多个程序,就像安卓的Menu键可以调出任务管理器一样。

Linux下当然也可以开多个任务进行切换。使用命令行的任务管理也是很方便的。

1. 创建

创建一个任务,在Linux命令行中创建任务非常简单直接敲命令就可以。

下面创建一个可以在后台执行的任务

kevin@linux:~ $ vim test.txt

以上创建了一个任务,并且可以在后台执行

我们在里面输入一些东西,但是这个时候突然想要去处理另外一个文本。

我们可以直接保存退出。然后再打开另外一个文本。

但是正常这样退出会导致我们的思路被打断,第二次再打开的时候需要恢复现场。这样一来效率就降低了。

这个时候我们可以将任务挂起

2. 挂起

在执行任务的过程中我们可以暂时将这个任务挂起,然后再开始做其他的任务。

我们只需要按Ctrl+z,就可以挂起任务。

注意,挂起后任务就会暂停并不会继续往下执行

想要任务在后台继续运行可以使用,可以使用bg命令

bg

bg一般只会操作最近操作的任务,想要指定特定的任务在后台继续运行可以使用jobs查看任务编号

kevin@linux:~ jobs
[1] - suspended vim a.txt
[2] + suspended vim b.txt
kevin@linux:~ bg %2
[2] - 9999 continued vim b.txt
[2] + 9999 suspended (tty output) vim b.txt

如上,第一列是任务编号,第二列表示任务的状态。“+”代表最近一个被丢进后台的工作, “-”代表最近第二个被丢进后台的工作。

以上的例子可能不太好,一般都用在服务器调试,先启动了服务器,启动后用<Ctrl+z>+bg,可以让服务器在后台运行(和server&的效果是一样的)。这个时候再使用client调试。

3. 恢复(切换到前台执行)

一般在使用vim编辑的时候,可能需要跳到外面执行命令(Ctrl+z),执行完需要的测试之后再切换回去继续修改

这个时候可以用fg

fg

当然也可以指定某个任务,查看同上,用jobs

fg %2

这个时候就会切换到编号2的任务继续执行

4. 查看任务列表

用jobs,这个上面讲过了

总结

当然还有一些常规的命令,也可以方便的管理例如ps、top、kill这些就不详细说了

上面的命令结合使用可以提升开发效率,另外注意在screen里面运行了任务在后台的话需要把任务先退出,fg+

好了,以上就是本文的所有内容了。喜欢的话,欢迎推荐给身边的人。


虽然园龄有两年了,但是这个博主还是个萌新(写作方面)。如果有什么错误,欢迎大家指出。我会努力做的更好

本文遵循CC 4.0 BY-NC-SA协议,转载请注明出处

Linux下的screen和作业任务管理的更多相关文章

  1. linux下使用screen和ping命令对网络质量进行监控

    linux下使用screen和ping命令对网络质量进行监控 场景:应用连接云服务器经常偶尔会出现连接不上的情况,android和IOS端连接的时候也会出现tcp延时5秒以上,现在想验证是否是云服务商 ...

  2. kettle - Linux下定时执行kettle作业

    Linux下实现kettle 自动同步数据 1.安装jdk tar -zxvf jdk-7u25-linux-x64.tar.gz -C /usr/share 2.配置java环境 vim /etc/ ...

  3. Linux下进程间管道通信小作业

    在进行这次作业之前,我们先来看看什么是管道吧! 管道是Linux中很重要的一种通信方式,是把一个程序的输出直接连接到另一个程序的输入,常说的管道多是指无名管道,无名管道只能用于具有亲缘关系的进程之间, ...

  4. Linux下crontab命令添加Kettle作业定时任务

    1. 确保作业 $KETTLE_HOME/kitchen.sh -file=/data1/testdata/testkjb.kjb 或转换 $KETTLE_HOME/pan.sh -file=/dat ...

  5. Linux下性能监控、守护进程与计划任务管理

    目录 一:监视系统进程(ps .top) 二:查看网络连接信息 (netstat) 三:文件进程.端口关联(lsof) 四:计划任务管理(at .crontab) at crontab 一:监视系统进 ...

  6. 20155202 张旭 课下作业: Linux下IPC机制

    20155202张旭 Linux下IPC机制 IPC机制定义 在linux下的多个进程间的通信机制叫做IPC(Inter-Process Communication),它是多个进程之间相互沟通的一种方 ...

  7. 程序在Linux下前后台切换

    程序在Linux下前后台切换 一.为什么要使程序在后台执行 背景:SecureCRT远程连接到linux主机,使程序在后台运行有以下好处: (1)本机关机不影响linux主机运行 (2)不影响计算效率 ...

  8. 使程序在Linux下后台运行 (关掉终端继续让程序运行的方法)

    你是否遇到过这样的情况:从终端软件登录远程的Linux主机,将一堆很大的文件压缩为一个.tar.gz文件,连续压缩了半个小时还没有完成,这时,突然你断网了,你登录不上远程Linux主机了,那么前面的半 ...

  9. 使程序在Linux下后台运行,程序运行前后台切换

    一.为什么要使程序在后台执行 我们计算的程序都是周期很长的,通常要几个小时甚至一个星期.我们用的环境是用putty远程连接到日本Linux服务器.所以使程序在后台跑有以下三个好处: 1:我们这边是否关 ...

随机推荐

  1. 补:冲刺Day1

    各个成员在 Alpha 阶段认领的任务: 任务 执行人 用户模块 高嘉淳 订单模块 覃泽泰 商品模块 莫政.卢耀恒 充值模块 卢耀恒 前端界面设计&代码 许梓莹.梁小燕 发布博客 莫政 明日各 ...

  2. qtp学习入门

    qtp的学习,初始入门是简单的,推荐田艳琴的<QTP从实践到精通>这边书,看过后,一周就可以入门,并能够自行编写脚本,但是想要进入更深一层,则需要更广阔的知识!这条路任重道远,你我共勉

  3. 【Azure Developer】通过Azure提供的Azue Java JDK 查询虚拟机的CPU使用率和内存使用率

    问题描述 在Azure上创建虚拟机(VM)后,在门户上可以查看监控指标(Metrics),如CPU Usage,Memory,Disk I/O等.那如何通过Java 代码获取到这些指标呢? 关于VM ...

  4. CSS3全览_文本+视觉+盒子+背景颜色

    CSS全览_文本+视觉+盒子+背景颜色 目录 CSS全览_文本+视觉+盒子+背景颜色 1. 文本属性 2. 视觉格式化基础 3. 内边距, 边框, 轮廓和外边距 4. 颜色, 背景和渐变 作者: ht ...

  5. Sharding-JDBC分库分表简单示例

    1. 简介 Sharding是一个简单的分库分表中间件,它不需要依赖于其他的服务,即可快速应用在实际项目的分库分表策略中. 2. 初始化数据库(db0.db1.db2) 1 #创建数据库db0 2 C ...

  6. 【Electron Playground】Electron 窗口问题汇总

    作者:Kurosaki 本节旨在汇总在开发Electron 窗口可能遇到的问题,做一个汇总,后续遇到问题会持续更新. 1. 窗口闪烁问题. const { BrowserWindow } = requ ...

  7. VuePress教程之深入理解插件API

    VuePress教程之深入理解插件API 本文目录 1 VuePress教程之深入理解插件API 2 插件 ??? 2.1 暖暖身 2.2 插件如何运作 3 准备 3.1 Markdown 3.2 P ...

  8. maven继承父工程统一版本号

    一.建立一个maven工程 pom类型 统一管理依赖以及版本号 子工程不会使用所有的定义的依赖 子工程使用依赖时无需指定版本号 pom.xml <project xmlns="http ...

  9. zabbix学习(一)——LNMP环境搭建及zabbix安装

    第一部分:LNMP环境搭建 一.环境说明: OS:   centos7.6_x64nginx:nginx-1.16.0php:   php-7.1.11mysql:mysql-5.6.44 zabbi ...

  10. matplotlib学习日记(五)-各种饼状图的绘制

    (一)分裂式饼状图 import matplotlib as mpl import matplotlib.pyplot as plt import numpy as np mpl.rcParams[& ...