Linux工作管理 jobs、fg、bg、nohup命令
概述
在Linux 中我们登陆了一个终端,已经在执行一个操作,可以通过一定的操作或命令在不关闭当前操作的情况下执行其他操作。
例如,我在当前终端正在 vi 一个文件,在不停止 vi 的情况下,如果我想在同一个终端执行其他的命令,就应该把 vi 命令放入后台,然后再执行其他命令。把命令放入后台,然后把命令恢复到前台,或者让命令恢复到后台执行。
后台管理有几个事项需要大家注意:
- 前台是指当前可以操控和执行命令的这个操作环境;后台是指工作可以自行运行,但是不能直接用 Ctrl+C 快捷键来中止它,只能使用 fg/bg 来调用工作。
- 当前的登录终端只能管理当前终端的工作,而不能管理其他登录终端的工作。比如 tty1 登录的终端是不能管理 tty2 终端中的工作的。
- 放入后台的命令必须可以持续运行一段时间,这样我们才能捕捉和操作它。
- 放入后台执行的命令不能和前台用户有交互或需要前台输入,否则只能放入后台暂停,而不能执行。比如 vi 命令只能放入后台暂停,而不能执行,因为 vi 命令需要前台输入信息;top 命令也不能放入后台执行,而只能放入后台暂停,因为 top 命令需要和前台交互。
Linux命令放入后台运行的方法
把Linux 命令放入后台的方法有两种。
- 第一种是在命令后面加入" 空格 & "。使用这种方法放入后台的命令,在后台处于执行状态。
- 第二种是在命令执行过裎中按 Ctrl+Z 快捷键,命令在后台处于暂停状态。
每个被放入后台的命令都会被分配一个工作号。第一个被放入后台的命令,工作号是 1;第二个被放入后台的命令,工作号是 2,以此类推。
jobs命令:查看当前终端放入后台的工作
jobs 命令可以用来查看当前终端放入后台的工作,jobs 命令格式如下:
[root@localhost ~]#jobs [选项]
选项:
- -l:显示工作的 PID;
jobs命令:查看当前终端放入后台的工作
[root@localhost ~]#jobs -l
[]- Stopped top
[]+ Stopped tar -zcf etc.tar.gz /etc
可以看到,当前终端有两个后台工作:一个是 top 命令,工作号为 1,状态是暂停,标志是"-";另一个是 tar 命令,工作号为 2,状态是暂停,标志是"+"。
"+"号代表最近一个放入后台的工作,也是工作恢复时默认恢复的工作。"-"号代表倒数第二个放入后台的工作,而第三个以后的工作就没有"+-"标志了。
fg命令:把后台命令恢复在前台执行
如果想把后台工作恢复到前台执行,就需要执行 fg 命令。fg 命令格式如下:
[root@localhost ~]#fg %工作号
- %工作号:"%"可以省略,但是注意工作号和PID的区别;
fg命令把后台命令恢复在前台执行
默认是回复最近的一个放入后台的工作
[root@localhost ~]#jobs
[]- Stopped top
[]+ Stopped tar-zcf etc.tar.gz/etc
[root@localhost ~]# fg
#恢复“+”标志的工作,也就是tar命令
[root@localhost ~]# fg %
#恢复1号工作,也就是top命令
top 命令是不能在后台执行的,所以,如果要想中止 top 命令,要么把 top 命令恢复到前台,然后正常退出;要么找到 top 命令的 PID,使用 kill 命令杀死这个进程。
bg命令:把后台暂停的工作恢复到后台执行
使用 Ctrl+Z 快捷键方式放入后台的命令,在后台都处于暂停状态,使用 bg 命令可以让这个后台工作继续在后台执行。bg 命令格式如下:
[root@localhost ~]# bg %工作号
把刚刚放入后台的两个工作恢复运行
[root@localhost ~]# bg %
[root@localhost ~]# bg %
#把两个命令恢复到后台执行
[root@localhost @]# jobs
[]+ Stopped top
[]- Running tar -zcf etc.tar.gz /etc &
#tar命令的状态变为了Running,但是top命令的状态还是Stopped
可以看到,tar 命令确实已经在后台执行了, 因为 top 命令是需要和前台交互的,所以还处于暂停状态。top 命令就是给前台用户显示系统性能的命令,所以是不能在后台恢复运行的。
nohup命令
把命令放入后台,只能在当前登录终端执行。如果是远程管理的服务器,在远程终端执行了后台命令,这时退出登录,那么这个后台命令被中止。但是我们确实需要在远程终端执行某些后台命令,该如何执行呢?有以下 3 种方法:
- 把需要在后台执行的命令加入 /etc/rc.local 文件,让系统在启动时执行这个后台程序。这种方法的问题是,服务器是不能随便重启的,如果有临时后台任务,就不能执行了。
- 使用系统定时任务,让系统在指定的时间执行某个后台命令。这样放入后台的命令与终端无关,是不依赖登录终端的。
- 使用 nohup 命令。
nohup 命令的作用就是让后台工作在离开操作终端时,也能够正确地在后台执行。nohup 命令格式如下:
[root@localhost ~]# nohup [命令] &
使用find命令,打印/下的所有文件。放入后台执行
[root@localhost ~]# nohup find / -print > /root/file.log &
[]
接下来退出登录,重新登录之后,这个脚本仍然可以通过“ps aux”命令看到。
Linux工作管理 jobs、fg、bg、nohup命令的更多相关文章
- Linux - 工作管理(job control),jobs,fg,bg,kill
什么是工作管理? 『进行工作管理的行为中, 其实每个工作都是目前 bash 的子程序,亦即彼此之间是有相关性的. 我们无法以 job control 的方式由 tty1 的环境去管理 tty2 的 b ...
- nohup命令与&区别,jobs,fg,bg,Ctrl-Z、Ctrl-C、Ctrl-D
&方式: Unix/Linux下一般想让某个程序在后台运行,很多都是使用 & 在程序结尾来让程序自动运行.比如我们要运行mysql在后台: /usr/local/my ...
- [Linux内核]ctrl-z/fg/bg/nohup/setsid/()与&/disown/screen
转自:https://my.oschina.net/alphajay/blog/65058 My Tips: Ctrl -z -> suspend fg -> ...
- linux 后台运行进程 fg bg ctrl+z nohup
fg.bg.jobs.&.nohup.ctrl+z.ctrl+c 命令 一.& 加在一个命令的最后,可以把这个命令放到后台执行,如 watch -n 10 sh test.sh &am ...
- Linux工作管理
工作管理? 其实也就是把程序放到后台来管理,在windows中也就是最小化,在Linux中是通过命令把程序放到后台中.jobs命令查看后台程序. 对于第一点注意事项,mysql启动是例外的,要是叉掉了 ...
- Linux 工作管理 (job control)
fg , bg 有时,命令需要很长的时间才能执行完成.对于这种情况,我们使用‘bg’命令可以将任务放在后台执行,而用‘fg’可以调到前台来使用. 我们可以通过‘&’在后台启动一个程序: fin ...
- Linux命令-工作管理命令:&,ctrl+z,jobs,fg,bg
在linux下面将一个进程放入后台执行,有两种方式: 第一种方式:&表示命令在后台执行程序,等同于windows里面的程序最小化. 第二种方式:执行某一个命令,例如:top,然后按ctrl+z ...
- Linux下&/jobs/fg/bg命令的使用(转)
一.& 这个用在一个命令的最后,可以把这个命令放到后台执行. 二.[Ctrl]+[Z] 可以将一个正在前台执行的命令放到后台,并且暂停. 三.jobs 查看当前有多少在后台运行的命令. 四.f ...
- fg bg 等命令
fg.bg.jobs.&.ctrl + z都是跟系统任务有关的,虽然现在基本上不怎么需要用到这些命令,但学会了也是很实用的 一.& 最经常被用到 这个用在一个命令的最后,可以把这个命令 ...
随机推荐
- 多线程之使用读写锁ReentrantReadWriteLock实现缓存系统
简单地缓存系统:当有线程来取数据时.假设该数据存在我的内存中.我就返回数据.假设不存在我的缓存系统中,那么就去查数据库.返回数据的同一时候保存在我的缓存中. 当中涉及到读写问题:当多个线程运行读操作时 ...
- UE问题分部解决
0.寻找Actor ALandscape *land=nullptr; for (TActorIterator<ALandscape> It(GEditor->GetEditorWo ...
- hdu 4322(最大费用最大流)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4322 思路:建图真的是太巧妙了!直接copy大牛的了: 由于只要得到糖就肯定有1个快乐度,在这一点上糖 ...
- AWS那些需要注意的问题
自己走过的坑,才知道 1.1 EC2实例限制 EC2实例在申请超过20台后,会有数量限制. 解决方法: AWS控制台需要提工单,进行申请解除限制.把EC2数量提高到50台或者100台 此工单审核大概要 ...
- JavaScript------日期和时间戳的相互转换
var date = new Date(); 日期转时间戳 Number(date)或者date.getTime(); //只是转换成了纯数字的时间戳,例如:1498144203861需要转换才能使用 ...
- 第七篇:使用 fcntl 函数 获取,设置文件的状态标志
前言 当打开一个文件的时候,我们需要指定打开文件的模式( 只读,只写等 ).那么在程序中如何获取,修改这个文件的状态标志呢? 本文将告诉你如何用 fcntl函数 获取指定文件的状态标志. 解决思路 1 ...
- OGRE 保存纹理到文件
Ogre::TexturePtr tex = Ogre::TextureManager::getSingleton( ).getByName( "YaHeiTexture" ); ...
- linux串口编程参数配置详解
1.linux串口编程需要的头文件 #include <stdio.h> //标准输入输出定义 #include <stdlib.h> //标准函 ...
- Java接口成员变量和方法默认修饰符
Java的interface中,成员变量的默认修饰符为:public static final 所以我们在interface中定义成员变量的时候,可以 1:public static final S ...
- JAVA基础面试(四4)
31.String s = new String("xyz");创建了几个StringObject?是否可以继承String类? 两个或一个都有可能,”xyz”对应一个对象,这个对 ...