linux

很久之前的笔记,一直没有复习,除了常用的,已经忘的差不多了。 学习的初始状态是了解, 接触, 记忆,然后思考, 由初始状态 总结出一些规律,进行推广和类比。 复习, 复习, 复习。

linux

1.环境问题

在公司中存在各种各样的环境

测试环境

开发环境

生产环境(正式上线环境)

自动化 es服务

2.计算机的基础

image-20201117111837432image-20201117111912412

image-20201117112043097

image-20201117112202264

image-20201117112239579

image-20201117112256433

![image-20201117112845746](https://img2024.cnblogs.com/blog/1863428/202506/1863428-20250625071024997-2060419772.png)

image-20201117113014183

image-20201117113118582

image-20201117113140999

image-20201117113203324

image-20201117113250958

image-20201117113318402

image-20201117113356633

image-20201117113416727

image-20201117113432428

image-20201117113452423

image-20201117113540701

image-20201117113555335

image-20201117113713095

image-20201117113723848

image-20201117113850556

image-20201117113909211

image-20201117114012040

image-20201117114028286

image-20201117114129633

image-20201117114215825

image-20201117114235385

image-20201117114256137

image-20201117114327170

image-20201117114338332

image-20201117114403268

image-20201117114438980

image-20201117114645173

image-20201117114706585

image-20201117114814520

3.linux系统

image-20201117115025288

image-20201117115201404

image-20201117115322946

linux官方网站 :https://www.kernel.org/

image-20201117115743800

image-20201117115838417

image-20201117115857338

image-20201117120117499

image-20201117120149075

image-20201117120203178

image-20201117120328599

image-20201117120438351

清华 北大 中科院 北理 ,都有镜像网站

4.linux系统安装.

1.安装VMware Workstation 软件并激活

image-20201117143826246

image-20201117143908171

image-20201117143950412

image-20201117144621204

image-20201117144742544

image-20201117145142934

这里没用记录的特别详细,如果再次需要安装的话,可以去找视频,跟着安装就行了。

5.用户登录

  • root用户
    • 是一个特殊的管理账号,也可以称为超级管理员
    • root 用户对系统有完全控制的权限
    • 对系统的损害会无限大
    • 在工作中,如果没有特殊的必要尽量不要使用root
  • 普通用户
    • 权限有限
    • 对系统的损害会小

6.终端

分类

  • 设备终端

  • 物理终端

  • 虚拟终端 ctrl + alt + f[1-6] /dev/tty#

  • 图形终端 /dev/pts/0

  • 串行终端

  • 伪终端 通过ssh远程 连接的 (c通过xshell软件连接)

    ssh 加 虚拟机上 的ip地址,这里的ip地址指的是如下图所示的地址

image-20201117165852904

​ 查看终端的命令:tty

​ 查看ip地址的命令 ip addr

可以通过双击下图的红圈内的ip 复制第二个终端

image-20201117170213732

7.交互式的接口

启动终端以后,在终端设备上附加的一个应用程序

  • GUI(桌面)
  • CLI command line
    • powershell
    • sh
    • bash (linux mac 默认程序)
    • zsh
    • csh
    • tcsh

bash

bash是linux 系统的用户界面,提供了用户和操作系统之间的交互,它接收用户的输入,让它送给操作系统执行

  • 目前是linux和mac上默认的shell

  • centos默认使用

    显示当前系统使用的shell 在命令行输入 以下命令 :echo $SHELL

    显示系统可以使用的shell 在命令行下输以下命令: cat /etc/shells

    改变当前系统使用的shell chsh -s shel

    l名(上条语句执行时,显示出来的可以使用的shell)

    ctrl + d 快速终止当前的连接

    重新连接 点下图中的圈里的东西

    image-20201117173623866

修改ssh连接慢的步骤

echo "useDNS no" >> /etc/ssh/sshd_config
systemctl restart sshd

命令提示符

[root@localhost ~]#   管理员用户是#号
[blood@localhost ~]$   普通用户是 $ 符号

显示提示符的格式

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

image-20201117180333780

上图中 的 33m 表示字体颜色 范围是31-37

上图中的 41 表示背景颜色 范围是 40-47

重新加载配置文件

image-20201117180831858

将对命令行提示符的设置,加到配置文件中 # 永久生效

image-20201117180948941

8.命令

执行命令:输入命令然后回车

内部命令:shell 自带的命令

外部命令:第三方提供的命令

查看命令的类型:是内部命令还是其他: type +命令 例如: type echo /type top

[root@localhost ~]# type top
top is /usr/bin/top
[root@localhost ~]# type echo
echo is a shell builtin

查看 shell 所有的内部命令: 直接输入 help

​ 命令可以设置别名

​ 查看当前所有 的别名 alias

​ 自定义别名 alias cdetc='cd /etc'

设置别名只对当前的终端有效 echo "alias cdetc='cd/etc' " >> ~/.bashrc

如果想要多个终端都可以使用 自定义别名, 那么需要把该命令加到配置中去

执行以下命令: echo "alias cdetc='cd /etc' " >> /etc/bashrc

例子如下:

[blood@localhost etc]$  alias cdetc='cd /etc'
[blood@localhost etc]$ cd ~
[blood@localhost ~]$ cdetc
[blood@localhost etc]$ 

取消别名 unalias cdetc

[blood@localhost etc]$ unalias cdetc
[blood@localhost etc]$ cdetc
bash: cdetc: command not found...
[blood@localhost etc]$ 

  • 执行本身的命令(不使用别名去执行命令,而是使用原本的命令)

    \command command 代指命令

    'command'

    "command"

    直接输入命令的路径 which command(命令) : 查看命令的路径

    [blood@localhost ~]$ which ls
    alias ls='ls --color=auto'
    	/usr/bin/ls
    [blood@localhost ~]$ /usr/bin/ls
    Desktop  Documents  Downloads  Music  Pictures	Public	Templates  Videos
    
    

    命令的格式

    command [options...] [args...]
    command  命令本身
    options  启动或关闭命令里的某些功能
    	长选项: --help  --color
    	短选项: -i -h -l  短选项是可以合并的: ls -l 和 ls - a  可以合并成 ls -la
    args:命令的作用体, 一般情况下是目录或文件,用户名等等
    注意:
    	短选项是可以合并的
    	命令 和 选项 参数 都要用空格隔开
    	敲了一个命令然后不想要执行了,可以ctrl +c 结束命令的执行
    	同一行要执行多个命令,命令之间用分号分隔   例如: tty;echo
    	一个命令可以在多行显示,行尾用 \  连接
    	[blood@localhost ~]$ echo eqeqw\
        > ewqweqw\
        > qewqweqw
        eqeqwewqweqwqewqweqw
    
    

    获取命令的帮助信息

    内部命令:
    	help command
    	man bash   查看所有命令的帮助信息
    外部命令:
    	command -h
    	commadnd -help 
    	例如:top -h  top --help
    	man command  同样支持man 方法 
    	例如: man top  里面上详细的信息
    	官方文档 
    

image-20201117214547642

man 
	   1   Executable programs or shell commands
       2   System calls (functions provided by the kernel)
       3   Library calls (functions within program libraries)
       4   Special files (usually found in /dev)
       5   File formats and conventions eg /etc/passwd
       6   Games
       7   Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
       8   System administration commands (usually only for root)
       9   Kernel routines [Non standard]
退出 q
翻屏 空格
翻行 回车
man 章节 passwd

bash快捷键

ctrl + l 清屏 相当于 clear
ctrl + o 执行当前的命令,并显示当前的命令
ctrl + s 锁屏
ctrl + q 解锁
ctrl + c 终止命令
ctrl + z 挂起命令
ctrl + a 光标回到行首 相当于Home键
ctrl + e  光标回到行尾  相当于End键
ctrl + xx 在开头和当前位置跳转
ctrl + k  删除光标后的文字
ctrl + u  删除光际前面的文字
alt + r 删除整行  在centos8中不行,

tab键

命令补全
	内部命令
	外部命令:根据环境变量定义的路径,从前往后依次查找,自动匹配第一个查找到的内容
	如果用户给的命令只有唯一一个匹配,,则直接补全
	如果有多个匹配的话,则需要再按tab键将匹配到的结果展示出来
目录补全
	把用户给定的字符作为文件的开头	,如果有唯一匹配则直接补全
	如果有多个匹配,则需要再次按tab键把所有的匹配的结果展示出来。
	

引号

单引号不会做命令的引用,直接打印引号的内容
双引号会做命令的引用,
[blood@localhost ~]$ name=alexdsb
[blood@localhost ~]$ echo '$name'
$name
[blood@localhost ~]$ echo "$name"
alexdsb

反引号:`` 引用命令执行后的内容  反引号的外面必须使用双引号
[blood@localhost ~]$ echo " wo shi `tty`"
 wo shi /dev/pts/1
 
 echo " wo shi $(tty)" 与上面的反引号的作用是一样的


命令历史

可以使用上下箭头来查找之前执行过的命令
通过以下的命令可以查看之前执行过的命令
	cat ~/.bash_history
	history 查看执行过的命令,当你退出终端后,会把你执行过的命令存放到 ~/.bash_history文件夹下。
	执行上一条命令:
		上箭头
		!!
		!-1
		ctrl + p 回车
	调用上一条命令的最后一个值 esc + .
	执行history 后,每条命令的前面都有一个与之对应的数字,
	! 数字 指定执行第多少条命令,同样支持!+负数 -1 -2 历史命令从前往后数。
	!  -数字 执行倒数第几条命令
	! string 用来执行最近一次匹配到的命令 例如: ! echo
	ctrl + r 用来搜索命令的
	history 数字  :显示最后的几条命令 
	ctrl + g 取消搜索
	

命令展开

[blood@localhost ~]$ echo file{1,2,3}  
file1 file2 file3
[blood@localhost ~]$ echo file{1..20}  1..20表示从1到20
file1 file2 file3 file4 file5 file6 file7 file8 file9 file10 file11 file12 file13 file14 file15 file16 file17 file18 file19 file20
[blood@localhost ~]$ echo file{1..20..2}  1..20..2 这里的2 表示步长
file1 file3 file5 file7 file9 file11 file13 file15 file17 file19
[blood@localhost ~]$ seq 1 10  
1
2
3
4
5
6
7
8
9
10
[blood@localhost ~]$ seq 1 2 10   这里中间的2表示步长
1
3
5
7
9

echo回显

echo -e "sfdfsd\nasdsfdf"
echo -e '\a' 播放声音

查看当前登录的用户

whoami  显示当前用户
who am i  显示当前用户的详细信息

[blood@localhost ~]$ whoami
blood
[blood@localhost ~]$  who am i
blood    pts/1        2020-11-18 08:53 (192.168.184.1)

[blood@localhost ~]$ w  显示所有的用户,并显示用户执行的命令。


date

[blood@localhost ~]$ date
Wed Nov 18 09:47:26 CST 2020

image-20201118100326355

image-20201118100743789

date +%s 时间戳,距1970/01/0过了多少秒

date + %w day of week (0..6); 0 is Sunday

date + %W 本年的第几周

image-20201118101130327

1970/01/01 unix元年

显示时区

[blood@localhost ~]$ timedatectl
               Local time: Wed 2020-11-18 10:13:43 CST
           Universal time: Wed 2020-11-18 02:13:43 UTC
                 RTC time: Wed 2020-11-18 02:13:43
                Time zone: Asia/Shanghai (CST, +0800)
System clock synchronized: no
              NTP service: inactive
          RTC in local TZ: no

修改时区

image-20201118101543806

日历 cal

image-20201118101621723

cal -y 这一年的日历

image-20201118101734435

显示某一年的日历:cal + 年份 例如 cal 2017

关机和重启

shutdown 默认一分钟后关机
	shutdown -c 取消关机
shutdown 重启
shutdown 后面可以跟的参数
	now:立即关机
	+n  n分钟之后关机
	hh:mm  指定时间
关机命令: poweroff
关机命令: halt
关机命令: init 0
重启命令:
	reboot
	   -f:强制
       -p: 关机
     init 6

9.文件目录结构

image-20201118105508530

  • 文件和目录被组织成一个倒置的树状结构
  • 文件系统从根开始 " \ "
  • linux文件名称严格区分大小写 windows里面不区分大小写
  • 隐藏文件以"."开头
  • linux中文件的分隔符为" / ", windows中的分隔符为" \ "

文件命名规范

文件字符最长为255个字符
包括路径在内文件名称最长为4095个
颜色表示:
	蓝色:--》文件夹
	绿色:--》可执行文件
	红色:--》压缩文件 
	蓝绿色:--》链接文件
	灰色: --》其他文件
	白色:--》文件
除了斜杠和NULL,其他所有的字符都可以使用
对大小写敏感

文件系统结构

/boot 引导文件的存放位置,内核文件、引导加载器都在此目录下
/bin  所有的用户都可以使用的命令
/sbin 管理类的命令
/lib 启动时程序使用的基本的库文件 以.so结尾
/lib64 专门存放X86-64系统上的辅助文件
/etc 	存放配置文件的目录
/home/username 普通用户的家目录
/root 管理员的家目录
/media 便携式移动设备的挂载点  windows中盘符就是挂载点。
/mnt 临时文件的挂载点
/dev 设备文件和特殊文件的存放位置
/opt 第三方的应用的安装位置
/tmp 临时文件的存放位置
/usr 存放安装程序
/var 存放经常变化的文件
/proc 存放内核启动和进程相关的虚拟文件
/sys 输出当前系统上的硬件相关的文件
/srv 系统上允许的服务用到的数据

linux应用程序的组成

二进制文件
	/bin
	/sbin
	/usr/bin
	/usr/sbin
	/usr/local/bin
	/usr/local/sbin
库文件
	/lib
	/lib64
	/usr/lib
	/usr/lib64
	/usr/local/lib
	/usr/local/lib64
配置文件
	/etc
	/etc/name
	/usr/local/etc
帮助文件
	/usr/share/man
	/usr/share/doc
	/usr/local/share/man
	/usr/local/share/doc
	

绝对路径和相对路径

绝对路径
	以根开始
	完整的文件的存放位置
	可以读取到任何一个文件和一个文件夹
相对路径
	不以根开始
	相对当前的位置来决定
	可以简短的表示一个文件或者一个文件夹
	. 代表当前目录
	.. 代表父级目录

目录名和基名

dirname 上级文件夹名称
basename  最下一层的文件或文件夹的名称
[root@localhost log]# basename /var/log
log
[root@localhost log]# dirname  /var/log
/var

切换目录

cd 切换目录 change directory
	可以使用相对路径
	也可以使用绝对路径
切换到家目录
	[root@localhost log]#  cd
	[root@localhost ~]# 
回到上一次的目录
	[root@localhost ~]# cd -
    /var/log
    [root@localhost log]#
显示当前的工作目录
	[root@localhost log]# pwd (print working directroy)
	/var/log
查看链接的真正的目录
	[root@localhost lib]# pwd -P
	/usr/lib


列出目录或者文件

ls(list)
命令格式:Usage: ls [OPTION]... [FILE]...
ls -a 显示所有的文件
ls -l  以长格式显示文件列表

[root@localhost lib]# ls -l
total 48
drwxr-xr-x.  3 root root    18 Nov 17 15:45 alsa
权限     硬盘引用次数 属主  属组  大小 访问时间  文件名称   与上一行的对应解释

ls -R  递归显示目录
ls -d  显示目录本身
ls -1(数字1) 	文件分行显示
ls -S  按照文件大小排序
ls -r  倒序显示
ls -t  按照时间排序
ls -lh 文件大小显示人类易读的方式
ls -d */ 显示当前目录下的文件夹
l .  只显示隐藏文件

linux 下的目录类型

-用来表示文件
d 用来表示目录
b 块设备
c 字符设备
l 表示符号链接文件
s socket 套接字 

查看文件的状态 stat 文件名

[root@localhost etc]# stat favicon.pmg
stat: cannot stat 'favicon.pmg': No such file or directory
[root@localhost etc]# stat favicon.png
  File: favicon.png -> /usr/share/icons/hicolor/16x16/apps/fedora-logo-icon.png
  Size: 56        	Blocks: 0          IO Block: 4096   symbolic link
Device: fd00h/64768d	Inode: 17111334    Links: 1
Access: (0777/lrwxrwxrwx)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:etc_t:s0
Access: 2020-11-17 20:38:17.588723253 +0800  访问时间
Modify: 2019-07-31 00:25:35.000000000 +0800  修改时间
Change: 2020-11-17 15:41:55.268479255 +0800  改动时间
 Birth: -
 atime 访问时间  查看文件的内容就会改变
 mtime 修改时间  改变内容是发生改变
 ctime 改动时间  元数据发生变化 上面的文件内的详细内容

touch

创建空文件和刷新时间,如果文件存在,则刷新创建时间,如果文件不存,则创建文件
touch 文件名  创建文件 例如:touch a ,下面几条命令中的a都是指文件 a
touch -a a  只修改atime 和ctime
touch -m a  只修改mtime 和ctime
stat a 		查看文件a的详细信息

文件通配符

* 所有  ls * 展示一个文件夹下的所有文件
? 匹配任意单个字符
~ 表示用户的家目录
[123] 表示其中一个
[^123]  取反
ls file[a-z] 有坑,所以我们就不使用他了    缺少Z
ls file[A-Z] 有坑,所以我们同样也不使用他了 缺少a
[:lower:] 表示小写字母中的任何一个 例如: ls file[[:lower:]]
[:upper:] 表示大写字母中的任何一个 例如: ls file[[:upper:]]
[a-zA-Z] [:alpha:] 表示所有的字母  例如: ls file[a-zA-Z]或者  ls file[[:alpha:]]
[:alnum:] [a-zA-Z0-9] 表示字母和数字   
[:digit:]  表示数字  中括号里面两边有两个冒号的时候,要在外面多加一个中括号 ,例如: ls fiel[[:digit:]]


创建目录

mkdir 创建目录
	-p 递归创建(也就是一次可以创建多级目录)
	-v 显示详细过程

显示目录树

安装:yum install  -y tree
tree 显示目录树
tree -d 只显示文件夹
tree -L# 只显示#层  例如: tree -dL2  只显示2层    当前目录不算一层

删除目录

rmdir  只能删除非空目录
-p 递归删除空目录
-v 显示删除过程
rm -rf 目录名   删除非空目录

复制文件和文件夹

cp  copy  默认情况下是 cp -i别名,原来本身命令是不提示覆盖的
Usage: cp [OPTION]... [-T] SOURCE DEST
  or:  cp [OPTION]... SOURCE... DIRECTORY
  or:  cp [OPTION]... -t DIRECTORY SOURCE...
  -i 显示提示信息
  -n 不覆盖
  -r -R 递归复制
  -d 只复制链接文件,不复制原文件
  -v 显示过程
  -b 备份原来的文件
  --backup=number 备份文件文件名上加上数字
  -p 保留原来的属性
  
  
  如果源文件是文件的话:
  	目标是文件
  		目标文件如果不存在的话,则新建目标文件,并把内容写到目标文件中
  		如果目标文件存在的话,本来的命令是直接覆盖 建议使用-i来提示用户
  	目标是文件夹
  		在文件夹中新建一个同名的文件,并把文件内容写到新文件中
  如果源文件为多个文件的话
  	目标必须是文件夹,文件夹必须存在其他情况都会报错
  如果源文件是文件夹的话
  	目标文件是文件:不可以
  	目标文件必须是文件夹,必须使用-r选项
  	如果目标文件不存在:则直接创建目标文件夹,并把源文件夹的数据都复制到目标文件夹
  	如果目标文件存在:
  		如果是文件的话,直接报错
  		如果是文件夹:则在目标文件夹中创建同名文件夹,并把所有数据都复制到新文件夹
  	

移动 重命名

mv  move
mv --help 查看帮助信息

Usage: mv [OPTION]... [-T] SOURCE DEST
  or:  mv [OPTION]... SOURCE... DIRECTORY
  or:  mv [OPTION]... -t DIRECTORY SOURCE...
  
 -i 提示
 -f 强制
 -b 备份
 --backup=number 备份后面加数字
 -v 显示过程
 

删除

rm  remove
rm --help
Usage: rm [OPTION]... [FILE]...
-i 提示
-r -R 递归删除
-f 强制删除
rm -rf 慎用
rm -rf /*
cd /
rm -rf *

链接文件

软链接
	相当于windows的快捷方式
	创建命令是ln -s 源文件  目标文件
	可以对目录做软链接
	指向另外一个文件或者目录的路径,大小是路径的长度的字符
	对磁盘可以跨分区
	对磁盘的引用次数没有影响
	源文件发生改变,软链接会跟着改变
	源文件删除,软链接不能访问
硬链接
	命令是 ln  源文件  目标文件
	磁盘引用次数会发生变化
	指向的是硬盘上的同一块区域
	磁盘的引用次数会随着硬链接次数来增加
	不能对目录做硬链接
	源文件发生改变,硬链接也会跟着变化

查看文件类型

file 文件

输入 和输出

标准输入 默认是来自键盘的输入  stdin 0
标准输出 默认输出到终端窗口	stdout 1
标准错误输出  默认输出到终端窗口 stderr 2

i/o的重定向

>  覆盖
	> 将标准输出重定向到文件中
	2> 将错误输出重定向到文件中
	&> 将所有的输出重定向到文件中
禁止、允许覆盖
	禁止覆盖:set -C
	允许覆盖: set +C
将命令执行后正确信息输入到文件中
 ls  a  > e    执行的命令是ls a(其中a 是一个文件夹) 把正确命令输入到了 e文件中
 上面一条命令等同于 这条命令  ls  a  1> e  上面的一条命令活省略了1,也可以说是默认是1
 ls  qwe  2>  e    将命令执行后的错误信息输入到文件中, 命令中 由于 qwe 不存在,所以 ls qwe 执行后会产生错误的信息,> 前加2 是输入错误信息
 
 ls  a  qwe  &> e   将错误的信息和正确的信息输入到一个文件中去 用 &>
 
 将标准输出和错误输出 追加到不同的文件中
 	ls  a  adasda > e  2> w  ls a 由于 a 文件夹是存在的,是正确的命令,将命令执行后的输出追加到了 e文件中,
 	由于 adasda 是不存在的, 所以 ls adasda 是错误的, 将命令执行后的错误信息追 加到了 w 文件中
 	
 	command  > file 2>&1   覆盖
 	command >> file  2>&1  追加
 	ls a  adasda > e 2>&1  将正确信息追加到 e文件中, 错误信息也追加到e 文件中, 2>&1 追加到1正确文件对应的文件中
 
 >> 追加
 	>> 将标准输出追加到文件中
 	2>> 将错误输出追加到文件中
 	&>> 将所有输出追加到文件中
 	例如: ls a adsdasda &>> e
 	
 	(): 合并多个命令的输出  (ls dadasd;ls dasdasda) 2> a
 	
 	从文件中读入 < 
 	

tr 字符替换

-t 截断
-d 删除
-s 压缩 去重
-c 取反
tr "a-z" "A-Z"  将小写字母替换成大写字母
tr abc 123  将abc 分别替换成对应的 123 
tr  abc  12   把a 替换成 1  把 bc 都替换成2
tr -t abc 12 以后面的为主
	-t是截断
	[root@localhost test]#  tr -t abc 12
     abc
     12c
   
 tr -d  abc  删除后面出现的字符
 	-d 是删除
 	[root@localhost test]# tr -d abc
    abcdefg
    defg
  -s 是去重
  tr -s  a
  	[root@localhost test]# tr -s a
    aaaaaaabc
    abc
   -c 用来取反
   [root@localhost test]# tr -sc a
    aaaabbbbbcccddd
    aaaabcd
    
   tr -dc a  
   [root@localhost test]# tr -dc a  tr -d 是删除 -c是取反, tr -dc a 是把除 a 以外的全部删除
   把 字符后面的换行(\n) 也删除了, 要想查看结果需要ctrl + d 结束
    aaaaaaaasfsdfsdf
    sfdfdsf
    aaaaaaaa[root@localhost test]# 
    
   tr -dc "a\n"  不删除换行了, 把 \n也加到了取反的列表中
   
   tr -d a <issue >  issue  处理完成以后不能写到源文件,要写到新的文件中




多行发送给stdin

多行内容追加到同一个文件中
	1.cat > 文件名, 向文件内写入内容  ctrl + d结束
	2.cat > 文件名 <<EoF  输入<< 后面的字符结束 ,后面的字符可以写成任意的字符,只不过EOF是我们约定俗成的。
	

管道

管道使用"|"来表示

命令1|命令2|命令3
把命令1的输出结果当做命令2的输入,把命令2的输出当做命令3的输入
也就是把前一个命令的输出结果当做下一个命令输入
一般用来组合多个命令 例如:组合 ls 和 tr 等
有一些命令是不接受管道的
[root@localhost test]# ls file1|tr 'a-z' 'A-Z'
FILE1
正常情况下 管道默认只能输出正确的输出
如果要输出错误的信息,则需要在 | 前加一个& 也就是|&
[root@localhost test]# ls f|tr 'a-z' 'A-Z'
ls: cannot access 'f': No such file or directory
输出错误的信息
[root@localhost test]# ls f|&tr 'a-z' 'A-Z'
LS: CANNOT ACCESS 'F': NO SUCH FILE OR DIRECTORY

10文本显示相关

cat 显示文本

-E 显示结尾的$符
-n 对显示的每一行进行编号
-b 对非空行进行编号
-s 对连续的空行进行压缩

tac是倒叙显示文本

less分屏显示文本

向下翻一屏 空格
向下翻一行 回车
q 退出
/文本 搜索文本
n 向下查找  N向上查找
less是man 命令的默认分页器

more分页显示文本

默认显示读取的百分比
读取完成自动退出
q退出
-d 显示翻屏和退出的提示

head显示文件的前面的内容

默认显示前十行
-# 显示先#行
-n # 显示前#行
-c #  显示前#个字符

tail 显示文件后面的内容

默认显示后十行
-# 显示后# 行
-n # 显示后#行
-c # 显示后#个字符,换行符也是一个字符 
  

cut切割

Usage: cut OPTION... [FILE]...
-c 按照字段切割 cut -c2-5  显示第二到第五个字符
-d 指定切割符,默认是tab
-f #  显示第#个字段 #,#,# 显示离散的多个  #-#显示连续的多个  1-5,7 上面两个还可以结合使用

paste合并

默认是相同行合并到一起,中间默认是用tab键分开  paste a.txt b.txt
也可以指定合并中间以什么分开,例如以:分开: paste -d: a.txt b.txt
-d 指定合并到一行时用什么符号分开。 指定间隔符

-s 将所有的行按照列来显示  paste  -s a.txt b.txt

11.文本的统计相关

wc用来对文本进行统计

[root@localhost test]# wc f0
 5  6 39 f0
行数 单词数 字节数 文件名  
-l 只显示行数
-w 只显示单词数
-c 只显示字节数
-m 只显示字符数  
-L 显示文件中最长的一行行的长度

sort排序

Usage: sort [OPTION]... [FILE]...
  or:  sort [OPTION]... --files0-from=F
  默认是按照字母排序的
  -r 倒叙
  -R 随机排序
  -n 按照数字进行排序
  -f 忽略大小写
  -t 指定分割符
  -k # 指定按第#个字段进行排序 
  sort -t: -k3 a.txt
  sort -nt: -k3 a.txt 
   

uniq合并相同的行

相同:相邻 完全一样

-c 显示相同的行出现的次数
-d 只显示重复的行
-u 显示从没有重复的行
统计django后端的访问量经常将以下几个命名一起使用
cut -d " " -f4 d|sort |uniq -c

pv 网页的访问量,每访问一次,日志数量就增加一条 page

uv 网页的访问量,一个用户访问增加一条 user

对比文件

[root@localhost test]# cp f0 fq   把f0 文件复复制到 fq文件
[root@localhost test]# cat fq  	  显示f0 文件
dsadasd
sadasda

file{1-100}
seq 1 100
[root@localhost test]# echo '123' >> fq  把123添加到fa文件中
[root@localhost test]# cat fq 				查看fq文件
dsadasd
sadasda

file{1-100}
seq 1 100
123
[root@localhost test]# diff f0 fq   显示 f0文件和fq文件的区别
5a6    5代表f0文件中有5行a 代表添加,fq文件在f0文件的前提下增加了第六行,
> 123  这里显示fq文件中增加的第六行的内容。
[root@localhost test]# echo '1234' >> f0  把1234添加到f0文件第六行中
[root@localhost test]# diff f0 fq
6c6   f0文件中有6行 c 代表change 改变  fq 文件中也有六行
< 1234  <符号后面是 fo文件第六行中的内容,
---
> 123   > 符号后面是fq文件第六行中的内容
diff出来的结果是 f0文件中的第六行语fq 文件中的第六行不同。

12 修改权限

chown 用来修改所用者和组

Usage: chown [OPTION]... [OWNER][:[GROUP]] FILE...
  or:  chown [OPTION]... --reference=RFILE FILE...
  chown blood f0  修改f0文件的属主
  chown blood.blood f0 修改属主和属组
  chown root.root fo 
  chown root:root 
  chown :blood  直接修改属组
  chown -R blood  a 递归修改属主  这里a 是一个文件夹 ,修改文件夹以及文件夹内的属主。
  chown  --reference=f0 f1  更改f1的所有者和组,参考f0 也就是改成和f0一样。

chgrp修改文件的属组

Usage: chgrp [OPTION]... GROUP FILE...
  or:  chgrp [OPTION]... --reference=RFILE FILE...
与上述命令的用法相似

权限


drwxr-xr-x. 3 blood root 15 Nov 19 10:32 b
d rwx r-x r-x. 3 blood root 15 Nov 19 10:32 b
第一位 表示是文件夹还是文件 d 表示是文件夹 -表示不是文件夹,也就表示是文件了
后面九位表示权限 三位表示一组 
9位分成三组,--- --- ---- 第一组表示属主的权限 第二组表示属组的权限 第三组表示其他用户的权限
权限的内容有 r  w x 
对于文件来说
    r: 表示读,有读的权限  可以使用文本查看工具查看里面的内容
    w: 表示写, 有写的权限  可以修改文本的内容
    x: 表示执行, 有执行的权限 执行可以直接写./file
    — :表示没有这个权限
对于目录来说:
	r:可以使用ls等文件查看的命令查看
	w: 可以创建文件,也可以删除文件
	x: 可以 cd 进入
数字表示:
	--x
	二进制   八进制
	001 	1
	
	-w-
	010 	2
	r--
	100		4
	rw-     
	110     6
	rwx
	111     7
	r-x
	101     5
	-wx 
	011		3

可以对文件的权限进行修改
属主:用 u 代替
属组: 用 g 代替
其他: 用 o 代替
以上三者的权限全部都修改的话用: a  代表全部
chmod u+x c 修改属主的属性为可执行 	增加
chmod u-x c 修改属主的属性为不可执行	删除
chmod u=r c 修改属主的属性为只读		直接赋值
chmod a=r c  将c文件的 属主, 属组,其他 的权限全部修改成 只读。

可以直接使用数字表示
	chomod 775 c  7:rwx  5:r-x  
可以基于某个文件进行修改
chmod --reference=b c  参考b文件的权限来修改 c 文件的权限

设定特殊权限

chattr +i 不能删除、不能修改、不能变更  例如: chattr +i a  (a在这里表示a文件)
chattr -i 可以减去这个属性
lsattr 查看属性
chattr +a 只能追加数据 

13 vim命令基础介绍

image-20201120172524689

vi/vim(对命令的大小写特别的敏感)

打开文件
vim [option] ...file ...
+# 直接定位到第#行
	vim +2 file   
+/pattern  打开文件后,直接定位到第一个匹配到pattern的地方
	vim +/113 file  打开文件直接定位到113所在的位置
-b 以二进制的方式打开
	vim -b file
-d file1 file2 对比打开多个文件
	vim -d a.txt b.txt
 -m 以自读的方式打开文件
 	 vim -m file
-e 直接以末行模式打开
	

vim的模式

命令模式:可以移动、可以粘贴、复制文本
插入模式或者编辑模式:可以修改文本
末行模式(扩展命令模式):可以保存,退出等等
esc退出当前模式

模式之间的切换

命令模式-插入模式
	i 光标所在处插入
	l 在当前光标所在的行首插入
	a 在当前光标所在位置的后面插入
    A 在当前光标所在的行尾插入
    o 在当前光标所在的行的下一行(新开的一行)插入
    O 在当前光标所在的行的上一行(新开的一行)插入
   
插入模式-命令模式
	esc
命令模式-末行模式
	:
末行模式-命令模式
 	esc esc
    esc enter
 

image-20201120180101031

关闭文件

末行模式
	:w 保存
	:q 退出
	:wq 保存并退出
	:q! 强制退出
	:wq! 强制保存并退出
	:x  保存并退出
命令模式:
	:ZZ 保存并退出
	:ZQ 不保存退出
	

扩展命令行模式

按“:”来进入
:w 写入
:q 退出
:wq 保存并退出
:q! 强制退出
:x 保存并退出
:r file 读入文件
:w file 另存为
:!command 直接执行命令
:r!command 直接把命令的结果写入文件中

命令模式跳转

字符之间的跳转
	l 向右
	h 向左
	j 向下
	k 向上
单词间跳转
	w 下一个单词的词首
	e 当前词的词尾或者下一个单词的词尾
	b 当前词的词首或者上一个单词的词首
	# command 直接跳转#个单词 例如:
		3 b 向下跳转 3个单词
		3 e 向上跳转3个单词
页面间跳转
	H 页首
	L 页尾
	M 页中
	zt 将光标所在的行移到屏幕的顶端
	zb 将光标所在的行移动到屏幕的底部
	zz 将光标所在的行移到屏幕的中间
行首行尾之间跳转
	^ 跳转到当前光标所在行的第一个非空字符
	0(数字) 跳转行首
	$ 跳转到行尾
行间移动
	#G 跳转到第#行  1G 跳转到第一行
	在命令扩展模式下,直接 # 跳转到对应的行
	G 直接到最后一行
	在命令扩展模式下输一个特别大的数字,也是到达最后一行,例如:13231312
	gg 跳转到第一行
段落之间跳转(行与行之间有空行算一段)
	{ 上一段
	} 下一段
翻屏
	ctrl + f向文件尾部翻一屏
	ctrl + b向文件首部翻一屏
	ctrl + d 向文件尾部翻半屏
	ctrl + u 向文件首部翻半屏
	

14.命令模式编辑

字符编辑

​ x 删除光标所在处的字符

​ # x 删除#个字符

​ xp 将光标所在处的字符和后面的字符交换位置

​ ~ 将光标所在的位置大小写互换

​ J 删除当前行的换行符

替换

​ r 替换当前光标所在处的字符

​ R 进入替换模式

删除

​ d 删除,需要跟字符跳转结合

​ d$ 删除到行尾,删除当前位置

​ d0 删除到行首,当前位置不删除

​ d^ 删除到非空字符

​ dw 删除一个单词

​ de 向后删除一个单词

​ db 向前删除一个单词

​ dd 删除整行

​ # dd 删除#行

​ dG 删除到结尾

​ dgg 删除到开头

​ D 相当于 d$

复制

​ y,也可以和字符跳转结合

​ y$ 复制到行尾

​ y0 复制到行首

​ y^ 复制到第一个非空字符

​ yw 复制一个单词

​ ye 复制下一个单词

​ yb复制上一个单词

​ yy 复制一整行

​ # yy 复制#行

​ yG 复制到结尾

​ ygg 复制到开头

​ Y 复制整行 相当于yy

粘贴

​ p 如果是整行的话,则粘贴到当前光标所在行的下一行,否则粘贴到光标的后面

​ P 如果是整行的话,则粘贴到当前光标所在行的上一行,否则粘贴到光标的前面

改变(插入),删除以后并把模式切换成插入模式

​ c 可以跟光标的跳转做结合

​ c$ 删除到行尾并切换成插入

​ c0 删除到行首并切换成插入

​ c^

​ cw

​ ce

​ cb

​ #command

​ cc 删除整行并插入

​ C 相当于c$

ialexesc 将alex粘贴次 # ! alex esc

15.vim高级

命令行模式下

搜索

/pattern 从当前光标往下搜索
?pattern 从当前光标往上搜索
n 同命令相同的方向 移动
N 同命令相反的方向 移动

撤销

u 撤销最近的修改
#u  撤销最近的#次修改
ctrl + r撤销之前的撤销动作
. 重复最后一次操作
#. 最后一次操作执行#次

命令扩展模式下

地址定界

: start, end
# 具体到第#行
#,#第#行到第#行
#,+n 从第#行开始 到第#+n行结束  例如:1,+2 =1,3
. 表示当前光标所在的行
$ 表示最后一行
$-1 表示倒数第二行
/字符1/,/字符2/ 从第一个字符1匹配到的地方,到第一个字符2匹配到的地方。
#,/字符/ 从第#行开始到	第一次字符匹配到的地方
/字符/,$  从第一次匹配到字符到 结尾
可以使用的命令:
	d 删除
	y 复制
	w file  重新另存为一个文件
	r file 将文件的内容写到光标的下一行

查找并替换

要使用地址定界来进行查找
s在扩展命令下使用为替换 :%s/tt/12  将文本的tt 替换成12
格式:查找区域(即定界)s/要查找的内容/要替换的内容/装饰器
要查找的内容可以使用正则
替换的内容不能为正则
	可以分组 例如:%s/\(nfs.*\)/#\1/   \ 是将后面的字符进行转义
	\1表示第一个分组内的内容 \# 表示第#个分组里面的内容
	还可以写面下面这种方式 %s/nfs.*/#&/ 这里的& 表示前面匹配到的内容
装饰器
	i 忽略大小写
	g 表示全部替换
	gc 每一次替换前都要进行询问是否替换
分隔符除了可以使用 \
	还可以使用 # 或者@ 符

可视化

v 面向字符的
V 面向行的
ctrl + v 面块的 ,一块块的选中
可以和所有的跳转键进行结合
对突出显示的部分可以使用删除、复制、变更(删除之后切换到插入模式)、过滤、替换、另存为等等

打开多个文件

vim file1 file2 file3
:next 下一个文件
:prev 上一个文件
:first  第一个文件
:last 最后一个文件	
:qall 退出全部
:wall 保存全部
:wqall 保存并退出全部
:xall 保存并退出全部

使用多个窗口打开文件,一个屏幕中有多个文件

vim -o file file2 file3 水平分隔
vim -O file file2 file3 垂直分隔
各个文件之间进行切换 ctrl + w 加上下左右的箭头
:qall 为退出

单文件切割成多个窗口

ctrl +w ,s 水平切割
ctrl +w,v 垂直切割
ctrl +w,q 取消相邻的窗口
ctrl +w ,o 取消全部窗口

16 .vim工作特性

配置文件

全局有效: /etc/vimrc
对当前用户有效 ~/.vimrc
行号:加入行号在文件中输入 :set  nu    取消行号 :set nonu
忽略大小写:(搜索) :set ic  取消忽略大小写 :set noic 
自动缩进上一行:命令模式下:set ai  取消:set noai 
设置高亮显示(搜索到的内容)  :set hls   取消:set nohls
语法高亮  打开:syntax on  取消:syntax off
文件格式:
	windows 格式 set fileformat=dos
	unix  set fileformat=unix   
	上面两名话中的fileformat可以简写成ff
添加标识线: set cul 取消标识线:set nocul
获取帮助: :set all
获取帮助信息:
	help
	help topic
	vimtutor

17.find

find 是linux 里面的一个实时查找工具,通过指定路径完成文件查找
find [options]...[查找路径][查找条件][处理动作]

查找路径:查找的位置,默认是当前文件夹
查找条件:制定查找的标准,文件名,大小、类型,日期等等
处理动作:对符合条件的文件做什么操作,默认是输出到屏幕上

查找条件

根据文件名查找
	-name 例如:find -name a   指定名称可以使用正则表达式
    -iname 忽略大小写 。例如: find -iname a
    -links n 引用次数为n的文件
    -regex 后面跟完整路径,而不是文件名,必须是整个路径完全匹配
指定搜索的层级
	-maxdepth level 最大的搜索深度,指定的目录为第一层, 例如:find -maxdepth 2 -name a
	-mindepth level  最小的搜索深度,包括level层,指定目录为第一层 ,  例如 : find -mindepth 2 -name a,
根据属主、属组来查找
	-user username 查找属主为username的文件,例如:find -user blood
	-group groupname 查找属组为groupname的文件 例如: find -group blood  
	-uid id 查找属主为id 的文件
	-gid id 查找属组为id 的文件
	-nouser 查找没有属主的文件
	-nogroup 查看没有属组的文件
	
根据文件类型来查找-type
	d 目录
	f 文件  例如:find -type f  
	l 符号链接
	s 套接字
	b 块设备
	c 字符设备
	p 管道文件
	
空文件或者空目录
	-empty  例如: find -empty
	如果只想查看空目录,可以指定文件类型为目录  find -empty -type d
条件
	与 -a
	或 -o
	非 -not  例如:find -empty -a -type d
 摩根定律
 	非(A或者B) 非A 且非B
 	非(A且B)  非A 或非B
 排除目录
 	-path
 按照大小来查找
 	-size # (#-1,#]     不包括#-1,包括#			find -size 2M 
 	-size -# [0,#-1]	包括0和#-1
 	-size +# (#,....)
 按照时间来查找
 	-atime # [#,#+1) atime的时间与现在的时间差为# 到#+1天,左闭右开。
 	-atime -# (0,#)
 	-atime +# [#+1,...] 
 	查找7天以后的文件 find -atime +7
 	-mtime
 	-ctime
 以分钟为单位
 	-amin
 	-mmin
 	-cmin 
 
		
	

处理动作

-print 默认的处理动作,显示在屏幕上
-ls 类似与ls -l 显示长格式
-delete 删除查找到的文件
-fls file 将查找到的结果以长格式保存到文件中 
-ok command {}\; 对每一个查找到的文件执行command命令,在执行命令之前要先提示用户是否执行
-exec command {}\; 对每一个查找到的文件执行command命令,不需要确认,一次性交给后面的命令处理

 

xargs

有的命令不支持管道
命令参数过长
xargs 将管道前面的内容一条一条的交给后面的命令处理 例如:echo file{1..500000}| xargs touch
一般会跟find结合使用

18. linux里面的三剑客

grep

awk

sed

image-20201122094134171

grep

grep [option] '模式' file
option
	--color=auto 对匹配到的内容加颜色
	-v 取反
	-i 不区分大小写
	-n 查找到的内容增加行号
	-c 打印匹配到的行数
	-o 只显示匹配到的文字
	-q 静默模式 		echo $? 判断上一条命令执行的结果,如果有结果则输出0 如果没有结果则输出非0
	-A #  after 在查找到的内容的基础上向下显示#行 
	-B #  before  在查找到的内容的基础上向上显示#行
	-C #  context  在查找到的内容的基础上向上和向下分别显示#行
	-e  或者  grep -e 'user'  -e 'root'  passwd
	-E 扩展的正则表达式
	-F 不使用正则表达式
	-r 递归
	-w 匹配整个单词

正则表达式元字符

字符匹配
	. 任意单个字符
	[]  匹配指定范围内的任意单个字符 [0-9][a-z]
	[^]  取反
	[:upper:] 大写字母
	[:lower:]  小写字母
	[:alnum:] 字母和数字
	[:alpha:] 大小写字母
	[:digit:] 数字
	[:blank:]  空白
	[:punct:] 标点符号 	
匹配次数
	* 表示任意次数
	.* 任意字符任意次数
	\? 0次 或者1次
	\+ 表示至少1次   前面的\是用来转义后面的+号的
	\{n\} 表示n次 花括号也需要转义
	\{m,n\}  最少m次 ,最多n次
	\{n,\}  至少n次
	\{,n\}  至多n次
位置锚定
	^开头
	$结尾
	^$ 空行
	grep -v "^#" /etc/ssh/sshd_config |grep -v '^$'  显示不以#号开头的并且不是空行的。
分组:
	 grep "\(c\|C\)at" a
向后引用   
	\1 前面第一个括号出现的内容匹配完成之后再在后面出现一次
		grep "\(l..e\).*\1" b 
	\2 前面第二个括号
	\# 前面第# 个括号
扩展正则表达式
	与正则表达式的唯一区别是不需要转义
	grep -E  -E 参数

19. linux 里面的压缩

gzip

压缩文件
	gzip  [option] ...file
		-c 将压缩结果输出到屏幕,并保留源文件
		-1到-9 是指定压缩比,默认是-9
		-d 解压
		zcat 不解压的情况下查看压缩包内的内容
解压文件
	gunzip file

bzip2

bzip [option] file
	直接压缩
	-d 解压
	-k 保留原来的文件 
	-1到-9是指定压缩比
	bzcat file 在不解压的情况下查看压缩包的内容
解压文件
	bunzip2
	

xz

xz [option] file
	-k 保留原来的文件
	-d 解压  
	-1 到 -9也是用来指定压缩比
	xzcat fiel  不解压直接查看压缩包里的内容

解压文件
	unxz file

zip

zip [option] file

解压文件
	unzip file

tar

归档工具
	tar cpvf etc.tar /etc
	c 创建
	v 显示过程
	f 指定归档文件
	p 把原来的属性也带过来
	tar  -r -f etc.tar /etc 追加 
	tar -t -f etc.tar 查看归档文件内的内容
	tar xf etc.tar 解压文件
	tar xf etc.tar /path  指定解压的路径
	-z 使用gzip压缩
	-j 使用bzip压缩
	-J 使用xz压缩
	-exclude 排除文件  
		

split

split -b 指定大小 文件,(只能为文件) 切割以后的名字
-d 指定后缀为数字
-a 指定后缀为几位
cat 切割后的新文件 》 新文件 

20 用户

超级管理员用户 root id=0

普通用户

​ 系统用户:用来启动系统的一些服务和进程的用户,不可以登录 id 1-999 (centos7) 1-499 (centos6)

​ 可登录用户:能登录系统的用户 id 1000-65535(centos7) 500-65535(centos6)

useradd

Usage: useradd [option] LOGIN
		useradd -D
		useradd -D [options]
普通用户的id 是从1000开始递增的, 系统用户的id 是从999开始递减的
-d 用来指定用户的家目录
-g 用来指定用户组的id
-G 用来指定用户组的附加组
-m 创建用户的家目录
-k 指定复制那个文件夹下的内容,需要和-m一起使用
-c message 指定用户的描述性信息
-N  不创建同名的组,以users为组
-s 指定用户登录后使用的shell
-u 指定用户的 id 
-D 显示系统的默认配置
-D [options] 可以修改系统的默认配置

相关文件

/etc/default/useradd 创建用户的默认文件
/etc/skel/* 默认复制的文件

用户修改 usermode

-c 修改描述性信息
-d 修改家目录,默认不会创建新目录, 如果想移动家目录,则需要使用 -m
-g 修改用户的组
-G 修改用户的附加组,默认情况下是替换
-a 追加附加组
-l newname  修改用户的登录名称
-L  锁定用户 ,不能登录系统 ,修改密码默认情况下解锁
-U  解锁用户
-s  修改用户登录后的shell
-u  修改用户的uid
-e 年-月-日  修改用户的过期时间,过期以后不能登录

删除用户userdel

默认删除用户,不删除用户的家目录
-r 删除家目录
-f 强制删除
默认情况下,用户登录状态下是不能删除用户,强制删除用户以后,用户还是可以使用的

查看用户相关id

-g 只显示组 id
-G 只显示附加组 id
-u 只显示用户id
-n 显示名称 需要和guG 来配合使用

切换用户

su [options] [-] [USER [args...]]

切换用户的方式

完整切换:su -username 登录式切换 环境变量都会切换
不完整切换: su username 不会切换用户的环境变量家目录等。
root 切换普通用户不需要密码,非root 用户切换需要密码

切换用户执行命令

su -peiqi -c 'whoami'  执行完命令后再自动回到本用户

执行本身不能执行的命令

sudo 配置文件为 /etc/sudoers
mmp  ALL=(ALL)   NOPASSWORD:ALL
其中的NOPASSWORD是不需要输入密码

设置密码password

password [OPTION...]  <accountName>
-d 删除指定用户的密码,删除之后就不能登录
-l  锁定用户
-u 解锁用户
-e  在下次登录以后强制用户修改密码
-f 强制操作
-x maxday 密码的最长使用时间
-n minday 密码的最短使用时间
-w warnday 密码过期前多长时间提醒
-i inactiveday 密码过期多长时间以后禁用
--stdin 从标准输入读取密码 echo '123'|passwd --stdin mmp

存放文件/etc/shadow

每一行的内容用冒号分隔开来,各部分内容的含义如下:
用户名
密码$ 加密方式(默认sha512)$盐$加密后的字符串$
从1970年1月1日到最近一次修改密码经过的时间
密码的最短使用时间(0表示随时可以修改)
密码的最长使用时间(99999表示永不过期)
密码过期多长时间提醒(默认是一周)
密码过期多长时间锁定
从1970年1月1日开始算起,多长时间后账号失效

密码的复杂性策略

密码必须包括数字、大小写、特殊字符
密码必须12位以上
不能为弱口令
必须为随机密码
3个月或者半年修改一次

机器免密登录

ssh-keygen 一路回车
ssh-copy-id 要登录的机器(机器的ip地址)

修改用户的密码策略 chage

chage --help
chage login 可以使用交互式的修改密码策略  例如:chage blood

chfn 修改用户的个人信息

21.用户组

  • 超级用户组 root 0
  • 普通用户组
    • 系统用户组 1-999(centos7) 1-499(centos6)
    • 可登录用户组 1000-65535(centos7) 500-65535(centos6)
groupadd
-g 指定组id
-r 创建系统用户组

组的文件

/etc/group
此文件下的每一行被冒号分成多个部分,每部分的意思如下
组名
密码占位
gid
组成员
/etc/gshadow
组名
密码
组管理员的密码
组成员

修改组信息

groupmod --help
-g 修改gid
-n 修改组名

删除组

groupdel 删除组

22.软件

windows 中的软件是以exe结尾的
(centos)redhat  是以rpm结尾的
yum

image-20201125215629326

包的来源

光盘中获取
第三方网站 
官方网站
自己做
https://pkgs.org
epel第三方包的集合地

rpm包的查询

rpm -q  查询指定的包是否安装  下面的短命令要和-q结合使用
-a  all 表示当前系统安装的所有的包
-f  filename 查询指定的文件由哪个包安装生成
-c  查看指定的包生成了哪些配置文件
-d 查询指定的包生成了哪些文档
-i 查询指定包的详细信息
-l 查询指定的包生成的文件
 常用的选项
    -qi
    -qa
    -ql
    -qc
    -qd

yum

yum会自动的解决依赖关系
仓库  存放的是多个包和包的源数据(所在仓库,依赖关系 )
仓库的位置
	http://
    https://
	ftp://
    file:// 本地的文件
    配置文件存放在/etc/yum.repos.d中
        

yum的配置文件

image-20201125223340134

image-20201125223404974

yum命令

# yum repolist 查看仓库
# yum list 列出仓库里面所有的包,安装的包前面带@
# yum install 安装包
# yum  reinstall 重新安装
# yum update 更新所有的包
# yum update  pkg 更新指定的包
# yum downgrade 降级
# yum check-update 检查包是否可以更新 
# yum remove  卸载包
# yum info pkg 显示包的详细信息
# yun clean all 删除源数据信息
# yum makecache 重新构建元数据信息
# yum search 搜索软件包(包名称,描述信息只要包括就可以搜索出来)
# yum provides 搜索命令是由哪个包提供的

image-20201125223616718

软件包组

yum grouplist 查看包组
yum groupinstall "安装包的名称"  安装
yum groupinfo 获取包的信息,查看包组由哪些包组成
yum groupupdate  更新
yum groupremove  卸载包组

yum选项命令

-y 自动确认
-q 静默模式

源码安装

下载 	wget 
解压文件 tar xf
切换目录 cd
可以查看帮助信息 README INSTALL 文件
安装所需文件  
编译(检查程序所需的文件) ./configure
构建安装程序 make
安装程序 make install 
配置环境变量

23.磁盘管理

查看磁盘空间的占用

df 
-h 显示人类易读的方式
linux 下的磁盘命名格式
/dev/sd[a-z]

查看目录的占用空间

du
-s 查看目录
-h 显示人类易读的方式
du -sh /*  

dd

dd if=/dev/zero of=file bs=size count=number
if =input file 表示从inputfile里面读取内容
of = output file  表示将读取到的内容写入到什么地方
bs = byte size ,可以是 k ,M ,G ,T

RAID阵列卡

raid0  数据分别向多个磁盘分开写,
	读、写速度有所提升 
	可用空间N(磁盘的个数)*每一块的大小
	没有容错能力
	最少磁盘数为2
raid1 在多个磁盘里重复写数据
	读有所提升,写性能下降
	可用空间,所有磁盘中最小的一块大小。
	有容错能力
	最少是2 ,2n
raid5
	读写速度有提升
	可用空间(n-1)*大小
	有容错能力,最多可以坏一块硬盘
	最少要三块硬盘
raid6
	读写速度有所提升
	可用空间(n-2)*大小
	有容错能力,最多可以坏两块 
	最少要4块
raid10
	先实现raid1,再实现raid0
	读写性能有提升
	可用空间n*大小/2
	有容错能力,每组镜像可以坏一块
	最少四块
raid01
	先实现raid0,再实现raid1
	读写性能有提升
	可用空间n*大小/2
	有容错能力,只能坏同一组的
	最少要4块

24.网络

网络的基础知识
ipv4: 4段 32位 
网络位+主机位
网段
主机

A
网络位为8位
	第一位不可以变 
    0 0000001
    0 1111111
    1-126
    127 有特殊用途,回环地址
    可用网段数: 2^7-1
    每一个网段有多少可用主机:2^24-2
    有两个是不可以用的:
    主机名全为0,表示一个网段
    主机为全为1,表示网段里面的广播地址
    私有地址:自己可以用的
    10段
    公有地址:都可以访问的地址
主机位为24位
B
	16位网络位
    16位为主机位 
    有两位是不可变的
    10 000000 00000000  128
    10 111111 11111111  191
    有多少可用网段:2^14
     每个网段有多少可用主机:2^16-2
      私有地址:172.16-173.31  
    
C
	前24位为网络位
    后8位为主机位
 网络位,前三位固定为 110
110 00000 00000000 00000000
110 11111 11111111 11111111
192 -223
可用网段:2^21
每个网段有多少可用机器:2^8-2
私有地址:192.168.1-192.168.255

D
作为多播地址
要求前四位为1110
1110 0000 00000000 00000000  224
1110 1111  11111111 11111111  239

E

作为科研使用

CIDR(无类域间路由)
网路位向主机位借位
 b类
 16+5
21位网路位, 11位主机位,2^11 2048-2=2046

c类
网络位向主机位借位:
24+6 网络位30位
主机位: 2^2-2 =2


子网掩码
	网络位全为1,主机位全为0
    
ip地址和子网掩码按位与来确定属于那个网段
按位与:
	只要有0就是0,全部为1才为1(适用于二进制)
    1&0 0
    2&3 2
按位或
	只要有1就为1, 全部为0才为0(适用于二进制)
    1|0 1
    2|3 3
异或
	相同为0, 不同为1 (针对于二进制)
    1^0 1
    2^3 1
    3^ 5 6
取反
	-(n+1)
    ~2  3
    ~-4 3
左移
	n*2的左移次方
    2<<2 8
    10<<2 80
	
右移
	n /2的右移次方(向下取整)
    12>>2 3
    13>>2 3
    50>>2 12
    2>>2 0
    
例如A类地址,通过ip地址和子网掩码来确定属于哪个网段 
子网掩码,网络位全为1,主机位全为0
1.1.1.1/8
ip地址:00000001.00000001.00000001.00000001
子网掩码:11111111.00000000.00000000.00000000
00000001.0.0.0
属于1.0.0.0网段 


10.20.43.65/10
00001010.00010100.0.0
11111111.11000000
10.0.0.0

25.网络配置

  手动
    ip 
    配置文件
  自动分配
	dhcp服务

ip

增加ip地址
	ip a  add 192.168.21.23/24 dev ens33
删除ip地址
 	ip a del  192.168.21.23/24 dev ens33
增加ip地址并增加别名
	ip a add 192.168.21.23/24 dev ens33 label ens33:0
删除
	ip a del 192.168.21.23/24 dev ens33 label ens33:0

网卡配置文件

配置文件:/etc/sysconfig/network-scripts/ifcfg-name

image-20201129181703828

image-20201129181918598

主机名

获取主机名  hostname
设置主机名  hostname name
配置文件 
	/etc/hostname  centos7
    /etc/sysconfig/network  centos6
永久生效
	hostnamectl set-hostname name
    修改配置文件 

ss 、netstat

ss -help
ss命令用来打印linux系统中网络的状态信息,可以让管理员更好的了解网络情况 。
-a 所有
-l 监听中的
-t tcp
-u udp
-x unix  socket 文件
-p 相应的程序
-n 显示服务的端口号 
常用组合
	-anlp 
    -tnlp
    -unlp
   * ipv4 0.0.0.0 表示当前主机上所有的ip 地址
	:: ipv6所有地址 

解析

  • 本地解析 /etc/hosts
  • dns 解析
  • 根结点 总共有13组

26.wget

用来下载网络资源
-q 静默模式
-c 断点续传
-O filename 另存为的名称
-P 保存到指定的目录
-r 递归下载
-p 下载所有的html文件

27.systemctl

管理服务 service

start name 。。 启动服务

stop name ... 关闭服务

reload name 重读配置文件 平滑重启

restart name 重启服务

status name 查看状态

enable name 开机自启动

disabled name 关闭开机自启动

systemctl list-unit-files|grep name 查看服务是否开机自启动

centos 6

service 动作 服务

chkconfig 用来管理服务的开机启动

28.linux计划任务(定时任务)

vim /etc/crontab

image-20201129222707520

image-20201129223926622

image-20201129225319167

crontab命令

-e 编辑定时任务文件
-u 指定用户,如果不写默认是当前用户
-l 列出当前用户的计划任务
-r 删除用户的计划任务
默认写入的文件在/var/spool/cron/username
crontab的日志
	/var/log/cron
命令最好写绝对路径

计划任务作用

定时删除

定时备份

同步时间

29.ping

-c 指定次数
ICMP 协议

30.进程

查看进程的命令ps

ps --help
ps [options]

支持的命令格式

unix格式:-h -e

BSD格式:a,x u

GNU长格式:--help

选项

image-20201130092945636

image-20201130093752729

image-20201130093807863

image-20201130092224372

image-20201130093911816

31.系统工具

image-20201130094404416

image-20201130095342020

image-20201130095648261

image-20201130095830109

image-20201130101607030

image-20201130101721380

image-20201130102056565

image-20201130102249265

image-20201130103054395

image-20201130103700772

image-20201130103911566

image-20201130104401276

32.安全

image-20201130104918200

image-20201130105214650

image-20201130105444003

33.虚拟环境

image-20201130110911409

image-20201130111156304

image-20201130111751620

image-20201130112346753

image-20201130112600877

34.mysql

mariadb是mysql的分支

可以直接在官方网站下载

下载

wget http://mirrors.sohu.com/mysql/MySQL-5.6/MySQL-5.6.40-1.el7.x86_64.rpm-bundle.tar

解压

tar xf MySQL-5.6.40-1.el7.x86_64.rpm-bundle.tar  
默认解压在当前路径 ll 查看内容

安装

yum install -y *.rpm

默认安装位置: /var/lib/mysql

image-20201130165706418

image-20201130165912605

image-20201130170419368

image-20201130170438120

image-20201130170627554

35.mysql 的主从

image-20201130171801858

在主服务器的配置文件中写如下代码:
进入配置文件: vim /etc/my.cnf 

image-20201130173410614

image-20201130172146318

image-20201130173839101

image-20201130174252732

mysql配置文件

image-20201201084446653

image-20201201084651500

image-20201201084723965

36.数据库备份

image-20201201085711774

image-20201201085755532

image-20201201090723677

image-20201201091125697

image-20201201091140157

image-20201201091401345

image-20201201091740643

image-20201201104902447

37.nginx

web 服务 apache 也一个web服务

Tengine 淘宝网 用的web服务,在nginx的基础上进行封装得到的

django web框架

lvs 负载均衡 中国人 章文嵩 博士写的

vue 中国人开发的 ,尤雨溪

F5 A10 硬件负载

下载

在这个网站:http://nginx.org/en/download.html 复制下载链接,在centos 中使用wget下载

安装

wget http://nginx.org/download/nginx-1.18.0.tar.gz
tar xf nginx-1.18.0.tar.gz
cd nginx-1.18.0
yum install gcc zlib2-devel pcre-devel openssl-devel

image-20201202222012642

目录结构

image-20201202222315388

image-20201202222752526

image-20201202223046628

命令格式

image-20201202222809217

ngunx的配置文件

vim conf/nginx.conf

image-20201202223428822

image-20201202223735949

image-20201202223935997

image-20201203202714252

image-20201203203730644

image-20201203203947719

image-20201203203958761

image-20201203204027543

38.nginx的日志

image-20201203210350685

image-20201203211421472

39.反向代理

image-20201203212905848

image-20201203213019697

image-20201203213736752

40.nginx location 匹配 规则

image-20201203214405347

image-20201203214909484

41.location分离

image-20201203215408652

image-20201203220709220

posted @ 2025-06-25 07:22  Ref-brief  阅读(19)  评论(2)    收藏  举报