linux 基础复习

linux 文件目录管理

常见目录

/dev   抽象硬件   例如u盘  硬盘

/lib   存放系统库文件   iso 文件

/bin   存放可执行二进制文件

/sbin  存放可执行二进制文件

/var   经常变化文件   例如  /var/log   日志文件

/home  普通用户目录

/root   特权用户目录

/etc   配置文件目录

/boot  内核启动文件

/usr   安装程序

/mnt   文件挂载目录  例如光驱、u盘

/opt   存放大型软件目录

常见重要配置文件

网卡配置文件:

/etc/sysconfig/network-scripts/ifcfg-ens33

域名解析:

/etc/resolv.conf

常用的域名解析服务

谷歌:8.8.8.8/4   

阿里:223.5.5.5     223.6.6.6

腾讯:119.29.29.29

主机名文件:

/etc/hostname

域名ip解析配置文件

/etc/hosts

开机启动显示:

/etc/motd

查看版本系统信息

/etc/os-release  查看系统版本

/proc/version  查看linux内核

硬件信息:

/proc

日志信息:

/var/log

核心命令

1.ls命令

ls   -a  查看所有文件,包括隐藏文件

ls   -l   查看详细信息

ls   -h  以人类可读形式展示

ls  --full-time   以完整时间格式输出

ls  -tl  --full-time  根据最后修改时间排序

ls  -d   显示文件夹本身信息,不显示内部信息

ls  -r   逆序排列

ls  -S   针对文件大小排序(默认从大到小)

ls  -i  显示文件node信息

2.mkdir

创建多个文件夹    mkdir  {aim,optp,lim}

创建递归文件夹    mkdir  -p ./alex/chao/xchao/

创建100个文件夹   mkdir  chaoge{1..100}

3.touch

创建普通文件    touch  test.txt

创建多个普通文件    touch  {1..10}.txt

更改文件修改时间    touch -t   10240606       备注10月24日6点零6分

4.cp

复制普通文件    cp  a.txt   b.txt

复制保留文件名   cp  a.txt  ./opt/

复制不保留文件名  cp  a.txt  ./opt/c.txt

复制文件夹以及内容  cp  -r  ./data    ./mnb/

复制文件且不改变其属性(时间)   cp -p

复制软链接   cp  -d 

覆盖前提示  cp  -i 

cp -a  递归复制文件即文件夹并保持原有属性

cp -p  复制不改变权限属性

5.cut

字符截取

cut -c  4  alex.txt   切割出这个文件每行的第四个字符

cut -c  4-7  alex.txt   切割出这个文件每行的第四到个字符

 cut -c  4,7  alex.txt   切割出这个文件每行的第四和个字符

自定义分割:

冒号分隔的password 内容的第七列   cut -d   ":"   -f  7  password   

6.sort

针对数字进行排序    sort -n  test.txt    小-大

                                 sort  -nr  test.txt    大-小

去重排序    sort -u  text.txt

指定分割排序   sort -n  -t "." -k  4  ip.txt    根据ip点分割的第四个段进行小-大排序

7.uniq

连续重复去重    uniq  text.txt

结合sort 使用     sort -n  text.txt | uniq

统计出现次数    sort -n  text.txt | uniq -c

只显示出现一次的行  sort -n  text.txt | uniq -u

只显示出现多次的行  sort -n  text.txt | uniq -d

8.wc

统计文件行数   wc -l  text.txt

统计单词数量  wc  -w  text.txt

统计字符数量   wc -m

输出最长行的字符数   wc  -L  text.txt

9.tr

替换标准输入大小写   echo  "name" | tr "[a-z]" "[A-Z]"

删除字母a       echo "my name is guo" | tr -d 'a'

文件当作标准输入进行替换   tr "a" "A"  < text.txt

删除多个重复字符    echo "myyy  nameee  iss ggguo" | tr -s 'yesg'

10.find

根据名字全盘搜索   find / -name "*.txt"

                                find /opt -name "*.txt"

指定目录层级    find /opt -maxdepth 1  -name "*.txt"

指定文件类型    find /opt  -type -d  -name "*.txt"     找文件夹

                         find /opt  -type -f  -name "*.txt"      找文件

删除        find /opt  -type -f  -name "*.txt"   -delete       

两天以内被访问的时间    find  ./   atime  -2

两天前被访问的时间    find  ./   atime   2

超过两天被访问的时间    find  ./   atime   +2

反向查找  find ./  maxdepth 1   !  -type d   找非文件夹文件

大小查找   find ./ -type f -size +200M  超过200M的文件

后续动作ok   find ./ -type f -size +200M  -ok rm {} \;  删除超过200M的文件

11.stat

访问时间   atime

修改时间   mtime

变化时间   ctime

12.xargs

多行变单行   xargs  < text.txt

限制行数   xargs -n 2  < text.txt    每行两个数

指定分隔符号   echo "hello,ni,hao" | xargs -d ","  逗号分隔内容

                        echo "hello,ni,hao" | xargs -d "," -n 2   逗号分隔,每行两个元素

{}代替前面内容    find  ./  -name "*.txt" | xargs  -i  mv {}  /opt/

13.文件属性

ls -lh   查看

    -  普通文本

    d  文件夹

    b 块设备文件

    c  字符设备文件

    l   软链接文件

file 查看

      file  text.txt

      file  opt

14.whereis

定位指令位置的二进制程序,源代码、man手册

whereis python

15.which

查找path环境变量的文件

which python

whereis更侧重于查找文件的所有可能位置,适用于需要全面了解文件分布情况的场景。

which主要用于确定可执行命令的位置,常用于脚本编写或检查命令是否可执行等情况

16.tar

压缩、解压

解压文件  tar -zxf   压缩包    解压位置

压缩文件   tar -zcf  压缩打包文件名    需要打包的文件

17.gzip

压缩文件   gzip   ./*.txt

列出压缩文件内容   gzip -l  text.txt.gz

gzip不能直接压缩文件夹,需要文件夹压缩成tar

解压gzip:

gzip -d  压缩包

18.zip

压缩文件:

zip  all.zip   ./*

解压缩:

uzip all.zip

19.rm

删除目录、文件

rm -r 递归删除目录文件

rm -rf  强制删除

rm -i  交互模式

\rm  取消别名,调用原始命令

20.mv

将文件目录移动到目标路径

mv  文件/目录   目标路径

21.head

head  text.txt #默认查看前10行

head -n 文件名 #查看前n行

22.tail

tail  text.txt  #默认查看后10行

tail   -n 文件名 #查看后n行

tail -f  text.txt  # 实时查看最后内容

linux权限

1.用户管理

root 用户   uid  0-999

普通用户  uid 1000以后

用户配置文件   /etc/passwd      用户加密密码  /etc/shadow 

新用户需要的基础环境变量文件  /etc/skel

创建用户:

useradd  用户名   #创建普通用户,创建同名用户组

passwd  用户名    #修改用户密码

id  用户名   #用户信息查看

grep -w test /etc/group  查找test在组文件里

创建用户组:

groupadd  组名   #创建用户组

usermod/useradd   -c   用户名    修改用户账号备注文字

                 -d   修改登陆目录

                -e   修改账号有效期限

               -g   修改所属群组

               -G   修改所属附加群组

                -l  修改用户账号名称

                -L  锁定账号使密码无效

               -U  接触账号锁定

               -u 修改用户id

                -s  登陆后使用的shell

删除用户:

userdel   -rf  用户名   

查看当前登录用户

whoami  查看当前登录用户

w   查看登录用户

who  查看登录用户

last  查看用户登录详细信息

lastlog 查看用户登录详细信息

2.用户切换

su - 用户    #普通用户切换

sudo 配置提权:

超级管理员 vi /etc/sudoers ,配置文件加入提权用户保存,切换到提权用户,执行sudo 命令即可

user1  all=(all)   /bin/rm  #user 1 可以在任何主机登录执行rm命令

sudo -l  #查看自己的sudo权限

sudo rm -rf   # 以允许的特权模式 执行删除

目前为止为避免配置复杂,一般采用命令别名的方式,对用户,命令进行分组

3.文件权限

r  可读  4

w 可写  2

x  可执行 1

u     g     o   a  用户   用户组   其他  所有

赋权:

chmod  u+x  test.sh   当前用户添加可执行权限

chmod  750  test.sh    当前用户添加可执行权限

chmod  0  test.sh   当前用户取消所有权限

赋权用户/组:

chown  用户:用户组   文件/夹   #修改文件属组

chown  -R  用户:用户组   文件/夹      #递归修改文件属组

umask文件掩码:

默认linux 创建文件权限最大 666    文件夹 777

实际:

root  创建文件 644    文件夹755

普通用户  创建文件 664      文件夹 775

默认配置文件:/etc/profile

root(022) 和普通用户(002)的掩码值不一致 ,

chattr 更改文件特殊属性:

+a:加特殊权限  chattr +a  test.txt   # 增加写入数据权限,只能写入,不能删除

-a    移除特殊权限  chattr -a  test.txt   #

+i    文件不可被修改,删除

-i   

echo "hello" >> test.txt  

查看特殊权限  lsattr  test.txt

通配符

* 匹配0/多个任意字符

?匹配任意1个有且只有一个字符

[]  匹配括号中任意一个字符

[!] 不匹配括号中任意一个字符

[^] 不匹配括号中任意一个字符

[[:upper:]]  所有大写字母

[[:lower:]] 所有小写字母

find / -maxdepth 3 -type f  -name "l*?[a-z]"  #找出根目录深度3,且所有以l开头,且以小写字母结尾,中间出现任意一个字符的文本

特殊符号

单引号  ''   强引用  所见即所得

双引号  ""   弱引用  识别变量、转义字符

反引号  ``  引用命令结果   等同于 $()

touch  `date + %T`.txt   #创建时间命令txt文本

echo  `date`  输出date命令结果

重定向符号

标准输入  stdin   0    配合<   或 <<

标准输出  stdout  1   配合>   或者>>

标准错误输出   stderr   2  配合>   或者>>

标准输入重定向   0< 或<

追加输入重定向   0<< 或<<

标准输出重定向   1>  或>

标准输出追加重定向  1>>  或>>

标准错误输出重定向   2  >

标准错书追加输出重定向    2 >>

ls /tmp > /dev/null 2>&1   #把命令正确或者错误的信息都输入黑洞文件

特殊符号

分号  ;  分割、注释

管道符 |  传递到下一个命令

$  变量

\  转义

{}  生成序列 、引用变量

逻辑符号

&&  前面成功执行后面的    ls /home && cd /home

||    前面失败执行后面的      ls /ttt || cd /home

! 取反   ls  [!a-z]   列出不包含a-z任意字符的文件

!! history 模式执行 上一次执行的命令

Linux三剑客

正则表达式

grep  文本匹配过滤

sed   文本编辑、替换、删除

awk   文本处理语言,输出、统计、判断

基本正则表达式

^  开头

$  结尾

^$  空行

.  有且只有一个字符

\  转义字符

*  匹配出现0次或者多次

.*  匹配所有内容  除了空行

^.*  任意多个字符开头

.*$  任意多个字符结尾

[abc] 匹配任意内部一个字符

[^abc]  匹配除内部字符以外的,

扩展正则表达式

+ 匹配前一个字符一次或者多次

[:/]+  匹配括号内的:或者\ 一次或者多次

?匹配前一个字符1次或0次

| 或者

()分组过滤

a{n,m}  匹配a最少n次,最多m 次

a{n,} 匹配a最少n次

a{n} 匹配a n次

a{,m}  匹配a最多m次

1.grep 

匹配普通字符  grep "root" pwd.txt

-i  不区分大小写

-n  显示内容行号

-v  取反

-o  只显示匹配内容

grep "^$" pwd.txt -v  取出不含空行的数据

grep "^$\|^#" test_grep.txt -n -v  取出不含空行和#开头的行数据   # \| 转义

grep -i "^h" test_grep.txt   找出文件中h开头的行数据

grep "[a-z]" pwd.txt  #匹配包含a-z的所有内容

grep "[^0-5]" pwd.txt         取出不包含0-5的文本内容

grep  -E "l+" pwd.txt  取出包含1个l 或者多个l的内容

grep  -E  "g(oo|lo)d" pwd.txt   取出包含good 或者glod的内容

2.sed

选项参数:

-n  取消sed默认输出

-i   直接修改结果写入文件,否则更改内存数据

-e  多次编辑

-r  支持扩展正则
 

内置命令符:

a  指定行后对文本追加

d 删除匹配行

i  指定行前插入一行或多行文本

p 打印配置内容

s/正则/替换内容/g

匹配范围:

空地址  全文匹配

单地址   指定某一行

/pattern/ 被模式匹配到的每一行

范围之间   10,20    10到20行      10,+5  第十行向下五行

步长   1~2 即1    3   5  7   9        2~2 即2  4  6  8  10

sed  "2,3p" pwd.txt  -n   输出pwd文件第二行到第三行数据

sed  "2,+3p" pwd.txt  -n  输出pwd文件第二行向下三行数据

sed  "/linux/p" pwd.txt  -n  输出含有linux的内容

sed  "/linux/d" pwd.txt    删除含有linux 内容的行(修改内存数据)

sed  "/linux/d" pwd.txt  -i      删除含有linux 内容的行(修改源文件)

sed  "5,$d" pwd.txt    删除第五行到最后的数据

sed  "s/My/I/g"  pwd.txt  将全局文件My替换成I

sed  "1s/My/I/"  pwd.txt  将第一行 My替换成I

sed -e "s/my/i/g"  -e "s/1785269/110/g" pwd.txt  多个条件替换

sed "2a my Linux is good." pwd.txt -i    第二行后添加内容 my linux is good

sed "2i my Linux is good." pwd.txt -i    第二行前添加内容 my linux is good

ip addr show ens33 | sed "3p" -n | sed "s/^.*inet//" | sed "s/\/24.*$//"   #提取ip段

3.awk

适用于格式化数据,有编程语言特性,默认空格分隔符

awk  option  pattren  {action} file

-F 指定分隔符(等同于 -v  FS)

-v OFS  修改默认分隔符

RS  设置换行符  一般是回车

ORS  设置结尾值

NR 行数(处理单文件)

FNR 各个文件行数(处理多文件)

$0   完整输出

$1   第一列

NF  字段数

awk ‘{print $NF}’ tets.txt  打印最后一列

awk  '{print $1,$3}' text.txt  打印第一列  第三列内容

awk 'NR==5 {print $0}' text.txt  #打印出第五行的数据

awk 'NR==5,NR==6 {print $0}' text.txt  #打印出第五到六行的数据

awk  '{print $1,$(NF-1),$(NF-2)}' text.txt

ip addr show ens33 | awk 'NR==3{print $2}'   #取出ip体验新版本 

awk -F ':' '{print $1,$NF}' pwd.txt  输出pwd文件冒号分隔的第一列 最后一列数据

awk -v  FS=':'  '{print $1,$NF}' pwd.txt  输出pwd文件冒号分隔的第一列 最后一列数据

awk -F ':'  -v  OFS='***'  '{print $1,$NF}' pwd.txt  输出pwd文件冒号分隔的第一列 最后一列数据,以***分割

awk -v RS=' ' '{print NR,$1}' pwd.txt  第一列出现空格即换行

awk -v RS=' ' '{print NR,$1}' test_grep.txt
1 hello
2
3 nihao
4 name
5 is
6 guojia
[root@bogon test]# cat test_grep.txt
hello  nihao
you name is guojia


haha
#此处省略几万个字
bye

bye2
lalalla
woshibaihuadexiaohuajia
lala
fish

OFS用法:

[root@bogon test]# awk -F ':' -v OFS="***" '{print $1,$NF}' chaoge5.txt
root***/bin/bash
bin***/sbin/nologin
daemon***/sbin/nologin
adm***/sbin/nologin
lp***/sbin/nologin
 

FNR 用法:

[root@bogon test]# awk '{print FNR,$1}' chaoge5.txt test_grep.txt
1 root:x:0:0:root:/root:/bin/bash
2 bin:x:1:1:bin:/bin:/sbin/nologin
3 daemon:x:2:2:daemon:/sbin:/sbin/nologin
4 adm:x:3:4:adm:/var/adm:/sbin/nologin
5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
6 sync:x:5:0:sync:/sbin:/bin/sync
7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
1 hello
2 you
3
4
5 haha
 

awk 格式化打印:

print  打印换行

printf   不换行,需要指定格式

[root@bogon test]# awk '{printf "第一列:%s\t  第二列 %s\n",$1,$2}' test_awk.txt
第一列:hello     第二列 everyone
第一列:nice      第二列 to
第一列:i         第二列 am
第一列:what      第二列 is
第一列:no        第二列
第一列:jim       第二列 see
第一列:yes       第二列 give

%s指代后面的参数    \t补全    \n换行

awk模式pattern:

BEGIN模式

END模式

awk 'BEGIN{print ”开始处理了“}{print $0}END{print "处理完毕了"}'  pwd.txt

grep练习:

1.从/etc/passwd 找出root开头的行

grep "^root" /etc/passwd

2.从/etc/passwd 找出以root开头或者test开头的行

 grep "^root\|^test\>" /etc/passwd  或者 grep  -E  "^(root|test)\>" /etc/passwd

注意”必须加定位锚点符号>。不然会匹配到test2  test3

3.过滤出bin开头的行,显示行号

grep -n "^bin" /etc/passwd

4.过滤掉bin开头的行,显示行号

grep -n  -v  "^bin" /etc/passwd

5.统计test出现次数

grep -c "test" /etc/passwd

6.匹配次数显示

grep -m 2 "test" /etc/passwd   #只匹配连词test内容

7.列出包含匹配项的文件名--多文件时

grep -l "test" /etc/passwd  /room/test/chaoge5.txt

8.找出/etc/passwd文件中的两位数或三位数

grep -E "\<[0-9]{2,3}\>" /etc/passwd

<   >  精准匹配两位   三位数    不然会模糊匹配

9.找到文件中至少 个空白字符开头,后面是非空字符的行

grep "^[[:space:]].*" text.txt  或者 grep -E "^[[:space:]]+[^[:space:]]" text.txt

10.找出以i开头的行,不区分大小写

grep  -i   "^i"  text.txt 或者grep -E "^(i|I)" text.txt  或者 grep "^{iI}" text.txt

11.找出shell结尾和用户名相同的行

grep -E "^([^:]+\>).*\1" /etc/passwd

sed练习

1.将首次出现的root 替换为test

sed '0,/root/s//test/p' chaoge5.txt -n   #全文替换

sed 's/root/test/p' chaoge5.txt -n   #每行第一个root替换成test

2.替换前10行bin开头改为c

sed -n '1,10s/^bin/c/p' text.txt

3.替换前10行bin开头改为c 且m开头替换M

sed -n  -e '1,10s/^bin/c/p'  -e 's/m/M/pg' text.txt 

4.删除第四行后的数据

sed '4,$d' pwd.txt

5.删除root 开头的行 到ftp开头的行

sed '/^root/,/^ftp/d' text.txt

6.文件空格开头的行添加注释符

sed  -e 's/^[[:space:]]/#/g'   -e 's/^$/#/g'  text.txt

awk练习

1.打印出档期那系统所有普通用户的的用户和家目录

awk  -F ":" "$3>1000{print $1 $(NF-1)}" /ETC/PASSWD

2.文件前五行添加#

awk "NR<6{print "#" $0}" text.txt

3.取出某个特定列

awk -F "[ :]" "{print  $1,$2}" text.txt   #取出以空格或冒号分割的第二列 第三列

Linux 定时任务

检查cron服务软件包   rpm -qa |grep cron

检查cron服务状态    service cron status

邮件端口 25    定时任务出发或发送邮件

mailx 服务

mailx -s "主题" 收件人      #发送邮件

mailx -s "主题" 收件人   < text.txt    # 标准输入发送邮件

cron 服务

配置文件   /etc/crontab

crontab -l  查看定时任务

crontab -e  编辑定时任务

crontab -i   交互式删除定时任务

crontab -r   删除定时任务,移除/var/spool/cron/username 文件

有的电脑没有mail 服务,当初最小化安装,需要自己下载  yum install mailx

*    *    *     *      *

分  时  日  月   周

3  10   *  *   *   每天的10点3分

0-10  10  *   *   *  每天的10点到10点10分  每分钟执行   0-10即0,1,2,3,4,5,6,7,8,9,10

3  4,5,6   *   *   * 每天4点3分  五点3分  6点3分  执行

*/5  *  *   *  *  每五分钟执行

程序包管理

源代码格式   tar.gz

rpm格式    .rpm

rpm命令

rpm -ivh  安装软件的命令格式

rpm -Uvh  升级软件格式

rpm -e    卸载软件命令格式

rpm -qa   查询安装的软件

rpm -ql  查询软件信息

解决依赖问题

yum          红帽系列

apt-get      deb 包管理

zypper   suse的rpm包管理

yum list   显示yum可下载安装的软件列表

yum repolist  显示yum仓库

源代码编译安装

* 可以自定义安装路径

* 可以控制版本

开发工具: gcc  make等

开发组件:  yum groupinstall "Development Tools"

                    yum groupinstall "Server Platform Development"

编译安装步骤:

1.执行configure文件

./configure  --prefix=/data/nginx/

2.执行make命令

make

3.执行make install

make install

磁盘管理

硬盘最小单位-扇区  512byte = 0.5kB

linux系统最小单位block-8个相邻扇区组成  = 8*0.5kb=4kb

windows 分区

电脑自带的分区工具-属性-管理-磁盘管理

linux 分区

通过fdisk分区(小于2T)

通过 parted 分区(大于2T 且磁盘为GPT格式)

sd[a-p]  代表硬盘(scsi/sata)

/dev/sda  第一块硬盘

        sda1 

/dev/sdb   第二块硬盘

fdisk分区步骤:

1.fdisk /dev/sdb

2. 输入n 新建分区

选择p :新建主分区

选择e :扩展分区

根据提示操作即可(上面的截图)

最后需要w 写入(上面的截图)

3.查看分区情况

fdisk -l

centos5或者之前,删除文件后仍占据磁盘空间,磁盘表没更新,需要重启分区表,避免重启电脑:partprobe /dev/sda

信息盘分区后可以执行partx命令,改制linux内核,新磁盘分区情况:partx -a /dev/sdb

parted分区步骤

1.更改磁盘类型GPT

进入编辑  parted /dev/sdb

根据提示,执行 mklabel gpt

注意:GPT分区没有扩展分区,只有主分区  逻辑分区

2.创建主分区

mkpart  primary  0  500

3.创建逻辑分区

mkpart logical 501 10000

格式化文件系统

mkfs 针对磁盘区分进行格式化文件系统

fsck命令,修复文件系统命令,默认读取/etc/fstab开机挂在文件

查看文件系统属性: centos7以前-dump2fs命令,打印文件系统信息,适用于ext2,ext3,ext4

                                 centos7以后-默认使用xfs文件系统,xfs_info打印文件系统信息

自动检查文件系统正常与否: tune2fs命令

列出所有设备及文件系统信息:lsblk命令     lsblk -f (列出分区格式化文件系统)

1.给分区进行格式化

mkfs.ext4 /dev/sdb1   #将sdb1 分区格式为ext4 文件系统

mkfs.xfs  /dev/sdb1   #将sdb1 分区格式为xfs文件系统

2.关闭文件系统自检

tune2fs -c -1 /dev/sdb1

文件系统挂载

mount 命令能将指定的文件系统挂载到指定的目录上,挂载点为linux系统的一个已存在文件夹

mount   -l   显示系统所有挂在的设备信息

             -t 指定设备的文件系统,若不指定,自动选择挂载的文件系统类型

             -o  添加挂载的功能选项  (async异步读写   sync 同步   atime  noatime)

             -r  read  挂载后的设备只读

             -w  读写参数   -o  rw权限,允许挂载后读写操作

mount  挂载设备   挂载点

mount  /dev/sdb1  /mnt   #将sdb1  挂载到mnt文件夹

mount -o ro  /dev/sdb1  /mnt   #将sdb1 以只读形式 挂载到mnt文件夹

mount -o noexec  /dev/sdb1  /mnt   #将sdb1  挂载到mnt文件夹,不执行可执行文件

df -hT  查看磁盘使用情况

umount  /mnt  #取消挂载

开机自动挂载:

/etc/fstab 存放静态文件,系统开机启动时读取

/dev/sdb5   /mnt   xfs   defaults   0    0

swap交换分区创建

实际物理内存不足,会从内存中取出未使用的部分,放入交换分区,提供给程序使用

centos7:  内存小于2G  分配和内存大小的swap分区

                内存大于2G   分配2G swap分区

1.设置分区

fdisk /dev/sdc #进入分区设置

输入n(新建分区)    输入p(新建主分区)输入起始扇区,容量大小   输入t (更改分区)   选择分区1   输入82(更改为swap 分区)     输入p (打印) 输入w (写入磁盘)

2.针对磁盘分区格式化

mkswap /dev/sdc1

3.开启对应的交换空间

swapon /dev/sdc1  #开启swap

swapoff /dev/sdc1  #开启swap

free -m #查看交换空间

临时释放缓存:

释放catch命令:echo 1 > /proc/sys/vm/drop_caches   = sysctl -w vm.drop_catch=1

清除目录缓存和inodes: echo 2> /proc/sys/vm/drop_catch =  sysctl -w vm.drop_catch=2

清除内存页的缓存:echo 3 >  /proc/sys/vm/drop_catch =  sysctl -w vm.drop_catch=3

清除文件系统缓存:

sync 命令,清空僵尸进程,将内存缓存区数据写入磁盘

移动硬盘常见文件系统

fat 16   fat32   单个文件不能超过2G

NTFS 文件系统,支持文件加密,采用日志加密,详细加载读写操作,支持数据恢复,突破磁盘大小限制

EXFAT 文件系统  单个文件超过16G  能在win、linux、mac中同时识别

Linux 文件系统

ext2  

ext3   centos5

ext4   centos6

xfs      centos 7

网络共享文件系统

nfs    网络文件系统

smb  服务消息块

集群文件系统

gfs  存储海量数据准备

ocfs   数据库研发平台定制

分布式文件系统

ceph  存储的可靠性和扩展性

交换文件系统

swap

常见命令:

1.df命令(文件系统)

df -h 显示kb  mb大小

df -i   显示inode数量

2.du命令(磁盘)

du -a 显示所有文件的大小

du -h 显示出所有目录的磁盘使用量

du -h * 显示出个文件与子目录的信息

RAID技术

raid 即磁盘冗余阵列,将多块独立磁盘组成磁盘组,容量更大,安全性更高,将数据切割多个区段存储在不同的物理硬盘上,分散读写提高整体性能,数据同步在不同磁盘,做到冗余备份。

raid技术特性

1.保障数据安全性,提升硬盘读写效率,增加磁盘成本

raid技术分类

raid0: 数据依次写入物理硬盘,写入速度翻倍,数据分开存储

          适用于追求性能,安全要求不高

raid1: 将两块以上硬盘绑定,数据同时写入多块硬盘,个别硬盘损坏也没事

          降低了磁盘利用率

raid3: 3块以上硬盘组成,遵循磁盘异或运算,

          存储异或磁盘不能损坏

磁盘异或运算:

磁盘1    0101

磁盘2    1011

异或运算   1110     # 对比相同为0   不同为1

raid 5 :校验码均匀返给每块磁盘,能够反推

           不能损坏2块即以上

raid 10: raid 0 + raid 1 组合

             通过raid 0 实现读写速度,raid 1 实现了数据备份

数据冗余性能:   raid1   raid 10  raid 5   raid 0   #好-坏

数据读写性能 : raid 0  raid 10   raid 5  raid 1

成本:raid 0  raid 10   raid 1   raid 5

软硬raid实现

硬raid :直接通过购买raid卡,按照说明配置

软raid :软件命令,有cpu 控制硬盘驱动器,进行数据转换,计算

硬raid兼容性、稳定性都优于软raid

搭建raid 10

1.虚拟机新建四块硬盘

2.检查磁盘信息

cat /dev/sd*  或    fdisk -l

3.mdadm 命令 创建raid 10

mdadm -Cv /dev/md0 -a yes -n 4 -l 10  /dev/sdb /dev/sdc /dev/sdd  /dev/sde

-C  表示创建

-v  表示显示创建过程

/dev.md0  表示raid阵列名字

-a  yes  自动创建阵列设备文件

-n 4   表示使用四块硬盘创建阵列

-l 10   表示raid级别

最后是4块硬盘名字

4.针对磁盘阵列进行格式化

mkfs.xfs /dev/md0

5.针对分区进行文件夹挂载

mount /dev/md0  /newPro

6.检查挂在情况

mount  -l

7.还可以使用df 命令插卡挂载

df -hT

8.检查磁盘阵列情况

mdadm -D /dev/md0

9.写入数据,检查

10.磁盘阵列分区加入开机自启

/etc/fstab加入:

/dev/md0  /mnt xfs defaults 0   0

raid 10 故障修复

raid 10  某块发生故障

1.检查磁盘

fdisk -l

2.模拟挂掉一块硬盘

mdadm /dev/md0 -f  /dev/sdd  

3.检查raid 10状态

mdadm -D

4.复制,修改文件,检查文件状态

df -h  是否有正常累加

挨个检查,看那块磁盘损坏

5.购买新的磁盘,重新加入阵列

     *  取消挂载(注意开启自启挂载)

     *  重新添加新的硬盘加入    mdadm /dev/md0 -a  /dev/sdd  

6.检查磁盘阵列组信息

7.等待修复完毕

raid 10 重启

1.生成raid 配置文件

echo  DEVICE /dev/sd[b-e] > /etc/mdadm.conf

2.扫描磁盘磁盘阵列信息到配置文件

mdadm -Ds >> /etc/mdadm.conf

3.取消raid 10 挂载

umount /mnt

4.停止磁盘阵列

mdadm -S /dev/md0

5.检查阵列信息

应该看不到阵列信息

6.启动阵列

mdadm -A /dev/md0

raid 10 卸载

1. 卸载挂在中设备

umount /mnt

2.停止raid服务

mdadm -S /dev/md0

3.卸载raid10所有磁盘信息

mdadm --misc --zero-superblock /dev/sdb

mdadm --misc --zero-superblock /dev/sdc

mdadm --misc --zero-superblock /dev/sdd

mdadm --misc --zero-superblock /dev/sde

4.删除raid 配置文件

rm /etc/mdadm.conf

5.清除开机自动挂载文件

raid 备份盘

1.创建一个raid 5

mdadm -Cv/dev/md0 -n3 -l 5 -x 1 /dev/sdb  /dev/sdc  /dev/sdd /dev/sde

-x  1    指定一个备份盘

2.检查raid阵列组信息

mdadm -D /dev/md0

3.针对阵列组进行格式化文件系统

mkfs.xfs  -f /dev/md0

4.挂载raid

mount /dev/md0 /mnt

5.检查挂载情况以及数据写入

mount -l

df -hT

6.写入数据检查raid

7.见证备份磁盘工作,删掉一块硬盘,检查

mdadm /dev/md0 -f  /dev/sdb  

mdadm -D /dev/md0

8.检查备份磁盘加入阵列组

raid扩容

局限:  raid 配置磁盘阵列,容量限定,后期扩容麻烦

              不同磁盘分区独立,没有联系

              合并分区需要重新格式化磁盘分区,备份数据

LVM  逻辑卷管理:动态管理磁盘分区扩容

LVM 实际案例:

挑选 /dev/sdb  /dev/sdc 两块硬盘,添加至卷组

1.创建pv

pvcreate  /dev/sdb  /dev/sdc

2.创建卷组

vgcreate chaogevg1 /dev/sdb   /dev/sdc

3.分别查看pv  vg

pvs    pvscan

vgs    vgscan

4.尝试扩容,缩小vg卷组

 pvcreate /dev/sde  #创建物理卷

vgextend chaogevg1  /dev/sde  #新物理元加入vg 卷组

5.显示卷组信息

vgdisplay

6.缩小卷组大小,提出sde

vgreduce chaogevg1 /dev/sde

7.删除sde物理卷

pvremove /dev/sde

8.使用此时的卷组创建逻辑卷

lvcreate -n lv1 -l +500M chaogevg1

9.检查lv 信息

lvdisplay

10.格式化逻辑卷文件系统

mkfs.xfs /dev/chaogevg1/lv1

11.向lv1逻辑卷中,进行挂载以及数据写入

mount /dev/chaogevg1/lv1 /chaoge

挂载信息写入文件/etc/fstab

mount -a  读取挂载文件信息

12.向磁盘写入数据

13.针对lv逻辑卷扩容,只要卷组中容量足够,就可以对lv逻辑卷扩容

    *  umount /chaoge/

    *  lvextent -L +10G /dev/chaogevg1/lv1

    *  挂载 mount /dev/chaogevg1/lv1 /chaoge

14.调整xfs文件系统大小

xfs_grows /dev/chaogevg1/lv1

df -hT

15.不想用lvm,删除逻辑卷

     *  卸载lv  umount /chaoge/

     * lvremove /dev/chaogevg1/lv1

     *  删除卷组  vgremove  chaogevg1

     * 删除pv   pvremove /dev/sdb /dev/sdc

     * 检查所有lv 信息   pvs  lvs  vgs

进程管理

进程:linux系统的一个任务资源单位

线程:进程中的一个执行单元,是 CPU 调度和分派的基本单位

基本命令

1.ps

查询进程信息,和kill 搭配使用

ps   -ef  #列出linux所有详细的进程信息

ps -ef |grep vim   #列出linux 关于vim的进程信息

ps   aux  #  a  显示当前终端所有进程   u 以用户为主显示   x 显示所有进程

ps -u #指定查看某个用户进程

ps -eH  #显示父进程,子进程目录结构信息

pgrep  nginx  #查询nginx 进程是否存在

2.kill

kill -l   列出所有的中止信息

l 的参数: 1   SIGHUP  挂起进程  终端掉线,用户突然推出

                 2   SIGINT 中断信号,一般常用ctrl + c 发送

                 3   SIGQUIT  退出信号  一般用ctrl +\ 发出

                 9   SIGKILL 强制中断信号

                 15  SIGTERM  kill默认使用

                  20 SIGTSTP  暂停进程  常用ctrl +z 发出

kill pid   

kill  -9  pid

kill -0 pid  # 判断pid是否存在,通过$? 取值

killall   vim   # 杀死所有vim进程

pkill  vim    #通过进程名杀死多个进程,直接杀死父进程 子进程

3.top

实时监控系统的处理器状态

输入z  切换颜色

输入M  cpu 使用排序

输入1  linux  逻辑cpu个数

top -c  显示进程命令的绝对路径

top -d  2  设置top刷新时间

top -n 3  设置top刷新次数

top -p  pid  查看指定进程 动态信息

4.nohup

将程序以忽略挂起的形式在后台运行,输出结果不打印在终端,输出结果将输出在nohup.out文件中

nohup  执行命令  #即使关闭终端,后台同样执行

nohup ping  www.baidu.com

nohup 执行命令  &  后台执行不输出,不影响后面执行命令

5.linux 系统运行级别

0  关机

1  单用户

2  多用户模式  无网络模式

3  完全多用户  有网络

4  用户自定义级别

5  图形化界面

6  重启机器

init  命令

init 6   #重启机器

6.glances

1.安装基本工具

yum install glances -y

yum install python python-pip  python-devel  gcc -y

2.安装模块

pip install bottle

3.使用glances运行一个web网站,加盟空数据网站

glances -w

Linux网络

ISO七层模型

1.物理层

2.数据链路层           物理链路层          以二进制数据在物理媒介传播    ISO@2100

3.网络层                  网络                     为数据包选择路由                      IP  ICMP  BGP OSPF

4.传输层                 传输                     提供端对端接口                          tcp  udp

5.会话层

6.表示层

7应用层                   接近用户的应用层      提供文件传输、邮件、数据加密      HTTP  SNMP  FTP 

                                                                                                                            NFS  DNS

基础命令

1.ifconfig

配置网卡信息 查看显示网络接口 临时性配置ip地址 网络 子网掩码

安装   yum install  net-tools

配置文件  /etc/sysconfig/network-scripts/ifconfig-ens33

查看网络地址信息   ifconfig 、   ifconfig ens33

开启/关闭网卡   ifconfig 设备名 up/down

修改设置ip :  ifconfig ens33:0 192.168.1.109  netmask 255.255.255.0 up

修改mac地址:ifconfig ens33 hw ether 新mac地址

永久修改ip  :  /etc/sysconfig/network-scripts/ifconfig-ens33

2.route

添加网关信息  route  add default  gw  192.168.1.2

删除路由信息  route del default

查看路由信息  route -n

3.ip

查看显示网络设备信息   ip addr  show

指定网络设备显示信息   ip link show dev ens33

开启/关闭网络设备   ip link set ens33 up/down

修改mac地址   ip link set ens33  address  新mac

ip添加  ip  address add 新ip  dev ens33

ip删除   ip  address del 新ip  dev ens33

查看路由信息  ip route

查看arp 缓存  ip neighbour

4.netstat

显示网络连接情况  路由表信息  端口状态

netstat -an  #-a 显示所有套接字信息   -n  显示数字地址信息

netstat -tnulp  # -t  tcp  -u  udp  -n 不进行dns解析  -l 只显示监听中的  -p  显示所属的进程名信息

netstat -tnulp |grep 80

netstat -rn 查看路由信息

netstat -i 显示所有网络接口的列表情况

netstat -tunlp |grep 3306  监听数据库是否运行

127.0.0.1  回环地址  本机硬件访问

0.0.0.0  绑定机器所有网卡信息(多ip情况)

注意:

centos 7 之后有一个ss工具,类似netstat

ss -an  显示所有套接字连接

ss -tunlp 

5.ping

检测主机网络状态   ping  ip/域名

6.telnet

用于监测远程主机是否打开某端口:  telnet 主机ip  22

7.ssh

ssh 用户名@ip地址

ssh 用户名@ip地址 -p 端口   #端口远程连接

ssh 用户名@ip地址  命令  远程执行命令

8.wget

下载指定资源文件

wget  资源地址  #下载一个资源

wget -O /tmp/new.jpg   资源地址   #下载资源并且改名

wget --limit-rate=1k   资源地址   #限制文件下载资源

wget -c 资源地址   #支持断点续传资源下载

wget  -b  资源地址  #后台运行下载资源

wget --user-agent="" 资源地址   #伪装请求客户端下载

wget -q -T 3 -t 1 --spider www.pythonav.cn  #检测网站存活,利用$?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值