详解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=0
	for n in $@
    do
    	((total+=n))
    done

    echo $total
    return 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 来强制终止进程。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

CC4利用链分析

我的Github主页Java反序列化学习同步更新,有简单的利用链图 分析版本 Commons Collections 4.0 JDK 8u65 环境配置参考JAVA安全初探(三):CC1链全分析 分析过程 在Commons Collections 4.0中,TransformingComparator类变为可序列化类,增…

myeclipse开发ssm框架项目图书管理系统 mysql数据库web计算机毕业设计项目

摘 要 随着计算机的广泛应用,其逐步成为现代化的标志。图书馆的信息量也会越来越大,因此需要对图书信息、借书信息、还书信息等进行管理,及时了解各个环节中信息的变更,要对因此而产生的单据进行及时的处理,为了提高高…

吴恩达老师推荐的大模型分析网站 Artificial Analysis

是吴恩达老师推荐的一个提供各大模型的质量、输出速度、价格对比等多维度分析的网站。 比起 LMSYS Chatbot Arena 或者 HF 上的其他竞技场,它们更注重的输出的质量而这个网站其实更利于我们选择一个合适的大模型 API,强烈安利!

千帆大模型平台升级十大能力,企业级 RAG 全面升级

7 月 5 日,2024 世界人工智能大会(WAIC)期间,百度智能云大模型助力新质生产力发展论坛在在上海世博展览馆举办。会上,百度智能云宣布文心大模型 4.0 Turbo(ERNIE 4.0 Turbo)面向企业客户全面开放…

人工智能在三级淋巴结:肿瘤浸润淋巴细胞领域的系统研究进展|顶刊速递·24-07-08

小罗碎碎念 本期文献主题:人工智能在三级淋巴结/肿瘤浸润淋巴细胞领域的系统分析 关于三级淋巴结和肿瘤浸润淋巴细胞的文献,会是接下来的分析重点,期间也会穿插临床文献&项目复现的推文。 另外再说点科研道路上的题外话,也算是…

GitLab CI/CD实现项目自动化部署

1 GitLab CI/CD介绍 GitLab CI/CD 是 GitLab 中集成的一套用于软件开发的持续集成(Continuous Integration)、持续交付(Continuous Delivery)和持续部署(Continuous Deployment)工具。这套系统允许开发团队…

一手洞悉泰国slot线上游戏投放本土网盟CPI计费广告优势

一手洞悉泰国slot线上游戏投放本土网盟CPI计费广告优势 ​在泰国这个拥有独特文化背景和审美观念的国家,Slots游戏以其丰富的玩法和刺激的体验迅速赢得了玩家们的喜爱。然而,要在竞争激烈的市场中脱颖而出,有效的推广策略显得尤为重要。本土…

JVM专题之垃圾收集器

JVM参数 3.1.1 标准参数 -version -help -server -cp 3.1.2 -X参数 非标准参数,也就是在JDK各个版本中可能会变动 ``` -Xint 解释执行 -Xcomp 第一次使用就编译成本地代码 -Xmixed 混合模式,JVM自己来决定 3.1.3 -XX参数 > 使用得最多的参数类型 > > 非…

Docassemble interview 未授权任意文件读取漏洞复现(CVE-2024-27292)

0x01 产品简介 Docassemble是一款强大的开源工具,主要用于自动化生成和定制复杂文档,特别是在法律文档处理领域表现出色。由Jonathan Pyle个人开发者开发,是一个免费的开源专家系统,用于指导访谈和文档组装。Docassemble基于Python编写,充分利用了Python的灵活性和广泛的…

【论文阅读】-- Visual Traffic Jam Analysis Based on Trajectory Data

基于轨迹数据的可视化交通拥堵分析 摘要1 引言2 相关工作2.1 交通事件检测2.2 交通可视化2.3 传播图可视化 3 概述3.1 设计要求3.2 输入数据说明3.3 交通拥堵数据模型3.4 工作流程 4 预处理4.1 路网处理4.2 GPS数据清理4.3 地图匹配4.4 道路速度计算4.5 交通拥堵检测4.6 传播图…

Spring Cloud: OpenFeign 超时重试机制

超时重试是一种用于网络通信的常用策略,目的是在请求未能在规定时间内获得响应或响应超时的情况下,重新发送请求。具体来说,当发起请求后,如果在设定的时间内未能收到预期的响应,就会启动超时重试机制,重新…

EPICS数据库示例

本文目标是使用EPICS数据库示例帮助新手理解如何使用不同的示例。 1、使用seq和mbbo的简单选择器 这个简单示例展示了如何使用一个mbbo和一个seq来旋转哪个值将被设置到一个PV。 # 这个mbbo记录将选择将运行seq的哪段 record(mbbo, "CHOOSE") {field(VAL, "…

LVS+Nginx高可用集群--基础篇(二)

1.虚拟主机-使用nginx为静态资源提供服务 静态资源服务器:主要包括两类资源,网页;图片,音频等; 也可以通过别名设置静态资源路径。 配置代码: server {listen 88;server_name localhost;locatio…

DFS回溯剪枝|KMP通过数组记录减少判断子字符串|思路

KMP|DFS回溯剪枝 #1、NC149kmp 初步思路: 两层for循环,一个T的字符开始与 S的字符比较,挨个比较,遇到不同就continue当前T的字符,重复步骤》效率太低,超时 eg: TABSABABABD SABABD S!A时&#…

四川蔚澜时代电子商务有限公司持续领跑抖音电商

在当今这个数字化飞速发展的时代,电子商务已成为推动经济增长的重要引擎。而在众多电商平台中,抖音电商以其独特的社交属性和年轻化的用户群体,逐渐崭露头角。四川蔚澜时代电子商务有限公司正是这股潮流中的佼佼者,他们专注于抖音…

创建一个AXIS的初始IP核

参考自:https://www.cnblogs.com/milianke/p/17936380.html 以该博主文章为主,本文章做补充。 注意的点: edit ip 在导出axis的主机和从机的时候,记得选择edit ip,这样才能看到从机和主机的源代码,然后…

2024平价蓝牙耳机哪个牌子好?盘点热门平价蓝牙耳机推荐

2024年来,蓝牙耳机市场逐渐走向平价,这使得越来越多的消费者能够轻松拥有一副高性价比的蓝牙耳机。然而,在如此丰富的选择中,2024平价蓝牙耳机哪个牌子好?成为了许多人的烦恼。为了帮助大家更好地了解市场上的热门产品…

8、开发与大模型对话的独立语音设备

一、设计原理 该系统的核心部分主要由ESP32-WROVER开发板和ESP32-CAM摄像头、MAX9814麦克风放大器模块、MAX98357功放、声音传感器和SU-03T语音识别芯片构成。通过使用ESP32-WROVER开发板,用户可以实现通过语音与ai进行交互并进行人脸识别。 系统中,从外部输入电源中获取电源…

HTML5使用<output>标签:显示一些计算结果

HTML5 提供的 output 标签&#xff0c;用于显示出一些计算的结果或者脚本的其他结果。output 标签必须从属于某个表单&#xff0c;也就是说&#xff0c;必须将 output 标签写在表单内部&#xff0c;或者在该元素中添加 form 属性。 output 标签语法&#xff1a; <output f…

盘点2024年10款超级好用的项目管理软件,建议收藏!

今天猴哥整理并分享国内外使用最广泛的10大项目管理工具软件&#xff0c;同时探讨如何选择适合自己的项目管理工具所需考虑的要素。在国内外市场上&#xff0c;有非常多的项目管理软件可供选择。然而&#xff0c;逐一尝试这些软件将耗费大量时间&#xff0c;因此需要寻找更好更…