linux 一行代码,一行代码终结你的Linux~

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼

分类:

代码:

:() { :|:& }; :

为什么这个东西会让你的系统死掉???有人执行了然后问我

让我们来分析一下这段代码,我改一下格式,但内容是一样的 代码:

:() # 定义一个叫“:”的过程

{ # 标记过程内容的开始

: | : & # 执行“:”这个过程,然后通过管道接到“:”再执行一次,而且每一次执行,都会在后台执行

}; # 标记过程内容的结束,因为是同一行来写,所以要加上“;”,这样才能接后面的内容

: # 执行:

两个原因使它死掉:

1. 无限递归。倘若只是简单的: &,那么每次递归调用的时候一边在后台执行,而另外一边则在退出。然而,即使如此,倘若你只是下面的内容,你仍然可以看到不少bash,而且是不断地增多。其原因很可能是一边产生新的进程的同时,另外一边的进程却还没完全退出。然而,这种产生方式,终究会在某个时刻达到动态平衡,也就是新产生新进程的速度和结束进程的速度达到平衡。因而,这并不一定会让系统挂掉。 代码:

show_ps() { ps -A | grep bash; show_ps & }; show_ps

2. 平衡的破坏

2.1 两个进程同时开始

使用管道的时候,不是一个进程完了然后另外一个进程才开始,而是两个进程同时开始,其中一个进程读取另外一个进程的标准输出作为标准输入。 代码:

tee | grep abc

可以看到,这个时候,我们只有输入满足正则表达式abc的内容,它才会被重复。而这个过程会一直持续到我们结束tee的输入。

2.2 死机的原因:同时执行导致平衡的破坏。(注意:这只是一个简化的模型。同时执行只是理想情况,真正在执行的时候,会由于实际情况有所偏差,但由于偏差并不大,所以这个模型仍然可用;另外,现在假设每个“:”都会产生一个进程,然而实际情况是这样的:先: | : &产生一个进程,接着由于两次:的调用进而产生两个进程,再接着: | : &所在的进程消亡,如此循环,显然,实际情况只是比这个模型增加了一些自我抵销的中间环节而已)

在: | : &执行的时候,我们知道,两个“:”是同时执行的。倘若同时有n个“:”在运行,那么,它将首先产生2*n个进程,然后这n个进程再结束掉,此时相当于新增加了2*n个进程。那从第一次调用开始,假设进程产生后马上结束,那么进程数量的变化将呈2^n的趋势变化。然而产生新进程的速度是极快的,因而在极短的时间内将会产生无数的进程。在这种情况下,死机是很正常的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/411380.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[html] HTML5的Server-Sent和WebSocket有什么区别?

[html] HTML5的Server-Sent和WebSocket有什么区别? websocket是双向通信,server-sent只能服务端发送消息个人简介 我是歌谣,欢迎和大家一起交流前后端知识。放弃很容易, 但坚持一定很酷。欢迎大家一起讨论 主目录 与歌谣一起通…

socket c/s分佈式編程

SOCKET: Socket接口介于应用程序与硬件之间。对Socket的理解可以简化为:它是封装了数据流(Stream)的从机器到机器的一条软接线,通过这条软接线,并借助于线两端的收发程序,网络上的机器间实现了信…

linux获取笔记本摄像头视频,如何在windows下用ffmpeg抓取笔记本电脑摄像头视频

我有一个很小的python程序,它可以很好地使用ffmpeg的子进程从linux中的网络摄像头(至少对于有内置网络摄像头的笔记本电脑)捕获短视频。在现在我正试图编写同样的程序来捕捉windows中的网络摄像头,我知道我不能使用通用的“/dev/video0”,它在…

GDAL读取Shp问题解决:Unable to open EPSG support file gcs.csv

在GIS软件的开发中,经常用到开源库GDAL读取Shp数据,当shp数据中包含投影信息时,可能会遇到“Unable to open EPSG support file gcs.csv”错误提示,该错误是由于没有设置“GDAL_DATA”引起的。 1.Shpefile文件组成 Shapefile文件指…

[html] HTML5的Geolocation不允许定位后如何于次让它弹起授权定位?

[html] HTML5的Geolocation不允许定位后如何于次让它弹起授权定位? JS应该不能通过API主动再次调起授权定位。 需要提示用户,需要用户手动清除浏览器缓存或者设置app开启浏览器定位功能,之后才能重新弹出。个人简介 我是歌谣,欢…

SAP FI模块与SD、MM的接口配置基本方法

SAP FI模块与SD、MM的接口配置基本方法及解答.问:能否介绍一下FI模块与SD、MM的接口配置基本方法?答:accounting determination autoposting,做FICO的对这两个接口帐号的配置都会感兴趣的啊~ 不过这些东东要讲起来&…

禁用linux系统日志,KB4532432-如果在 Linux 系统上禁用了 IPV6,则会议将失败

症状假设你尝试在 Linux 操作系统(如 Redhat 或 Ubuntu)上安装 Microsoft SQL Server 2019。 如果在操作系统内核级别禁用 IPv6,并且尝试使用 "sudo/opt/mssql/bin/mssql-conf setup" 命令配置 SQL Server,则会在 Linux 控制台和 SQL Server 错…

[html] 如何更改浏览器左上角标题旁的图标?

[html] 如何更改浏览器左上角标题旁的图标&#xff1f; 图标在html的head进行引入,如 <link rel"shortcut icon" href"/favicon.ico" type"image/x-icon">个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前后端知识。放弃很容易&#…

利用Date类计算生活时间

今天学习到了Date类还有其他一些常用类&#xff01; 这里就简单使用Date及其一些方法计算生活时间。 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Scanner;public class DateInput {public static void mai…

Request.ServerVariables

2008-07-07 15:45PATH_INFO取的是当前文的路径,效果等同用Request.ServerVariables("URL") 比如说http://www.aaa.com/bbb/ccc/ddd.asp Request.ServerVariables("PATH_INFO")的值就是 /bbb/ccc/ddd.asp 更多ServerVariables Request.ServerVariables(&quo…

linux系统扩展名大全,Linux系统文件扩展名学习

Linux系统下的扩展名并不能标识该文件是属于哪一种类型的文件。文件是否可以执行等都跟文件的扩展名无关。因为文件script没有执行权限&#xff0c;所以也就无法执行&#xff0c;sh-3.2# touch ./scriptsh-3.2# ls -lh ./script-rw-r--r-- 1 root root 0 Dec 28 06:15 ./script…

[html] 写一个类似刮刮卡效果的交互,即鼠标划过时显示号码

[html] 写一个类似刮刮卡效果的交互&#xff0c;即鼠标划过时显示号码 <title>Document</title> <style> *{ margin:0; padding: 0; } .container{ position: relative; width: 600px; height: 400px; margin: 100px auto; border: 1px solid black; } .con…

1.4-1.5 HBase部署及基本使用

一、部署1、准备##先用Apache hadoop ##之前的cdh 服务器先全部停掉##解压HBASE [roothadoop-senior hbase]# tar zxf hbase-0.98.6-hadoop2-bin.tar.gz -C /opt/modules/##启动Apache hadoop &#xff08;hdfs&#xff09; [roothadoop-senior hadoop-2.5.0]# pwd /opt/module…

linux双网口绑定,双网口绑定bond

bond内核模块和称为通道绑定接口的特殊网络&#xff0c;接口将多个网络接口绑定到一个通道。根据选择的绑定模式&#xff0c;通道绑定使两个或者更多个网络接口作为一个网络接口&#xff0c;从而增加带宽或者提供冗余性模式0(平衡轮循) - 轮循策略&#xff0c;所有 接口都采用轮…

Web3d明日之星基于Javascript和OpenGL的技术

和Linux的卫道人袁老相似&#xff0c;我也是VRML/X3D这种Web3D技术的守卫者&#xff0c;虽然我很渺小。 Web已经逐步成为应用程序界面的基础。Firefox开发商Mozilla和制定OpenGL 技术规范的Khronos组织 已经看到了OpenGL技术的广泛应用&#xff0c;他们也想借此为Web创建新的3D…

[html] 如何实现多行文字梯形排版?

[html] 如何实现多行文字梯形排版&#xff1f; 可以利用文字会环绕浮动元素的特性来做&#xff1a;HTML:#box {width: 400px;height: 600px;background-color: red; } #box .float-div{float: left; // 浮动起来clear: both; // 这个很重要&#xff0c;不然会排版出错backgrou…

c语言 字符串map,C语言实现BitMap

BitMap的原理不用多说了。主要说下位操作。我们假设每个基础存储单元为char&#xff0c;则BYTESIZE 8&#xff0c;如果为int则16 or 32。当设置i时&#xff0c;首先ptri/BYTESIZE&#xff0c;到达要操作的那个char。然后对*ptr | 0x01<检查的时候&#xff0c;也是首先ptri/…

MySQL5.7.9安装与配置优化

一、 环境准备 1. 下载软件包 wget http://test.hexin.cn/software/mysql-5.7.9.tar.gz -P /usr/local/src/ wget http://test.hexin.cn/software/cmake-3.4.0.tar.gz -P /usr/local/src/ wget http://test.hexin.cn/software/boost_1_59_0.tar.gz -P /usr/local/src/ 2. 安装基…

[html] h5页面如何传递参数给小程序?

[html] h5页面如何传递参数给小程序&#xff1f; 1、H5页面 <script src"${base}/resources/common/js/jweixin.miniProgram.js"></script>wx.miniProgram.postMessage({ data: { shareUrl:href } });注意&#xff1a;传参必须使用data2、小程序页面接收…

k8s的认证和service account简述

k8s的认证&#xff1a; 与API server通信的客户端大致有两类&#xff1a; 1.集群客户端工具&#xff08;kubectl、kubeadm、kubelet等&#xff09; 2.集群内pod. 任何客户端访问k8s时的过程&#xff1a; 1.认证&#xff1a;任何客户端访问k8s&#xff0c;首先需要通过k8s的认…