Linux以非堵塞模式执行shell脚本

news2025/1/17 0:01:11

1. HOW

我们在linux系统的终端执行命令的时候,有些命令可以很快的执行完退出,我们就可以继续使用这个终端了
比如 ls 这个命令,它执行的很快,等他返回完结果之后,我们可以继续使用这个终端。
在这里插入图片描述
还有部分命令是不会立马执行完的,需要等待一段时间,甚至永远不会执行完(比如top),这种情况就会阻塞终端,我们就没法继续使用这个终端了,除非你ctrl+c退出正在执行的脚本。

举个例子,现在有这样一个sehll脚本,

#!/bin/bash
sleep 100
file="sss.txt"
echo 'execute completed' >> $file

在终端输入 ./yy.sh 执行该脚本,终端会被阻塞100秒,如果你想继续执行其他指令,只能新开一个终端

那么,有没有办法让他不阻塞终端呢? 有
./yy.sh 改为 ./yy.sh &即可,注意&前边有个空格

以这种方式执行脚本,脚本会转入后台默默运行,不再会阻塞终端
通过ps -ef | grep yy.sh,可以看到脚本确实在后台运行
在这里插入图片描述

2. WHY

以后台运行shell脚本有什么好处呢?这个终端被堵塞用不了,我再开一个不就得了,确实是这样,很多时候再开一个就够了,然后有时候却会引发灾难。

非阻塞模式执行脚本更多用在开机自启脚本上(我是这样的)

举个例子,现在我们想设置一个开机自启脚本,这个脚本能够记录系统的资源占用情况,并写到文件里,这是一个很常用的功能脚本。

然后,我们可以/etc/rc.local 文件中加上执行命令,假设命令是这样的

sh -c /home/autoRun.sh

再给rc/.local加上执行权限 sudo chmod +x /etc/rc.local
reboot重启

恭喜你! 重装系统吧 哈哈(别问我怎么知道的,f**k)

因为你的自启脚本是阻塞模式执行的,导致rc.local脚本永远执行不完,然后就进不了系统了

所以,这个时候必须使用非阻塞模式执行脚本,正确的写法是

sh -c /home/autoRun.sh &

这样,就没有问题了。 再次强调,记得加空格!

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

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

相关文章

算法——双指针技巧总结

算法——双指针技巧总结 一、双指针二、链表快慢指针19.删除链表的倒数第 N 个结点双指针 206.反转链表思路:双指针法递归法 92.反转链表 II1.递归2.迭代(双指针头插法) 876.链表的中间结点常规思路双指针思路 141.环形链表(判断链…

【安全与风险】恶意软件:概念、攻击和检测

恶意软件:概念、攻击和检测 恶意软件的定义恶意软件的类型易损性如何防范恶意软件:终端用户的观点不足防病毒软件基于主机的恶意软件检测特征检测启发式检测 数据收集挑战沙箱分析蜜罐 恶意软件的定义 Malware一词是恶意软件的缩写。 恶意软件是任何以破坏设备、窃取数据为目…

Ubuntu Desktop 启用远程桌面(Vino和TigerVNC方式)

文章目录 前言使用Vino方式无显示器使用使用TigerVNC方式 前言 在很多领域的生产开发工作中常常需要用到 Ubuntu Desktop 系统,但是在一些日常的工作交流中又离不开Windows系统,这种时候比较常用的解决方案就是在Windows系统上使用虚拟机安装Ubuntu。不…

【广州华锐互动】AI高仿真数字人在企业服务中的应用

虚拟数字人是指利用人工智能技术和计算机图形学生成的高度逼真的虚拟人形象,它可以模拟人类的语言、情感、行为和外貌,从而成为一种强大的营销工具,可以为企业带来多种商业价值。 广州华锐互动作为一家15年虚拟现实内容制作商,已…

CSS背景,元素显示模式,盒模型

文章目录 颜色取值选择器进阶复合选择器后代选择器:空格子代选择器 并集选择器(union selector)交集选择器(intersection selector)emmet语法hover伪类选择器 背景相关背景颜色背景图片背景平铺图片位置背景相关连写im…

文字大小PointSize和PixelSize

无论PointSize(点大小)还是像素大小(PixelSize),描述的都是文字在输出设备(显示屏、打印机等)上呈现的大小 首先理解两个概念:DPI(Dots per Inch) 和 PPI(Pix…

295-光纤数据收发 隔离卡 加速计算卡 基于 Kintex-7 XC7K325T的半高PCIe x4双路万兆光纤收发卡

基于 Kintex-7 XC7K325T的半高PCIe x4双路万兆光纤收发卡 一、板卡概述 板卡采用Xilinx公司的XC7K325T-2FFG900I芯片作为主处理器,可应用于万兆网络、高速数据采集、存储;光纤隔离网闸等领域。 二、功能和技术指标: 板卡功能 参…

背锅侠?软件测试各类bug分类定位,从功能到性能超细总结......

目录:导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结(尾部小惊喜) 前言 遇到功能性问题&a…

【服务器数据恢复】NetApp存储中的oracle数据库数据恢复案例

服务器数据恢复环境: NetApp某型号存储,共96块SAS硬盘,划分的lun都映射给小型机使用,存放的是Oracle数据库文件,采用ASM裸设备存储方式。 服务器故障: 管理员误操作删除了该NetApp存储上的所有lun。具体情…

【Java】Java绘制UML图

1.继承关系(Inheritance) 继承指的是一个类(子类、子接口)继承另外的一个类(父类、父接口)的功能,通过关键字 extends 明确标识 UML图 继承用一条带空心三角箭头的实线表示,从子类…

数字孪生可实现三维可视化智慧园区吗?

随着城市化的进程和信息化的发展,越来越多的城市拥有了智慧园区这一新的城市形态,通过“互联网”和物联网技术,实现了各种功能部门之间的信息共享与协同,提高了园区服务的质量和效率。然而,如何更好地实现园区管理和运…

DNS服务的正反向解析

目录 1.DNS域名解析服务概括 产生原因 作用: 2.正向解析 2.1 准备工作,关闭selinux和防火墙 2.2 安装DNS软件 2.3 服务端操作,编辑DNS主配置文件 2.4 服务端操作,编辑区域配置文件,可以在最后添加&#xff0c…

OpenAI文档翻译——搭建第一个自己的ChatGPT应用

这篇主要是讲了重头到位创建一个基于OpenAI API的应用程序的过程,同时给出了Node.js、Python版本的实例代码。应用程序的构建总体来说是很简单的就是一个接口调用,前提是我们需要提供密匙。 如果想要获取更好的结果返回一个是可以给模型提供一些列子从而…

9.5 数组的指针和指向数组的指针变量-2

9.5 数组的指针和指向数组的指针变量-2 一.数组名作为函数参数(1)实参和形参都是数组名(2)实参用数组名,形参用指针变量(3)实参和形参都用指针变量,这个和(2)…

Leetcode-day1【80】删除有序数组中的重复项 II

文章目录 80. 删除有序数组中的重复项 II题目解题思路解题思路【学习】双指针 80. 删除有序数组中的重复项 II 题目 给你一个有序数组 nums ,请你 原地 删除重复出现的元素,使得出现次数超过两次的元素只出现两次 ,返回删除后数组的新长度。…

CBAM小陈读paper系列

忘记做笔记了,只能 把看文章的PDF保存下来了

神经网络:Zero2Hero 1

Zero → \to → Hero : 1 实现了一个字符级中文语言模型,数据采用的是开源中文姓名数据集中的一部分,主要内容如下: 字符的预处理 统计频次计算字符对频次矩阵 实现一个简单的先验概率模型 从训练数据中计算字符的先验概率根据先验概率通过…

前端UI框架有哪些|20个优秀免费开源的WEB前端UI框架提高网站开发效率

最近准备学习一下前端UI我也是在网上找了很久最终整理出来了20个不错的前端UI框架网站,大家都知道很多成熟的前端框架可以直接引,学习框架可以提升我们网站的开发速度。有些大型公司的前端或者后端框架都是用自己开发的,对于大部分用户和公司来讲,我们可以用开源免费的前端…

TCP和UDP通信对比

tcp通信流程 服务器: 创建流式套接字 绑定 监听 提取 读写 关闭 客户端: 创建流式套接字 连接 读写 关闭 收发数据: read recv ssize_t recv(int sockfd, void *buf, size_t len, int flags); //flagsMSG_PEEK 读数据不会删除缓冲区的数据 write send ssize_t send(int…

【Paper Note】ViViT: A Video Vision Transformer

ViViT: A Video Vision Transformer AbstractOverview of vision transformer 回顾ViTEmbedding video clips 视频编码方式Uniform frame sampling 均匀采样Tubelet embedding 时空管采样初始化3D卷积代码介绍视频编码输入到模型当中 Transformer Models for VideoSpatio-tempo…