Linux学习笔记3
建立最小linux系统【续】
书接上文,上一篇我们分析了rcS和ifconfig-eth0文件,接下来我们继续讲下去
passwd文件
之后在init.d的上一级目录etc下建立passwd文件,内容如下
root::0:0:root:/:/bin/sh bin:*:1:1:bin:/bin:daemon:*:2:2:daemon:/sbin: nobody:* :99:99:Nobody:/:
分析:
/etc/passwd 文件是Unix和类Unix系统中存储用户账户信息的文本文件,它包含了每个用户的基本信息,每一行对应一个用户账户。
每行记录包含了一系列由冒号分隔的字段,一般的格式是
用户名:密码字段:UID:GID:用户信息:家目录:shell
以第一行为例:
root::0:0:root:/:/bin/sh:
root:这是用户的用户名,代表系统管理员账户,拥有系统上的最高权限。
0:这是用户的用户ID(UID),在Unix系统中,0 通常是分配给 root 用户的。
0:这是用户的主组ID(GID),也就是用户所属的主要组的ID,通常也是0,即 root 组。
root:这是用户的注释,通常是用户的真实姓名或其他描述信息。
/:这是用户的家目录,即登录后默认所在的目录。对于 root 用户来说,一般是根目录。 /bin/sh:这是用户的默认shell,即登录后使用的命令行解释器,这里是 Bourne shell。
【注释:UID 是用来唯一标识系统中的每个用户的数字,每个用户都有一个唯一的UID。通常情况下,0号UID被分配给超级用户(如root),其他用户的UID则依次增加。
GID 是用来唯一标识系统中的每个组的数字。每个组都有一个唯一的GID。用户可以属于一个或多个组,但每个用户都有一个主组,其GID通常与用户的UID对应的GID相同。与UID类似,0号GID通常被分配给超级用户组
家目录是用户登录后的默认工作目录,每个用户都有一个独立的家目录,用于存储其个人文件、配置文件和其他相关数据。家目录对于每个用户都是私有的,只有相应的用户及超级用户(root)才有权限对该目录进行读写操作。通常,用户可以在家目录中创建子目录来组织文件,并且在登录时会自动进入到自己的家目录。】
之后修改passwd的权限
建立profile 文件
然后使用命令“vim profile”在etc 目录建立profile 文件(用于设置环境变量,提供了一个用户登录会话的初始环境配置,以确保用户可以在命令行界面中方便地进行工作和操作)
# Ash profile
# vim: syntax=sh
# No core files by default
ulimit -S -c 0 > /dev/null 2>&1
USER="`id -un`"
LOGNAME=$USER
PS1='[$USER@$HOSTNAME]#'
PATH=$PATH
HOSTNAME=`/bin/hostname`
export USER LOGNAME PS1 PATH
前几行是注释,接下来我来解释一下
“ulimit -S -c 0 > /dev/null 2>&1”:
ulimit 是一个用于管理进程资源限制的实用工具,它可以帮助用户调整和控制系统资源的使用。 '-S'表示设置软限制;
'-c 0':这是指定核心文件大小的软限制为0,-c 表示核心文件大小的软限制,后面的 0 表示这个软限制的值为0
> /dev/null:这是将命令的标准输出重定向到 /dev/null,/dev/null 是一个特殊的设备文件,写入到它的内容会被丢弃,相当于把命令的输出扔掉,不显示在终端上
>& 表示将一个文件描述符的输出重定向到另一个文件描述符
【注释:软限制指的是系统中对资源的软性限制,它是可以被用户进程修改的,但不能超过硬限制(硬限制可以通过ulimit -H 命令来查看),如果软限制设置为0,表示禁止生成核心转储文件。
核心文件大小的软限制是操作系统针对进程生成核心转储文件(core dump)时设定的最大大小限制。核心转储文件是在进程遇到严重错误(比如段错误)时生成的一个包含了进程当前内存映像的文件,它可以用于调试和分析程序崩溃的原因
文件描述符是一个用于标识和操作输入/输出资源的整数值,下面有几种常见的文件描述符:
标准输入(stdin):文件描述符为 0,用于接收程序的输入数据。
标准输出(stdout):文件描述符为 1,用于输出程序的正常执行结果。
标准错误(stderr):文件描述符为 2,用于输出程序的错误消息。】
USER="`id -un`",id -un这个命令用于显示当前用户的用户名。
$ 通常表示一个变量或者环境变量的引用,当你在 shell 中输入 $ 后跟一个变量名时,shell 将会用该变量的值替换 $ 后面的内容,所以LOGNAME=$USER可以将变量 LOGNAME 的值设置为 $USER,即当前用户的用户名
PS1='[$USER@$HOSTNAME]#':设置命令提示符(Prompt String),在这个设置中,命令提示符显示当前用户名和主机名,形式为 [用户名@主机名]#
PATH=$PATH:保持 PATH 环境变量的内容不变。
HOSTNAME=`/bin/hostname`:用bin/hostname 命令获取当前主机的主机名,并将其赋值给变量 HOSTNAME
使用 export 命令将 USER、LOGNAME、PS1 和 PATH 这些变量导出到当前Shell的环境中
建立netd 文件
接下来使用“mkdir rc.d”命令在etc 目录建立文件夹rc.d,在rc.d 目录下使用命令“mkdir init.d”建立
init.d 文件夹,接着在init.d 文件夹,使用“vim netd”命令建立netd 文件
【注释:rc.d 文件夹是用于存放系统启动或服务管理相关的脚本或配置文件的目录。init.d 文件夹通常用于存放系统初始化脚本,这些脚本在系统启动时会被执行。netd 是一个服务脚本的文件名,用于启动或管理网络相关的服务】
#!/bin/sh
base=inetd
#See how we were called.
case "$1" in
start)
/usr/sbin/$base
;;
stop)
pid=`/bin/pidof $base`
if [-n "$pid" ]; then
kil1 -9 $pid
fi
;;
esac
exit0
以#!开头的语法是Shebang(也称为哈希井号、井号、pound、sharp等),后面跟着路径可以告诉操作系统使用指定的解释器来执行脚本文件。"#!/bin/sh"的意思是来指定使用Bourne shell来解释执行该脚本。
case "$1" in :是一个 case 语句,用于根据传递给脚本的参数 $1 的值执行不同的操作。如果 $1 的值是 start,启动一个名为 $base 的服务。如果 $1 的值是 stop,则使用 pidof 命令找到正在运行的服务的进程ID,并将其存储在 pid 变量中。
之后有一个条件语句,检查pid变量是否为空,如果非空,则使用 kill 命令发送信号 9 给服务的进程,以终止该进程。
【注释:
pidof 命令用于根据进程名查找进程ID
在shell脚本里面,假如base=hhhhh,那么$base就是hhhhh,是它特定的语法
】
【未完待续】
相关文章:
Linux学习笔记3
建立最小linux系统【续】 书接上文,上一篇我们分析了rcS和ifconfig-eth0文件,接下来我们继续讲下去 passwd文件 之后在init.d的上一级目录etc下建立passwd文件,内容如下 root::0:0:root:/:/bin/sh bin:*:1:1:bin:/bin:daemon:*:2:2:daemo…...
免费证件照一键换底色
最近星期天在家搞了一个小工具,在这里分享下! 废话不多说看看效果: 效果还不错,需要的可以联系我!!!!!!!!! 别的网上可都是一次五块钱这种。太贵了。。!!...
使用 FFmpeg 从音视频中提取音频
有时候我们需要从视频文件中提取音频,并保存为一个单独的音频文件,我们可以借助 FFmpeg 来完成这个工作。 一、提取音频,保存为 mp3 文件: 要使用 FFmpeg 从音视频文件中提取音频,并将 ACC 编码的音频转换为 MP3 格式࿰…...
GraphQL在现代Web应用中的应用与优势
GraphQL是一种现代的API查询语言,它在现代Web应用中得到了广泛的应用,因为它提供了一种高效、灵活且强大的方式来获取数据 GraphQL基础快速应用示例: 1. 后端设置(使用graphql-yoga) 首先,我们需要创建一…...
socket编程 学习笔记 理解
在使用socket(也就是套接字)编程的时候,其实是工作于应用层和传输层之间 如果使用的是基于TCP的socket,那每个数据包的发送的过程大致为: 数据通过socket套接字构造符合TCP协议的数据包在屏蔽底层协议的情况下&#…...
SC-Lego-LOAM建图与ndt_localization的实车实现
参考:https://blog.csdn.net/weixin_44303829/article/details/121524380 https://github.com/AbangLZU/SC-LeGO-LOAM.git https://github.com/AbangLZU/ndt_localizer.git 将建图和定位分别使用lego-loam和ndt来进行,实车上的效果非常不错,…...
vs code中如何使用git
由于本地代码有了一些储备,所以想通过网址托管形式,之前一直使用了github,但是鉴于一直被墙,无法登录账号,所以选择了国内的gitee来作为托管网站。 gitee的网址:Gitee - 基于 Git 的代码托管和研发协作平台…...
Vue项目中如何通过配置修改项目名称
Vue项目中如何通过配置修改项目名称 前言 部分vue项目中为了不直接修改 index.html 文件而使用 config 配置文件进行修改,好处就是项目配置比较集中好管理、可实现动态化修改。 具体配置和使用 项目中 index.html 配置标题名,可以看到 <title>…...
ThinkPHP5.1 创建控制器类
在ThinkPHP中,控制器是MVC模式中的核心组件之一,负责接收用户请求并处理相应的业务逻辑。在本篇技术博客中,我们将深入探讨ThinkPHP5.1中的控制器操作,包括创建控制器、路由绑定、请求参数获取等方面的知识点。 1.创建控制器 在T…...
完全背包问题(c++)
完全背包问题 当前有 N 种物品,第 i 种物品的体积是 ci,价值是 wi。 每种物品的数量都是无限的,可以选择任意数量放入背包。 现有容量为 V 的背包,请你放入若干物品,使总体积不超过 V,并且总价值尽可…...
综合性练习(验证码案例)
目录 一、需求 二、准备工作 三、约定前后端交互接口 1、需求分析 2、接口定义 四、Hutool工具介绍 1、引入依赖 2、测试使用Hutool生成验证码 五、实现服务器端代码 代码解读: 六、调整前端页面代码 七、运行测试 随着安全性的要求越来越高,…...
实用的Chrome命令 帮你打开Chrome浏览器的隐藏功能
前言 Chrome作为主力浏览器,支持相当丰富的第三方扩展,其实浏览器本身也内置了大量实用的命令。许多实用的功能并没有直接显示在Chrome的菜单上。在这篇文章中,我们将介绍几个实用的chrome:// commands。 通过下面整理的 Chrome 命令&#x…...
Linux提权--定时任务--打包配合 SUID(本地)文件权限配置不当(WEB+本地)
免责声明:本文仅做技术交流与学习... 目录 定时任务 打包配合 SUID-本地 原理: 背景: 操作演示: 分析: 实战发现: 定时任务 文件权限配置不当-WEB&本地 操作演示: 定时任务 打包配合 SUID-本地 原理: 提权通过获取计划任务执行文件信息进行提权 . 1、相对路径和…...
CSS-盒子模型
盒子模型的重要组成部分 内容区域content:width , height 内边距:内边框和内容区域的距离Padding边框线:Border外边距:Margin Border (边框线) 属性:Border 属性值:边框线粗细px 线条样式 颜色(不区分…...
WPF之页的使用
1,Page介绍。 Page直接从FrameworkElement中派生出来,WIndow从ContentControl中派生。 [Localizability(LocalizationCategory.Ignore)]public class Window : ContentControl, IWindowService{....} [ContentProperty("Content")]public class Page : Fr…...
【FFmpeg】Filter 过滤器 ② ( 裁剪过滤器 Crop Filter | 裁剪过滤器语法 | 裁剪过滤器内置变量 | 裁剪过滤器常用用法 )
文章目录 一、裁剪过滤器1、裁剪过滤器简介2、裁剪过滤器语法3、裁剪过滤器内置变量4、裁剪过滤器示例5、裁剪过滤器应用6、裁剪过滤器图示 二、裁剪过滤器常用用法1、裁剪指定像素的视频区域2、裁剪视频区域中心正方形 - 默认裁剪3、裁剪视频区域中心正方形 - 手动计算4、裁剪…...
thinkphp5 中控制器的创建和使用方法
在 ThinkPHP 5 中,控制器(Controller)是用于处理请求、执行逻辑操作并返回响应的类。以下是在 ThinkPHP 5 中创建和使用控制器的基本方法: 1. 创建控制器 在 ThinkPHP 5 中,控制器通常位于 application/index/contro…...
[Linux] 常用服务器命令(持续更新)
文件操作 # 显示文件系统的磁盘空间使用情况 df -h全局查找文件 find / -type f -iname "java"find / -name libncurses*拷贝整个文件夹 cp -r /home/a/ /home/b/ 解压,撤销解压 撤销zip解压 zipinfo -1 path/xx.zip | xargs rm -rf 撤销tar解压 tar …...
编译官方原版的openwrt并加入第三方软件包
最近又重新编译了最新的官方原版openwrt-2305(2024.3.22),此处记录一下以待日后参考。 目录 1.源码下载 1.1 通过官网直接下载 1.2 映射github加速下载 1.2.1 使用github账号fork源码 1.2.2 创建gitee账号映射github openwrt 2.编译准…...
PC适配移动端
**手机端适配** 媒体查询 组件统一样式 媒体查询写四套样式 手机 屏幕宽小于768px 平板 屏幕宽 大于等于768px 小于992px 桌面显示器 屏幕宽大于等于992px 小于1200px 大屏幕 屏幕宽大于等于1200px **页面整体及页面内容** 页面看是需要主PC还是主移动端 主移动端的话…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...
CentOS下的分布式内存计算Spark环境部署
一、Spark 核心架构与应用场景 1.1 分布式计算引擎的核心优势 Spark 是基于内存的分布式计算框架,相比 MapReduce 具有以下核心优势: 内存计算:数据可常驻内存,迭代计算性能提升 10-100 倍(文档段落:3-79…...
从零开始打造 OpenSTLinux 6.6 Yocto 系统(基于STM32CubeMX)(九)
设备树移植 和uboot设备树修改的内容同步到kernel将设备树stm32mp157d-stm32mp157daa1-mx.dts复制到内核源码目录下 源码修改及编译 修改arch/arm/boot/dts/st/Makefile,新增设备树编译 stm32mp157f-ev1-m4-examples.dtb \stm32mp157d-stm32mp157daa1-mx.dtb修改…...
重启Eureka集群中的节点,对已经注册的服务有什么影响
先看答案,如果正确地操作,重启Eureka集群中的节点,对已经注册的服务影响非常小,甚至可以做到无感知。 但如果操作不当,可能会引发短暂的服务发现问题。 下面我们从Eureka的核心工作原理来详细分析这个问题。 Eureka的…...
【C++特殊工具与技术】优化内存分配(一):C++中的内存分配
目录 一、C 内存的基本概念 1.1 内存的物理与逻辑结构 1.2 C 程序的内存区域划分 二、栈内存分配 2.1 栈内存的特点 2.2 栈内存分配示例 三、堆内存分配 3.1 new和delete操作符 4.2 内存泄漏与悬空指针问题 4.3 new和delete的重载 四、智能指针…...
安卓基础(Java 和 Gradle 版本)
1. 设置项目的 JDK 版本 方法1:通过 Project Structure File → Project Structure... (或按 CtrlAltShiftS) 左侧选择 SDK Location 在 Gradle Settings 部分,设置 Gradle JDK 方法2:通过 Settings File → Settings... (或 CtrlAltS)…...
uniapp 小程序 学习(一)
利用Hbuilder 创建项目 运行到内置浏览器看效果 下载微信小程序 安装到Hbuilder 下载地址 :开发者工具默认安装 设置服务端口号 在Hbuilder中设置微信小程序 配置 找到运行设置,将微信开发者工具放入到Hbuilder中, 打开后出现 如下 bug 解…...
离线语音识别方案分析
随着人工智能技术的不断发展,语音识别技术也得到了广泛的应用,从智能家居到车载系统,语音识别正在改变我们与设备的交互方式。尤其是离线语音识别,由于其在没有网络连接的情况下仍然能提供稳定、准确的语音处理能力,广…...
算法打卡第18天
从中序与后序遍历序列构造二叉树 (力扣106题) 给定两个整数数组 inorder 和 postorder ,其中 inorder 是二叉树的中序遍历, postorder 是同一棵树的后序遍历,请你构造并返回这颗 二叉树 。 示例 1: 输入:inorder [9,3,15,20,7…...
深入解析光敏传感技术:嵌入式仿真平台如何重塑电子工程教学
一、光敏传感技术的物理本质与系统级实现挑战 光敏电阻作为经典的光电传感器件,其工作原理根植于半导体材料的光电导效应。当入射光子能量超过材料带隙宽度时,价带电子受激发跃迁至导带,形成电子-空穴对,导致材料电导率显著提升。…...
