详解Linux的shell脚本基础指令

一、shell简介

是Linux系统的用户界面,它提供用户与内核的一种交互方式。它接收用户输入的命令,并把它送入内核去执行,是一个命令解释器。
脚本:本质是一个文件,文件里面存放的是 特定格式的指令,系统可以使用脚本解析器 翻译或解析 指令 并执行(它不需要编译)
shell 既是应用程序,又是一种脚本语言(应用程序 解析 脚本语言)。

二、脚本的调用形式

2.1 终端手动执行

./xxx.sh 先按照#!指定的解析器解析,如果找不到使用默认解析

2.2 开机运行

2.2.1 方法一

修改文件位置:/etc/rc.local(或者/etc/rc.d/rc.local)
1 编辑rc.local文件(命令后面得加&号,表示后台运行)
2 修改rc.local文件

chmod +x /etc/rc.local

之后将写好的脚本(.sh文件)放到目录 /etc/profile.d/ 下,系统启动后就会自动执行该目录下的所有shell脚本。

2.2.2 方法二

使用以下命令写好将的脚本加权限:

chmod +x 某.sh

将.sh文件放到目录 /etc/init.d/ 目录下

sudo cp slam.sh /etc/init.d/

2.2.3方法三

gnome实现开机自启
gnome-session-properties

前台后台启动

当你启动一个进程时(运行一个命令),可以如下两种方式运行该进程:

  • 1 前台进程
  • 2 后台进程

默认情况下,启动的每一个进程都是运行在前台的。它从键盘获取输入并发送它的输出到屏幕。
当一个进程运行在前台时,我们不能在同一命令行提示符下运行任何其他命令(启动任何其他进程),因为在程序结束它的进程之前命令行提示符不可用。
启动一个后台进程最简羊的方法:添加一个控制操作符“&”到命令的结尾。例如,如下命令将启动一个后台进程:

$ sleep 10 &
现在 sleep 命令被放在后台运行。当 Bash 在后台启动一个作业时,它会打印一行内容显示作业编号([1])和进程号(PID-5720)。
当作业完成时,作业会发送类似如下的信息到终端程序,来显示此作业已完成,其内容类似如下所示:
[1]+ Done sleep 10
将进程放在后台运行的好处:你可以继续运行其他命令,而不需要等待此进程运行完成再运行其他命令。

下面将启动两个将slam放在后台启动的脚本程序

#!/bin/bash
source /opt/ros/noetic/setup.bash
source /home/qqstar/catkin_loam/devel/setup.bash
pkill -f mapping_velodyne.launch
pkill -f run_ford.launch
sleep 1s
roslaunch lio_sam run_ford.launch &
sleep 1s
roslaunch fast_lio mapping_velodyne.launch &

如何查看进程:使用ps -ef查看当前所有的进程:

列的含义说明:

  • UID: 该进程执行的用户id
  • PID: 进程id
  • PPID: 该进程的父级进程id,如果一个程序的父级进程找不到,该程序的进程被称为僵尸进程
  • C: cpu的占用率,形式是百分数(%)
  • STIME: 进程的启动时间
  • TTY: 终端设备,发起该进程的设备识别符号,如果显示‘ ?’表示该进程并不是由终端发起
  • TIME: 进程的执行时间
  • CMD: 该进程的名称或对应的路径

进程可以有如下几种状态:

  • D(不可中断休眠状态)——进程正在休眠并且不能恢复,直到一个事件发生为止。
  • R(运行状态)——进程正在运行。
  • S(休眠状态)——进程没有在运行,而在等待一个事件或是信号。
  • T(停止状态)——进程被信号停止,比如,信号 SIGINT 或 SIGSTOP。
  • Z(僵死状态)——标记为 的进程是僵死的进程,它们之所以残留是因为它们的父进程适当地销毁它们。如果父进程退出,这些进程将被 init 进程销毁。

若要查看指定进程的状态,可以使用如下命令:
ps -C processName -o pid=,cmd,stat
例如:
$ ps -C sleep -o pid=,cmd,stat

要查看具体进程,可以使用如下命令:
命令:ps -ef | grep 进程名称

三、基本语法

3.1 开启新的终端

开启新的终端窗口,然后执行指令
gnome-terminal -- roslaunch lio_sam run_ford.launch
在已有的终端窗口新建标签栏,然后执行命令
gnome-terminal -x roslaunch lio_sam run_ford.launch

例子:
gnome-terminal -x bash -c "roslaunch lego_loam spiod.launch; exrc bash"
解释:
1、gnome-terminal -x:启动一个新的gnome-terminal窗口。

2、bash -c “roslaunch lego_loam spiod.launch; exrc bash”:在新的gnome-terminal窗口中执行的命令。这里使用了bash -c来执行一系列命令。
具体的命令包括:
roslaunch lego_loam spiod.launch:启动名为spiod.launch的ROS启动文件。
exrc bash:执行exrc命令并指定bash作为参数。根据给出的命令,无法确定exrc命令的具体含义。如果这是一个自定义的命令,那么它将在启动spiod.launch后执行。

3.2 向进程发送信号(kill、pkill)

使用 pkill 命令,可以通过指定进程名、用户名、组名、终端、UID、EUID 和 GID 等属性来杀掉相应的进程。pkill 命令默认也是发送 SIGTERM 信号到进程。
SIGTERM 信号:当进程收到 SIGTERM 信号时,有机会按照已经设计好的流程执行
pkill -f test.launch

3.3 函数

#计算所有参数的和
func.sh 文件内容:

function sum(){local total=0for n in $@do((total+=n))doneecho $totalreturn 0
}

main.sh 文件内容:

#!/bin/bash
source func.sh
echo $(sum 10 20 55 15)

Linux常用命令

ps -u

用于显示指定用户(User)相关的进程(Process)信息。它可以用于列出指定用户正在运行的进程以及与这些进程相关的详细信息。

更具体地说,ps -u 命令的 -u 选项后面需要指定一个用户名(User Name),以显示与该用户关联的进程。该命令将列出该用户拥有的进程的详细信息,如进程 ID(PID)、父进程 ID(PPID)、CPU 使用情况、内存使用情况等。
ps -u username

kill -9

一个用于终止进程的命令,而 24656 是一个示例进程的进程ID(PID)。

在 Linux 中,kill 命令用于向指定的进程发送信号,而 -9 是一个特殊的信号编号,表示强制终止进程。
通过执行以下命令:

kill -9 24656

可以向具有进程ID为 24656 的进程发送强制终止信号。这将立即终止该进程,不给予其进行任何清理或资源释放的机会。

请注意,使用 kill -9 命令要谨慎,因为它会直接终止进程,可能导致数据丢失或其他不良后果。通常情况下,首选使用其他信号(如 SIGTERM)来正常终止进程,以便进程有机会进行清理和资源释放。只在必要时,才使用 kill -9 来强制终止进程。

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

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

相关文章

如何选择快手矩阵源码:关键因素解析

在短视频行业迅速发展的今天,快手平台已成为众多内容创作者和企业的重要阵地。为了有效管理和运营多个快手账号,快手矩阵源码成为了一个关键工具。然而,市场上的快手矩阵源码种类繁多,选择一个合适的源码并非易事。本文将探讨选择…

【每日一练】python基础入门实例

""" 幼儿园加法练习题 题数不限 每满100分奖励10个棒棒糖 要求: 1.使用三目运算符与基础运算的对比 2.随机数字相加 3.调用函数 4.循环执行练习题 5.有计算分数 6.有时间停止休眠 """ #导入随机模块 import random #导入时间模块 imp…

聚观早报 | 蚁天鉴2.0发布;理想汽车推送无图NOA

聚观早报每日整理最值得关注的行业重点事件,帮助大家及时了解最新行业动态,每日读报,就读聚观365资讯简报。 整理丨Cutie 7月8日消息 蚁天鉴2.0发布 理想汽车推送无图NOA 特斯拉推送FSD v12.4.3 iQOO Neo9s Pro配色公布 百川智能AI健康…

【知识专栏丨python数据采集数据分析实战】电商数据分析案例

今天这篇文章将给大家分享一个电商数据采集和数据分析的案例。 电商数据采集: https://www.heywhale.com/mw/project/604ae69d89c874001527ff16 下面我们先来简单了解一下数据。 01 数据信息 数据来源: https://www.kesci.com/mw/dataset/601e971ab23…

OpenCV对图片中的水果进行识别计算其面积长度等

本项目所用到的技术有: OpenCV Python的一些库:sys,openpyxl,numpy,PyQt5,PIL 本文可以做一些课程设计的项目 本文为作者原创,转载请注明出处,如果需要完整的代码,可以关注我私信 上面是用到的样例图片,一张…

黑马点评报错@user_script:17: user_script:17: attempt to compare nil with number

后面发现是需要预先写入缓存seckill:stock:11,其中11是优惠券id 我数据库里面是11 ,这里redis里面也写了11之后就好使了

数字化电池直击安全耐用痛点,绿源有望用技术赢得市场口碑

电动两轮车行业,正面临着长期的市场重构。从新国标的正式实行,到消费者对电动车需求的变化,局势变了。有的品牌开始更在意表面的包装,也有的品牌紧盯着安全和质量,做深层的创新。 其中,绿源作为电动两轮车…

力扣爆刷第160天之TOP100五连刷66-70(回溯、旋转图像、技巧题)

力扣爆刷第160天之TOP100五连刷66-70(回溯、旋转图像、技巧题) 文章目录 力扣爆刷第160天之TOP100五连刷66-70(回溯、旋转图像、技巧题)一、110. 平衡二叉树二、39. 组合总和三、543. 二叉树的直径四、470. 用 Rand7() 实现 Rand1…

免费可商用的Navicat Premium Lite要不要用?小心收到律丝函!

作者公众号:霸王龙的日常 专注数据库,分享实用的项目实战经验。 上周五写了一篇关于Navicat Premium Lite的文章,有网友去官网下载,反馈当前官网Navicat Premium Lite简介和我之前文章中的介绍的有出入。 我赶紧打开网站看了下Na…

MySQL性能优化 一、系统配置优化

数据库优化纬度有四个&#xff1a; 硬件升级、系统配置、表结构设计、SQL语句及索引。 优化选择&#xff1a; 优化成本&#xff1a;硬件升级 > 系统配置 > 表结构设计 > SQL语句及索引优化效果&#xff1a;硬件升级 < 系统配置 < 标结果设计 < SQL语句及索…

深圳网站设计一般流程是怎样的

深圳作为中国的IT产业中心&#xff0c;拥有众多优秀的网站设计公司以及专业的网站设计团队。对于一个深圳的网站设计项目&#xff0c;一般的流程是按照以下步骤进行的&#xff1a; 1. 确立需求&#xff1a;首先&#xff0c;网站设计公司需要和客户充分沟通&#xff0c;了解客户…

在信创环境中信创沙箱扮演一个什么样的角色?

在信创领域中&#xff0c;沙箱技术扮演着举足轻重的角色&#xff0c;其不仅为信息安全提供了强有力的保障&#xff0c;更为数据防泄密提供了有效手段。随着信息技术的飞速发展&#xff0c;数据安全已成为国家、企业乃至个人关注的重点。信创沙箱技术作为其中的佼佼者&#xff0…

深度网络现代实践 - 深度前馈网络之反向传播和其他的微分算法篇-续

序言 反向传播&#xff08;Backpropagation&#xff0c;简称backprop&#xff09;是神经网络训练过程中最关键的技术之一&#xff0c;尤其在多层神经网络中广泛应用。它是一种与优化方法&#xff08;如梯度下降法&#xff09;结合使用的算法&#xff0c;用于计算网络中各参数的…

瑞萨RA6M3开发实践-UART实践-亲测有效 || 过程中遇到的问题

目录 写在前面 一、开发环境 二、编译下载 三、遇到的错误及解决方法 四、开启串口uart4的打印结果 写在前面 在看这编之前要是不太懂可参考HMI-Board (rt-thread.org)&#xff0c;本文章为在此基础上进行相应开发。 一、开发环境 rtthread studio版本2.2.6&#xff0c;…

原生Ajax技术的执行流程,用火山写作创作的,总感觉差点意思。

启动原生Ajax操作可遵循以下步骤&#xff1a; 首先&#xff0c;我们需要构建一个XMLHttpRequest对象以实现与服务器的有效互动。这个过程往往是借助于调用XMLHttpRequest对象的构造函数得以实现。 接下来&#xff0c;我们有必要对请求细节进行设定&#xff0c;包括明确请求方法…

叹为观止|四款让人赞不绝口的优质软件,越用越上瘾

不说闲话直接上狠货&#xff0c;下面神仙软件&#xff0c;都值得使用。 Smart Defrag 说起电脑运行慢或者抽风&#xff0c;磁盘碎片就是让电脑变得又卡又不稳定的元凶之一。 不过Smart Defrag就算是新手小白也能操作&#xff0c;它里面藏着一个超强的碎片整理引擎&#xff0…

一.2.(5)共射、共集、共基三种基本放大电路的静态及动态分析;

共什么的问题&#xff1a;共什么取决于输入输出&#xff0c;共剩下的那一极 1.基本共射放大电路 见前面章节&#xff0c;不做累述 2.基本共集放大电路 列KVL方程&#xff0c;求解 AU1&#xff0c;所以又叫射极跟随器 Ib是流入基极的电流&#xff0c;Ii是从输入交流信号源流出的…

SpringBoot源码阅读(1)——环境搭建

SpringBoot官网 官网 https://spring.io/projects/spring-boot 代码仓库 github&#xff1a;https://github.com/spring-projects/spring-boot gitee: https://gitee.com/mirrors/spring-boot 下载代码 git clone https://gitee.com/mirrors/spring-boot.git下载的代码中有些…

CnosDB:深入理解时序数据修复函数

CnosDB是一个专注于时序数据处理的数据库。CnosDB针对时序数据的特点设计并实现了三个强大的数据修复函数&#xff1a; timestamp_repair – 对时间戳列进行有效修复&#xff0c;支持插入、删除、不变等操作。value_repair – 对值列进行智能修复&#xff0c;根据时间戳间隔和…

【源代码】srm供应商管理系统,招标管理系统,在线询价管理系统

前言&#xff1a; 随着互联网和数字技术的不断发展&#xff0c;企业采购管理逐渐走向数字化和智能化。数字化采购平台作为企业采购管理的新模式&#xff0c;能够提高采购效率、降低采购成本、优化供应商合作效率&#xff0c;已成为企业实现效益提升的关键手段。系统获取平台私…