目录
1、工作管理简介
2、如何把命令放入后台
3、后台管理命令
(1)查看后台的工作
(2)将后台暂停的工作恢复到前台执行
(3)把后台暂停的工作恢复到后台执行
4、后台命令脱离登录终端运行
简单的说,工作管理就是管理前台的任务和后台的任务。
后台管理有几个重要事项需要注意:
前台是指当前可以操控和执行命令的这个操作环境,后台是指工作可以自行运行,但是不能直接用<code>ctrl+c</code>来终止它,只能使用<code>fg/bg</code>来调用工作。
当前的登录终端,只能管理当前终端的工作,而不能管理其他登录终端的工作。如<code>tty1</code>登录的终端,是不能管理<code>tty2</code>终端中的工作的。
也就是说哪一个终端放入后台运行的程序,只有这个终端能查看到,其他的终端是查看不到该程序的。
该终端一关闭,由这个终端放入后台运行的程序也会终止。
也可以关闭终端让其放入后台的程序不终止,在本文第4点。
放入后台的命令必须可以持续运行一段时间,这样我们才能扑捉和操作这个工作。如果把<code>ls</code>命令放入后台执行,它很快就会执行完成,我们很难操作它。
放入后台执行的命令不能和前台用户有交互或需要前台输入,否则放入后台只能暂停,而不能执行。比如<code>vim</code>命令放入后台只能暂停,而不能执行,因为<code>vim</code>需要前台输入信息。
还有一个<code>top</code>命令也不能放入后台执行,而只能放入后台暂停,因为<code>top</code>命令需要和前台有交互。
也就是说,不是所有的命令都是可以在后台执行的, 只有这个程序不需要用户介入才可以。比如说:打包压缩、程序安装等。(重点)
有两种方法,分别如下:
(1)方式一
使用<code>命令 &</code>,把命令放入后台。
执行第一种把命令放入后台的方法是在命令后面加入<code>空格&</code>,这种方法放入后台的命令,在后台是执行状态。
但是注意,放入后台执行的命令不能与前台有交互,否则这个命令是不能在后台执行的。
举个例子:
这样的好处,虽然tar命令在执行,但是当前终端我还是可以进行其他命令操作的。
(2)方式二
第二种方法是在命令执行过程中按<code>ctrl+z</code>快捷键,命令在后台是暂停状态。
使用这种方法放入后台的命令,就算是不和前台有交互,能在后台执行的命令,也是暂停状态。换句话说就是把一个服务先暂停,在放入后台。
<code>ctrl+z</code>快捷键就是暂停的快捷键。
示例:
通过<code>ps aux</code>命令也可以看到该进程。可以看他该进程的状态是<code>T</code>,停止状态。
如下图所示:

也就是说,执行这个命令的进程就会一直卡在这。
你可以强制把这个进程kill掉,也可以把该进程恢复到前台继续进行操作(下一点会说明)。
使用<code>jobs</code>命令,如下:
使用<code>fg</code>命令,如下:
使用<code>bg</code>命令,如下:
提示 你也可以直接把终端关闭掉,这些通过该终端被放入后台的工作,也会消失。 当然这不是正确关闭后台工作的方式。还是应该正确终止后台工作之后,再关闭终端。
我们已经知道把命令放入后台,只能在当前登录终端执行。
那如果我是远程管理的服务器,在远程终端中执行了后台命令,这时我退出登录,这个后台命令就不能继续执行了,这个后台命令会被终止。
但是我们确实需要在远程终端中执行某些后台命令,使这些命令在关闭终端的时候,也能够继续执行。
该如何执行呢?
第一种方法是把需要后台执行的命令加入<code>/etc/rc.local</code>文件,让系统在启动时执行这个后台程序。
这种方法的问题是,服务器时不能随便重启的,万一有临时后台任务,服务器不能重启,就不能执行。
第二种方法是使用系统定时任务,让系统在指定的时间执行某个后台命令。
这样放入后台的命令与终端无关,是不依赖登录终端的。
第三种方法是使用<code>nohup</code>命令
<code>nohup</code>命令的作用就是让后台工作在离开操作终端时,也能够正确的在后台执行。
命令的格式如下:
常见的还是用第三种方式处理。