LiangGaRy-学习笔记-Day07

news/2024/4/20 13:48:49/文章来源:https://blog.csdn.net/Liang_GaRy/article/details/130367353

1、if语句解释

1.1、if分支语句

if语句

  • 单分支语句
  • 双分支语句
  • 多分支语句

双分支语句

#格式:注意判断[]中的两个空格#$?用于判断上一条命令执行的正确性
if [ $? -eq 0 ];thenecho xxx
elseecho xxx
fi

多分支语句

#格式:注意判断[]中的两个空格
if [ $? -eq 0  ] ;thenecho xxx
elif [ 条件1 ];thenecho xxxx
elif [  条件2 ] ;then指定动作
elif [ 条件三  ];then指定动作
else不在上面的选择当中-->就是执行这个动作
fi

1.2、编写内存使用率脚本

if语句用于判断内存使用率

要求:

  • 60% 警告
  • 70 % 严重警告
  • 80% 发邮件 不紧急
  • 90% 打电话

解题思路:

  • 结合之前学过的函数:meminfo(){}
    • 让用户自己选择1.2.3.4等等;
  • read -p :提示用户输入自己内存的使用量
  • 用户输入的值和标准做判断;–>if多分支结构;
#进入一个目录
[root@Node1 ~]# cd sh/
[root@Node1 sh]# #编写脚本
[root@Node1 sh]# vim men.sh
#!/bin/bash
#Author By LiangGaRy
#2023年4月24日
#############################
choice(){
cat << EOF
1.80 Mail
2.70 Warning
3.60 Error
EOF
}
choice
read -p "请输入你的内存值: " mem
if [ $mem -eq 1  ];thenecho "Mail "
elif [ $mem -eq 2 ];thenecho "Warning"
elif [ $men -eq 3  ];thenecho "Error"
elseecho "没有可以提示的;请选择1-3数字"
fi#尝试实行脚本
[root@Node1 sh]# chmod +x men.sh 
[root@Node1 sh]# ./men.sh 
1.80 Mail
2.70 Warning
3.60 Error
请输入你的内存值: 1
Mail 
[root@Node1 sh]# 

1.3、购物车脚本

这道题目其实就是作业题目;

[root@Node1 sh]# vim list.sh#定义一个变量
list(){
cat << EOF
1.apple
2.banana
3.pear
4.orange
Please select one you like: 
EOF
}
list
read num
if [ $num -eq 1 ];thenecho "this is an apple;"
elif [ $num -eq 2 ];thenecho "this is an banana;"
elif [ $num -eq 3 ];thenecho "This is pears;"
elif [ $num -eq 4 ];thenecho " This is oranges;"
elseecho "Please input a new number [1-4]"
fi#赋予权限,直接执行
[root@Node1 sh]# chmod  +x list.sh 
[root@Node1 sh]# ./list.sh 
1.apple
2.banana
3.pear
4.orange
Please select one you like: 
1
this is an apple;

2、用户以及用户组管理

2.1、用户理解

Linux当中,它是一个多用户、多任务的操作系统;

Linux 用户也可以分权限

  • 用户1:部署
  • 用户2:解决复杂的问题
  • 用户3:测试

权限不同,分配的任务也不同;这里就出现了用户管理的概念

2.2、用户管理

权限划分:

  • zhagnsan:拥有root权限
  • lisi:只有基础命令;不能使用rm命令

用户:

  • 账号、密码
  • Linux三种角色
    • 超级用户(root):拥有系统的最高权限
      • ID=0,ID为0 的用户就是超级用户;
      • 区别两个都是超级用户的方法:就是查看家目录位置
    • 系统用户:
      • Centos6系统–>1~499
      • Centos7–>1~999
      • 虚拟用户不登陆系统,用于维护某个服务的运行;
        • http、mysql
    • 普通用户:
      • UID :1000+

Linux系统:用UID 和GID来区分用户的类型的;

  • Linux用户有自己独立的权限;
  • 财务部:有财务部的权限,销售无法查看一些文件等等;
  • Linux的用户组和用户管理就是用来规范的;

3、用户组管理命令

用户和用户组的命令也是离不开增删改查

  • 增加:useradd
  • 删除:userdel
  • 改:chage

3.1、useradd命令

作用:创建用户命令

语法:useradd + 选项 + 用户名

选项:

  • -c:加上备注文字,备注文字保存在passwd的备注栏中。
  • -d:指定用户登入时的启始目录。
  • -e:指定账号的有效期限,缺省表示永久有效。
  • -f:指定在密码过期后多少天即关闭该账号。
  • -g:指定用户所属的起始群组。
  • -G:指定用户所属的附加群组。
  • -m:自动建立用户的登入目录。
  • -M:不要自动建立用户的登入目录。
  • -r:建立系统账号。
  • -s:指定用户登入后所使用的shell。
  • -u:指定用户ID号。

说明:

  • 创建用户;用户和用户组默认是同名的
  • 也会追加到/etc/passwd的文件当中
  • 自己会创建一个家目录/home/用户名
  • 邮件:/var/spool/mail/harry
#创建一个普通用户
[root@Node1 ~]# useradd zhangsan
[root@Node1 ~]# id zhangsan
uid=1002(zhangsan) gid=1002(zhangsan) groups=1002(zhangsan)#指定用户的shell是不能登录的
[root@Node1 ~]# useradd -s /sbin/nologin mysql#添加用户的初始组
[root@Node1 ~]# useradd -g zhangsan lala
[root@Node1 ~]# id lala
uid=1004(lala) gid=1002(zhangsan) groups=1002(zhangsan)#直接指定用户的家目录位置
[root@Node1 ~]# useradd -d /opt/lucy lucy#添加用户的附加组
[root@Node1 ~]# useradd -G mysql,lucy,zhangsan jerry
[root@Node1 ~]# id jerry
uid=1006(jerry) gid=1006(jerry) groups=1006(jerry),1002(zhangsan),1003(mysql),1005(lucy)

3.2、userdel命令

作用:删除用户命令

语法:userdel+选项+用户名

选项:-r:删除用户以及对应的目录

#直接删除用户-->已经删除了用户,但是用户的相关文件还是存在
[root@Node1 ~]# userdel  jerry
[root@Node1 ~]# find / -name jerry
/var/spool/mail/jerry
/home/jerry#彻底删除
[root@Node1 ~]# userdel -r lucy
[root@Node1 ~]# find / -name lucy
[root@Node1 ~]# 

3.3、chage命令

作用:用于密码的实效管理,用来修改帐号和密码的有效期

语法:chage+选项

选项:

  • -l:列出用户的以及密码的有效期限
  • -m:修改密码的最小天数
  • -M:修改密码的最大天数
  • -I:密码过期后,锁定帐号的天数
  • -d:指定密码最后修改的日期
  • -E:有效期,0表示立即过期,-1表示永不过期
  • -W:密码过期前,开始警告天数
#创建一个用户
[root@Node1 ~]# useradd  jenny
[root@Node1 ~]# echo 1 | passwd --stdin jenny#让jenny用户一登就修改密码
[root@Node1 ~]# chage -d 0 jenny
[root@Node1 ~]# ssh jenny@192.168.75.131
.......
Changing password for jenny.
(current) UNIX password: 
New password: 

3.4、id命令

作用:查看用户的id信息

语法:id+用户名

#查看jenny用的ID信息
[root@Node1 ~]# id jenny
uid=1005(jenny) gid=1005(jenny) groups=1005(jenny)

3.5、whoami命令

作用:查看当前用户

语法:whoami

#查看当前用户是谁
[root@Node1 ~]# who am i 
root     pts/0        2023-05-25 15:33 (192.168.75.1)[root@Node1 ~]# whoami 
root

3.6、w命令

作用:查看当前登陆的用户

语法:w

[root@Node1 ~]# w15:51:15 up 35 min,  1 user,  load average: 0.00, 0.01, 0.04
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    192.168.75.1     15:33    3.00s  0.06s  0.00s w

3.7、users命令

作用:查看当前用户

语法:users

[root@Node1 ~]# users
root

3.8、usermod命令

作用:修改用户的账号信息

语法:usermod+选项+用户

选项

  • -c<备注>: 修改用户帐号的备注文字;
  • -d<登入目录>:修改用户登入时的目录;
  • -e<有效期限>:修改帐号的有效期限;
  • -f<缓冲天数>: 修改在密码过期后多少天即关闭该帐号;
  • -g<群组>: 修改用户所属的群组;
  • -G<群组>; 修改用户所属的附加群组;
  • -l<帐号名称>: 修改用户帐号名称;
  • -L: 锁定用户密码,使密码无效;
  • -s: 修改用户登入后所使用的shell;
  • -u: 修改用户ID;
  • -U: 解除密码锁定。
#修改用户的shell
[root@Node1 ~]# grep jenny /etc/passwd |awk -F: '{print $1":" $7}'
jenny:/bin/bash#修改jenny的shell为/sbin/sh
[root@Node1 ~]# usermod  -s /sbin/sh jenny
[root@Node1 ~]# grep jenny /etc/passwd |awk -F: '{print $1":" $7}'
jenny:/sbin/sh

4、用户相关文件解析

4.1、/etc/passwd文件

这个文件用于记录用的信息;用户创建好了,会往这个文件添加一条信息

#查看文件的信息
[root@Node1 ~]# tail -2 /etc/passwd
docker:x:1001:1001::/home/docker:/sbin/nologin
zhangsan:x:1002:1002::/home/zhangsan:/bin/bash#输出的信息解释如下:
zhagnsan:用户名
x:密码占位符,真正的密码存放在/etc/shadows文件中
1002:用户的UID
1002:用户的GID
::这里没有信息,其实是代表用户的描述信息
/home/zhangsan:用户的家目录路径
/bin/bash:这里指的就是用户使用的shell

4.2、/etc/shadows文件

用于存放密码相关的文件;

#查看一下文件的内容
[root@Node1 ~]# tail -2 /etc/shadow
mysql:!!:19501:0:99999:7:::
lala:!!:19501:0:99999:7:::#解释如下:
第一列:用户名
第二列:经过md5加密的密码文件
第三列:最后一次的修改时间
第四列:最小的修改时间
第五列:密码有效期
第六列:密码更换前,提示信息
第七列:密码过期后的宽限天数
第八列:账号失效时间
第九列:保留

4.3、/etc/default/useradd文件

此文件记录创建用户的时候默认会添加信息;

#查看文件
[root@Node1 ~]# cat /etc/default/useradd 
# useradd defaults file
GROUP=100				#指定初始用户组,100为”users”用户组。
HOME=/home				#指定了默认的家用户路径
INACTIVE=-1				#密码过期后是否会失效;0:表示密码过期后立刻失效;-1:表示密码永久不失效;
EXPIRE=					#账号失效的日期;
SHELL=/bin/bash			#默认使用的shell程序
SKEL=/etc/skel			#用户家目录参考基准目录,即用户家目录下的初始数据从该目录下拷贝过去;
CREATE_MAIL_SPOOL=yes	#建立用户的mailbox目录;

4.4、/etc/login.defs文件

这个文件定义了普通用户的参数;

  • 比如默认的用户组id号,密码修改天数等等
#查看一下信息
[root@Node1 ~]# grep -vE "^#|^$" /etc/login.defs 
MAIL_DIR	/var/spool/mail	#创建用户时,系统会在目录 /var/spool/mail 中创建一个用户邮箱
PASS_MAX_DAYS	99999		#密码有效期,99999 是自 1970 年 1 月 1 日起密码有效的天数
PASS_MIN_DAYS	0			#表示自上次修改密码以来,最少隔多少天后用户才能再次修改密码,默认值是 0
PASS_MIN_LEN	5			#指定密码的最小长度,默认不小于 5 位,但是现在用户登录时验证已经被 PAM 模块取代,所以这个选项并不生效
PASS_WARN_AGE	7			#指定在密码到期前多少天,系统就开始通过用户密码即将到期,默认为 7 天
UID_MIN                  1000	#指定最小UID为1000,也就是说,添加用户时,默认UID从1000开始。
UID_MAX                 60000	#指定用户最大的 UID 为 60000。
SYS_UID_MIN               201
SYS_UID_MAX               999
GID_MIN                  1000
GID_MAX                 60000
SYS_GID_MIN               201
SYS_GID_MAX               999
CREATE_HOME	yes					#指定在创建用户时,是否同时创建用户主目录,yes 表示创建,no 则不创建,默认是 yes
UMASK           077				#用户主目录的权限默认设置为 077。
USERGROUPS_ENAB yes				#指定删除用户的时候是否同时删除用户组,准备地说,这里指的是删除用户的初始组,此项的默认值为 yes
ENCRYPT_METHOD SHA512 			#指定用户密码采用的加密规则,默认采用 SHA512

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

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

相关文章

YOLOv1代码复现2:数据加载器构建

YOLOv1代码复现2&#xff1a;数据加载器构建 前言 ​ 在经历了Faster-RCNN代码解读的摧残后&#xff0c;下决心要搞点简单的&#xff0c;于是便有了本系列的博客。如果你苦于没有博客详细告诉你如何自己去实现YOLOv1&#xff0c;那么可以看看本系列的博客&#xff0c;也许可以帮…

【Java实战篇】Day13.在线教育网课平台--生成支付二维码与完成支付

文章目录 一、需求&#xff1a;生成支付二维码1、需求分析2、表设计3、接口定义4、接口实现5、完善controller 二、需求&#xff1a;查询支付结果1、需求分析2、表设计与模型类3、接口定义4、接口实现步骤一&#xff1a;查询支付结果步骤二&#xff1a;保存支付结果&#xff08…

VUE3如何定义less全局变量

默认已经安装好了less&#xff0c;这里不过多讲。 &#xff08;1&#xff09;首先我们需要下载一个插件依赖&#xff1a; npm i style-resources-loader --save-dev &#xff08;2&#xff09;VUE3里配置vue.config.js文件内容 代码&#xff1a; const path require("p…

HashMap如何解决哈希冲突

HashMap如何解决哈希冲突 Hash算法和Hash表Hash冲突解决哈希冲突的方法开放地址法链式寻址法再hash法建立公共溢出区 Hash算法和Hash表 Hash算法就是把任意长度的输入通过散列算法编程固定长度的输出。这个输出结果就是一个散列值。 Hash表又称为“散列表”&#xff0c;它是通…

SpringBoot中一个注解优雅实现重试Retry框架

目录: 1、简介2、实现步骤 1、简介 重试&#xff0c;在项目需求中是非常常见的&#xff0c;例如遇到网络波动等&#xff0c;要求某个接口或者是方法可以最多/最少调用几次&#xff1b;实现重试机制&#xff0c;非得用Retry这个重试框架吗&#xff1f;那肯定不是&#xff0c;相信…

Mysql 查询同类数据中某一数字最大的所有数据

方法一、将时间进行排序后再分组 该表表名为customer, park_id表示园区id&#xff0c;joined_at表示用户的加入时间&#xff0c;created_at表示用户的创建时间。 需求&#xff1a;查出每个园区中&#xff0c;最早加入园区的第一位用户 select * from (select * from custome…

数据库课设--基于Python+MySQL的餐厅点餐系统(表的设计)

文章目录 一、系统需求分析二、系统设计1. 功能结构设计2、概念设计2.2.1 bill_food表E-R图2.2.2 bills表E-R图2.2.3 categories E-R图2.2.4 discounts表 E-R图2.2.5 emp表E-R图2.2.6 food 表E-R图2.2.7 member表E-R图2.2.8 member_point_bill表E-R图2.2.9 servers表E-R图2.2.1…

操作系统考试复习—第二章 2.1 2.2程序和进程的描述

第二章 进程的描述与控制 程序&#xff1a;有序的指令集合 程序顺序执行的特征&#xff1a;1.顺序性 2.封闭性 3.可再现性(确定性) 在多道程序环境下&#xff0c;允许多个程序并发执行&#xff0c;此时他们将失去封闭性&#xff0c;并具有间断性和不可再现性的特征。为此引…

基于SGM431的电路设计问题分析

本案例中,采用SGM431芯片设计了一个过压保护电路。 这个电路初次设计,有很多的问题,下面逐一分析 1.当输入24V,测得Vref=1.59V。Vout为1.15V;,mos管关断 2。经过多次测量发现,临界值在10V到10.5之间; 当输入10.5V时,测量Vref=1.69V。vout=1.15V;mos管关断 当输入1…

智慧物联网边缘协同感知(EICS)技术方案: 低功耗无线扫描唤醒技术

物联网的传感器或控制节点通常有体积限制&#xff0c;只能使用钮扣电池、小型电池&#xff0c;甚至使用能量收集源进行运作。在许多工业应用中&#xff0c;需要人工更换电池的成本&#xff0c;特别是在难以接近地方更换所需的成本&#xff0c;使得人们更加重视降低平均电流消耗…

深度学习入门到实践:相关基础概述

绪论 深度学习&#xff08;Deep Learning&#xff09;是近年来发展十分迅速的研究领域&#xff0c;并且在人工智能的很多子领域都取得了巨大的成功。从根源来讲&#xff0c;深度学习是机器学习的一个分支&#xff0c;是指一类问题以及解决这类问题的方法。     深度学习问题…

halcon灰度积分投影/垂直积分投影

简介:关于灰度投影积分可以用到的场合很多,例如分割字符,分割尺子上的刻度等,适用于有规律的变化这些内容的检测。本文复现了论文《基于深度学习和灰度纹理特征的铁路接触网绝缘子状态检测》中灰度积分投影实现了对绝缘子缺陷位置的检测。见(图1)灰度积分垂直方向投影获得…

AI智能智能课程第四讲 -数据库领域专家

使用chatGPT让你成为数据库领域专家 作业 现在要测试电商的下单功能&#xff1a;测试员张三在公司的电商平台上下了几个单&#xff0c;现在需要验证&#xff1a;张三这个客户下单的所有订单信息&#xff0c;包含订单编号&#xff0c;商品名称&#xff0c;商品价格&#xff0c;…

分支和循环语句(2)

文章目录 3.2 for循环3.2.1 for语句的语法3.2.2 for循环中的break和continue3.2.3 for语句的循环控制变量3.2.4 一些for循环的变种3.2.5 一道笔试题 3.3 do while循环3.3.1 do语句的语法3.3.2 do语句的特点3.3.3 do while循环中的break和continue 3.4 练习3.4.1 计算 n的阶乘3.…

Compiler- 尾调用

我们还是用例子来引入本次要探讨的问题--尾调用 #include <stdio.h>int fib(int a) {return a < 2 ? 1 : fib(a - 1) fib(a - 2); }int main() {int n,result;scanf("%d",&n);result fib(n);printf("result is %d.\n",result);return 0; …

创建路由React router(使用react-router dom V6版本)

React路由 隔了很长一段时间&#xff0c;重新捡起来React学习。 发现React的路由从原来的 Switch改成了Routes。nice&#xff0c;nice&#xff0c;nice&#xff01;&#xff01;&#xff01;&#xff01; 刚开始接触确实还是有一点生疏的。之前的关于【传参】【js跳转】【跳转模…

矿井下无人值守变电所电力监控系统的探讨与产品选型

摘要&#xff1a;为了探讨井下无人值守变电所的电力监控系统技术&#xff0c;以西山煤电马兰矿为背景&#xff0c;详细阐述了井下无人值守变电所电力监控系统技术的各项基本参数&#xff0c;如额定工作电压及整机输入视在功率、交换机或监控分站的传输口、高压配电装置的传输口…

下载VMWare

1、首先登录到vmware官网 官网&#xff1a;https://www.vmware.com/ 2、点击Resource 3、找到Product Downloads 4、找到我们要下载的产品&#xff0c;点击download product 5、选择自己要下载的版本和对应的系统 6、点击去下载 7、点击download now

国云筑基“翼”气风发,天翼云以科技创新绘就数字中国蓝图

科技云报道原创。 全球新一轮技术革命方兴未艾&#xff0c;特别是以数字技术为核心的信息技术革命&#xff0c;正在实现群体突破和加快广泛深度应用。 从2017年的“促进数字经济加快成长”&#xff0c;到2019年的“壮大数字经济”&#xff0c;到2020年的“全面推进‘互联网&am…

SpringBoot的配置和日志

1.配置文件的作用和意义 配置文件中配置整个项目中所有重要的数据&#xff0c;比如&#xff1a; 1.数据库的连接信息&#xff08;包含用户名和密码的设置&#xff09;&#xff1b; 2.项目的启动端口&#xff1b; 3.第三方系统的调用秘钥等信息&#xff1b; 4.用于发现和定位问…