iis服务器助手广告广告
返回顶部
首页 > 资讯 > 操作系统 >Linux中的&是什么
  • 503
分享到

Linux中的&是什么

2023-06-16 09:06:00 503人浏览 八月长安
摘要

本篇内容主要讲解“linux中的&是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中的&是什么”吧!实际上,命令的用法并不难,例如  mkdir、touc

本篇内容主要讲解“linux中的&是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中的&是什么”吧!

实际上,命令的用法并不难,例如  mkdir、touch 和 find 也分别可以简单概括为“建立新目录”、“更新文件”和“在目录树中查找文件”而已。

但如果要理解

mkdir test_dir 2>/dev/null || touch images.txt && find . -iname "*jpg" > backup/dir/images.txt &

这一串命令的目的,以及为什么要这样写,就没有这么简单了。

关键之处就在于命令之间的连接符号。掌握了这些符号的用法,不仅可以让你更好理解整体的工作原理,还可以让你知道如何将不同的命令有效地结合起来,提高工作效率。

在这一篇文章和接下来的文章中,我会介绍如何使用 & 号和管道符号(|)在不同场景下的使用方法。

幕后工作

我来举一个简单的例子,看看如何使用 & 号将下面这个命令放到后台运行:

cp -R original/dir/ backup/dir/

这个命令的目的是将 original/dir/ 的内容递归地复制到 backup/dir/  中。虽然看起来很简单,但是如果原目录里面的文件太大,在执行过程中终端就会一直被卡住。

所以,可以在命令的末尾加上一个 & 号,将这个任务放到后台去执行:

cp -R original/dir/ backup/dir/ &

任务被放到后台执行之后,就可以立即继续在同一个终端上工作了,甚至关闭终端也不影响这个任务的正常执行。需要注意的是,如果要求这个任务输出内容到标准输出中(例如  echo 或 ls),即使使用了 &,也会等待这些输出任务在前台运行完毕。

当使用 & 将一个进程放置到后台运行的时候,Bash 会提示这个进程的进程 ID。在 Linux 系统中运行的每一个进程都有一个唯一的进程  ID,你可以使用进程 ID 来暂停、恢复或者终止对应的进程,因此进程 ID 是非常重要的。

这个时候,只要你还停留在启动进程的终端当中,就可以使用以下几个命令来对管理后台进程:

  •  jobs 命令可以显示当前终端正在运行的进程,包括前台运行和后台运行的进程。它对每个正在执行中的进程任务分配了一个序号(这个序号不是进程  ID),可以使用这些序号来引用各个进程任务。

$ jobs [1]- Running cp -i -R original/dir/* backup/dir/ & [2]+ Running find . -iname "*jpg" > backup/dir/images.txt &
  •  fg 命令可以将后台运行的进程任务放到前台运行,这样可以比较方便地进行交互。根据 jobs命令提供的进程任务序号,再在前面加上 %  符号,就可以把相应的进程任务放到前台运行。

$ fg %1 # 将上面序号为 1 的 cp 任务放到前台运行cp -i -R original/dir/* backup/dir/

如果这个进程任务是暂停状态,fg 命令会将它启动起来。

  • 使用 ctrl+z 组合键可以将前台运行的任务暂停,仅仅是暂停,而不是将任务终止。当使用 fg 或者 bg  命令将任务重新启动起来的时候,任务会从被暂停的位置开始执行。但 sleep[4] 命令是一个特例,sleep 任务被暂停的时间会计算在 sleep  时间之内。因为 sleep 命令依据的是系统时钟的时间,而不是实际运行的时间。也就是说,如果运行了 sleep 30,然后将任务暂停 30  秒以上,那么任务恢复执行的时候会立即终止并退出。◈ bg 命令会将任务放置到后台执行,如果任务是暂停状态,也会被启动起来。

$ bg %1 [1]+ cp -i -R original/dir/* backup/dir/ &

如上所述,以上几个命令只能在同一个终端里才能使用。如果启动进程任务的终端被关闭了,或者切换到了另一个终端,以上几个命令就无法使用了。

如果要在另一个终端管理后台进程,就需要其它工具了。例如可以使用 kill[5] 命令从另一个终端终止某个进程:

kill -s STOP <PID>

这里的 PID 就是使用 & 将进程放到后台时 Bash 显示的那个进程 ID。如果你当时没有把进程 ID 记录下来,也可以使用 ps 命令(代表  process)来获取所有正在运行的进程的进程 ID,就像这样:

ps | grep cp

执行以后会显示出包含 cp 字符串的所有进程,例如上面例子中的 cp 进程。同时还会显示出对应的进程 ID:

$ ps | grep cp 14444 pts/3 00:00:13 cp

在这个例子中,进程 ID 是 14444,因此可以使用以下命令来暂停这个后台进程:

kill -s STOP 14444

注意,这里的 STOP 等同于前面提到的 ctrl+z 组合键的效果,也就是仅仅把进程暂停掉。

如果想要把暂停了的进程启动起来,可以对进程发出 CONT 信号:

kill -s CONT 14444

这个给出一个可以向进程发出的常用信号[6]列表。如果想要终止一个进程,可以发送 TERM 信号:

kill -s TERM 14444

如果进程不响应 TERM 信号并拒绝退出,还可以发送 KILL 信号强制终止进程:

kill -s KILL 14444

强制终止进程可能会有一定的风险,但如果遇到进程无节制消耗资源的情况,这样的信号还是能够派上用场的。

另外,如果你不确定进程 ID 是否正确,可以在 ps 命令中加上 x 参数:

$ ps x| grep cp 14444 pts/3 D 0:14 cp -i -R original/dir/Hols_2014.mp4   original/dir/Hols_2015.mp4 original/dir/Hols_2016.mp4   original/dir/Hols_2017.mp4 original/dir/Hols_2018.mp4 backup/dir/

这样就可以看到是不是你需要的进程 ID 了。

***介绍一个将 ps 和 grep 结合到一起的命令:

$ pgrep cp 8 18 19 26 33 40 47 54 61 72 88 96 136 339 6680 13735 14444

pgrep 可以直接将带有字符串 cp 的进程的进程 ID 显示出来。

可以加上一些参数让它的输出更清晰:

$ pgrep -lx cp 14444 cp

在这里,-l 参数会让 pgrep 将进程的名称显示出来,-x 参数则是让 pgrep 完全匹配 cp  这个命令。如果还想了解这个命令的更多细节,可以尝试运行 pgrep -ax。

总结

在命令的末尾加上 & 可以让我们理解前台进程和后台进程的概念,以及如何管理这些进程。

在 UNIX/Linux 术语中,在后台运行的进程被称为守护进程daemon。如果你曾经听说过这个词,那你现在应该知道它的意义了。

和其它符号一样,& 在命令行中还有很多别的用法。

到此,相信大家对“Linux中的&是什么”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Linux中的&是什么

本文链接: https://www.lsjlt.com/news/283019.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Linux中的&是什么
    本篇内容主要讲解“Linux中的&是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Linux中的&是什么”吧!实际上,命令的用法并不难,例如  mkdir、touc...
    99+
    2023-06-16
  • c++中&amp;&amp;是什么意思
    c++ 中的 && 运算符是逻辑与运算符,它对两个布尔值进行操作,返回结果为 true 当且仅当两个输入值都为 true。 C++ 中的 && 运算符 ...
    99+
    2024-04-26
    c++
  • php中&&指的是什么
    本文小编为大家详细介绍“php中&&指的是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“php中&&指的是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。在php中,“&a...
    99+
    2023-06-30
  • java中&和&&的区别是什么
    今天就跟大家聊聊有关java中&和&&的区别是什么,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java的特点有哪些Java的特点有哪些1.Java语言作为静...
    99+
    2023-06-14
  • c语言中&amp;&amp;是什么意思
    &&运算符表示逻辑与运算,只有当两个或多个表达式都为真时,它才返回真;否则,返回假。其作用是检查多个条件是否都满足,并将其组合为一个复合条件。它还可用作位掩码,以选择或取...
    99+
    2024-04-28
    c语言
  • c++中*&amp;是什么意思
    c++ 中的 & 运算符序列表示先对一个指针进行解引用,然后取其地址,类似于 &x,其中 & 为取地址运算符, 为解引用运算符。具体操作包括:首先解引用指针 &a...
    99+
    2024-04-26
    c++
  • c++中&amp;=是什么意思
    c++ 中 &= 运算符是位与赋值运算符,将两个操作数的位值逐位与运算,结果存入左操作数中。它常用于清除、设置、提取变量中的特定位,或执行位掩码操作。 C++ 中 &=...
    99+
    2024-04-26
    c++
  • css中&amp;是什么意思
    css 中 & 符号代表后代选择器,用于选择父选择器中子元素的后代元素。语法:父选择器 & 子选择器 { 属性值; },例如:li &gt; a { color...
    99+
    2024-04-26
    css
  • c++中=&amp;是什么意思
    在 c++ 中,&= 运算符是一个按位与运算符,用于对两个位模式执行按位与操作,将两个位模式中对应位的 1 与 1 设为 1,否则设为 0。 C++ 中的 &= 运算符...
    99+
    2024-04-26
    c++
  • linux shell中2>&1是什么意思
    这篇文章主要介绍了linux shell中2>&1是什么意思,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。linux shell 中"2>&1...
    99+
    2023-06-09
  • Linux shell中2>&1的含义是什么
    这篇文章主要介绍Linux shell中2>&1的含义是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!A.首先了解下1和2在Linux中代表什么在Linux系统中0 1 2是一个文件描述符名称代码操...
    99+
    2023-06-09
  • php中&amp;&amp;什么意思
    php中&&运算符是逻辑and运算,它将两个布尔值结合,仅当两个值都为真时才返回真,否则返回假。具体来说,它的真值表如下:输入1为真,输入2为真: 输出为真输入1为真,输...
    99+
    2024-04-27
  • c++中a&amp;b是什么意思
    c++kquote>c++ 中的 a&b 运算表示 a 和 b 的按位与操作,逐位比较两个数字,如果两个对应的位都为 1,则结果为 1,否则为 0。 c++ 中 a&...
    99+
    2024-05-09
    c++
  • c语言中&amp;和|是什么意思
    c语言中的& (按位与)和| (按位或)运算符对整数二进制位逐位运算:&运算结果为1当且仅当两个位都为1;|运算结果为1当且仅当至少一个位为1。 C语言中的&和...
    99+
    2024-05-02
    c语言
  • c语言中&amp;和*是什么意思
    在 c 语言中,&(地址运算符)用于获取变量地址,而 (解引用运算符)用于获取指针指向的值。& 返回指针, 返回指针指向的数据类型。& 可用于任何变量,而 * 仅...
    99+
    2024-04-13
    c语言
  • &amp;在c语言中是什么符号
    在 c 语言中,& 符号表示按位与运算符。它按位操作两个位模式,如果两个位都为 1,则结果为 1;否则,结果为 0。按位与运算符用于设置或清除特定位、测试位的状态以及组合位模式。...
    99+
    2024-04-13
    c语言
  • c语言中&amp;&amp;和&amp;有什么区别
    在 c 语言中,&& 和 & 都是逻辑运算符,但存在以下区别:&& 优先级高于 &;&& 左结合,& 右结合;&a...
    99+
    2024-04-13
    c语言
  • &amp;&amp;在c语言中等于什么
    在 c 语言中,&& 是一个逻辑 and 操作符,它接受两个布尔值输入,返回一个布尔值结果:如果两个输入都为真,则结果为真。如果任何一个输入为假,则结果为假。 在 C ...
    99+
    2024-04-28
    c语言
  • c#中&amp;什么意思
    在c#中,"&"符号是按位与运算符,用于比较两个二进制数字的对应位,仅当两对应位都为1时结果才为1。常见用途包括:提取位值、检查位值、清除位值和合并位值。 & 在 C#...
    99+
    2024-04-04
    c#
  • c语言中x&amp;=1是什么意思
    c语言中,x &= 1 逐位与操作 x 的二进制位与 1,将结果存回 x。若 x 最低位为 1,结果为 1;若 x 最低位为 0,结果为 0。 c语言中 x&amp;=...
    99+
    2024-04-29
    c语言
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作