Linux入职基础-5.19_详解操作shell启动(应用实战3)

linux shell 脚本 入门到实战详解[⭐建议收藏!!⭐] 文章目录shell 入门到实战详解[⭐建议收藏!!⭐]关于作者**作者介绍**一、shell 入门简介1.1 什么是shell1.2 shell 编程注意事项1.3 第一个shell 脚本 hello world二、shell 环境变量讲解2.1 shell 变量详解2.2 shell 系统变量 介绍2.3 shell 环境变量 介绍2.3.1 常见的系统环境变量2.4 shell 用户环境变量 介绍2.4.1 自定义shell环境变量2.4.2 echo 打印菜单栏2.4.3 shell 中彩色输出 h 阅读详情

详解操作shell启动(应用实战3) 

所谓shell,简单说就是命令行界面的一个软件(比如:/bin/bash),让用户可以直接与操作系统对话。

一、从init初始化开始简单回顾

内核(/vmunix,/boot/zImage等)文件加载至内存以后,就开始运行第一个程序 /sbin/init,它的进程编号(pid)为1,是所有子进程的父进程;它运行于内存保护段一直到系统关机才停止。

/sbin/init进程首先读取文件 /etc/inittab,简单流程如下:

首先,执行脚本/etc/rc.d/rc.sysinit,设定系统程序运行所需的环境。

##在/etc/inittab文件,具体体现为如下:

# System initialization.

si::sysinit:/etc/rc.d/rc.sysinit

其次,当rc.sysinit程序执行完毕后,将返回init继续解析/etc/inittab文件,下一步就是执行脚本/etc/rc.d/rc,它接受“运行级别”作为参数(比如3或5等),启动对应运行级别的开机启动程序(在Windows叫做"服务",在Linux就叫做"守护进程")。在init进程结束的时候执行/etc/rc.d/rc.local脚本,就是留给用户自定义开机启动所需的。

##在/etc/inittab文件,具体体现为如下:

l0:0:wait:/etc/rc.d/rc 0

l1:1:wait:/etc/rc.d/rc 1

l2:2:wait:/etc/rc.d/rc 2

l3:3:wait:/etc/rc.d/rc 3

l4:4:wait:/etc/rc.d/rc 4

l5:5:wait:/etc/rc.d/rc 5

l6:6:wait:/etc/rc.d/rc 6

每个运行级别在/etc目录下面,都有一个对应的子目录,指定要加载的程序。

[root@localhost~]# ll /etc/rc*.d

/etc/rc0.d-> rc.d/rc0.d

/etc/rc1.d-> rc.d/rc1.d

/etc/rc2.d-> rc.d/rc2.d

/etc/rc3.d-> rc.d/rc3.d

/etc/rc4.d-> rc.d/rc4.d

/etc/rc5.d-> rc.d/rc5.d

/etc/rc6.d-> rc.d/rc6.d

上面目录名中的"rc"表示run command(运行程序),数字0~6表示对应运行级别,d表示directory(目录)含义。下面让我们看看 /etc/rc3.d 目录中到底指定了哪些程序。

[root@localhost~]# ls  /etc/rc.d/rc3.d | sort

K01dnsmasq

K02avahi-dnsconfd

K02NetworkManager

……

K89pand

K89rdisc

K91capi

S00microcode_ctl

S04readahead_early

……

S99local

S99smartd

可以看到,目录/etc/rc3.d中文件名都是"字母S或K+两位数字+程序名"的形式。在这个目录里,遵循如下可循的规则:

规则1、字母S,代表Start,就是启动的含义(启动脚本,传递的运行参数为start);

规则2、字母K,代表Kill,就是关闭的含义(关闭脚本,传递的运行参数为stop),比如,运行级别的切换,需要关闭一些程序;

规则3、后面的两位数字表示处理顺序,数字越小越早处理;数字相同时,则按照程序名的字母顺序启动;

规则4、目录/etc/rc3.d中的所有文件都是链接文件,它们指向另外一个目录/etc/init.d(而/etc/init.d指向/etc/rc.d/init.d目录)。

[root@localhost~]# ll /etc/rc3.d/

lrwxrwxrwx1 root root 16 Nov 12 23:38 S99smartd -> ../init.d/smartd

 [root@localhost ~]# ll   /etc/init.d

lrwxrwxrwx1 root root 11 Nov 12 23:34 /etc/init.d -> rc.d/init.d

可以得出,无论对应哪个运行级别,它们真正的rc启动脚本实际上都是放在/etc/rc.d/init.d/目录下。至于在每个运行级别中将运行哪些守护进程,用户可以通过chkconfig或setup中的"System Services"来自行设定。

基本流程如下:

二、开启终端

/etc/rc.d/rc执行完毕后,返回/sbin/init进程。此时基本系统环境已经设置,各种守护进程也已经启动。/sbin/init进程接下来会启动6个虚拟终端或者是X Window图形界面来等待用户登录系统。实际参考的选项是在/etc/inittab内的这一段:

# Run gettys in standard runlevels

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

3:2345:respawn:/sbin/mingetty tty3

4:2345:respawn:/sbin/mingetty tty4

5:2345:respawn:/sbin/mingettytty5

6:2345:respawn:/sbin/mingetty tty6

# Run xdm in runlevel 5

x:5:respawn:/etc/X11/prefdm–nodaemon

从上面可以看出在2、3、4、5的运行级别时,都会以respawn方式执行/sbin/mingetty程序,mingetty(表示get teletype)程序能启动终端、设置模式,同时它会显示一个命令行式的文本界面。

如果我们使用的是run level 5,那么/sbin/init除了要初始化这6个虚拟终端机之外,它还会执行/etc/X11/prefdm –nodaemon这个命令,prefdm脚本会启动X Window 的图形界面。

三、用户登录

一旦发现有活动的终端(比如,控制台、虚拟终端或者远程的终端模拟器接入),/sbin/mingetty程序会给出login提示符:提示输入用户及口令。

用户的登录方式有三种:

⑴命令行界面登录

⑵图形界面登录

⑶ssh登录

现在简单介绍这三种方式,因为它们都有不同的方式对用户进行认证。

⑴命令行界面登录: /sbin/mingetty接收到用户输入用户名和密码后,就调用/bin/login程序核对用户身份与密码,如果密码正确,就从文件 /etc/passwd 读取该用户指定的shell,然后启动这个shell(/bin/bash)。比如,root用户,实际参考的选项是在/etc/passwd内的这一段:

##以下是控制台终端显示的命令行登录界面的进程情况,如下:


⑵图形界面登录:

如果运行级为5(图形界面启动),init进程调用显示管理器,即则运行xdm程序,给用户提供xdm图形界面的登录方式,Gnome图形界面对应的显示管理器为gdm(GNOME Display Manager),然后用户输入用户名和密码。如果密码正确,启动用户的会话。

##run leve 5 终端登录进程情况:

##以下从虚拟终端启动图形界面登录的进程情况:

⑶ssh登录:

init进程调用sshd程序(Debian还会再运行/etc/pam.d/ssh),取代getty和login,然后启动shell。

##以下是sshd登录方式的进程情况:

四、进入 login shell

login程序验证成功后,会向对应的终端在输出最近一次登录的信息(在/var/log/lastlog中有记录),并检查用户是否有新邮件(在/usr /spool/mail/的对应用户名目录下)。

然后开始/bin/bash设置各种环境变量,它会读入一系列的配置文件,不同登录方式也存在差异:

⑴命令行界面登录方式:

对于/bin/bash来说,系统首先寻找/etc/profile脚本文件,并执行它, 这是对所有用户都有效的配置。

然后如果用户的主目录中存在以下三个配置文件:

~/.bash_profile

~/.bash_login

~/.profile

仅执行三者中之一个,其它两个不再执行,比如,要是 ~/.bash_profile 存在,就不会再读入后面两个文件了。在这些文件中又可以调用了其它配置文件,所有的配置文件执行完成后,各种环境变量也就设置好了,这时会出现大家熟悉的命令行提示符。

⑵图形界面登录方式:

只加载 /etc/profile 和 ~/.profile。也就是说,~/.bash_profile 不管有没有,都不会运行。

⑶ssh登录

与第一种命令行界面登录方式的情况完全相同

五、打开 non-login shell

上一步完成以后,Linux的启动过程就算结束,用户已经可以看到命令行提示符或者图形界面了。

 



Shell脚本编程基础及实战 本文还有配套的精品资源,点击获取 简介:标题和简介未提供具体信息,但通过标签“Shell”推测主题与Unix/Linux系统中的Shell脚本编程相关。Shell是命令行解释器,允许执行系统操作。Shell脚本用于自动化命令行任务,包含控制结构、条件语句、循环语句等。本课程深入探讨Shell编程基础,包括脚本结构、变量赋值、命令行参数处理、流程控制、文件与目录操作、管道与重... 阅读详情

相关推荐

ClickHouse的bitmap使用

ClickHouse的bitmap使用 bitmap的基本使用 在CK中bitmap有两种构建方式,在ClickHouse的官网有说明: (1)一个是由聚合函数groupBitmapState构造的, (2)另一个是由Array Object构造的。同时还可以将位图对象转化为数组对象。 bitmap实战 数据和基本数据表准备 创建一张基本表,一个用户表,有多个描述的维度,每个维度由该维度的唯一id。 CREATE TABLE test02(id UInt16, tag1 UInt8, tag2 UInt8,

zg_hover的专栏 5654

linux基础内容

用户与计算机硬件之间用于传递信息的系统程序软件管理和控制计算机硬件与软件资源的计算机程序,直接运行在"裸机"上文件系统是操作系统用于明确存储设备或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统文件系统是对一个存储设备上的数据和元数据进行组织的一种机制。

wuxingge的博客 3363

对比学习损失函数避坑指南:为什么你的自监督模型不收敛?

本文深入剖析对比学习损失函数中的关键陷阱,揭示自监督模型不收敛的根本原因。通过分析温度系数选择、负样本采样策略和特征归一化等核心因素,提供实用解决方案。实验数据表明,正确设置温度系数τ(建议0.07起)可提升30%性能,而MoCo风格的负样本队列比SimCLR方案在小批量时准确率高6-8%。

nokia的博客 922

Linux (CentOS)开机自启

Linux (CentOS)开机自启 对于linux开机自启,这里总结了三种方式 第一:root登录,终端可视化管理界面,输入命令:ntsysv,括号中(*)代表默认开机启动,否则不会在开机的时候启动;上下键:可以在各个服务之间移动;空格键:设置启动还是不启动/确定,* 进行设置即可;Tab键:在方框、ok、cancle之间进行切换; 第二:利用chkconfig命令进行设置 参数 | 说明 --list | 将目前的各项服务状态栏显示出来 --level | 设置某个服务在该LEVEL

scdncby的博客 736

SAP Fiori Launchpad 上看不到任何 tile 应该怎么办?

中心UI组件是一个框架,为所有SAPFiori应用程序提供公共基础设施SAPFiorilaunchpad是所有SAPFioriUI的基础,并为SAPFiori应用程序提供基本功能,如登录,界面大小,应用程序之间的导航,和基于角色的应用程序目录。ABAP前端服务器包含所有基础设施组件,用于为客户端生成SAPFiori应用程序特定的UI,并与SAPBusinessSuite后端系统通信。SAPFiori应用程序的处理过程如下首先,客户端加载SAPFiori应用程序的界面。...

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 941

基于matlab的LFM脉冲压缩仿真

传统雷达测距是通过发射点频脉冲串实现的,通过发射脉冲与回波的时延确定目标的距离。此类方法易于实现,对接收机的要求较低。一般要获取更好的距离分辨力,需要增加发射信号的带宽,对于点频脉冲信号即需要减小发射脉冲宽度;而为获取更大的探测距离,提升雷达威力,则需要发射更大占空比的脉冲串。由于点频信号的时宽带宽积约等于1,因此不能同时增加信号的时宽和带宽。若要保持距离分辨力,增大占空比就需要减少雷达的脉冲重复周期(PRT)。这样会减小雷达的无模糊探测距离,也会造成目标回波频繁被遮挡,损失雷达威力。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 1770

Linux 启动过程

Part 3. Linux系统启动过程3.1 Linux系统启动过程这个部分比较有意思。因为在BIOS阶段,计算机的行为基本上被写死了,程序员可以做的事情并不多;但是,一旦进入操作系统,程序员几乎可以定制所有方面。所以,这个部分与程序员的关系更密切。我主要关心的是Linux操作系统,它是目前服务器端的主流操作系统。下面的内容针对的是Debian发行版,因为我对其他发行版不够熟悉。第一步、加载内核操...

dejunyang的博客 520

国科大学习资料--计算机视觉(胡占义、董秋雷)--2018-2019第二学期期末试卷

国科大学习资料–计算机视觉(胡占义、董秋雷)–2018-2019第二学期期末试卷 国科大学习资料–计算机视觉(胡占义、董秋雷)–2018-2019第二学期期末试卷 国科大学习资料–计算机视觉(胡占义、董秋雷)–2018-2019第二学期期末试卷 ...

无名何许人的博客 2167

【linux】通过/etc/rc5.d/文件注册开机启动项

查看当前运行级别 runlevel 编写启动脚本 vim /etc/init.d/autorun.sh 写入内容 #!/bin/sh date >/root/date.log 赋予脚本执行权限 chmod 777 /etc/init.d/autorun.sh 将脚本链接到/etc/rc5.d/目录下 ln -s /etc/init.d/autorun.sh /etc/rc5.d/S99autorun ...

qq_43017750的博客 2671

GPU硬件架构与微架构深度解析28-稀疏计算:稀疏矩阵计算的硬件支持

本文介绍了GPU加速稀疏计算的关键技术。主要内容包括:1)稀疏数据的存储格式(COO、CSR、CSC)及其特点;2)现代GPU的稀疏计算硬件优化,如NVIDIA的稀疏张量核心和内存访问优化;3)稀疏计算在推荐系统、NLP和科学计算等领域的应用案例;4)性能优化技巧,包括存储格式选择、硬件特性利用和混合精度计算等。文章指出,专用稀疏计算技术可显著提升AI和大规模科学计算的效率,相比传统方法可获得5-10倍的性能提升。

2301_79143213的博客 114

3dmax文件格式转换——.max 转换为 .flt(解决转换后.flt没有纹理贴图的问题)

本文主要介绍如何在3dmax中将.max格式文件转换为.flt格式文件,并解决转换后的文件没有纹理贴图的问题。 在3dmax中,将.max文件转换为.flt格式,只需导出选择.flt格式即可,但是导出的文件在osgEarth中加载后,缺少纹理和贴图。 下面是解决方案: 1、选中加载的模型,然后点击 渲染-> 渲染到纹理 2、将 渲染到纹理 子窗口往下拉,点击 添加 按钮,添加 ...

cchangcs 6170

嵌入式学习Day18

2.位置变量: ./3.sh /etc/passwd 123 456 内置变量。3.chmod +x XX.sh 追加执行权限。shell脚本的本质就是一系列shell命令的集合。4." ":打印字符串,遇到$变量则打印变量中的值。' ':打印字符串,遇到$变量依然打印$变量。:上一句shell命令执行的结果。` `:将中间的字符串按照命令打印。$$:当前shell的PID。$1:传入脚本的第一个参数。$2:传入脚本的第二个参数。while [ 条件 ]$#:传入参数的个数。

m0_53877560的博客 421

从数据到行为的可控暴露:SAP RAP 中的 BO Projection 与 BO Interface 全面实践指南

本文系统梳理了ABAP RAP中BO Projection与BO Interface的定位与实现方式。BO Projection面向业务服务(如UI/API),通过CDS投影视图(as projection on)和行为定义裁剪字段与操作,实现差异化暴露;BO Interface则为EML代码和跨组件复用提供稳定访问层,使用transactional_interface标识。两者均遵循C_/I_命名规范,通过分层设计实现封装性、安全性和灵活性。文中结合真实案例展示了如何通过不同投影满足多角色需求,并详细说明

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 251

Linux操作系统——基础详解

UNIX 是一个交互式系统,用于同时处理多进程和多用户同时在线。为什么要说 UNIX,那是因为 Linux 是由 UNIX 发展而来的,UNIX 是由程序员设计,它的主要服务对象也是程序员。Linux 继承了 UNIX 的设计目标。从智能手机到汽车,超级计算机和家用电器,从家用台式机到企业服务器,Linux 操作系统无处不在。...

欢迎来到我的知识星球!!! 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Linux一键启动多个jar和Shell脚本的编写

背景 公司项目是spring cloud eureka微服务系列的架构,在内网环境linux上需要一键启动/停止多个jar包。考虑到.sh文件的执行,仅供参考,有其他方案的同学请留言告知,在此先感谢了! 代码 1.一键启动/停止多个jar 启动:./java.sh start 停止:./java.sh stop 重启:./java....

艾斯-李的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

【Linux操作系统】探秘Linux奥秘:shell 编程的解密与实战

博文“Shell 编程”深入介绍了Shell脚本在计算机编程中的重要性和灵活性。作者首先阐述了Shell是一个强大的命令解释器,它为用户提供了在操作系统上执行命令的环境。随后,文章详细探讨了Shell脚本的编写和执行过程,强调了它在自动化任务、批量处理以及系统管理中的广泛应用。

朝花夕拾 9306

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

大数据学习笔记 第4天 Shell编程基础高级实战详解

Shell编程、Shell脚本、Shell基础、Shell高级、Shell实战

weixin_62785232的博客 2265

Linux启动SpringBoot应用shell脚本

最近学习了Spring Boot来发布应用,在最后打成jar包的时候,需要执行jar包,所以要写一个启动和停止服务的脚本,从网上找了一个,改成自己的记录一下。 #!/bin/bash APP_NAME=spring-boot-server.jar echo "任务开始" usage() { echo "case:sh run.sh [start | stop | restart | statu...

renzhongrui的博客 4485

Linux操作系统下java程序的启动、停止、重启及运行状态的shell脚本编写

linux系统编写shell脚本,实现java程序的启动、状态查看、停止、重启操作

qq_45980039的博客 5304

Linux之Shell编程详解

Shell编程 文章目录Shell编程一、Shell介绍二、Shell脚本的执行方式三、Shell的变量1. Shell变量介绍2. 自定义变量四、设置环境变量五、位置参数变量六、预定义变量七、运算符八、条件判断九、流程控制1. if语句2. case语句3. for循环4. while循环十、读取输入十一、函数1. 系统函数2. 自定义函数十二、Shell工具1. cut2. sed3. awk4. sort 一、Shell介绍 Shell是一个可以让用户向Linux内核发送命令以便运行程序的命令行解释器

立志成为一个前端、后端、测试全方位发展的程序员 1万+

Linux Shell 脚本编程基础知识篇—shell简介以及基本操作

Shell本身是一个用C语言编写的程序, 它是用户使用Linux的桥梁。Shell既是一种命令语言, 又是一种程序设计语言。所有的Linux命令都是Shell脚本语言。

weixin_55767624的博客 2722

linux shell 脚本入门到实战

shell脚本学习

qq_44861892的博客 1091

【Linux】Shell详解

【Linux】 Shell详解

南瓜籽_的博客 3502

Linux Shell入门指南:从零掌握系统操作

Shell是Linux系统的用户界面,提供了用户与内核进行交互操作的一种接口。它接收用户输入的命令并把它送入内核去执行,shell也被称为LINUX的命令解释器。

zhjx131226的博客 1087

Linux零基础入门:Kali配置与Shell基础操作指南

本文为零基础学习者系统介绍了Linux核心知识,涵盖主流发行版特点解析(如Debian、Kali、RHEL)、Shell基础命令操作、别名设置及帮助系统使用。重点指导Kali Linux配置与实用Shell技巧,旨在帮助初学者快速建立Linux使用基础,迈出系统管理与安全学习的第一步。

PyHaVolask的博客 1134

Linux 下使用Shell脚本启动Java应用

1、部署项目 [root@peipei3514 src]# unzip -oq Linux_Java_Shell.war -d /usr/local/Linux_Java_Shell 其实就是不询问将war包传到/usr/local/Linux_Java_Shell进行解压。 命令解释: -o 不必先询问用户,unzip执行后覆盖原有文件; -q 执行时不显示任何信息; -d <目录> 指定文件解压缩后所要存储的目录。 2、启动脚本 #!/bin/sh #该脚本为Linux下启动java程

zouyang920的博客 4984
上一篇: Linux入职基础-5.18_运维经典技巧(应用实战2)
下一篇: Linux入职基础-5.20_命令dd实战磁盘维护(应用实战4)
木生火
博客等级 码龄10年 128粉丝 454原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值