linux基础

linux系统入门:

Linux严格区分大小写
且严禁出现空格

1.操作系统介绍

image.png
软件:驱动硬件
硬件:看得见,摸得着
操作系统:特殊的软件,控制硬件,内核+软件
操作系统
unix(1969年诞生于贝尔实验室)
硬件-系统(hp-ux)-软件
BSD: freeBSD 黑莓
ios,mac os,_苹果_的 第一代 操作系统于1984年 发布
ms-dos 单任务
window 1.0 1985年发布 windows NT
开源 闭源
minix
linux: 1991年 林纳斯.托瓦兹 linux内核 1.0/GPL 开源的
现在的操作系统:多任务,多用户
GNU: 贡献了很多免费使用的软件
GPL 协议
gnu/linux:
以下都基于Linux内核
红帽redhat系 : fedora(小白鼠版本) centos 最稳定企业服务器操作系统centos6 2.6.32 centos7 3.10 centos8 4.10 ,centos去掉Redhat里面的商业软件,换成开源的,其余与Redhat一样
debian系: ubuntu kali 国产linux 内核 5.10 版本新 人工智能 自动驾驶 大数据
suse: opensuse suse企业版

2.centos系统的安装

ios镜像下载地址:
https://mirrors.tuna.tsinghua.edu.cn/centos-vault/7.8.2003/isos/x86_64/CentOS-7-x86_64-DVD-2003.iso
install 安装
test
media 媒体 媒介 光盘
lvm:逻辑卷
el7: enterprise linux 7
linux远程控制:
telnet协议: 明文
ssh协议: 加密

3.远程连接linux

linux最高权限用户 root:123456
第一步:查看ip地址 ip addr

#远程登录linux系统
ssh  root@192.168.202.136
#断开连接
exit
#重启系统
reboot  ==  shutdown -r now
#立即关机
shutdown  -h  now
#十分钟之后关机
shutdown  -h  10

ctrl + c 打断正在执行的命令

4.文件操作

文件
查看目录下有哪些文件: ls
新建文件 :  touch     eg: touch 1.txt   创建多个文件: touch {1..10}.txl
删除文件: rm 1.txt 参数: -f force强制删除 批量删除 rm -f {1..10}.txt
复制文件: cp    eg: cp 121.txt a.txt
重命名:mv   eg:mv 1.txt 1.png
读取文件内容 cat
编辑文件:vi 

目录
新建目录: mkdir   eg mhdir dms 新建文件夹dms
进入目录: cd   eg: cd dms   cd .. 回到上级目录
重命名: mv    eg:mv dms smb
复制目录:cp -a   eg: cp -a dms smb
删除目录:rm -f -r   eg: rm -rf dms
打印路径: pwd

命令1:cd

#切换目录
cd  #全称change directory
例子1:
cd  local    #切换到子目录local
cd  /usr/local  #切换到目录/usr/local
cd  ..       #切换到上一级目录

命令2:pwd 打印路径

#print work directory
pwd

命令3:touch 建文件

#新建文件
touch
例子1: touch 1.txt  #创建单个文件
例子2: touch test{01..10}.txt #批量创建文件
创建隐藏文件 touch .a.txt
例子3: touch /root/4.txt  #在制定的/root目录下,创建文件4.txt

命令4:ls 查看文件

#查看目录下的文件
ls全称list
例子1:ls  test09.txt   #查看test09.txt是否存在
例子2:ls  *.txt        #查看以txt结尾的所有文件
例子3:ls  -1           #数字l以一行一个文件的方式显示
例子4:ls  -a           #查看所有文件,包括隐藏文件
例子5:ls -a -1         #查看所有文件,以一行一个来显示
例子6:ls -l            #字母l以长格式查看文件
ls -h 显示文件大小

以.开头的文件是隐藏文件,默认不显示

命令5:mv 重命名移动

#重命名
mv全称move
例子1:mv .123.txt 123.txt   #将.123.txt文件重命名为123.txt
例子2:mv 123.txt /opt       #将当前目录下的123.txt移动到/opt目录下

命令6:cp 复制

#复制
cp全称copy
例子1:cp test01.txt /opt/   #将当前目录下的test01.txt复制到/opt目录下
例子2:cp -a dev04 /opt/     #将目录dev04复制到/opt下

命令7:rm 删除

#删除
例子1:  rm /opt/123.txt  #将/opt目录下的123.txt文件删除,需要回复y确认删除
例子2: rm -f /opt/test01.txt #将/opt目录下的test01.txt文件删除,不需要回复

#删除一个目录,linux的参数大部分没有先后顺序
[root@localhost ~]# rm -fr dev
[root@localhost ~]# rm -rf dev01
[root@localhost ~]# rm -f -r dev02
[root@localhost ~]# rm -r -f dev03

命令8:mkdir 建目录

#创建文件夹 创建目录directory
mkdir 全称make directory 
例子1:mkdir dev   #创建一个dev目录
例子2:mkdir dev{01..10}     #批量创建多个目录
例子3:mkdir -p 1/2/3/4/5/6  #一次性创建多级子目录

命令9:vi 编辑器

#vi编辑器
例子1: vi  test03.txt   #编辑文件test03.txt
默认是常规模式,按ioa键进入编辑模式
在编辑模式中按esc回到常规模式
常规模式按:进入命令模式
命令模式按esc回到常规模式

image.png
:set number 显示行号

vim是vi的加强版
使用教程 https://www.runoob.com/linux/linux-vim.html
移动光标 $跳至行尾 gg跳至文首 G跳至文尾
删除复制;x 删除单个字符 dd删除光标所在行,10dd删除10行,使用u撤销,使用ctrl+r恢复,yy复制行,5yy复制5行,p/P粘贴
搜索替换:/ 从上往下搜索 搭配n/N ?向上搜索 :%s/old/new/g 替换 :%s/old/new/g替换是询问
退出编辑器::w 写入文件,即保存修改,:wq 保存修改并退出 :q!强制退出

命令10:tac 查看内容

#从上往下顺序查看文本内容
cat
例子1:cat  test03.txt  #查看test03.txt的全部内容
例子2:cat -n test03.txt #查看内容的时候显示行号
#从下往上倒着查看文本内容
tac
例子1:tac  test03.txt  #倒着查看test03.txt的全部内容

命令11:head 查看头几行

#查看文件头几行
head
例子1: head  test03.txt       #查看文件的前十行,默认
例子2: head  -n 5 test03.txt  #查看文件的前5行
例子3: head  -5  test03.txt   #查看文件的前5行

命令12:tail 查看尾几行

#查看文件倒数几行
tail
例子1: tail  test03.txt       #查看文件的倒数十行,默认
例子2: tail  -n 5 test03.txt  #查看文件的倒数5行
例子3: tail  -5  test03.txt   #查看文件的倒数5行

管道 | 加工处理

使用管道的第一个命令,必须要有输出
ip addr|tail -4|head -1
cat 1.txt|tail -n 4
Linux的管道:最强大的功能
Linux:实现一个复杂的功能,可以使用多个软件一起处理,开放自由
Windows:实现一个复杂的功能,就需要强大的软件

[root@localhost ~]# ip addr
   1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
       link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
       inet 127.0.0.1/8 scope host lo
          valid_lft forever preferred_lft forever
       inet6 ::1/128 scope host 
          valid_lft forever preferred_lft forever
   2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
       link/ether 00:0c:29:83:e4:d9 brd ff:ff:ff:ff:ff:ff
       inet 10.0.0.128/24 brd 10.0.0.255 scope global noprefixroute dynamic ens33
          valid_lft 1253sec preferred_lft 1253sec
       inet6 fe80::ffe1:31ed:56dc:d9aa/64 scope link noprefixroute 
          valid_lft forever preferred_lft forever
[root@localhost ~]# ip addr|tail -4
       inet 10.0.0.128/24 brd 10.0.0.255 scope global noprefixroute dynamic ens33
          valid_lft 1224sec preferred_lft 1224sec
       inet6 fe80::ffe1:31ed:56dc:d9aa/64 scope link noprefixroute 
          valid_lft forever preferred_lft forever
[root@localhost ~]# ip addr|tail -4|head -1
       inet 10.0.0.128/24 brd 10.0.0.255 scope global noprefixroute dynamic ens33
[root@localhost ~]# ip addr|tail -4|head -1|cut -c 10-19
10.0.0.128

命令stat 查看文件属性

image.png

5.目录结构

相/绝对路径

windows
c:\windows\admin

linux 
/ 顶级目录 根目录
/root/dms/
Linux一切皆文件

相对路径:从当前目录开始数,不完整路径
绝对路径:从根路径开始数,完整路径
image.png

目录结构

image.png

/bin      #存放二进制的可执行文件,命令文件,特别重要,不能删除!
          #Windows命令文件都是exe结尾,Linux命令文件没有后缀
/boot     #开机启动需要的文件, 特别重要,不能删除!
/dev      #device设备文件,特别重要,不能删除! 如Windows的设备管理器
/etc      #存放配置文件,特别重要,不能删除! 
          #Windows的注册表
/home     #普通用户的家目录
/lib      #library 32位库,库文件一般是so结尾,特别重要,不能删除! 
          #如Windows的dll
/lib64    #library 64位库,一般是so结尾,特别重要,不能删除!
/media    #多媒体(音乐,视频,文档)
/mnt      #mount挂载光盘,U盘
/opt      #部分软件安装存储目录
/proc     #process进程 , 特别重要,不能删除!
/root     #root用户的家目录,特别重要,不能删除!
/run      #运行,程序运行的时候产生的文件
/sbin     #super bin超级用户才能使用的命令 ,特别重要,不能删除!
/srv      #源代码
/sys      #system系统目录 ,特别重要,不能删除!
/tmp      #用来存放临时文件的目录
/usr      #用户级的目录,特别重要,不能删除!
/var      #variable 变化的文件,特别重要,不能删除!  关注log文件

命令13 统计 wc

#统计
wc
wc -l(字母L)按行统计,不会单独使用,需要接在管道后面
例子1:
[root@localhost ~]# cat test03.txt |wc -l
18
[root@localhost ~]# cat -n test03.txt 
     1	sdsdsdsdsdsdsd是的是的
     2	
     3	sdsd
     4	65656
     5	sdsd
     6	sdsd
     7	sdsd
     8	33333
     9	565656565
    10	33333
    11	565656565
    12	33333
    13	565656565
    14	33333
    15	565656565
    16	
    17	
    18	sdssds  ;;;;

命令14 生成数字序列 seq

#生成数字序列
seq
例子1:产生一个5到12的序列
[root@localhost ~]# seq 5 12
5
6
7
8
9
10
11
12

例子2:产生一个5到12等宽的序列
[root@localhost ~]# seq -w 5 12
05
06
07
08
09
10
11
12

命令15 按行过滤字符串 grep

#按行过滤字符串
grep
例子1: #普通过滤
[root@localhost ~]# grep '3' test03.txt 
33333
33333
33333
33333
例子2: #显示行号
[root@localhost ~]# grep -n '3' test03.txt 
8:33333
10:33333
12:33333
14:33333

grep精准匹配-w

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YQ0tDwkc-1686234300297)(linux%E5%85%A5%E9%97%A8.assets/image-20210720113338479.png#id=rp4mv&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)]

命令16 按列过滤 awk

#按列过滤
awk
例子1: 取列,$1代表第一列,$2代表第二列,$NF代表最后一列
[root@localhost ~]# cat test01.txt 
row 1, cell 1	row 1, cell 2
row 2, cell 1	row 2, cell 2
[root@localhost ~]# awk '{print $1}' test01.txt 
row
row
[root@localhost ~]# awk '{print $2}' test01.txt 
1,
2,
例子2:以逗号,做分隔符
[root@localhost ~]# cat test01.txt 
row 1, cell 1	row 1, cell 2
row 2, cell 1	row 2, cell 2
[root@localhost ~]# awk -F ','   '{print $1}' test01.txt 
row 1
row 2
[root@localhost ~]# awk -F ','   '{print $NF}' test01.txt 
 cell 2
 cell 2

命令17 排序 sort

#排序
sort
例子1:
[root@localhost ~]# cat test02.txt
3
2
6
4
8
7
5
3
2
1
2
3
4
5
6
9
1
5
7
[root@localhost ~]# cat test02.txt|sort -n
1
1
2
2
2
3
3
3
4
4
5
5
5
6
6
7
7
8
9

命令18:统计去重 uniq

#统计去重
uniq
例子1:
[root@localhost ~]# cat test02.txt|sort -n
1
1
2
2
2
3
3
3
4
4
5
5
5
6
6
7
7
8
9
[root@localhost ~]# cat test02.txt|sort -n|uniq -c
      2 1
      3 2
      3 3
      2 4
      3 5
      2 6
      2 7
      1 8
      1 9

6.用户和用户组管理

命令19 查看所有用户最后的登录时间 lastlog

#作用查看所有用户最后的登录时间
lastlog
例子:
[root@qstack ~]# lastlog 
Username         Port     From             Latest
root             pts/0    111.198.38.138   Mon Sep  6 11:17:25 +0800 2021
bin                                        **Never logged in**
daemon                                     **Never logged in**
adm                                        **Never logged in**
lp                                         **Never logged in**
sync                                       **Never logged in**
shutdown                                   **Never logged in**
halt                                       **Never logged in**
mail                                       **Never logged in**
uucp                                       **Never logged in**
operator                                   **Never logged in**
games                                      **Never logged in**
gopher                                     **Never logged in**

命令20:useradd 创建用户

#创建用户
useradd 
#创建一个用户
例子1:useradd  test1    创建目录时默认自己一组
ls /home/

#创建用户,并给用户指定用户组
例子2:
[root@localhost tmp]# useradd  -g test1  test3
[root@localhost tmp]# id test3
uid=1002(test3) gid=1000(test1)=1000(test1)

命令21:passwd 设置密码

#设置密码
passwd
例子1:passwd  test1
#用root用户给普通用户修改密码
[root@localhost ~]# passwd test1
更改用户 test1 的密码 。
新的 密码:
无效的密码: 密码是一个回文
重新输入新的 密码:
passwd:所有的身份验证令牌已经成功更新。

#普通用户自己修改密码
[test1@localhost ~]$ passwd 
更改用户 test1 的密码 。
为 test1 更改 STRESS 密码。
(当前)UNIX 密码:
新的 密码:
无效的密码: 密码少于 8 个字符
新的 密码:
无效的密码: 密码少于 8 个字符
新的 密码:
无效的密码: 密码未通过字典检查 - 过于简单化/系统化
passwd: 已经超出服务重试的最多次数

例子3:
#免交互修改密码
echo 123456|passwd --stdin test1

使用新建的用户登录

本地登录 login:** password:** ,远程登陆 ssh test@ip地址
Windows只支持同时一个用户登陆
Linux 支持多用户同时登陆,登陆一个用户就开启了一个终端 w 命令可查看打开终端个数

命令 w 查看终端个数

命令22:id 查看用户信息

#检查用户是否存在
id
例子1: 
#用户存在,系统的返回结果
[root@localhost ~]# id test1
uid=1000(test1) gid=1000(test1)=1000(test1)

#用户不存在,系统的返回结果
[root@localhost ~]# id test2
id: test2: no such user

命令23:userdel删除用户

#删除用户   ***删除用户后用户家目录,信箱不会删除**
userdel 
例子1:
#被删除的用户还在登录状态
[root@localhost ~]# userdel test1
userdel: user test1 is currently used by process 2356
#被删除的用户,退出登录之后,可以正常删除
[root@localhost ~]# userdel test1

命令24:usermode修改用户信息

#修改用户信息      
usermode     
uesrmode -h 查看帮助

#修改用户组信息
修改用户主组usermod -g test dms  将用户dms的组修改为test
添加多个组usermod -G test dms

#锁定用户
例子1:
[root@localhost ~]# usermod -L test1  -U 解锁
[root@localhost ~]# lchage -l test1  (字母l)查看用户是否被锁
帐号被锁。
至少:	0
至多:	99999
警告:	7
不活跃:	从不
最后一次改变:	2021年07月20日
密码过期:	从不
密码不活跃:	从不
帐号过期:	从不

#禁止用户登录
[root@localhost ~]# usermod -s /sbin/nologin test2
[root@localhost ~]# grep -w 'test2' /etc/passwd
test2:x:1001:1001::/home/test2:/sbin/nologin

命令25: 查看用户详细信息 lchage

#查看用户详细信息
lchage
例子1:
[root@localhost ~]# lchage -l test1
帐号没被锁。
至少:	0
至多:	99999
警告:	7
不活跃:	从不
最后一次改变:	2021年07月20日
密码过期:	从不
密码不活跃:	从不
帐号过期:	从不

/etc/passwd

所有的用户信息存储在/etc/passwd文件中

root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
polkitd:x:999:998:User for polkitd:/:/sbin/nologin
tss:x:59:59:Account used by the trousers package to sandbox the tcsd daemon:/dev/null:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin   以上都是系统用户
test1:x:1000:1000::/home/test1:/bin/bash 新建用户都是从1000开始
#passwd文件解释
root:x:0:0:root:/root:/bin/bash
test1:x:1000:1000::/home/test1:/bin/bash
test2:x:1001:1001::/home/test2:/sbin/nologin
test3:x:1002:1000::/home/test3:/sbin/nologin
haha:x:1004:1004:putong user:/home/haha:/bin/bash
第一列:用户名
第二列:x
第三列:uid
第四列:gid 组id
第五列:注释,备注,一般为空
第六列:家目录的位置
第七列:使用shell的名称,默认使用/bin/bash

/etc/shadow

所有的用户密码信息存储/etc/shadow

[root@localhost ~]# cat /etc/shadow
root:$6$QM3AHtFflOvGbCnt$2wTYZrnO8c66vycaxprE79G.I7hiy8EqXntG86FXxqlSawjtKoTjAnAa9xFA3ad1QpFskJRPt0QeDPBnZZAdx0::0:99999:7:::
bin:*:18353:0:99999:7:::
daemon:*:18353:0:99999:7:::
adm:*:18353:0:99999:7:::
lp:*:18353:0:99999:7:::
sync:*:18353:0:99999:7:::
shutdown:*:18353:0:99999:7:::
halt:*:18353:0:99999:7:::
mail:*:18353:0:99999:7:::
operator:*:18353:0:99999:7:::
games:*:18353:0:99999:7:::
ftp:*:18353:0:99999:7:::
nobody:*:18353:0:99999:7:::
systemd-network:!!:18827::::::
dbus:!!:18827::::::
polkitd:!!:18827::::::
tss:!!:18827::::::
abrt:!!:18827::::::
sshd:!!:18827::::::
postfix:!!:18827::::::
chrony:!!:18827::::::
test1:$6$7PLnhlcr$4SCHINbWrameVSn6rxYgDOeUBwvYOHVbEOIudtNxWXIl5ULSt1Om8FvK6R3s9fI0qNef1vq8NhVMNJwudmfkM1:18828:0:99999:7:::

用户组管理

image.png

groupaddgroupdelgroupmod 
查  看/etc/group

命令26 增加一个用户组 groupadd

#增加一个用户组
groupadd
例子:
groupadd test  #创建用户的时候可以指定组   useradd -g test(组) test2(用户)

命令27 删除一个用户组 groupdel

#删除一个用户组
groupdel
例子: groupdel test
删除组之前删除用户,或给之前的用户改个其他组在删除

命令28 修改一个用户组 groupmod

#修改一个用户组
groupmod
例子1:groupmod -g 999 test #修改用户组的组id
例子2:groupmod -n haha test #讲用户组test修改为新的组名haha

章节练习

image.png
image.png

  1. mkdir -p /test/1/2/3 在根目录下创建 , mkdir -p test/1/2/3 在当前目录创建
  2. ls -l /tmp -l 显示详细信息
  3. rm -rf /tmp/* -f 删除免询问,-r 删除目录
  4. mkdir /abc 已在根时 mkdir abc
  5. touch linux{1…1000}.txt
  6. rm -rf linux{1…1000}.txt
  7. cp /boot/vmlinuz* /abc
  8. ls /usr/bin|wc -l -l 按一行一个统计
  9. head -n 10 /etc/passwd
  10. mkdir /data
  11. cd /data/|touch linux.txt
  12. vi linux.txt 按i 输入 按esc 输入wq 退出保存
  13. cp linux.txt /tmp
  14. mv /data /root/
  15. rm -rf linux.txt
  16. rm -rf data
  17. echo a
  18. useradd lisi passwd lisi
  19. usermod -L lisi 锁定用户 ,lchage -l lisi 查看用户是否锁定
  20. head -n 3 /etc/passwd tail -n 3 /etc/passwd

7.权限管理

root用户权限最高
user普通用户
users用户组

文件权限:rwx 读写执行
目录的权限:rwx r查看目录下有哪些文件,w 对目录下的文件进行增删改,x能否cd进入目录
文件权限默认 :644 600
目录权限默认:755 70

文件权限

r 4 代表读权限 read
w 2 代表写权限 write
x 1 代表执行权限   必须是可执行的命令文件
- 0 空权限位

可执行文件程序:
1.要么使用完整路径执行  如/tmp/wegt  c:\windows\p..\qq.exe
2.放在特定目录下(环境变量目录)windows的环境变量目录 Linux的echo $path

权限值表
0 ---
1 --x
2 -w-
3 -wx
4 r--
5 r-x
6 rw-
7 rwx

eg: lrwxtwxtwx    第一个字母代表文件类型
    drwxr-xr-x    -: 普通文件
    -rw-------    d: 目录文件
                  l:快捷方式
后面三个三个为一组
rw-   r--    r-- 
user  group  other   :所属用户的权限,所属用户组的权限,其他人权限
udo文件体系

命令25 改变文件的权限 chmod

#改变文件的权限
chmod
例子1:
#修改权限之前
[test1@localhost tmp]$ ls -l
总用量 4
-rw-rw----. 1 test1 test1 8 720 17:20 test1.txt
#修改权限
[test1@localhost tmp]$ chmod u+x test1.txt 
#修改权限之后
[test1@localhost tmp]$ ls -l
总用量 4
-rwxrw----. 1 test1 test1 8 720 17:20 test1.txt

例子2:
同时修改多个权限
[test1@localhost tmp]$ chmod u-x,g-x,o+x test1.txt 
[test1@localhost tmp]$ ls -l
总用量 4
-rw-rw---x. 1 test1 test1 8 720 17:20 test1.txt

例子3:
[test1@localhost tmp]$ chmod 777 test1.txt 
[test1@localhost tmp]$ ls -l
总用量 4
-rwxrwxrwx. 1 test1 test1 8 720 17:20 test1.txt

命令26 修改文件的所属 chown

#修改文件的所属
chown
例子1:
[root@localhost tmp]# chown test2:test2 ls
[root@localhost tmp]# ls -l
总用量 404
-rwxr-xr-x. 1 test2 test2 159024 720 17:43 grep
-rwxr-xr-x. 1 test2 test2 117608 720 17:38 ls
-rwxr-xr-x. 1 test1 test1 130360 720 17:43 mv
-rw-rw-rw-. 1 test1 test1     14 720 17:38 test1.txt
[root@localhost tmp]# chown test1 ls
[root@localhost tmp]# ls -l
总用量 404
-rwxr-xr-x. 1 test2 test2 159024 720 17:43 grep
-rwxr-xr-x. 1 test1 test2 117608 720 17:38 ls
-rwxr-xr-x. 1 test1 test1 130360 720 17:43 mv
-rw-rw-rw-. 1 test1 test1     14 720 17:38 test1.txt

#使用uid和gid修改文件的所属用户和所属用户组  属主,属组
例子2:
[root@localhost tmp]# ls -l
总用量 404
-rwxr-xr-x. 1 test2 test2 159024 720 17:43 grep
-rwxr-xr-x. 1 test1 test2 117608 720 17:38 ls
-rwxr-xr-x. 1 test1 test1 130360 720 17:43 mv
-rw-rw-rw-. 1 test1 test1     14 720 17:38 test1.txt
[root@localhost tmp]# id test1
uid=1000(test1) gid=1000(test1)=1000(test1)
[root@localhost tmp]# id test2
uid=1001(test2) gid=1001(test2)=1001(test2)
[root@localhost tmp]# useradd  -g test1  test3
[root@localhost tmp]# id test3
uid=1002(test3) gid=1000(test1)=1000(test1)
[root@localhost tmp]# chown 1001:1001 test1.txt 
[root@localhost tmp]# ls -l 
总用量 404
-rwxr-xr-x. 1 test2 test2 159024 720 17:43 grep
-rwxr-xr-x. 1 test1 test2 117608 720 17:38 ls
-rwxr-xr-x. 1 test1 test1 130360 720 17:43 mv
-rw-rw-rw-. 1 test2 test2     14 720 17:38 test1.txt

文件属性

#文件属性
[root@localhost ~]# ls -l /tmp/123.txt
-rw-r--r--. 1 root root 0 720 23:17 /tmp/123.txt
#第一段的第一个字符,表示文件类型 -文件 d目录 l软链接 b块设备
#第一段第2-4字符,表示该文件所属用户的权限
#第一段第5-7字符,表示该文件所属用户组的权限
#第一段第8-10字符,表示其他用户对该文件的权限
#第一段的第11个字符,表示开启selinux的状态下创建的  查看seminux状态sestatus
#第二段的数字,表示该文件的硬链接数量
#第三段的字符串,表示该文件所属用户
#第四段的字符串,表示该文件所属用户组
#第五段的数字,表示该文件的大小
#第六段到倒数第二段,都是该文件的修改时间
#最一段,该文件的名称

修改seLinux状态 vi /etc/selinux/config
linux一切皆文件的系统

8.Linux Shell

Windowsimage.png
Linux image.png
shell 壳
Linux的shell命令

优化ssh登录速度

#修改配置文件,先备份
[root@localhost ~]# cp /etc/ssh/sshd_config /tmp/
[root@localhost ~]# vi /etc/ssh/sshd_config 
#直接输入:79回车
    79  GSSAPIAuthentication no
    115 UseDNS no
输入:wq保存退出

#重启sshd服务
[root@localhost ~]# systemctl restart sshd

#如果修改失败,还原配置文件
[root@localhost ~]# cp  /tmp/sshd_config  /etc/ssh/sshd_config
[root@localhost ~]# systemctl restart sshd

shell提示符

#root用户提示符
[root@localhost ~]#   localhost 主机名 改主机明名 hostname ***
#普通用户test1的提示符
[test1@localhost ~]$ 
[用户名@主机名 所在目录]#

#提示符格式定制
原格式
[root@test ~]# echo $PS1
[\u@\h \W]\$   # \u是用户,\h是主机名,\W是相对路径 
修改后
[root@test ~]#cd /usr/local/bin/
[root@test bin]#export  PS1='[\u@\h \w]\$'
[root@test /usr/local/bin]#

#永久修改
[root@test 10:23:39 /usr/local/bin]#cd
[root@test 10:24:25 ~]#vi .bashrc 
#找个空白的地方,插入一行
export  PS1='[\u@\h \t \w]\$'

linux路径

相对路径  不完整路径,  例子../bin  bin   .当前目录  .. 上级目录
绝对路径  也叫完整路径,例子/usr/local/bin/

命令hostname 临时修改主机名

#临时修改主机名
hostname
例子1:
[root@localhost ~]# hostname test
#需要重新登录生效

命令hostnamectl 主机的信息

hostnamectl

#查看主机的信息
[root@localhost ~]# hostnamectl 
   Static hostname: localhost.localdomain
         Icon name: computer-vm
           Chassis: vm
        Machine ID: f8a89169114741a8ac6de82954c5fbcb
           Boot ID: dcf65386ccda42e29699d56101af8cf1
    Virtualization: vmware
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-1127.el7.x86_64
      Architecture: x86-64

#永久修改主机名
[root@localhost ~]# hostnamectl set-hostname test
#需要重新登录生效

命令reboot 重启系统

#重启系统
reboot
例子1:
[root@test ~]# reboot

命令shutdown 关闭或者重启linux

#关闭或者重启linux
shutdown
例子1:
#立即关机
[root@localhost ~]# shutdown -h now

例子2:
#5分钟之后关机,可以使用shutdown -c取消
[root@localhost ~]# shutdown -h 5

例子3:
#5分钟之后重启系统,可以使用shutdown -c取消
[root@localhost ~]# shutdown -r 5

shell基础语法

格式1:只有一个命令没有参数  ls pwd id
格式2:命令只有一个参数  ls -l
格式3:命令黛多个参数 ls -s -l -h == ls -alh
格式4:命令带参数带一个目标 ls -l /boot   rm -rf /tmp/*
格式5:命令带一个目标  cd /tmp  ls /tmp  mkdir useradd 
格式6:命令带多个目标  cp 目标1 目标2  cp 目标1 目标2 .. 文件夹
格式7: 命令带多个参数带多个目标
ls -a -l -h /tmp /root /opt
cp -a -v /root /root


命令   参数   目标
ls   -a -l   /opt 
rm   -rf    /opt/test1

命令   目标1...   目标2
mv    源路径     目标路径
cp    

命令
reboot

[root@test 11:12:02 /opt]#mv --help
用法:mv [选项]... [-T] 源文件 目标文件
 或:mv [选项]... 源文件... 目录
 或:mv [选项]... -t 目录 源文件...
#格式解释
[选项] 可选的
...    可以有多个

tab键补全

补全命令
#如果预选的特别多
[root@test 11:25:24 ~]#
Display all 1400 possibilities? (y or n)

#如果预选少
[root@test 11:25:24 ~]#cha
chacl   chage   chattr 

补全路径
#如果预选的特别多
[root@test 11:25:24 ~]#cd /etc/
Display all 188 possibilities? (y or n)
#如果预选少
[root@test 11:25:24 ~]#cd /usr/src/
debug/   kernels/

快捷键

Ctrl + a    #光标跳转至正在输入的命令行的首部
Ctrl + e    #光标跳转至正在输入的命令行的尾部
Ctrl + c    #终止前台运行的程序
Ctrl + d    #在shell中,ctrl-d表示推出当前shell。
Ctrl + z    #将任务暂停,挂至后台, 执行fg命令继续运行
Ctrl + l    #清屏,和clear命令等效。
Ctrl + k    #删除从光标到行末的所有字符
Ctrl + u    #删除从光标到行首的所有字符
Ctrl + r    #搜索历史命令, 利用关键字
ctrl + w    #光标往前删除一个参数
esc + .     #上一条命令的最后一个参数,或者目标

history历史命令

#历史
history
例子1:
[root@test 14:32:10 ~]#history
    1  exit
    2  ls
    3  head -1 test03.txt 
    4  head -1 test03.txt|cat
    5  head -1 test03.txt|tac
    6  head -2 test03.txt|tac
    7  head -2 test03.txt|cat
    8  ip addr
    9  ip addr|tail -4
   10  ip addr|tail -4|head -1
   ......

例子2:
#使用!调用历史命令
[root@test 14:32:10 ~]#history|head -5
    1  exit
    2  ls
    3  head -1 test03.txt 
    4  head -1 test03.txt|cat
    5  head -1 test03.txt|tac
[root@test 14:32:26 ~]# !3
 head -1 test03.txt 
head: 无法打开"test03.txt" 读取数据: 没有那个文件或目录

#使用!调用mv开头的命令
[root@test 14:42:17 ~]#history 
    1  ls -a -l .bash_history 
    2  history 
    3  ls
    4  history 
    5  mv aaaaa.txt /tmp/
    6  history 
[root@test 14:42:19 ~]#!mv
mv aaaaa.txt /tmp/
mv: 无法获取"aaaaa.txt" 的文件状态(stat): 没有那个文件或目录


例子4:
#清除历史记录
history -c

历史记录保存在家目录下的.bash_history文件中

命令别名

#别名
alias
例子1:
#查看别名
[root@test 15:23:17 ~]#alias 
alias cp='cp -i'
alias egrep='egrep --color=auto'
alias fgrep='fgrep --color=auto'
alias grep='grep --color=auto'
alias l.='ls -d .* --color=auto'
alias ll='ls -l --color=auto'
alias ls='ls --color=auto'
alias mv='mv -i'
alias rm='rm -i'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

例子2:
#添加别名
[test1@test 15:24:23 ~]$alias rm='rm -i'
[test1@test 15:27:08 ~]$alias |grep rm
alias rm='rm -i'

例子3:
#取消别名
[test1@test 15:27:13 ~]$unalias rm 
[test1@test 15:27:47 ~]$alias |grep rm

例子4:
#alias永久生效
[root@localhost ~]# vi .bashrc 
#空白处,增加一行
alias rm='echo -bash: rm: 未找到命令'

9.linux输入输出重定向

>  输出重定向, 将命令执行结果不输出到屏幕上,输出到文件里,会清空原文件
eg: head -20 services > 1.txt    echo 1 > 1.txt   >1.txt 这个文件就空了
>> 输出追加重定向,不会清空原文件,在原有内容后追加
ip addr|tail -n 4|head -n 1 >> 1.txt 
输出重定向仅限于文件,不能是目录

#输入
#标准输入0

#输出
#标准正确输出1
#标准错误输出2
cat 5.txt 1>1.txt 2>2.txt  有正常输出的话会重定向到1.txt
cat hghjg 1>1.txt 2>2.txt   cat hghjg命令报错,报错内容为重定向到2.txt

10.linux压缩打包

压缩 tar -zcf 压缩路径 目标1 目标2 …
解压缩 tar -zxf 压缩路径
压缩 gzip 目标1 目标2 …
解压缩 gzip -d 压缩文件1 压缩文件2…
压缩 zip -r 123.zip day01
解压缩 unzip 123.zip
不同的压缩包格式,要用不同的命令来解压缩

tar解压缩

#打包和解压缩
tar
例子1:
#归档,不压缩  多个文件归档为 test.tar或tets.tar.gz也行
tar -cf test.tar vmlinuz-*  
例子2:
#压缩并归档    -v 显示详细信息
tar -zcf test2.tar.gz vmlinuz-*  z压缩c创建压缩包f后跟路径
将vmlinuz-*压缩为test.tar.gz
#压缩多个文件
tar -zcf 1.tar.gz smd.txt service 2.txt
将三个文件压缩为为1.tar.gz
#解压缩
tar -zxf test.tar.gz
例子3:
#查看压缩包内容
[root@localhost ~]# tar -tf test.tar 
vmlinuz-0-rescue-f8a89169114741a8ac6de82954c5fbcb
vmlinuz-3.10.0-1127.el7.x86_64
例子4:
#解压缩
tar -xf test.tar

gzip解压缩

#打包和压缩   压缩后源文件不在
gzip
#压缩单个文件
gzip protocols
#压缩多个文件,每一个文件产生一个单独的压缩包
gzip  hosts passwd shadow
#解压缩
gzip -d hosts.gz passwd.gz protocols.gz shadow.gz

zip解压缩

#压缩
zip
例子1:
zip -r 123.zip day01
#解压
unzip
例子1:
[root@localhost file]# unzip 123.zip
#解压rar包
#需要安装软件
yum install epel-release -y
yum install unar -y
#再进行解压
unar -o /opt 456.rar

查看文件类型file

#查看文件类型
file
例子1:
file 123.zip

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-dl501gEp-1686234300299)(linux%E5%85%A5%E9%97%A8.assets/image-20210722112503032.png#id=bzO4p&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)]

11.文件传输

image.png

ping 检查网络畅通

#检查网络畅通
ping
例子1:ping 223.5.5.5
#如果网不通,重启网络服务
systemctl restart network

下载文件 curl

#下载文件
curl
例子1:
#下载文件
curl -o 123.zip http://192.168.18.10/day01.zip
curl -o 1.txt http://192.168.18.10/jhs..../2.txt
curl -o 新名字 连接地址    

wget 下载

wget 连接url
wget http://192.168.18.10/day01.zip

scp传输

#主要用于linux和linux服务器之间传输文件
scp typora-setup-x64.exe  root@10.0.0.128:/tmp
scp 文件1 文件2.. 目标用户@目标用户IP:目录

#windows给linx传   win10以上版本 且路径路径不能有中文
在windows中输入
scp 文件1 目标用户@目标用户IP:目录   scp 1.zip root@127.168.2.1:/tmp
win和win不能相互传,除非装上ssh服务端

rz sz传输

#上传和下载
rz  #上传
sz  #下载
#先安装lrzsz软件包
yum  install lrzsz  -y
#上传的例子   win传给linx
如果使用xshell,直接鼠标拖拽,或者执行rz -E选择要上传的文件
#下载的例子  下载到win
sz 1.txt
sz /root/test3.tar.gz

xftp上传下载
下载xftp软件

章节练习

  1. 下载文件并保存到/opt目录,文件下载地址为http:docs.gstack.com.cn/man_db.conf shift+insert 可以粘贴

cd /opt wget http:docs.gstack.com.cn/man_db.conf
curl -o /opt/man_db.conf http:docs.gstack.com.cn/man_db.conf

  1. 将第上题下载的文件,备份一份到/data目录,并修改文件的用户和用户组为test

mkdir /data , cp man_db.conf /data , useradd test ,chown test:test man_db.conf

  1. 分别使用zip和gzip命令压缩第二题下载的文件,看看它们谁的压缩比率高?

gzip man_db.conf , zip -r man_db.zip man_db.conf

  1. 解压第五题产生的gz压缩文件088428c702d73hca

gzip -d man_db.conf.gz ,

  1. 使用vim打开下载的man_db.conf这个文件:

yum install vim , vim man_db.conf

  1. 在vim中设置一下行号:

:set nu :set unmber

  1. 移动到第43行,向右移动59个字符,请问你看到的小括号内是哪个文字?

43gg 59右键

  1. 移动到第一行,并且向下搜寻一下"gzp"这个字串,请问他在第几行?/

gg /1G/:1 向下搜索/ 向上搜索? /gzip

  1. 接着下来,我要将29到41行之间的"小写man字串"改为"大写MAN字串”,并且一个一个挑选是否需要修改,如何下达指令?如果在挑选过程中一直按"y”,结果会在最后一列出现改变了几个man呢?

:29,41s#man#MAN#gc

  1. 修改完之后,突然反悔了,要全部复原,有哪些方法?

一种一直按u ctrl R可以撤销 二种 强退 :q!

  1. 我要复制66到71这6行的内容(含有MANDB MAP),并且贴到最后一行之后:

去到66行 66gg 复制6行 6yy 跳转最后一行 G (shift+g)粘贴p

  1. 113到128行之间的开头为#符号的注解数据我不要了,要如何删除?

去到113 113gg 删掉15行 16dd 或者V(sheft+v)向下选中 d 删除

  1. 将这个文件另存成一个man.test.config的文件名:

:w man.test.config :w /root/man.test.config

  1. 去到第25行,并且删除15个字符,结果出现的第一个单字是什么?

25gg 15x

  1. 在第一行后新增一行,该列内容输入"I am a student…":

1gg o I am a student…

  1. 保存后离开吧!

:wq

  1. 统计上题修改后的文件的行数和文件大小

ls -l wc -l man_db.conf

  1. 请用tar打包/etc整个目录

tar -zcf etc.tar.gz /etc

  1. 修改当前虚拟机主机名为1inux01,并克隆一台新1inux虚拟机,修改它的主机名为1inux02

hostname 1inux02 连接克隆
临时修改主机名 hostname linux1
永久修改主机名 hostnamectl set-hostname linux2

  1. 已知文件的下载地址如下,将它下载到主机1inux01的/opt目录下https://nainx.ora/download/ngainx-1.20.1.tar.az

wget https://nainx.ora/download/ngainx-1.20.1.tar.az

  1. 将上题下载的文件,使用scp从1inux01上面发送到1inux02的/tmp目录下

scp ngainx-1.20.1.tar.az root@192.168.21.3:/tmp

  1. 在1inux01上使用ssh命令远程登录到主机1inux02,然后查看/tmp目录下的文件

ssh root@192.168.21.3

12.软件的安装

windows的软件
源代码 c++ 编译 编译后就形成了exe文件
单个exe软件 双击就能运行
绿化软件 idm
安装包
Linux
编译后为二进制可执行文件

编译安装

1.下载源码包
cd /opt/
rm -fr *
curl -o nginx.tar.gz http://nginx.org/download/nginx-1.20.1.tar.gz

2.编译
tar xf nginx.tar.gz 解压
cd nginx-1.20.1/
#编译参数
./configure --prefix=/usr/local/nginx --without-pcre --without-http_rewrite_module --without-http_gzip_module
#编译
make
#安装
make install

3.运行
/usr/local/nginx/sbin/nginx   bin存放可执行文件
#使用浏览器访问http://<虚拟机的ip地址>
#关闭防火墙
systemctl stop firewalld
#取消防火墙的开机自启
systemctl disable firewalld

yum安装

#自动解决rpm依赖
#yum安装扩展yum仓库
yum install epel-release -y
#yum安装nginx
yum install nginx -y
#yum移除nginx
yum remove nginx -y
yum list|grep ^bash 查找tab 安装包
yum install bash-completion.noarch bash-completion-extras.noarch -y 所有tab

yum provides pstree
查找哪个软件包提供pstree命令

image.png
yum会自动选择镜像源
image.png

rpm安装

#redhat package manager包管理器
#安装wget
yum install wget -y
#使用wget下载rpm包
wget https://mirrors.tuna.tsinghua.edu.cn/centos/7/os/x86_64/Packages/tree-1.6.0-10.el7.x86_64.rpm

#安装rpm包
rpm -ivh tree-1.6.0-10.el7.x86_64.rpm 
#卸载
rpm -e tree
#升级
rpm -Uvh  xxx.rpm
#查看已安装的软件
rpm -qa|grep httpd
rpm -qa  列举安装的软件
rpm -ql 软件  列举软件包里有哪些文件
rpm -ql net.tools

命令 tree 树状的显示目录文件

#以树状的显示指定目录下的目录和文件的名称
tree
例子1:
下载路径  yum install tree -y
tree /usr/local

安装方法总结

编译安装:优点: 自由定制  痛点:难度高,步骤繁琐
rpm安装:优点:安装简单   痛点:需要自己解决依赖,不支持定制
yum安装:优点:自动解决依赖,默认安装最新版  痛点:不支持定制

13.find文件查找

#文件查找
例子1:普通查询
find   /etc    -maxdepth 1  -type f  -name "pa*"
命令   搜索目录...  查找深度      类型      文件名称
类型 f文件  d目录 L软连接

忽略大小写查询
find /etc -maxdepth 1    -iname "pa*"

image.png

例子2:按照文件大小查找(单位kmg)
查找大于100M的文件
find / -type f -size +100
查找小于2K的文件
find /root/ngix-1.20.2 -type f -size -2k
查找大于50M同时小于100M的文件
find / -type f -size +50 -and -size -100M

image.png

例子3:
根据修改时间查找文件
#时间单位为天
find /opt -type f -mtime -1   #-1代表一天以内,+1一天以前
find /var/ -type f -mtime +1 -and -mtime -7  一天一前7天以内
#时间单位为分钟
[root@localhost ~]# find /root -type f -mmin -20
/root/.bash_history
/root/ReadMe.txt
/root/.lesshst
时间参数
atime:最后访问时间,按天算         amin  按分钟算
mtime:文件内容修改时间     mmin
ctime:文件属性修改时间     cmin 

image.png

#取反
除了它其他都查出来

image.png

#按照用户/用户组查找
find / -user text
find / -group smd
#根据权限来查
find / -type f -perm 777
例子5:
格式      \为转义字符  {}为占位符
find /root -type f -size +10k -user dms .... -exec rm -rf {} \;
对找出的文件进行处理
find /root -type f -mmin -30  ! -name ".*"  -exec rm {} \;  把查找出的文件删除
find /root  -maxdepth 1  -type d  -name "Apa*"   -mmin -30 -exec cp -a {} /tmp \;  把查找出的文件复制到/tmp下

linux 里用分号把命令隔开,可执行多条命令
image.png

14.进程管理

Windows的任务管理器
程序:(一堆)文件 ,静态文件
进程:正在运行的程序

ps

#查看进程
ps
参数1:ps -ef  每个用户启动的进程/执行哪些命令

UID     PID     PPID    C   STIME      TTY   TIME   CMD
用户    进程id  父进程      start time               执行的命令

命令pstree 树状显示进程

kill

#关闭进程
kill
例子1: kill  7851  #kill pid使用进程id号,来终止进程
      kill -9 pid 强制kill 慎用!!!!
pkill 
例子1: pkill sleep  #使用进程的命令名称,来终止进程  容易误伤

top lscpu free df

#查看计算机的cpu,内存,进程等信息(windows的任务管理器)
top

lscpu    查看cpu
free -h   看内存
df -h  看硬盘  

image.png

15.定时任务

定期执行任务
分 时 日 月 周 cmd
1-60 0-23 1-31 1-12 1-7

date

#时间命令
date
例子1:
#查看时间
[root@localhost ~]# date
2021年 07月 23日 星期五 14:38:19 CST
[root@localhost ~]# date +%F
2021-07-23
[root@localhost ~]# date +%T
14:35:47

例子2:
#修改时间
[root@localhost ~]# date -s '20200723 14:40:00'
2020年 07月 23日 星期四 14:40:00 CST
#定时任务的格式
*  *  * *  *    cmd
分 时 日 月 周  任意命令
分:0-59
时:0-23
日:0-31
月:1-12
周:1-7

*每
*/5 每5分钟
05 第五分钟
1,15 第1,15分钟执行

#每隔一分钟
* * * * * >>/tmp/time.txt 
#每5分钟执行一次
*/5  *  * *  *

#每1小时执行一次 每小时的01分钟执行一次
01 */1 * * *

#每半个小时执行一次
00,30  */1 * * *

#每天晚上8:00执行一次
00 20 */1 * *

#每周1晚上8:00执行一次
00 20 */1 * 1,3,5

#查看定时任务,遇到特殊符号%,需要添加转义符号\;
[root@localhost ~]# crontab -l
* * * * *  echo `date +\%T` >>/tmp/time.txt

#编辑定时任务
[root@localhost ~]# crontab -e    #edit

如果定时任务的格式,或者内容有问题,系统都会发邮件提示

image.png

tail 追踪文件的尾部变化

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MF8cie7x-1686234300303)(linux%E5%85%A5%E9%97%A8.assets/image-20210723153640801.png#id=pD2UQ&originalType=binary&ratio=1&rotation=0&showTitle=false&status=done&style=none&title=)]image.png

which 查看命令文件的路径

image.png

16.优化系统

1.优化ssh
备份 cp /etc/ssh/sshd_config /tmp/
vi /etc/ssh/sshd_config   
:set nu 设置显示行数
79gg 跳到79
79行:GSSAPIAuthentication no
回到常规模式 115gg  x删除单个字符  删除#
115行:UseDNS no
:wq
重启服务systemctl restart sshd

2.优化se1inux
#修改配置文件,永久关闭
vi /etc/selinux/config
#第7行修改为
SELINUX=disabled
需要重启生效
#立即生效,临时的
setenforce 0

image.png

3.关闭firewalld
systemctl stop firewalld
systemctl disable firewalld
4.优化yum源   这个不优化 有时不好用
curl -o /etc/yum.repos.d/Centos-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
5.安装常用软件
yum install lrzsz vim tree wget net-tools screen tcpdump bash-completion -y

1rzsz(上传下载)
vim(编辑器) 
tree(树状显示目录)
wget(下载) 
net-tools(网络工具)  rpm -ql net.tools 装后 ifconfig    ifconfig ens33
screen   屏幕 类似于进程快照
  开始使用screen 键入screen
   查看screen窗口  screen -ls
   恢复screen    screen -r pid 
tcpdump  抓包   Windows的wireshark  tcpdump -i ens33 port 22
bash-completion   table快捷键的加强版  超级自动补全

image.png

17.服务管理

软件:
客户端软件:qq工具 wget 用的时候打开一下
服务端软件:nginx网站的服务端软件 一直开着 也叫做服务 开机自启
重启服务 启动服务,停止服务 停服 服务挂了 服务宕机

安装服务 软件

安装httpd
yum install httpd -y

服务管理

启动服务
systemctl  start  httpd  #start启动
停止服务
systemctl  stop   httpd  #stop停止
重启服务
systemctl  restart   httpd #restart重启
查看服务状态
systemctl  status   httpd  #查看服务状态
把服务设置为开机启动
systemctl enable httpd.service
取消服务的开机自启
systemctl disable httpd.service

image.png
image.png
软件和服务都是程序
软件一般是客户端curl
服务一般是给客户端提供某一个功能,7*24一直运行

netstat 命令 打印网络状态信息

netstat命令用来打印Linux中网络系统的状态信息,可让你得知整个Linux系统的网络情况。
用法:netstat [选项]
参数:

  • -a或–all:显示所有连线中的Socket;
  • -l或–listening:显示监控中的服务器的Socket;
  • -n或–numeric:直接使用ip地址,而不通过域名服务器;
  • -t或–tcp:显示TCP传输协议的连线状况;
  • -p或–programs:显示正在使用Socket的程序识别码和程序名称;

案例:

netstat -an
netstat -anltp

image.png

ProtoRecv-QSend-QLocal AddressForeign AddressStatePID/Program name
协议网络接收队列网路发送队列本地地址外部地址端口状态进程ID/程序名

协议:主要有tcp协议与udp协议, 网络协议是通信计算机双方必须共同遵从的一组约定。如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。具体的内容,我们将会在之后的章节中介绍。
recv-Q 表示网络接收队列 表示收到的数据已经在本地接收缓冲,但是还有多少没有被进程取走。 如果接收队列Recv-Q一直处于阻塞状态,可能是遭受了拒绝服务 denial-of-service 攻击。
send-Q 表示网路发送队列
对方没有收到的数据或者说没有Ack的,还是本地缓冲区。 如果发送队列Send-Q不能很快的清零,可能是有应用向外发送数据包过快,或者是对方接收数据包不够快。
本地地址与外部地址,分别以本地IP+端口,外部IP+端口的形式表达。

  • IP地址是IP协议提供的一种统一的地址格式,目前,你只需知道它是由4组从0到255的数字组成,以0.0.0.0至255.255.255.255的形式表达的,可以表示计算机的网络位置(地址)的地址格式。更详细的内容我们将会在后续章节中介绍。
  • 端口(port),可以认为是设备与外界通讯交流的出口。目前您只需理解,如果把IP地址比作一间房子,端口就是出入这间房子的门,计算机上的各类服务借由此“门”与外界通信。一个IP可以有65535(216)个端口。在一个计算机上,每个服务都会启用一个端口。

state(当前端口状态)有以下几种状态:

端口状态意义
LISTEN侦听来自远方的TCP端口的连接请求
SYN-SENT再发送连接请求后等待匹配的连接请求
SYN-RECEIVED再收到和发送一个连接请求后等待对方对连接请求的确认
ESTABLISHED代表一个打开的连接
FIN-WAIT-1等待远程TCP连接中断请求,或先前的连接中断请求的确认
FIN-WAIT-2从远程TCP等待连接中断请求
CLOSE-WAIT等待从本地用户发来的连接中断请求
CLOSING等待远程TCP对连接中断的确认
LAST-ACK等待原来的发向远程TCP的连接中断请求的确认
TIME-WAIT等待足够的时间以确保远程TCP接收到连接中断请求的确认
CLOSED没有任何连接状态

18.linux特殊符号

注释 备注 批注

[root@localhost ~]# ddd
-bash: ddd: 未找到命令
[root@localhost ~]# #dd
[root@localhost ~]# ls #ddd
anaconda-ks.cfg
[root@localhost ~]# 

;命令的分隔符
例子:
[root@localhost ~]touch 111.txt;chmod 777 111.txt
[root@localhost ~]11 111.txt
-rwxrwxrwx1 rootroot09月1204:40111.txt


..代表上级目录
例子:
[root@localhost ~]pwd
/root
[root@localhost ~]cd ..
[root@localhost /]pwd
/

.代表当前目录
例子:
[root@localhost opt]#dp /data/man_db.conf
[root@localhost opt]#1s
man_db.conf

""  双引号,换行,解析变量   
''  单引号,换行,不解析变量

image.png
image.png

env 查看系统环境变量

LANG=zh_CN.utf-8
export 声明,修改环境变量
export LANG=en_US.utf-8
变量 值不固定
常量 值固定

\  转义符,反斜杠
[root@localhost opt]# ls test_04\:56\:22.txt
test_04:56:22.txt

/  路径分隔符

`反引号(Esc下边的按钮)  嵌套命令执行
例子:
[root@localhost ~]# mkdir `echo 123`
[root@localhost ~]# ls
123  anaconda-ks.cfg
[root@localhost opt]# touch test_`date +%T`.txt


! 历史命令调用
shell里  history
!255  226条命令重新执行

* 通配符


$ 调用变量
$ssd =/tmp   声明变量
echo $ssd  --> /tmp
例子1

image.png

>  输出重定向
>> 追加输出重定向
<  输入重新定向
<< 追加输入重定向

ㄧ   管道

||   或,第一个命令失败才执行第二个

[root@localhost ~]# echo 123 || echo 456
123
[root@localhost ~]# ech 123 || echo 345
-bash: ech: 未找到命令
345

&&   和,一起执行  要么都不执行

&     放后台执行

~     代表家目录  cd ~    cd 

19.三剑客和正则表达式

功能比较强大 溯源用 日志

grep

#擅长过滤  整行过滤
#grep参数
-n行号
-c对结果行计数
-i不区分大小写
-V反向搜索,取反
-w精准匹配
-0只显示匹配的结果
-A1同时打印搜索结果行的后一行 a aftwe
-B3同时打印搜索结果行的前三行  b befor
-C2同时打印搜索结果行的上下各两行
-E扩展正则表达式
-P 使用perl正则
head -50 /ect/services > test.txt

image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png
image.png

sed

#擅长修改
用法:sed [-nri] [动作] 目标文件文件
选项与参数:
-n:使用安静(si1ent)模式。在一般sed的用法中,所有来自STDIN的数据一般都会被列出到终端的
-n  参数后,则只有经过sed特殊处理的那一行(或者动作)才会被列出来。
-P: sed的动作支持的是延伸型正规表示法的语法。(默认是基础正规表示法语法)
-i:直接修改读取的文件内容,而不是输出到终端。

动作说明: [n1[,n2]]function
n1,n2一般表示为行号

function:
a: 指定行后面插入一行
d:删除
i:指定行前面插入一行
p:打印,#一般和前面的-n参数一起用
s: 替换 需要I忽略大小写,全局替换需要g

awk

#擅长取列
用法,取列

例子1:取列
awk '{print $1}' 1.txt
awk '{print $1,$7}' /etc/passwd

例子2:指定分隔符
awk -F ":" '{print $7,$1}' /etc/passwd
#[ /]+已空格 和斜杠/为分隔符,+代表合并连续的分隔符
awk -F "[ /]+" '{print $2}' 1.txt

例子3:拼凑指定文本,双引号之间原样输出
awk -F ":" '{print $1":123:"$7}' /etc/passwd

例子4:过滤文本
awk -F ":" [ /]+" '$2~/^47/' 1.txt

例子5:根据行号筛选内容
awk 'NR<=3{print $0}' 1.txt # > < == >= <=

正则表达式

  1. 什么是正则表达式?
简单的说,正则表达式就是一套处理大量的字符串而定义的规则和方法。
例如:假设 @代表12345
通过正则表达式这些特殊符号,我们可以快速的过滤、替换需要的内容。
linux正则一般以行为单位处理的。
  1. 正则表达式
1) ^word 表示搜索以word开头的内容。
2) word$ 表示搜索以word结尾的内容。
3) Λ$    表示空行,不是空格
4) .     代表且只能代表任意一个字符。
5) \     转义字符,让有着特殊身份意义的字符,脱掉马甲,还原原型。
         例如:\.只表示小数点, 还原原始小数点的意义。
6) *     重复0个或多个前面的一个字符。不代表所有了。
7) .*    匹配所有的字符。A.*任意多个字符开头。
8) [abc] 匹配字符集合内任意一个字符[a-z]
9) [^abc] ^再中括号里面表示非,不包含a或b或c。
10) {n,m} 重复n到m次,前一个字符。
11) +     重复1次到多次
12) ?      重复0次到多次

linux的运行级别

linux运行级别

运行级别0 关机
运行级别1 单用户 一进去就是root,可以用来修改,找回root密码
运行级别2 不带网络的多用户
运行级别3 完整的多用户模式
运行级别4 保留
运行级别5 桌面模式
运行级别6 重启 init 6 重启命令 init 0 关机

#切换运行级别
init

#查看运行级别   runliver
systemctl get-default
#设置运行级别
systemctl set-default graphical.target  #设置默认运行级别为图形
systemct1 set-default multi-user.target  #设置默认运行级别为命令行

权限掩码

#修改文件vim/etc/profile   查看权限掩码umast
root	  默认权限掩码022
普通用户	默认权限掩码002

inode: 存储都除文件名以外的属性
block: 存储文件的内容,目录的block存储,该目录下的文件名和它的inode编号

特殊权限

suid 其他用户,拥有该文件属主的执行权限
sgid 其他用户,拥有该文件属组的权限locate
scky 粘滞位 很多用户共同使用的目录,实现用户之间不能互相删除改变对方的文件的权限

su和sudo

su == switch user
sudo == superuser do

1.配置/etc/sudoers
#用户名    所有终端 = 运行的用户身份   命令ALL
zhangsan   ALL=(ALL)  /bin/systemctl,/usr/bin/vim

2.使用sudo执行命令
#使用sudo来执行命令
sudo systemctl stop network   #start,stop,restart

#查看可以使用的授权命令
sudo -1

linux普通用户提权

sudo提权

vim   #命令模式执行:!bash
find  #sudo find.-exec bash \
awk   #sudo awk 'BEGIN {system("/bin/bash")}'

脏牛提权

仓库地址:https://github.com/gbonacini/CVE-2016-5195

#上传文件 脏牛提权.zip
unzip 脏牛提权.zip
make     #编译
./dcow -s   #提权
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值