Linux &用法和jobs命令

Linux 命令放入后台的方法有两种,分别介绍如下


第一种把命令放入后台的方法是在命令后面加入 空格 &。使用这种方法放入后台的命令,在后台处于执行状态

注意,放入后台执行的命令不能与前台有交互,否则这个命令是不能在后台执行的。例如:

[root@localhost ~]#find / -name install.log &
[1] 1920
#[工作号] 进程号
#把find命令放入后台执行,每个后台命令会被分配一个工作号。命令既然可以执行,就会有进程产生,所以也会有进程号

这样,虽然 find 命令在执行,但在当前终端仍然可以执行其他操作。如果在终端上出现如下信息:

[1]+ Done find / -name install.log

证明后台的这个命令已经完成了。当然,命令如果有执行结果,则也会显示到操作终端上。其中,[1] 是这个命令的工作号,"+"代表这个命令是最近一个被放入后台的。

命令执行过裎中按 Ctrl+Z 快捷键,命令在后台处于暂停状态,使用这种方法放入后台的命令,就算不和前台有交互,能在后台执行,也处于暂停状态,因为 Ctrl+Z 快捷键就是暂停的快捷键

 

【例 1】

[root@localhost ~]#top
#在top命令执行的过程中,按下Ctrl+Z快捷键
[1]+ Stopped top
#top命令被放入后台,工作号是1,状态是暂停。而且,虽然top命令没有结束,但也能取得控制台权限

【例 2】

[root@localhost ~]# tar -zcf etc.tar.gz /etc
#压缩一下/etc/目录
tar:从成员名中删除开头的"/"
tar:从硬链接目标中删除开头的"/"
^Z
#在执行过程中,按下Ctrl+Z快捷键
[2]+ Stopped tar-zcf etc.tar.gz/etc
#tar命令被放入后台,工作号是2,状态是暂停

每个被放入后台的命令都会被分配一个工作号。第一个被放入后台的命令,工作号是 1;第二个被放入后台的命令,工作号是 2,以此类推。

 

jobs 命令


jobs 命令可以用来查看当前终端放入后台的工作,工作管理的名字也来源于 jobs 命令。jobs 命令的基本格式如下:

[root@localhost ~]#jobs [选项]

表 1 罗列了 jobs 命令常用的选项及含义。

表 1 jobs 命令常用选项及含义、
选项含义
-l(L 的小写)列出进程的 PID 号。
-n只列出上次发出通知后改变了状态的进程。
-p只列出进程的 PID 号。
-r只列出运行中的进程。
-s只列出已停止的进程。


例如:

[root@localhost ~]#jobs -l
[1]- 2023 Stopped top
[2]+ 2034 Stopped tar -zcf etc.tar.gz /etc

可以看到,当前终端有两个后台工作:一个是 top 命令,工作号为 1,状态是暂停,标志是"-";另一个是 tar 命令,工作号为 2,状态是暂停,标志是"+"。"+"号代表最近一个放入后台的工作,也是工作恢复时默认恢复的工作。"-"号代表倒数第二个放入后台的工作,而第三个以后的工作就没有"+-"标志了。

一旦当前的默认工作处理完成,则带减号的工作就会自动成为新的默认工作,换句话说,不管此时有多少正在运行的工作,任何时间都会有且仅有一个带加号的工作和一个带减号的工作。

 

补充


大家可能有这样的体验:某个程序运行的时候,会产生大量的log,但实际上我们只想让它跑一下而已,log暂时不需要或者后面才有需要。所以在这样的情况下,我们希望程序能够在后台进行,也就是说,在终端上我们看不到它所打出的log。为了实现这个需求,我们介绍以下几种方法。

我们以下面一个程序来模拟产生大量log的程序,这个程序每隔1秒就会打印一句“Hello world!”:

[root@www ~]# cat a.sh 
#!/bin/bash 
while ((1>0)) 
do
        echo "Hello world!"
        sleep 1s
done

现在,我们想要一个清静的世界,终端上不要有大量的log出现,我们要求程序在后台运行。

这种方法很简单,就是在命令之后加个“&”符号就可以了,如下:

[root@www ~]# ./a.sh &
[1] 92515
[root@www ~]# Hello world!
Hello world!
^C
[root@www ~]# Hello world!
Hello world!
Hello world!
Hello world!
Hello world!
Hello world!
Hello world!

这样一来,程序就在后台运行了。但是,这样处理还不够,因为这样做虽然程序是在后台运行了,但log依然不停的输出到当前终端。因此,要让终端彻底的清静,还应将log重定向到指定的文件:

[root@www ~]# ./a.sh &>>out.txt &
[1] 92580
[root@www ~]# cat out.txt 
Hello world!
Hello world!
Hello world!
Hello world!
Hello world!
Hello world!

2>&1是指将标准错误重定向到标准输出,于是标准错误和标准输出都重定向到指定的out.txt文件中,从此终端彻底清静了。

但是这样做要注意,如果Test程序需要从标准输入接收数据,它就会在那死等,不会再往下运行。所以需要从标准输入接收数据,那这种方法最好不要使用。

 

那现在程序在后台运行了,我们怎么找到它呢?很简单,有两种方法:

1. jobs命令

jobs命令可以查看当前有多少在后台运行。 

[root@www ~]# jobs -l
[1]+ 92580 Running                 ./a.sh &>>out.txt &

此命令可显示所有任务的PID,jobs的状态可以是running, stopped, Terminated。但是如果任务被终止了(kill),shell 从当前的shell环境已知的列表中删除任务的进程标识。

2. ps命令

[root@www ~]# ps 
   PID TTY          TIME CMD
 91936 pts/2    00:00:00 bash
 92580 pts/2    00:00:00 a.sh
 92724 pts/2    00:00:00 sleep
 92725 pts/2    00:00:00 ps

[root@www ~]# kill -9 92580
[root@www ~]# ps
   PID TTY          TIME CMD
 91936 pts/2    00:00:00 bash
 92802 pts/2    00:00:00 ps
[1]+  Killed                  ./a.sh &>>out.txt

 

  • 3
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: Linux 的 `jobs` 命令用于显示当前 shell 中正在运行或已经挂起的任务列表。使用方法: 1. 在命令行输入 `jobs` 即可显示当前任务列表。 2. 使用 `fg` 命令将挂起的任务放到前台运行。 3. 使用 `bg` 命令将挂起的任务放到后台运行。 例如: ``` $ sleep 100 & [1] 25689 $ jobs [1]+ Running sleep 100 & $ fg %1 sleep 100 ``` ### 回答2: Linux操作系统的jobs命令是一个非常有用的工具,它可以让用户查看和管理当前终端窗口或后台运行的所有任务。 当一个命令在终端窗口中运行时,用户可以使用Ctrl+Z键来将其暂停,并将其移动到后台。然后,用户可以使用jobs命令来列出所有在后台运行的任务。jobs命令输出会显示任务的编号、状态、进程编号和任务名称。任务的状态通常是停止状态(S),也可以是运行状态(R)或已完成状态(D)。 若要重新启动一个被暂停的任务,可以使用fg命令和任务编号,例如: fg %1 这将会把编号为1的任务带回前台,也可以使用bg命令将任务恢复到后台运行状态: bg %1 除此之外,jobs命令还可以使用选项和参数来查看特定类型的任务,例如: - -l选项:显示详细的任务信息,包括PID、状态、作业编号、命令和进程组ID。 - -s选项:只显示处于指定状态的任务,如停止状态(S)、运行状态(R)或已完成状态(D)。 - -r选项:只显示正在运行的任务。 - -p选项:只显示与指定PID相关联的任务。 总之,jobs命令是一个非常强大的工具,可以让用户有效管理所有正在执行的任务,并使命令行环境更加有效和高效。在使用Linux系统时,学习如何使用jobs命令及其选项和参数是非常重要的。 ### 回答3: Linux操作系统是一种强大的、可靠的、高度可定制的操作系统,因此,它成为了许多开发者、工程师、系统管理员、计算机科学家、网络管理员的首选操作系统。在Linux操作系统下,有许多实用的命令可供使用,其中jobs命令就是其中之一。本文将主要介绍Linux系统中的jobs命令及其使用。 1. jobs命令是什么? jobs命令Linux系统下的一个内置命令,可以用于显示当前在后台运行的进程信息,包括进程PID、工作状态、进程名称等。当用户在使用ssh等远程协议登录到服务器后,若有进程在后台运行,使用jobs命令可以查看这些进程的详细信息。 2. jobs命令的使用方法 在Linux系统下,jobs命令的使用方法非常简单,只需在终端中输入该命令即可。 命令格式: jobs [-lnprs] [jobspec] 参数说明: - -l:显示进程PID、进程状态、运行时间等详细信息 - -n:只显示最近的n个后台运行进程的信息 - -p:仅输出进程PID,不显示其他信息 - -r:仅显示正在运行的进程 - -s:仅显示被停止的进程 可以通过jobspec来指定想要查看的进程编号,jobspec可以是%jobnumber或%string,其中%jobnumber是进程标识符(job ID),%string是与进程相关的各种标识符(如进程名称、命令行参数等)。 3. jobs命令示例 下面是jobs命令的一些使用示例: (1)查看后台运行的所有进程 $ jobs (2)查看后台运行进程的详细信息 $ jobs -l (3)查看正在运行的进程 $ jobs -r (4)查看被停止的进程 $ jobs -s (5)查看最近的5个后台运行进程 $ jobs -n 5 (6)杀死后台运行的某个进程 $ kill %1 (其中%1为该进程的进程标识符(job ID)) 4. 总结 jobs命令Linux系统下一个非常有用的命令,它可以帮助用户查看当前在后台运行的进程信息,方便用户管理进程。无论是作为开发者还是作为系统管理员,都应该掌握jobs命令的使用方法,以便更加高效地管理Linux系统。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值