Linux基础知识点总结

Linux第二节课

Linux和windows最大的区别

1.开源 open source

2.Windows用户多–》图形化界面,点鼠标,入门容易 —》对用户友好

3.Linux更专业化

[root@localhost ~]# uname -r 查看Linux内核版本
3.10.0-327.el7.x86_64

cpu,内存,磁盘,网卡等硬件 =》躯壳

操作系统 =》软件 =》灵魂

操作系统内部最核心的软件 =》内核

1核相当于4G内存

x86和ARM的区别?

Architectures:架构 --》硬件或者软件的架构

x86是cpu里的架构技术的名字—》intel和amd公司共同研发
386 486 586 686 --》x86

arm: 专门设计芯片–》孙正义–》日本人: 软银 --》阿里巴巴
英伟达 --》arm

cpu 64位和32位的区别?

一条指令可以处理64位的数据

一条指令可以处理32位的数据

1字节=8位
1 0

x86_64 --》intel和amd的cpu 而且64位

cpu的厂商:
intel 因特尔
AMD
华为
高通
英伟达
三星
ibm
联发科
小米
龙芯

镜像文件

镜像文件:系统文件,安装系统需要的一个盘,里面有很多安装系统需要的软件包

镜像文件是一条压缩文件,里面有很多的文件夹和文件

映像文件=镜像文件
装系统: 就是将镜像文件里的软件安装到电脑的磁盘,例如c盘

install centos 7

install 安装

按ctrl+alt键返回到真实机器

root 是linux系统里的超级用户–》皇上

内核的作用

1.对CPU进行调度管理

2.对内存进行分配管理

3对磁盘(文件系统)进行管理

4.对进程进行管理

5.对其他硬件进行管理

img

内核是对硬件进行管理的

命令提示符

[root@localhost ~]#

主提示符

[登录用户@主机名 工作目录]

root 代表当前登录的用户名 root是Linux的超级用户

[] 符号,表示一个字符串,作为便捷分割

@ 符号,没有特殊作用,隔开用户名和主机名

localhost Linux系统主机默认名字

PS1是第1提示符,操作系统里预先定义了,直接使用

变量的类型

1.预定义变量 大写

2.自定义变量 一般用小写

[root@localhost ~]# echo $PS1
[\u@\h \W]\$

PS1是变量名
[] 只是符号,没有特殊作用
\u 代表引用用户名 user
@ 只是符号,用来分割
\h 代表引用主机名 hostname
\W 代表引用你当前所在的工作目录–》working
$ 当我们的用户的uid是0的时候,就显示# 非0 就显示$
uid 是user的id 用户的编号
id card 身份证
uid 为0的用户是root

辅助提示符

~代表当前所在的路径是家目录下

# 代表当前登录用户是root用户

$代表当前登录用户是普通用户

root用户的家目录是/root/

普通用户的家目录是/home/用户名/

centos和Ubuntu的区别

1.不同的公司出品的系统
	centos是redhat公司
	Ubuntu是canonical公司出品
2.有少数不同的命令的差异
	yum install vim   --》centos
	apt  install vim   --》Ubuntu
3.Ubuntu默认是禁用root用户的
	所以Ubuntu很多命令前面都需要执行sudo命令
4.Ubuntu喜欢快速的更新系统,推出新版本,迭代更新非常快

共同点都是开源并且免费,都是属于linux系统

Linux中的文件目录结构

img

相对路径和绝对路径

linux的目录结构

整个linux系统最顶层的文件夹 /

绝对路径

从/开始,一层一层往下走,绝对不会搞错的路径
跟你当前在哪里没有关系
单向的:从上而下

命令 + 路径

[xiaowei@web1 ~]$ cd  /world/china/beijing

tab键可以补齐文件夹的名字
[xiaowei@web1 moscow]$ cd /world/ukraine/keiv/

[root@web1 ~]# mkdir  /world/china/hunan
[root@web1 ~]# tree  /world  
/world
├── china
│   ├── beijing
│   │   └── tiananmen
│   └── hunan
├── russia
│   └── moscow
├── uk
│   └── london
├── ukraine
│   └── keiv
└── us
    └── warshington

12 directories, 0 files
[root@web1 ~]# 

相对路径

不是以/开头的,以当前文件夹作为参照物,可进可退
双向

经典的相对路径的名词:
. 当前文件夹
… 上一级文件

[root@web1 china]# cd ../russia/moscow/
[root@web1 moscow]# cd ../../uk/london/
[root@web1 london]# mkdir  ../../china/hubei
[root@web1 london]# tree /world
/world
├── china
│   ├── beijing
│   │   └── tiananmen
│   ├── hubei
│   └── hunan
├── russia
│   └── moscow
├── uk
│   └── london
├── ukraine
│   └── keiv
└── us
    └── warshington

13 directories, 0 files
[root@web1 london]# 

相对路径才是日常linux使用中最多的
绝对路径在编写shell脚本的时候,经常使用

练习:

1.进入/根目录,新建文件夹bigworld

[lier@root changsha]#cd /
[lier@root /]#mkdir bigworld

2.在bigworld目录下新建shaolin wudang hengshan taishan

[lier@root /]#cd bigworld
[lier@root bigworld]#mkdir shaolin wudang hengshan taishan

3.进入shaolin新建文件夹songshan

[lier@root bigworld]#cd shaolin
[lier@root shaolin]#mkdir zhangwuji

5.使用绝对路径在hengshan文件夹里新建linghuchong

[lier@root shaolin]#mkdir /bigworld/hengshan/linghuchong

6.使用相对路径进入taishan

[lier@root shaolin]#cd ../taishan

7.使用相对路径在wudang文件夹里新建zhangsanfeng

[lier@root taishan]#mkdir ../wudang/zhangsanfeng

8.使用绝对路径删除taishan

[lier@root taishan]#rm -rf /bigworld/taishan

9.使用tree命令查找/bigworld的结构

[lier@root bigworld]#tree /bigworld
/bigworld
├── hengshan
│   └── linghuchong
├── shaolin
│   ├── songshan
│   └── zhangwuji
└── wudang
    ├── zhangsanfeng
    └── zhangwuji

8 directories, 0 files

linux中脚本入门

vim 编辑器: 相当于windows的记事本
vi和vim的关系?
vim是vi的升级版程序
什么是脚本?
为什么文件是.sh结尾?可不可以是别的名字?
python文件以.py结尾
c文件以.c结尾

写脚本

脚本是一个程序文件,里面有很多的命令,用来完成某些功能
脚本scripts : 剧本,规定了流程的程序,用来完成某些事情--》告诉你的脚如果走路的,不要走错了

linux写的脚本—》shell脚本

[lier@root lianxi]#cat create_dir.sh 
#!/bin/bash
#使用for循环新建100个目录,目录以sc开头
for i in {1..100}
do
	mkdir -p /jinyong/sc$i
done

echo "查看新建文件夹"
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"
ls /jinyong
echo "脚本执行结束"
echo "@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@"

执行脚本

[lier@root lianxi]#bash create_dir.sh 
查看新建文件夹
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
sc1    sc18  sc27  sc36  sc45  sc54  sc63  sc72  sc81  sc90
sc10   sc19  sc28  sc37  sc46  sc55  sc64  sc73  sc82  sc91
sc100  sc2   sc29  sc38  sc47  sc56  sc65  sc74  sc83  sc92
sc11   sc20  sc3   sc39  sc48  sc57  sc66  sc75  sc84  sc93
sc12   sc21  sc30  sc4	 sc49  sc58  sc67  sc76  sc85  sc94
sc13   sc22  sc31  sc40  sc5   sc59  sc68  sc77  sc86  sc95
sc14   sc23  sc32  sc41  sc50  sc6   sc69  sc78  sc87  sc96
sc15   sc24  sc33  sc42  sc51  sc60  sc7   sc79  sc88  sc97
sc16   sc25  sc34  sc43  sc52  sc61  sc70  sc8	 sc89  sc98
sc17   sc26  sc35  sc44  sc53  sc62  sc71  sc80  sc9   sc99
脚本执行结束
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@

脚本在执行的时候,从上而下一条一条命令的执行
如果有一条命令执行失败或者出错,默认情况下会继续执行后面的命令
除非你有流程控制语句
什么叫流程控制?flowing control

if
		else
for
while
do
break
continue
case

shell脚本讲解

#!/bin/bash

申明我们的脚本使用/bin/bash这个解释器去执行
/bin/bash是一个程序,用来解释我们的代码
shell是linux里的命令解释器
bash是shell解释器里非常好用的
centos系统里默认是的shell解释器是bash
Ubuntu默认的shell解释器也是bash

shell是linux里命令行解释器大类的名字
bash是非常好用的shell解释器

shell:
bash,sh

linux中编写python文件

#!/usr/bin/python3
print("hello,world")
print("sanchaung")

执行python文件

[root@lb2 lianxi]# python3 hello.py  使用python3这个程序去运行我们的hello.py
hello,world
sanchaung
[root@lb2 lianxi]# 

linux中编写c文件

#include<stdio.h>

int main(){
	printf("hello,world\n");
	printf("sanchuang\n");
	return 0;
}
[root@lb2 lianxi]# yum  install  gcc  -y  安装gcc工具
gcc 是linux里的一个编译器,一个将c语言代码翻译成二进制代码的工具 --》按照某种编码进行翻译
[root@lb2 lianxi]# gcc -o hello  hello.c  将hello.c编译成hello这个二进制文件,二进制文件可以直接运行
-o  指定输出的文件的名字  output file 

查看输出文件hello

[root@lwq lianxi]# ./hello
hello,world!
sanchuang,teacher feng
[root@lwq lianxi]# 

解释器

什么是解释器?

java --》JVM java虚拟机 --》将人能识别的语言转换为机器能识别的语言

为什么需要解释器?

python是解释型语言
java是解释型语言
Java 开发工具包(Java Developer’s Kit) jdk --》jvm

c是编译型语言:
缺点: 代码修改了需要重新编译

go:是编译型–》为了速度,参照了c语言

python,java,go都是使用c语言编写出来

我们输入的每一个命令都是一个程序
默认情况下,我们使用绝大多数的命令都是使用c语言

在终端里输入mkdir -p /lianxi/yaolifan这条命令后背发生了什么?讲的越细越好

操作系统的层面来讲解:

解释器
内存:内核到内存里分配空间
磁盘:读取文件,查找文件 --》文件系统
内核:创建进程的,进程的调度
进程的创建、cpu调度

内核 kernel 是linux系统内部最核心的软件,是一个程序。
作用:
1.对cpu进行调度管理
2.对内存进行分配
3.对进程进行管理
4.对磁盘进行管理
5.对网络进行管理
6.对其他硬件进行管理

shell解释器是人机交互的一个程序,将人输入的命令解释,然后告诉机器去执行,然后再将执行的效果反馈给人
人《—》解释器《–》机器
中间人 —》shell—》最好用的shell解释器是bash
shell解释器: centos ,Ubuntu,mac os --》bash

(了解)Java与JavaScript的关系

相同之处

  • 它们的语法和 C 语言都很相似;
  • 它们都是面向对象的(虽然实现的方式略有不同);
  • JavaScript 在设计时参照了 Java 的命名规则;

不同之处

JavaScript 是动态类型语言,而 Java 是静态类型语言;

JavaScript 是弱类型的,Java 属于强类型;

JavaScript 的面向对象是基于原型的(prototype-based)实现的,Java 是基于类(class-based)的;

(面试题)用户访问我们的服务器,目前服务器tqs、qps目前已经到5w/s nginx ,出现了现象,用户一会儿可以访问,一会儿不能访问,你去排查原因?

img

cat、more和less的区别?

cat 默认会将整个文件里的内容加载到内存,读取里面的内容,慢慢加载文件里面的内容到内存里,会在短时间内消耗大量的内存 --》瞬间显示大量的内容
more和less 会慢慢读取内存,不会在短时间内消耗大量的内存空间 ---》分页显示

不要使用cat 去读取大文件,会消耗整个服务器大量的资源(内存资源)

PATH变量

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/sclilin99/sbin:/root/bin

存放linux系统里命令存放的路径 --》命令藏宝图–》记录了命令存放在哪些文件夹里
PATH变量里都是文件夹的路径,中间使用冒号隔开

我们在linux系统里查找命令的时候,从PATH变量的最左边的文件夹里开始查找,例如从/usr/local/sbin里查找,如果找到就不往下查找了,如果没有找到就,继续往下找,以此类推,如果都没有找到就提醒没有找到这个命令

PATH变量是系统里预定义的变量,操作系统安装好就定义的变量
预定义变量–》环境变量–》全局变量 很多程序都可以使用,很多用户都可以使用的

生活中: 太阳 空气 水 树 公交车 等

[root@lb1 bin]# sg=dengchao   **自定义变量**
[root@lb1 bin]# echo   $sg
dengchao
[root@lb1 bin]# 

PATH 路径
which和whereis 都是到PATH变量里去查找命令的–>不能查找非命令的文件

/usr --》unix system resource linux里的所有的程序就是系统的资源 --》linux是山寨的unix
linux is very like unix
bin --》binary 二进制 --》linux里的很多程序都是c语言编写–》编译成二进制程序,才可以运行

sbin --》super user binary --》有些命令必须是root用户才能使用的命令,就存放在sbin目录下–》御用(有权限的用户)
sbin目录下的命令是需要高级权限的用户使用的,普通用户使用不了–》root可以使用

如何判断一个文件是否存在?

​ 方法:
​ 1. stat 接文件
​ 2.使用test命令判断
​ 3. [ -f 文件名 ]

打包压缩

目的: 备份、还原

大文件超过4G的,切割工具: 将大文件切割成很多小文件,然后我们上传

为什么要打压缩包?

​ 备份的时候,能节约空间
​ 网络传送的时候,能节约时间

windows里有哪些解压缩软件?
winrar: 老牌的压缩软件
http://www.winrar.com.cn/
7z
好压
2345压

打包压缩:

打包: 就是将很多文件放到一起,成一个文件

压缩: 减少占用磁盘空间的操作

windows里的.rar压缩文件传递到linux里,是否能打开?

​ zip windows和linux都支持
​ .rar文件在linux里默认是不能打开
​ linux里的所有的压缩文件,windows里的都能打开
​ windows里的压缩文件,在linux里不一定就可以打开

linux和windows之间的文件上传和下载的解决方法:

1.xftp: 在windows里安装

2.moba 在windows里安装

3.lrzsz 在windows里安装了xshell但是没有安装xftp,需要 在linux里安装lrzsz,但是速度没有使用xftp快

备份文件

在工作中经常需要备份的东西: 日志文件会记录程序发生的事情
web服务器的日志记录哪些人从哪些地方访问了哪些网址–》大数据分析的
日志非常消耗磁盘空间
服务器上只是保存最近30天
nginx的日志,mysql的日志文件等
思考:京东,淘宝
1亿用户–》app和网站–》10个网址–》一条日志: 9910000000010
美团: 一天有多少外卖订单

问题4.17

int 类型的数据 32位 = 4个字节
1
2
10
都是4个字节
8个字节====》

https://www.yisu.com/zixun/459087.html --》那么当前Python程序使用的内存超过500MB以后,程序就会抛出MemoryError
OOM = out of memory
500M --》kill

是否超过500M呢?

c语言里 一个整型的数据 int a=1 --》a变量消耗多少的内存空间?
python里定义一个变量 a = 1 消耗多少的内存空间?
a = [1,2,3] 消耗多少的内存空间?
python2里
a = range(1,100000000) 消耗多少内存空间
linux系统默认运行一个进程可以使用多少内存空间?
假如我的内存空间是8G
https://www.yisu.com/zixun/459087.html

sre

SRE是指Site Reliability Engineer (网站可靠性工程师)
一个SRE工程师基本上需要掌握很多知识:算法,数据结构,编程能力,网络编程,分布式系统,可扩展架构,故障排除。
sre --》运维开发

BAT

BAT baidu alibaba Tencent

阿里系
腾讯系
百度系

使用useradd时是先建立组还是先建立用户?

先建组,因为新建用户时如果没有需要的组会报错

[root@master sanchuang]# tail   -f    /var/log/secure
May 24 19:27:53 master useradd[21940]: new group: name=liqiang, GID=5008
May 24 19:27:53 master useradd[21940]: new user: name=liqiang, UID=5003, GID=5008, home=/home/liqiang, shell=/bin/bash

新建用户时如果指定的家目录不存在,执行命令时报错,通用会创建用户,但是用户没有家目录

[root@master ~]# useradd  -d  /hunan/gaolaozhuang   bajie
useradd:无法创建目录 /hunan/gaolaozhuang	# 没有/hunan这个文件夹
[root@master ~]# id bajie	# 能查询到bajie的用户信息
uid=7789(bajie) gid=7789(bajie)=7789(bajie)
[root@master ~]# tail -2 /etc/passwd	# passwd文件中显示有家目录,但是实际上没有
chenlin:x:7788:5007:sanchuang student:/home/yueyang:/sbin/nologin
bajie:x:7789:7789::/hunan/gaolaozhuang:/bin/bash
[root@master ~]# su -  bajie
su: 警告:无法更改到 /hunan/gaolaozhuang 目录: 没有那个文件或目录

新建一个/hunna文件夹后,就可以登录bajie用户了,但是登录后的shell解释器不正常

[root@master ~]# mkdir  /hunan/gaolaozhuang -p
[root@master ~]# su - bajie
上一次登录:二 524 19:33:54 CST 2022pts/0 上
-bash-4.2$ exit
登出

指定shell解释器为/sbin/nologin时,用户不能登录

[root@lier ~]# cat /etc/passwd|grep chenlin
chenlin:x:7788:2007:sanchuang student:/home/yueyang:/sbin/nologin
[root@lier ~]# su - chenlin
上一次登录:五 56 11:34:09 CST 2022pts/4 上
This account is currently not available.

用户类型:
1.超级用户 root 0 --》皇上
2.程序用户 用来启动程序使用的,例如mysql这个用户 ssh,ftp,mail,halt --》公公,宫女 --》不能登录系统
给他做个手术 -s /sbin/nologin

3.系统用户 linux系统里完成的功能的用户,例如:启动系统的程序 将军,大臣 --》不能登录系统,没有新建家目录的
1~999
4.普通用户 老百姓: 登录系统,启动程序

因为程序用户是用来启动程序使用的,不能登录,所以程序用户使用的shell解释器是/sbin/nologin

不正常的shell,会导致用户不能登录系统

不能登录系统的解释器:

/sbin/nologin 不能登录系统的 --》推荐
/bin/false
/bin/sync
/sbin/shutdown
/sbin/halt

[root@master ~]# useradd    -s /sbin/nologin   weizx
[root@master ~]# su - weizx
This account is currently not available.
[root@master ~]# 

因为linux中一切皆文件,执行命令相当于修改文件

所以将weizx的shell解释器改为/bin/bash解释器就可以正常登录了

[root@master ~]# vim /etc/passwd
weizx:x:7790:7790::/home/weizx:/bin/bash

[root@master ~]# su - weizx
上一次登录:二 524 19:45:37 CST 2022pts/0 上
[weizx@master ~]$ 

用户密码为空或者没有设置密码都不能远程登录,因为ssh服务的限制

/etc/ssh/sshd_config里有个配置进行了限制
#PermitEmptyPasswords no

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值