当前位置: 首页 > news >正文

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 命令将 USERLOGNAMEPS1PATH 这些变量导出到当前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 格式&#xff0…...

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 配置文件进行修改&#xff0c;好处就是项目配置比较集中好管理、可实现动态化修改。 具体配置和使用 项目中 index.html 配置标题名&#xff0c;可以看到 <title>…...

ThinkPHP5.1 创建控制器类

在ThinkPHP中&#xff0c;控制器是MVC模式中的核心组件之一&#xff0c;负责接收用户请求并处理相应的业务逻辑。在本篇技术博客中&#xff0c;我们将深入探讨ThinkPHP5.1中的控制器操作&#xff0c;包括创建控制器、路由绑定、请求参数获取等方面的知识点。 1.创建控制器 在T…...

完全背包问题(c++)

完全背包问题 当前有 N 种物品&#xff0c;第 i 种物品的体积是 ci​&#xff0c;价值是 wi​。 每种物品的数量都是无限的&#xff0c;可以选择任意数量放入背包。 现有容量为 V 的背包&#xff0c;请你放入若干物品&#xff0c;使总体积不超过 V&#xff0c;并且总价值尽可…...

综合性练习(验证码案例)

目录 一、需求 二、准备工作 三、约定前后端交互接口 1、需求分析 2、接口定义 四、Hutool工具介绍 1、引入依赖 2、测试使用Hutool生成验证码 五、实现服务器端代码 代码解读&#xff1a; 六、调整前端页面代码 七、运行测试 随着安全性的要求越来越高&#xff0c…...

实用的Chrome命令 帮你打开Chrome浏览器的隐藏功能

前言 Chrome作为主力浏览器&#xff0c;支持相当丰富的第三方扩展&#xff0c;其实浏览器本身也内置了大量实用的命令。许多实用的功能并没有直接显示在Chrome的菜单上。在这篇文章中&#xff0c;我们将介绍几个实用的chrome:// commands。 通过下面整理的 Chrome 命令&#x…...

Linux提权--定时任务--打包配合 SUID(本地)文件权限配置不当(WEB+本地)

免责声明:本文仅做技术交流与学习... 目录 定时任务 打包配合 SUID-本地 原理: 背景: 操作演示: 分析: 实战发现: 定时任务 文件权限配置不当-WEB&本地 操作演示: 定时任务 打包配合 SUID-本地 原理: 提权通过获取计划任务执行文件信息进行提权 . 1、相对路径和…...

CSS-盒子模型

盒子模型的重要组成部分 内容区域content&#xff1a;width , height 内边距&#xff1a;内边框和内容区域的距离Padding边框线&#xff1a;Border外边距&#xff1a;Margin Border (边框线) 属性&#xff1a;Border 属性值&#xff1a;边框线粗细px 线条样式 颜色(不区分…...

WPF之页的使用

1,Page介绍。 Page直接从FrameworkElement中派生出来&#xff0c;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 中&#xff0c;控制器&#xff08;Controller&#xff09;是用于处理请求、执行逻辑操作并返回响应的类。以下是在 ThinkPHP 5 中创建和使用控制器的基本方法&#xff1a; 1. 创建控制器 在 ThinkPHP 5 中&#xff0c;控制器通常位于 application/index/contro…...

[Linux] 常用服务器命令(持续更新)

文件操作 # 显示文件系统的磁盘空间使用情况 df -h全局查找文件 find / -type f -iname "java"find / -name libncurses*拷贝整个文件夹 cp -r /home/a/ /home/b/ 解压&#xff0c;撤销解压 撤销zip解压 zipinfo -1 path/xx.zip | xargs rm -rf 撤销tar解压 tar …...

编译官方原版的openwrt并加入第三方软件包

最近又重新编译了最新的官方原版openwrt-2305&#xff08;2024.3.22&#xff09;&#xff0c;此处记录一下以待日后参考。 目录 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还是主移动端 主移动端的话…...

conda相比python好处

Conda 作为 Python 的环境和包管理工具&#xff0c;相比原生 Python 生态&#xff08;如 pip 虚拟环境&#xff09;有许多独特优势&#xff0c;尤其在多项目管理、依赖处理和跨平台兼容性等方面表现更优。以下是 Conda 的核心好处&#xff1a; 一、一站式环境管理&#xff1a…...

深入剖析AI大模型:大模型时代的 Prompt 工程全解析

今天聊的内容&#xff0c;我认为是AI开发里面非常重要的内容。它在AI开发里无处不在&#xff0c;当你对 AI 助手说 "用李白的风格写一首关于人工智能的诗"&#xff0c;或者让翻译模型 "将这段合同翻译成商务日语" 时&#xff0c;输入的这句话就是 Prompt。…...

Linux 文件类型,目录与路径,文件与目录管理

文件类型 后面的字符表示文件类型标志 普通文件&#xff1a;-&#xff08;纯文本文件&#xff0c;二进制文件&#xff0c;数据格式文件&#xff09; 如文本文件、图片、程序文件等。 目录文件&#xff1a;d&#xff08;directory&#xff09; 用来存放其他文件或子目录。 设备…...

工业安全零事故的智能守护者:一体化AI智能安防平台

前言&#xff1a; 通过AI视觉技术&#xff0c;为船厂提供全面的安全监控解决方案&#xff0c;涵盖交通违规检测、起重机轨道安全、非法入侵检测、盗窃防范、安全规范执行监控等多个方面&#xff0c;能够实现对应负责人反馈机制&#xff0c;并最终实现数据的统计报表。提升船厂…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

Module Federation 和 Native Federation 的比较

前言 Module Federation 是 Webpack 5 引入的微前端架构方案&#xff0c;允许不同独立构建的应用在运行时动态共享模块。 Native Federation 是 Angular 官方基于 Module Federation 理念实现的专为 Angular 优化的微前端方案。 概念解析 Module Federation (模块联邦) Modul…...

C# 求圆面积的程序(Program to find area of a circle)

给定半径r&#xff0c;求圆的面积。圆的面积应精确到小数点后5位。 例子&#xff1a; 输入&#xff1a;r 5 输出&#xff1a;78.53982 解释&#xff1a;由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982&#xff0c;因为我们只保留小数点后 5 位数字。 输…...

初学 pytest 记录

安装 pip install pytest用例可以是函数也可以是类中的方法 def test_func():print()class TestAdd: # def __init__(self): 在 pytest 中不可以使用__init__方法 # self.cc 12345 pytest.mark.api def test_str(self):res add(1, 2)assert res 12def test_int(self):r…...

在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?

uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件&#xff0c;用于在原生应用中加载 HTML 页面&#xff1a; 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...