『学了就忘』Linux系统管理 — 85、工作管理相关命令
1、工作管理简介
简单的说,工作管理就是管理前台的任务和后台的任务。
后台管理有几个重要事项需要注意:
- 前台是指当前可以操控和执行命令的这个操作环境,后台是指工作可以自行运行,但是不能直接用
ctrl+c
来终止它,只能使用fg/bg
来调用工作。 - 当前的登录终端,只能管理当前终端的工作,而不能管理其他登录终端的工作。如
tty1
登录的终端,是不能管理tty2
终端中的工作的。
也就是说哪一个终端放入后台运行的程序,只有这个终端能查看到,其他的终端是查看不到该程序的。
该终端一关闭,由这个终端放入后台运行的程序也会终止。
也可以关闭终端让其放入后台的程序不终止,在本文第4点。 - 放入后台的命令必须可以持续运行一段时间,这样我们才能扑捉和操作这个工作。如果把
ls
命令放入后台执行,它很快就会执行完成,我们很难操作它。 - 放入后台执行的命令不能和前台用户有交互或需要前台输入,否则放入后台只能暂停,而不能执行。比如
vim
命令放入后台只能暂停,而不能执行,因为vim
需要前台输入信息。
还有一个top
命令也不能放入后台执行,而只能放入后台暂停,因为top
命令需要和前台有交互。
也就是说,不是所有的命令都是可以在后台执行的, 只有这个程序不需要用户介入才可以。比如说:打包压缩、程序安装等。(重点)
2、如何把命令放入后台
有两种方法,分别如下:
(1)方式一
使用命令 &
,把命令放入后台。
执行第一种把命令放入后台的方法是在命令后面加入空格&
,这种方法放入后台的命令,在后台是执行状态。
但是注意,放入后台执行的命令不能与前台有交互,否则这个命令是不能在后台执行的。
举个例子:
# 1.打包etc目录
# 将tar命令放入后台执行,每个后台命令会分配一个工作号,
# 命令既然可以执行,就会有进程产生,所以也会有进程号。
[root@localhost ~]# tar -zcf etc.tar.gz /etc &
# [工作号] 进程号
# 工作号:放入后台的顺序。
[1] 34567
[root@localhost ~]# tar: 从成员名中删除开头的“/”
tar: 从硬连接目标中删除开头的“/”
# 不清楚为何出现这两行,不影响,可以忽略。
# 2.查看后台进程
# 使用jobs命令查看
# 可以看到我们刚刚放入后台正在运行的命令。
# 运行状态Running。
[root@localhost ~]# jobs
[1]+ Running tar -zcf etc.tar.gz /etc &
# 3.放入后台的命令执行完成后,会给你提示。
# 如果下面信息在终端上出现:
# 证明后台这个任务已经完成了,当然命令如果有执行结果的话,也会显示到操作终端上。
# [1]是这个命令的工作号,+号代表这个任务是最近一个被放入后台的工作。
[1]+ Done tar -zcf etc.tar.gz /etc
这样的好处,虽然tar命令在执行,但是当前终端我还是可以进行其他命令操作的。
(2)方式二
第二种方法是在命令执行过程中按ctrl+z
快捷键,命令在后台是暂停状态。
使用这种方法放入后台的命令,就算是不和前台有交互,能在后台执行的命令,也是暂停状态。换句话说就是把一个服务先暂停,在放入后台。
ctrl+z
快捷键就是暂停的快捷键。
示例:
# 还是上边打包etc目录
# 1.执行打包etc目录命令,然后快速按下ctrl+z
[root@localhost ~]# tar -zcf etc.tar.gz /etc
tar: 从成员名中删除开头的“/”
tar: 从硬连接目标中删除开头的“/”
^Z # 执行的过程中,按下ctrl+z快捷键
# 该tar命令被放入后台,工作号是1,状态是暂停。
[1]+ Stopped tar -zcf etc.tar.gz /etc
# 2.这个时候查看后台运行的进程
# 可以看到该tar命令在后台是停止的状态,工作号是1。
[root@localhost ~]# jobs
[1]+ Stopped tar -zcf etc.tar.gz /etc
通过ps aux
命令也可以看到该进程。可以看他该进程的状态是T
,停止状态。
如下图所示:
也就是说,执行这个命令的进程就会一直卡在这。
你可以强制把这个进程kill掉,也可以把该进程恢复到前台继续进行操作(下一点会说明)。
3、后台管理命令
(1)查看后台的工作
使用jobs
命令,如下:
[root@localhost ~]# jobs -l
选项:
-l:显示工作的PID
示例:
[root@localhost ~]# jobs
[1]- Stopped tar -zcf etc.tar.gz /etc
[2]+ Stopped top
# 代-l选项查看
[root@localhost ~]# jobs -l
[1]- 6853 停止 tar -zcf etc.tar.gz /etc
[2]+ 6855 停止 (tty 输出) top
[root@Lyl ~]#
(2)将后台暂停的工作恢复到前台执行
使用fg
命令,如下:
[root@localhost ~]# fg %工作号
参数:
%工作号:%号可以省略,但是注意工作号和PID的区别
示例:
# 执行下面命令,会直接跳转到top命令的交互界面
[root@localhost ~]# fg %2
(3)把后台暂停的工作恢复到后台执行
使用bg
命令,如下:
[root@localhost ~]# bg %工作号
示例:
# 查看后台工作,可以看到tar命令是在后台停止状态
[root@localhost ~]# jobs -l
[1]+ 6853 停止 tar -zcf etc.tar.gz /etc
# 把后台暂停的工作恢复到后台执行
[root@localhost ~]# bg %1
[1]+ tar -zcf etc.tar.gz /etc &
# 查看后台工作,可以看到tar命令的状态是完成,
# 等一小下,在执行jobs查看后台工作,就会没有任何显示了。
# 证明后台停止的tar命令,已经在后台执行完成了。
[root@localhost ~]# jobs -l
[1]+ 6853 Done tar -zcf etc.tar.gz /etc
提示
你也可以直接把终端关闭掉,这些通过该终端被放入后台的工作,也会消失。
当然这不是正确关闭后台工作的方式。还是应该正确终止后台工作之后,再关闭终端。
4、后台命令脱离登录终端运行
我们已经知道把命令放入后台,只能在当前登录终端执行。
那如果我是远程管理的服务器,在远程终端中执行了后台命令,这时我退出登录,这个后台命令就不能继续执行了,这个后台命令会被终止。
但是我们确实需要在远程终端中执行某些后台命令,使这些命令在关闭终端的时候,也能够继续执行。
该如何执行呢?
- 第一种方法是把需要后台执行的命令加入
/etc/rc.local
文件,让系统在启动时执行这个后台程序。
这种方法的问题是,服务器时不能随便重启的,万一有临时后台任务,服务器不能重启,就不能执行。 - 第二种方法是使用系统定时任务,让系统在指定的时间执行某个后台命令。
这样放入后台的命令与终端无关,是不依赖登录终端的。 - 第三种方法是使用
nohup
命令
nohup
命令的作用就是让后台工作在离开操作终端时,也能够正确的在后台执行。
命令的格式如下:[root@localhost ~]# nohup [命令] & 例如:
# 用find命令,打助/下所有文件,放入后台执行。
[root@localhost ~]# nohup find / -print > /root/file.log &
[3] 23496
[root@localhost ~]# nohup:忽略输入并把输出追加到"nohup.out"
常见的还是用第三种方式处理。
『学了就忘』Linux系统管理 — 85、工作管理相关命令的更多相关文章
- 『学了就忘』Linux系统管理 — 81、进程管理介绍
目录 1.进程与线程的概念 2.什么是进程管理 3.进程管理的作用 4.Linux进程的几种状态 5.进程与线程的关系 (1)线程与进程的关系 (2)总结 1.进程与线程的概念 来源百度百科: 进程( ...
- 『学了就忘』Linux系统管理 — 82、Linux中进程的查看(ps命令)
目录 1.ps命令介绍 2.ps aux命令示例 3.ps -le命令示例 4.pstree命令 1.ps命令介绍 ps命令是用来静态显示系统中进程的命令. 不过这个命令有些特殊,它部分命令的选项前不 ...
- 『学了就忘』Linux系统管理 — 83、Linux中进程的查看(top命令)
目录 1.top命令介绍 2.top命令示例 3.top命令输出项解释 4.top命令常用的实例 1.top命令介绍 top命令是用来动态显示系统中进程的命令. [root@localhost ~]# ...
- 『学了就忘』Linux系统管理 — 84、Linux中进程的管理
目录 1.Linux系统中的信号 2.杀掉进程的命令 (1)kill命令 (2)killall命令 (3)pkill命令 1.Linux系统中的信号 Linux系统中可以识别的信号较多,我们可以使用命 ...
- 『学了就忘』Linux系统管理 — 86、查看系统资源相关命令
目录 1.vmstat命令 2.dmesg命令 3.free命令 4.查看CPU信息 5.查看本机登陆用户信息 (1)w命令 (2)who命令 6.uptime命令 7.查看系统与内核相关信息 1.v ...
- 『学了就忘』Linux文件系统管理 — 66、通过图形界面进行LVM分区
目录 1.选择自定义分区 2.分配boot分区 3.创建LVM物理卷 4.生成卷组 5.创建逻辑卷 6.格式化安装 我们先用新安装Linux系统时的图形化界面,来演示一下LVM逻辑卷如何进行分区. 提 ...
- 『学了就忘』Linux基础 — 11、通过setup工具配置Linux系统IP地址
目录 1.setup命令介绍 2.使用setup命令配置IP (1)执行setup命令 (2)进入图形化配置界面 (3)选择配置IP还是DNS (4)选择要配置的网卡 (5)进入IP地址配置页面 (6 ...
- 『学了就忘』Linux软件包管理 — 40、Linux系统软件包介绍
目录 1.Linux系统软件包分类 2.源码包说明 3.二进制包说明 4.RPM包的优缺点 4.RPM包的两种安装方法 5.总结 1.Linux系统软件包分类 Linux系统下的软件包只有源码包和二进 ...
- 『学了就忘』Linux权限管理 — 53、ACL权限详解
目录 1.什么是ACL权限 2.开启ACL 3.ACL权限的相关命令 (1)设定ACL权限 (2)查询文件的ACL权限 (3)设置文件ACL权限给用户组 (4)给文件夹和里边的文件同时赋予ACL权限 ...
随机推荐
- [atAGC023F]01 on Tree
对每一个节点维护一个序列,初始即自己(长度为1),并记$a_{i}$和$b_{i}$分别为第$i$个点序列上0和1的个数(也需要存储具体的序列) 考虑$\frac{b_{i}}{a_{i}}$最小中最 ...
- Hi3516开发笔记(三):Hi3516虚拟机基础环境搭建之交叉编译环境境搭建以及开机启动脚本分析
前言 前面进行了可以传输,那么写一个简单的C程序来交叉编译并传入运行. 虚拟机 上一篇搭建的虚拟机环境,包含了sftp传递文件,网络能ping通,基于上一篇的虚拟机继续搭建. 海思交叉 ...
- 前端---梳理 http 知识体系 2
为什么要有HTTPS HTTP 天生具有明文的特点,整个传输过程完全透明,任何人都能够在链路中截获.修改或者伪造请求 / 响应报文,数据不具有安全性.仅凭HTTP 自身是无法解决的,需要引入新的HTT ...
- java 代理模式实现代码
目录 1.静态代理 2.动态代理 1.静态代理 接口类AdminService.java接口 public interface AdminService { void update(); Object ...
- 洛谷 P4062 - [Code+#1]Yazid 的新生舞会 的线性做法
洛谷题面传送门 一个线性做法. \(n\log n\) 解法可以戳这里查看 首先回顾一下 \(n\log n\) 解法的过程:我们对于每一个数 \(x\),考察其出现位置,设为 \(t_1,t_2,t ...
- Codeforces 700D - Huffman Coding on Segment(莫队+根分)
Codeforces 题目传送门 & 洛谷题目传送门 好家伙,刚拿到此题时我连啥是 huffman 编码都不知道 一种对 \(k\) 个字符进行的 huffman 编码的方案可以看作一个由 \ ...
- Hermite WENO 重构格式
Hermite WENO 单元重构 本文主要介绍采用 Hermite WENO 重构方法作为斜率限制器应用于二维或高维单元中. 1.简介[1] ENO格式最早由 Harten 等[2]提出,ENO格式 ...
- TVB斜率限制器
TVB斜率限制器 本文参考源程序来自Fluidity. 简介 TVB斜率限制器最早由Cockburn和Shu(1989)提出,主要特点是提出了修正minmod函数 \[\tilde{m}(a_1, a ...
- 【机器学习与R语言】6-线性回归
目录 1.理解回归 1)简单线性回归 2)普通最小二乘估计 3)相关系数 4)多元线性回归 2.线性回归应用示例 1)收集数据 2)探索和准备数据 3)训练数据 4)评估模型 5)提高模型性能 1.理 ...
- mongodb数据库简单类
<?php/*** Mongodb类** examples: * $mongo = new HMongodb("127.0.0.1:11223"); * $mongo-> ...