admin 管理员组文章数量: 887021
Linux实用知识点整理
1、 vi编辑器:
1、模式分类:正常模式、输入模式、命令模式;
2、正常模式:vi编辑器打开文件界面;输入模式:输入i{I},o{O},r{R}进入输入界面;命令模式:先输入:,然后输入指令;
注意:正常模式:不能输入,可以删除、粘贴;输入模式下:可以输入内容到文件中;命令模式:输入命令,操作文件;
4、正常模式下:输入yy,复制当前光标所在的行,输入p,粘贴当前复制的行;输入nyy复制当前光标往下n行,按p粘贴;
输入dd,删除当前所在行;输入ndd,删除当前所在行下n行;
输入u,撤销上一步的操作;
输入G,跳到文件的最后一行;输入gg,跳到文件首行;
跳转到指定的行号:n+shift+g,快速跳转到n行。
5、命令模式下:输入:set nu,显示正常模式下,显示文件的行号;输入set nonu,隐藏文件的行号。
在设置行号中,快速定位查找到某一行的执行,输入行号,再输入shift+g来完成快速定位。
6、 在一般模式下:输入 /检索的内容,可以快速定位到查找的内容;按n查找下一个。
2、xShell指令集:
shutdown -h now:立刻关机;
shutdown -h 1:1分钟后关机;
shutdwon -r:关机重启;
halt:停止;
sync:同步内存数据到磁盘中。
3、用户管理:
添加用户:
useradd 用户名:添加一个用户,在/home目录下
useradd -d 指定目录 用户名:添加一个用户到指定的目录
如:useradd -d /home/test king 将king用户指定到home目录下的指定test文件夹中
修改密码:
passwd 用户名 密码
如果不输入用户名,那么修改的就是当前用户的密码
pwd:显示当前所在目录
删除用户:
userdel 用户名:删除用户,但会保留主目录[即会保留home目录下的用户,此时该用户不能登录系统了]
userdel -r 用户名:删除用户以用户主目录
4、查询用户信息:【该指令可以看当前用户的所属主,所属组id,所属组】
id 用户名:查询当前用户的信息
su - 用户名:切换用户【说明:权限高的用户切换权限低的用户不需要输入密码,反之需要】
查询当前第一次登录用户信息:[即系统第一次登录的用户使用who am i 来查看;如果切换了用户后,再使用who am i 来查看,发现还是第一次登陆的用户信息]
who am i:查询当前第一次第一个登录者、登录的方式、时间及ip地址
5、用户组:系统可以对有共性/权限的多个用户进行统一的管理
groupadd 组名:添加组
groupdel 组名:删除组
useradd -g 用户组 用户名:添加用户并分配所属的组
usermod -g 用户组 用户名:修改一个用户的组
6、用户和组相关文件
/etc/passwd 文件:用户user的配置文件,记录用户的各种信息
每行含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
/etc/shadow 文件:口令的配置文件
每行含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
/etc/group 文件:组的配置文件,记录Linux包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表
7、运行指令:
指令运行级别说明:
0:关机
1:单用户【找回丢失密码】
2:多用户状态没有网络服务
3:多用户状态有网络服务
4:系统未使用保留给用户
5:图形界面
6:系统重启
常用运行级别是3跟5,也可以指定默认运行级别。通过init[级别序号] 来切换不同的运行级别,如:init[56]
指定运行级别:
在centos7以前,在/etc/inittable文件中,centos7以后/etc/inittab,进行了简化,直接修改runlevel 后面的数字即可
如:
多用户:multi-user.target:analogous to runlevel 3
图形界面:graphical.target:analogous to runlevel 5
查看当前运行的级别:systemctl get-default
设置默认运行级别指令:systemctl set-default TARGET.target
如:systemctl set-default graphical.target
8、找回root密码[或者说修改root密码,当root密码忘记时]
a、首先,启动liunx系统,进入开机界面,在界面中按"e"进入编辑界面;
b、进入编辑界面,使用键盘上的上下键把光标往下移动,找到以"Linux16"开头内容所在的行数,在行最后输入:init=/bin/sh
c、输入完以后,输入ctrl+x启动,进入单用户模式
d、接着,在光标闪烁的位置中输入:mount -o remount,rw /【注意各个单词间有空格,逗号","单词之间不要有空格,"/"后面没有空格】,完成后按键盘的回车键
e、在新的一行最后输入:passwd,完成后按键盘的回车键。输入密码,然后再次输入密码即可,密码修改成功后,会显示pass的样式,说明密码修改成功
f、接着,在鼠标闪烁的位置中输入:touch /.autorelable(注意touch与/后面有一个空格),完成后按回车键
g、继续在光标闪烁的位置中,输入:exec /sbin/init(注意exec与/后面有一个空格),完成后按回车键,等系统自动修改密码,完成后,系统会重新启动,新的密码会生效
9、帮助命令:
man:功能描述:获得帮助信息
man 【命令或配置文件】:
如:man ls,该界面下,按空格键进行翻页
ls -al /home 直接单列某个目录下的列表
help:功能描述:获得shell内置命令的帮助信息
help 命令:
如:help cd
对比:man跟help都是帮助命令,man是有中文注释的帮助命令,help是纯英文的命令。
10、文件目录命令
pwd:文件的绝对路径
ls:文件列表方式显示
cd:进入文件命令
mkdir:创建目录
rmdir:删除目录
touch:创建空白文件
cp:复制文件命令
cp -r:递归复制整个文件夹;\cp -r 源文件 目标文件夹:强制复制并覆盖目标文件与源文件相同的内容
rm:移除文件或目录[文件中有内容时,加-rf]
rmdir 目录,这个只能删除空目录,如果要删除目录下还有内容的文件目录,使用rm -rf 目录名。
mv:移动文件与目录或重命名
查看文件内部内容的命令:
-----------------------
cat:查看文件命令,-n 带行号查看文件
more:查看文件,在查看窗口,按"=",输出当前的行号;":f",输出文件名和当前的行号
less:分屏查看文件内容
head:用于显示文件的开头部分内容【默认前10行】
如:head -n 5【查看文件头5行内容,5可以是任意行数】
tail:输出文件中尾部的内容,【时时监控文件的内容】
echo:输出内容到控制台
>:输出重定向【会覆盖原有的内容】
>>:输出追加
ln:链接
ln -s [原文件或目录][软链接名](功能描述:给原文件创建一个软链接)
如:ln -s /root/ /home/myroot 在home目录下创建一个root的软连接
删除链接:rm /home/myroot
history:查看已经执行过历史命令,也可以执行历史指令。
默认是显示最近使用过的10个指令;
执行历史编号n的命令:!n
/:表示一个目录,不带/表示文件
11、时间日期类
date :(功能描述:显示当前时间)
date +%Y:(功能描述:显示当前年份)
date +%m:(功能描述:显示当前月份)
date +%d:(功能描述:显示当前是哪一天)
date "+%Y-%m-%d %H:%M:%S":(功能描述:显示年月日时分秒)
date指令-设置日期:
date -s 字符串时间 【如date -s "2021-12-7 13:20:21"】
cal [选项](功能描述:不加选项,显示本月日历)【cal 2020】显示全年的日历
12、搜索查找类指令
find指令:find指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或目录显示在终端。
语法:find [搜索范围][选项]
【如:find /home -name hello.txt [在home目录下查找文件为hello.txt的文件]】
选项:
-name<查询方式>:按照指定的文件名查找模式查找文件
-user<用户名>:查找属于指定用户名所有文件
如:find /opt -user nobody[在opt目录下面查找用户为nobody的用户]
-size<文件大小>:按照指定文件大小查找文件
如:find / -size +200M
-atime<时间>:按照时间来查找【find / -atime +10 -name aaa,查找10天前aaa的文件】
【如:find / -size +n/-nM/n等于】在根目录下查找+nM的文件或-nM的文件。+200M表示大于200M,-200M表示小于200M的文件
locate指令:locate指令可以快速定位文件路径。locate指令利用事先建立的系统中所有文件名称及路径的locate数据库实现快速定位给定文件。
locate指令无需要遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新locate时刻。
基本语法:【特别说明:由于locate指令基于数据库进行查询,所以第一次运行前,必须使用updatedb指令创建locate数据库】
locate 搜索文件【如:updatedb locate hello.txt】
which指令:可以查看某个指令在哪个目录下。比如:ls在哪个目录下
grep指令和管道符号|
grep过滤查找,管道符,"|",表示将前一个命令的处理结果输出给后面的命令处理。
基本语法:
grep [选项] 查找内容 源文件
常用选项:
-n 显示匹配行及行号
-i 忽略字母大小写
[如:grep -n "yes" hello.txt]在hello.txt文件中查找yes及所在行 [cat /home/hello.txt | grep -n "yes"]
13、压缩与解压类
gzip/gunzip:gzip是用来压缩文件,gunzip是用来解压文件。
基本语法:
gzip 文件 (功能描述:压缩文件,只能将文件压缩为*.gz文件)
gunzip 文件.gz (功能描述:解压缩文件命令)
如:
gzip /home/hello.txt
gunzip /home/hello.txt.gz
zip/unzip指令:zip用于压缩文件,unzip用于解压的。
基本语法:
zip [选项] xxx.zip 将要压缩的内容 (功能描述:压缩文件和目录的命令)
unzip [选项] xxx.zip (功能描述:解压缩文件)
常规选项:
-r:递归压缩,即压缩目录
-d<目录>:指定解压后文件的存放目录
如:
zip -r myhome.zip /home/ [将home及其包含的文件及子文件夹都压缩]
unzip -d /opt/tmp myhome.zip (将myhome.zip解压到/opt/tmp文件下)
tar指令:tar指令是打包指令,最后打包后的文件是.tar.gz文件。
基本语法:
tar [选项] xx.tar.gz 打包的内容 (功能描述:打包目录,压缩后的文件格式.tar.gz)
tar可以一次性将多个文件打包到一个包中,将要打包的文件与文件中用空格隔开
如:tar pc.tar.gz /home/test /opt/back[将/home/test 和 /opt/back文件打包到pc.tar.gz包中]
选项说明:
-c 产生.tar打包文件
-v 显示详细信息
-f 指定压缩后的文件名
-z 打包同时压缩
-x 解包.tar文件
如:
tar -zcvf pc.tar.gz /home/animal[将/home/animal打包成pc.tar.gz包]
tar -zxvf pc.tar.gz -C /opt/tmp [将pc.tar.gz压缩包解压到opt的tmp文件夹下,-C表示指定路径]
14、linux组跟权限管理
在linux中的每个用户必须属于一个组,不能独立于组外。在linux中每个文件所有者、所在组、其他组的概念;
1、所有者
2、所在组
3、其他组
4、改变用户所在的组
查看文件的所有者:
指令:ls -ahl
修改文件所有者
指令:chown 用户名 文件名
组的创建
基本指令:groupadd 组名
----
当某个用户创建了一个文件后,这个文件的所在组就是该用户所在的组。
查看文件/目录所在组:
基本命令:ls -ahl
修改文件所在的组:chgrp 组名 文件名
其他组:
-------
除文件的所有者和所在组的用户外,系统的其他用户都是文件的其它组
改变用户所在组:
usermod -g 新组名 用户名
usermod -d 目录名 用户名 改变用户登录的初始目录[用户需要有进入新目录的权限]
权限基本介绍:
-------------
rwx权限详解:
rwx作用到文件:
1、[r]代表可读:可以读取,查看;
2、[w]代表可写:可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件。
3、[x]代表可执行:可以被执行
rwx作用到目录
1、[r]代表可读:可以读取、ls查看目录内容;
2、[w]代表可写:可以修改,对目录内创建+删除——重命令目录;
3、[x]代表可执行:可以进入该目录。
修改权限-chmod
---------------
基本说明:通过chmod指令,可以修改文件或者目录的权限
第一种方式:+、-、=变更权限
u:所有者 g:所有组 o:其他人 a:所有人(u、g、o的总和)
如:
chmod u=rwx,g=rx,o=r 文件/目录名
chmod o+w 文件/目录名
chmod a-x 文件/目录名
第二种方式:通过数字变更权限
r=4、w=2、x=1 rwx=4+2+1=7
如:
chmod u=rwx,g=rx,o=x 文件目/录名 [相当于chmod 751 文件/目录名]
修改文件所有者-chown
--------------------
基本介绍:
chown newowner 文件/目录 【改变所有者】
chown newowner:newgroup 文件/目录 【改变所有者和所在组】
-R 如果是目录,则使其下所有子文件或目录递归生效
如:chown -R tom /home/kkk
修改文件/所在组-chgrp
---------------------
基本介绍:
chgrp newgroup 文件/目录 改变所在组
对文件夹或目录rwx的细节讨论和测试:
----------------------------
x:表示可以进入到该目录,比如cd;
r:表示可以ls,将目录的内容显示;
w:表示可以在该目录,删除或者创建文件。
对文件的rwx说明:
----------------
x:表示运行该文件,比如./xx.sh;
r:表示可以查看文件的内容,如:cat /etc/passwd ;
w:表示可以创建文件或删除文件。
ls -l 中显示的说明:
如:-rwxrw-r-- 1 root 12134 Feb 2 09:39 abc
-------------------
0-9位说明:
第0位确定文件的类型(d,-,l,c,b)
l是链接,相当于windows的快捷方式;
d是目录,相当于Windows的文件夹;
c是字符设备文件,鼠标,键盘;
b是块设备,比如:硬盘
第1-3位确定所有者(该文件的所有者)拥有该文件的权限。---User
第4-6位确定所有组(同用户组的)拥有该文件的权限。---Group
第7-9位确定其他用户拥有该文件的权限。---Other
第10位表示该文件及子文件的总数。【单文件/目录为1,目录下有子文件的,显示的数量就是子文件的总个数】
第11位表示文件所有者;
第12位表示文件大小。[-h可以转换成K来显示]
第13位表示月份;
第14位表示日期;
第15位表示时间;
第16位表示文件/目录名称。
15、crond任务调度【定时任务调度】
概述:
任务调度:是指系统在某个时间执行的特定的命令或程序;
任务调度分类:
1、系统工作:有些重要的工作必须周而复始地执行。
2、个别用户工作:个别用户可能希望执行某些程序,比如对mysql数据库备份。
基本语法:
crontab [选项]
常用选项:
-e:编辑crontab定时任务
-l:查询crontab任务
-r:删除当前用户所有的crontab任务
如:
crontal -e
*/1**** ls -l /etc/ >/tmp/to.txt
参数细节说明:5个占位符的说明
项目 含义 范围
第一个"*":一个小时当中的第几分钟, 0-59
第二个"*":一天当中的第几个小时, 0-23
第三个"*":一个月当中的第几天, 1-31
第四个"*":一年当中的第几月, 1-12
第五个"*":一周当中的星期几, 0-7(0和7都代表星期日)
特殊符号说明:
特殊符号 含义
* 代表任何时间。比如第一个"*"就代表一小时中每分钟都执行一次的意思;
, 代表不连续的时间。比如"0 8,12,16 ***命令",就代表每天的8点0分,12点0分,16点0分都执行一次命令;
- 代表连续的时间范围。比如"0 5 **1-6命令",代表在周一到周六凌晨5点0分执行命令;
*/n 代表每隔多久执行一次。比如"*/10 ****命令",代表每隔10就分钟执行一遍命令。
crond相关指令:
--------------
crontab -r:终止任务调度;
crontab -l:列出当前所有哪些任务调度
service crond restart:重启任务调度
数据库备份指令参考:
-------------------
mysqldump -u root -p密码 数据库>> /home/db.bak
如:
(1)crontab -e
(2)0 2 * * * mysqldump -u root -p123456 testdb>> /home/db.bak
16、at定时任务
基本介绍:
1、at命令是一次性定时计划任务,at的守护进程atd会以后台模式运行,检查作业队列来运行;
2、默认情况下,atd守护进程每60秒检查作业队列,有作业时,会检查作业运行时间,如果时间与当前时间匹配,则运行此作业;
3、at命令是一次性定时计划任务,执行完一个任务后不再执行此任务了;
4、在使用at命令的时候,一定要保障atd进程的启动,可以使用相关指令来看。
[通过 ps -ef | grep atd 来看看,atd进程启动了没有]
at命令格式:
at[选项][时间]
Ctrl+D 结束at命令输入
at命令选项:
-m 当指定的任务被完成后,将给用户发邮件,即使没有标准输出;
-i atq的别名
-d atrm的别名
-v 显示任务将被执行的时间
-c 打印任务的内容到标准输出
-V 显示版本信息
-q<队列> 使用指定的队列
-f<文件> 从指定文件读入任务而不是从标准输入读入
-t<时间参数> 以时间参数的形式提交要运行的任务
at时间定义:
-----------
at指定时间的方法:
1、接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。
2、使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间;
3、采用12小时计时制,即在时间后面加上AM或PM来说明是上午还是下午;[如:12pm]
4、指定命令执行的具体日期,指定格式位month day或mm/dd/yy或dd.mm.yy,指定的日期必须跟指定时间的后面。[如:04:00 2021-12-09]
5、使用相对计时法。指定格式位:now+count time-units,now就是当前时间,time-units是时间单位,这里能够是minutes,hours,days,weeks。
count是时间的数量、几天、几小时。[例如:now+5 minutes]
6、直接使用today、tomorrow来指定完成命令的时间。
如:
at 5pm + 2 days
/bin/ls /home
输入完成成后,按Ctrl+D两次,退出编辑
任务的意思是:两天后的下午5点将执行/bin/ls /home
输入atq,查看系统执行的调度任务及编号
删除编制的任务:
---------------
atrm 任务编号
17、Linux分区
原理介绍:[先添加磁盘,然后分区,格式化,挂载]
1、Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构,
linux中每个分区都是用来组成整个文件系统的一部分;
2、Linux采用了一种叫"载入"的处理方法,它的整个文件系统中包含了一整套的文件和目录,且
将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
查看所有设备挂载情况:
命令:
lsblk或者lsblk -f
硬盘说明:
1、linux硬盘分IDE硬盘和SCSI硬盘,目前基本上使SCSI硬盘;
2、对于IDE硬盘,驱动器标识符为"hdx~",其中"hd"表明分区所在设备的类型,这里是指IDE硬盘了。
"x"为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),"~"代表分区。
前四个分区用数字1到4表示,他们是主分区或扩展分区,从5开始就是逻辑分区。
3、对于SCSI硬盘则标识为"sdx~",SCSI硬盘是用"sd"来表示分区所在设备的类型的,其余则和IDE硬盘的表示方法一样。
挂载:
-----
添加一块硬盘的步骤:
1、虚拟机添加硬盘;
2、分区;
3、格式化;
4、挂载;
5、设置可以自动挂载。
虚拟机添加硬盘步骤:
在虚拟机菜单中,选择设置,然后点击设备列表里添加硬盘,选择下一步,设置磁盘大小,直至完成,然后重启系统;
[通过lsblk指令来查看磁盘添加成功了没有。]
分区命令:fdisk /dev/sdb
开始对/sdb分区
m 显示命令列表
p 显示磁盘分区 同fdisk -l
n 新增分区
d 删除分区
w 写入并退出
说明:开始分区后输入n,新增分区,然后选择p,分区类型为主分区。两次回车默认剩余全部空间。
最后输入w写入分区并退出,若不保存退出输入q。
格式化磁盘:
分区命令:mkfs -t ext4 /dev/sdb1 [其中ext4是分区文件类型]
or mkfs.ext4 /dev/sdb1
挂载:将一个分区与一个目录联系起来
如:mount /dev/sdb1 /newdisk
卸载一个分区
umount 设备名称或者挂载目录
如:umount /dev/sdb1 或者umount /newdisk
【注意:用挂载指令执行的挂载,系统在重启后会消失。】
永久挂载:通过修改/etc/fstab实现挂载,将临时挂载的信息按照/etc/fstab中的格式要求写入即可。UUID可以换成磁盘的名称。
添加完成后,执行mount -a 即可生效
18、磁盘情况查询:
查询系统整体磁盘使用情况
基本语法:
df -h
说明:磁盘使用率达到80%时,需要考虑磁盘扩容;
查询指定目录的磁盘占用情况
基本语法:
du -h /目录 查询指定目录的磁盘占用情况,默认为当前目录;[du:统计每个文件占用磁盘空间的大小。]
-s 指定目录占用大小汇总;
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
磁盘工作情况统计指令:
---------------------
ls -l /opt | grep "^-" | wc -l [统计opt目录下的文件个数]
ls -lR /opt | grep "^-" | wc -l [统计opt目录下的文件及子文件个数]
tree /home/ [树状显示目录结构]
19、NAT网络配置
查看windows环境的中VMnet8网络配置(ipconfig)
windows环境的中无线网卡IP
查看linux的网络配置ifcongfig
ping测试主机之间网络连通性
基本语法:
ping 目的主机(功能描述:测试当前服务器是否可以连接目的主机)
20、linux网络环境配置
第一种方法:自动获取
说明:登录后,通过界面的来设置自动获取ip,特点:linux启动后会自动获取IP,缺点是每次获取的ip地址可能不一样。
第二中方法:指定ip
说明:直接修改配置文件来指定IP,并可以连接到外网(程序员推荐)
编辑 vi /etc/sysconfig/network-scripts/ifcfg-ens33
要求:将ip地址配置成静态的,比如:ip地址为:192.168.200.130
if-ens33 文件说明:
DEVICE=eth0 #接口名(设备,网卡)
HWADDR=00:0C:2x:6x:0x:xx #MAC地址
TYPE=Ethernet #网络类型(通用是Ethernet)
UUID=xxxxxxxxxxx #随机id
#系统启动的时候网络接口是否有效(yes/no)
ONBOOT=yes
#ip的配置方法[none|static|bootp|dhcp](引导时不使用协议|静态分配ip|BOOTIP协议|DHCP协议)
BOOTPROTO=static
#ip地址
IPADDR = 192.168.200.130
#网关
GATEWAY= 192.168.200.2
#域名解析器
DNS1 = 192.168.200.2
特别说明:
Linux系统中的if-ens33文件配置好以后,要将window系统中的net8网络IP,网关与Linux的网段保持一致。
[操作步骤:点击虚拟机的编辑>虚拟机网络编辑器,找到vmnet8的ip修改与Linux的网段保持一致及(NAT设置)网关与linux系统网关的一致。]
网络配置好以后,需要重启网络服务或者重启系统生效。
service network restart、reboot
21、设置主机名和hosts映射
设置主机名:
1、为了方便记忆,可以给linux系统设置主机名,也可以根据需要修改主机名;
2、指令hostname:查看主机名;
3、修改文件在 /etc/hostname 指定
4、修改后,重启生效
设置hosts映射
windows:
在c:\Windows\System32\drivers\etc\hosts 文件指定即可;
如:192.168.200.130 No.1
linux:
在 /etc/hosts 文件指定
如:192.168.200.1 fyEdu
hosts是什么:
一个文本文件,用来记录IP和Hostname(主机名)的映射关系
DNS:
1、DNS,就是Domain Name System缩写,翻译过来就是域名系统;
2、是互联网上作为域名和IP地址相互映射的一个分布式数据库。
主机名解析机制分析:
1、浏览器先检查浏览器缓存中有没有该域名解析IP地址,有就先调用整个IP完成解析;
如果没有,就检查DNS解析器缓存,如果有直接返回IP完成解析。这两个缓存可以理解为:本地解析器缓存;
2、一般来说,当电脑第一次成功访问某一网站后,在一定时间内,浏览器或操作系统会缓存他的IP地址(DNS解析记录)
如:在cmd窗口中输入:
ipconfig /displaydns //DNS域名解析缓存
ipconfig /flushdns //手动清理dns缓存
域名解析流程:[浏览器缓存 → DNS域名解析缓存 → hosts文件检查 → 互联网DNS域名解析]
--------------------------------------------------------------------------------
1、如果本地解析器缓存没有找到对应映射,检查系统中hosts文件中有没有配置对应的域名IP映射。如果有,则完成解析并返回。
2、如果本地DNS解析器缓存和hosts文件 中均没有找到对应的IP,则到域名服务DNS进行解析域。
22、进程管理:
1、在Linux中,每个执行的程序都称为一个进程。每一个进程都分配一个ID号(pid,进程号);
2、每额进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于
屏幕上无法看到的进程,通常使用后台方式执行。
3、一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才结束。
23、显示系统执行的进程:
基本介绍:
ps命令是用来查看目前系统中,有哪些正在执行,以及它们执行的状况。可以不加任何参数。
PID 进程识别号
TTY 终端机号
TIME 此进程所消CPU时间
CMD 正在执行的命令或进程名
ps -a 显示当前终端的所有进程信息
ps -u 以用户的格式显示进程信息
ps -x 显示后台进程运行的参数
ps详解:
-------
1、指令:ps -aux | grep xxx
2、指令说明
System V 展示风格
USER:用户名称
PID:进程号
%CPU:进程占用cpu的百分比
%MEM:进程占用的虚拟内存的百分比[单位:KB]
RSS:进程占用的物理内存大小[单位:KB]
TT:终端名称,缩写
STAT:进程状态,其中S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等候;
STARTED:进程的启动时间
TIME:CPU时间,即进程使用CPU的总时间
COMMAND:启动进程所用的命令和参数,如果过长会被截断显示。
要求:以全格式显示当前所有的进程,查看进程的父进程:
---------------------------------------------------
ps -ef是以全格式显示当前所有的进程
-e 显示所有进程,-f全格式
pe -ef | grep xxx 是BSD风格
UID:用户ID
PID:进程ID
PPID:父进程ID
C:CPU用户计算执行优先级的因子。数值越大,表明进程CPU密集型运算,执行优先级会降低;
数值越小,表明进程是I/O密集型运算,执行优先级会提高;
STIME:进程启动的时间
TTY:完整的终端时间
TIME:CPU时间
CMD:启动进程所有的命令和参数
24、终止进程kill和killall
介绍:
若是某个进程执行一半需要停止时,或是已消失了很大的系统资源时,此时可以考虑停止该进程。使用kill命令来完成此项任务。
基本语法:
kill [选项] 进程号(功能描述:通过进程号杀死进程)
killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,这在系统负载过大而变得很慢时很有用)
如:killall gedit[关闭所有的编辑界面]
常用选项:
-9 :表示强迫进程立即停止
25、查看进程树pstree
基本语法:
pstree [选项],可以更加直观的来看进程信息
常用选项:
-p:显示进程的PID
-u:显示进程的所属用户
26、服务管理
介绍:
服务本质就是进程,但是是运行在后台的,通常会监听某个端口,等待其它程序的请求,比如(mysql,sshd防火请等),
因此我们又称为守护进程,是Linux中非常重要的知识点。
service管理指令:
1、service 服务名[start|stop|restart|reload|status]
2、在centos7后很多服务不再使用service,而是systemctl
3、service指令管理的服务在/etc/init.d查看
查看服务名:
方式1、使用setup 系统服务就可以看到全部;
方式2、/etc/init.d看到service指令管理的服务
服务运行级别:linux系统有7种运行级别
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动;
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登录
运行级别2:多用户状态(NFS),不支持网络
运行级别3:完全的多用户状态(有NFS),无界面,登录后进入控制台命令模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登录后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
开机的流程:
开机->BIOS->/boot->systemd进程1->运行级别->运行级对应的服务
指定运行级别:
在centos7以前在,/etc/initable文件中,centos7以后,进行了简化,直接修改runlevel 后面的数字即可
如:
多用户:multi-user.target:analogous to runlevel 3
图形界面:graphical.target:analogous to runlevel 5
查看当前运行的级别:systemctl get-default
设置默认运行级别:systemctl set-default TARGET.target
chkconfig指令:
--------------
介绍:
1、通过chkconfig命令可以给服务的各个运行级别设置自 启动/关闭;
2、chkconfig指令管理的服务在/etc/init.d查看;
3、Centos7以后,很多服务使用systemctl管理
chkconfig基本语法:
------------------
1、查看服务 chkconfig --list[|grep xxx]
2、chkconfig 服务名 --list
3、chkconfig --level 5 服务名 om/off
4、chkconfig重新设置服务后自启动或关闭,需要重启机器reboot生效。
systemctl管理指令:
1、基本语法:systemctl [start|stop|restart|status] 服务名;
2、systemctl指令管理的服务在/usr/lib/systemd/system 查看。
如:ls -l /usr/lib/systemd/system | grep fire [查看防火墙的服务名称叫什么]
systemctl设置服务的自启状态:
1、systemctl list-unit-files [|grep 服务名](查看服务开机启动状态,grep可以进行过滤);
2、systemctl enable 服务名(设置服务开机启动);
3、systemctl disable 服务名(关闭服务开机启动);
4、systemctl is-enabled 服务名(查询某个服务是否自启动的)。
细节讨论:
---------
1、关闭或者启用防火墙后,立即生效。[telnet 测试 某个端口即可,语法:telnet ip地址 端口号];
2、这种方式指示临时生效,当重启系统后,还是回归以前对服务的设置;
3、如果希望设置某个服务自启动或关闭永久生效,需要使用systemctl [enable|disable] 服务名。
打开或者关闭指定端口:
---------------------
在真正的生产环境,往往需要将防火墙打开,但问题来了,如果将防火墙打开,那么外部请求数据包就不能跟服务器监听端口通讯。
这时,需要打开指定的端口。
firewall指令:
打开端口:firewall-cmd --permanent --add-port=端口号/协议;
如:firewall-cmd --permanent --add-port=111/tcp[在防火墙上将111的端口打开]
关闭端口:firewall-cmd --permanent --remove-port=端口号/协议;
重新载入,才能生效:firewall-cmd --reload
查询端口是否开放:firewall-cmd --query-port=端口/协议
只查看已开放的端口:firewall-cmd --zone=public --list-ports
查看端口的协议指令:
netstat -anp[|more|grep 端口名]
查看端口被占用指令:
netstat -tunlp
27、动态监控进程:[free,iostat,vmstat]
介绍:
top与ps命令很相似,它们都用来显示正在执行的进程。top与ps最大的不同之处,在于top在执行一段时间可以更新正在运行的进程。
iotop 显示磁盘读写进程
基本语法:
top [选项]
选项说明:
-d 秒数 :指定top命令每隔几秒更新,默认是3秒;[如:top -d 5 ,5秒刷新一次进程]
-i :使top不显示任何闲置或僵死进程;
-p :通过指定监控进程ID来仅仅监控某个进程的状态。
交互操作说明:
P :以CPU使用率排序,默认就是此项;
M :以内存的使用率排序;
N :以PID排序;
q :退钱top
监控特定用户的进程:
输入top ,然后输入u,输入用户名即可。
终止特定用户的进程:
输入top,然后输入k,输入用户进程号,然后输入9杀死即可。
28、监控网络状态:
查看系统网络情况:netstat
基本语法:
netstat [选项]
选项说明:
-an 按一顺序排列输出
-p 显示哪个进程在调用
如:netstat -anp | more[查看哪些网络连接并带进程号]
检测主机连接命令ping:
是一种网络检测工具,它主要是用来检测远程主机是否正常,或是两部主机间的网线或网卡故障。
29、rpm包的管理:
介绍:
rpm用于互联网下载包的打包及安装工具,它包含在某些linux分发版中。它生成具有.rpm扩展名的文件。
rpm包的简单查询指令:
rpm -qa:查询所安装的所有rpm软件包
rpm -q 软件包名:查询软件包是否安装
rpm -qi 软件包名:查询软件安装信息
rpm -ql 软件包名:列出软件包中所有文件存放的位置
rpm -qf 文件全路径名:查询文件所属的软件包
rpm -qa | grep xxx
rpm -qi firefox
rpm -qf /etc/passwd
30、卸载rpm包:
基本语法:
rpm -e RPM包名称
细节讨论:
如果其他软件包依赖于您要卸载的软件包,卸载时则会产生错误信息。
如果我们增加 --nodeps,就可以强制删除,但是一般不推荐这样做,因为依赖于该如软件包的程序可能无法运行。
如:rpm -e --nodeps firefox
31、rpm安装包:
基本语法:
rpm -ivh RPM包全路径名称
参数说明:
i=install 安装
v=versbose 提示
h=hash 进度条
32、yum安装软件包:
介绍:
yum是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。
yum的基本指令:
查询yum服务器是否有需要安装的软件
yum list | grep xx软件列表
安装指定的yum包:
yum install xxx 下载安装
移除指定的软件:
yum remove xxx
linux系统下安装开发程序步骤流程:
--------------------------------
1、新建上传包的目录,mkdir /opt/jdk;
2、通过xftp上传下载好的jdk软件包到/opt/jdk目录下;
3、解压上传的jdk软件包;
4、创建jdk目录,mkdir /usr/local/java;
5、将解压的jdk放到/usr/local/java目录下;[mv /opt/jdk/ /usr/local/jdk/]
6、配置环境变量;vi /etc/profile
EXPORT JAVA_HOME=/usr/local/java/jdk
EXPORT PATH=$JAVA_HOME/BIN:$PATH
7、重启配置生效:source profile。
33、Shell编程:
介绍:
Shell是一个命令解释器,它为用户提供了一个向linux内核发送请求以便运行程序的界面系统机程序,用户可以用Shell来启动、挂起、停止甚至是编写一些程序。
脚本格式要求:
1、脚本以#!/bin/bash开头
2、脚本需要有可执行权限
脚本的常用执行方式:
方式1:输入脚本的绝对路径或相对路径
说明:首先要赋予hello.sh 脚本的+x权限,再执行脚本
方式2:不用赋予脚本+x权限,直接执行即可
比如:sh hello.sh
34、Shell的变量:
Shell变量介绍:
1、Linux Shell中的变量分为,系统变量和用户自定义变量;
2、系统变量:$HOME,$PWD等等;
3、显示当前shell中的所有变量:set。
Shell变量的定义:
基本语法:
1、定义变量:变量=值;
2、撤销变量:unset 变量;
3、声明静态变量:readonly 变量,注意静态:不能unset。
Shell变量的定义:
定义变量的规则:
1、变量名称可以由字母、数字和下划线组成,但是不能以数字开头;
2、等号两侧不能有空格;
3、变量名称一般习惯大写。
将命令的返回值赋给变量
1、A=`date`反引号,运行里面的命令,并把结果返回给变量A;
2、A=$(date)等价于反引号
35、设置环境变量:
基本语法:
1、export 变量名=变量值(功能描述:将shell变量输出为环境变量);
2、source配置文件 (功能描述:让修改后的配置信息立即生效);
3、echo $变量名 (功能描述:查询环境变量的值)。
shell脚本的多行注释:
--------------------
:<<!
内容
!
注意:开头跟结尾最好是独立的一行,如果不能独立一行,与后面的内容最好有空格分隔开。
36、位置参数变量:
介绍:
当我们执行一个shell脚本时,如果希望获取到命令行的参数信息,就可以使用到位置参数变量;
如:./myshell.sh 100 200
基本语法:
$n (功能描述:n为数字,$0代表命令本身,$1-$9代表第一到第九个参数,十以上的参数需要用到大括号包含,如${10});
$* (功能描述:这个变量代表命令行中所有的参数,$*把所有的参数看成一个整体);
$@ (功能描述:这个变量也代表命令行中所有的参数,不过$@把每个参数区分对待);
$# (功能描述:这个变量代表命令行中所有参数的个数)
37、预定义变量:
基本介绍:
就是shell设计者事先已经定义好的变量,可以直接在shell脚本中使用
基本语法:
$$ (功能描述:当前进程的进程号(PID));
$! (功能描述:后台运行的最后一个进程的进程号(PID));
$? (功能描述:最后一次执行的命令的返回状态。如果这个变量的值为0,证明上一个命令正确执行);
如果这个变量的值为非0(具体是哪个数,由命令自己来决定),则证明上一个命令执行不正确了。
注意:命令如果想以后台的方式执行,只需要在命令的后面输入空格加上"&"字符就可以了。
38、运算符:
基本介绍:
学习如何在shell中进行各种运算操作;
基本语法:
1、"$((运算式))"或"$[运算式]"或expr m + n;
2、注意expr运算符间要有空格;
3、expr m - n;
4、expr \*,/,% 乘,除,取余
39、条件判断:
判断语句:
基本语法:
[condition](注意condition前后要有空格)
#非空返回true,可使用$?验证(0为true,>1为false)
如:[ zhangsan ] 返回的结果为true;[] 返回的结果为false。
条件判断:
常用判断条件:
1、= 字符串比较;
2、两个整数的比较:
-lt 小于;
-le 小于等于little e
-eq 等于
-gt 大于
-ge 大于等于
3、按照文件权限进行判断
-r 有读的权限
-w 有写的权限
-x 有执行的权限
4、按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并是一个目录
如:判断"ok"是否等于"ok"?
【步骤:新建一个.sh的文本,写上声shell明的开头。】
如:
#!/bin/bash
#判断"ok"是否等于"ok",
#注意判断条件两边要有空格
if [ "ok" = "ok" ] //条件为真时,进入then执行代码块
then
#如果是真的就输出,否则什么都不输出
echo "相等"
fi
#判断23是否大于等于22
if [ "23" -ge "23" ]
then
echo "大于等于"
fi
#判断/root/shcode/aaa.txt目录中的文件是否存在
if [ -f /root/shcode/aaa.txt ]
then
echo "存在"
fi
40、流程控制:
if判断:
基本语法:
if[ 条件表达式 ]
then
代码
fi
或者,多分支
if[ 条件表达式 ]
then
代码
elif[ 条件表达式 ]
then
代码
fi
注意事项:[ 条件表达式 ],中括号和条件判断之间必须有空格。
case语句:
基本语法:
case $变量名 in
"值1")
如果变量的值等于值1,则执行程序1
;;
"值2")
如果变量的值等于值2,则执行程序2
;;
...省略其他分支...
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
for循环:
基本语法1:
for 变量 in 值1 值2 值3...
do
程序/代码
done
基本语法2:
for((初始值;循环控制条件;变量变化))
do
程序/代码
done
while循环:
基本语法1
while [ 条件判断式 ]
do
程序/代码
done
41、read读取控制台输入:
基本语法:
read(选项)(参数)
选项:
-p :指定读取值时的提示符;
-t :指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。
如:#!/bin/bash
#读取控制台输入一个NUM值,在10秒内输入:
read -t 10 -p "请输入一个数NUM=" NUM
echo "你输入的数NUM=$NUM"
参数:
变量:指定读取值的变量名
42、函数:
函数介绍:
Shell编程和其他编程语言一样,有系统函数,也可以自定义函数。
系统函数:
basename基本语法
功能:返回完整路径最后/的部分,常用于获取文件名
basename[pathname][suffix]
basename[string][suffix]
(功能描述:basename命令会删掉所有的前缀包括最后一个('/')字符,然后将字符串显示出来)
如:请返回/home/aaa/test.txt的"test.txt"部分
basename /home/aaa/test.txt
选项:
suffix为后缀,如果suffix被指定了,basename会将pathname或string中的suffix去掉。
dirname基本语法:
功能:返回完整路径最后/的前面部分,常用于返回路径部分
dirname 文件绝对路径
(功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的部分),然后返回剩下的路径(目录部分))
如:请返回/home/aaa/test.txt的/home/aaa
dirname /home/aaa/test.txt
自定义函数:
基本语法:
[ function ]funname[()]
{
Action;
[reurn int;]
}
调用直接写函数名:funname [值]
------------------------------
如:
#!/bin/bash
#定义函数getSum
function getSum(){
sum=$n1+$n2
echo "和是=$sum"
}
#输入两个值
read -p "请输入第一个数n1=" n1
read -p "请输入第二个数n2=" n2
#调用自定义函数
getSum $n1 $n2
43、案例演示:
使用脚本完成指定的备份任务:
1、每天凌晨2:30分备份(使用crond来调度)数据库test 到/data/backup/db
2、备份开始跟备份结束能够给出相应的提示信息;
3、备份后的文件要求以备份时间文件名,并打包成.tar.gz的形式,比如:xxxx-xx-xx_xxxxx.tar.gz;
4、在备份的同时,检查是否有10天前备份的数据库文件,如果有就将其删除。
代码演示:在/usr/sbin下创建mysql_db_backup.sh脚本,因系统管理员的权限大些
#!/bin/bash
#备份目录
BACKUP=/data/backup/db
#当前时间
DATATIME=$(data +%Y-%m-%d_%H%M%S)
#测试时间输出是否正确
echo ${DATATIME}
#数据库地址
HOST=localhost
#数据库用户名
DB_USER=root
#数据库密码
DB_PW=xxxxxxxx
#备份的数据库名[要将哪个数据库备份]
DATABASE=XXXX
#创建备份目录,如果不存在,就创建
[ ! -d "${BACKUP}/${DATATIME}"] && mkdir -p "${BACKUP}/${DATATIME}"
#备份数据库
mysqldump -u${DB_USER} -p${DB_PW} --host=${HOST} -q -R --database ${DATABASE} | gzip > ${BACKUP}/${DATATIME}/${DATATIME}.sql.gz
#将文件处理成 tar.gz
cd ${BACKUP}
tar -zcvf ${DATATIME}.tar.gz ${DATATIME}
#删除对应的备份目录
rm -rf ${BACKUP}/${DATATIME}
#删除10天前的备份文件
find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
#-exec rm -rf {} \ 固定写法,是将前面的结果执行删除的意思
echo "备份数据库${DATABASE}成功~"
最后启用调度任务执行即可。
crontal -e
30 2 * * * /usr/sbin/mysql_db_backup.sh
可以使用crontal -l查看任务调度的列表
44、系统常用的日志:
/var/log/ 目录就是系统日志文件的保存位置
系统常用的日志:
/var/log/boot.log 【*】系统自动日志
/var/log/cron 【*】记录与系统定时任务相关的日志
/var/log/cups/ 记录打印信息的日志
/var/log/dmesg 记录系统在开机时内核自检的信总。也可以使用dmesg命令直接查看内核自检信息
/var/log/btmp 记录错误登录的日志。这个文件时二进制文件,不能直接使用vi查看,而要使用lastb命令查看。如:lastb
/var/log/lasllog 【*】记录系统中所有用户最后一次的登录时间日志。这个文件也是二进制文件,要使用lastlog查看。
/var/log/mailog 【*】记录邮件信息日志
/var/log/message 【*】记录系统重要信息的日志。这个日志文件中会记录linux系统的绝大多数重要信息。如果出现问题,首先检查的应该就是这个日志文件
/var/log/secure 【*】记录验证和授权方面的信息,只要涉及账户和密码的程序都会记录。比如系统登录、ssh登录、su切换、sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中
/var/log/wtmp 永久记录所有用户的登录/注销信息,同时记录系统的启动、重启、关机事件。是二级制文件,要是用last查看。
/var/log/ulmp 【*】记录当前已经登录的用户信息。这个文件会随着用户的登录和注销而不断变化,值记录当前登录用户的信息。这个文件不能用vi查看,而要使用w、who、users等命令查看。
45、日志管理服务rsyslogd:
CentOS7.6日志服务是rsyslogd,CentOS6.x日志服务是syslogd。
rsyslogd功能更强大,rsyslogd的使用、日志文件的格式和syslogd服务兼容的。
查询linux中的rsyslogd服务是否启动
ps -aux | grep "rsyslog" | grep -v "grep"
[ grep -v "grep" 是反向匹配的意思,就是将前面查询的结果过滤掉本次的]
查询rsyslogd服务的自启动状态
systemctl list-unit-files | grep rsyslog
配置文件:/etc/rsyslog.conf说明:
--------------------------------
编辑文件时的格式为:*.* 存放日志文件
其中第一个*代表日志类型,第二个*代表日志级别
1、日志类型分为:
auth ##pam产生的日志
authpriv ##ssh、ftp登录信息的验证信息
corn ##时间任务相关
kern ##内核
lpr ##打印
mail ##邮件
mark(syslog)-rsyslog ##服务内部的信息,时间标识
news ##新闻组
user ##用户程序产生的相关信息
uucp ##unix to unix copy主机之间相关的通信
local 1-7 ##自定义的日志设备
2、日志级别:
debug ##有调式信息的,日志通信最多
info ##一般信息日志,最常用
notice ##最具有重要性的普通条件的信息
warning ##警告级别
err ##错误级别,阻止某个功能或者模块不能正常工作的信息
crit ##严重级别,阻止整个系统或整个软件不能正常工作的信息
alert ##需要立刻修改的信息
emerg ##内核崩溃等重要信息
none ##什么都不记录
注意:从上到下,级别从低到高,记录信息越来越少。
由日志服务器rsyslogd记录的日志文件,日志文件的格式包含以下4列:
1、事件产生的时间;
2、产生事件的服务器的主机名;
3、产生事件的服务名或程序名;
4、事件的具体信息。
46、日志轮替:
基本介绍:
日志轮替就是把旧的日志文件移动并改名,同时建立新的空日志文件,当旧日志文件超出保存的范围就会进行删除。
日志轮替文件命名:
1、centos7使用logrotate进行日志轮替管理,要想改变日志轮替文件名字,通过/etc/logrotate.conf配置文件中"dateext"参数;
2、如果配置文件中有"dateext"参数,那么日志会用日期来作为日志文件的后缀;
3、如果配置文件中没有"dateext"参数,日志文件就需要进行改名了。
logrotate配置文件参数说明:
参数 参数说明:
daily 日志的轮替周期是每天
weekly 日志的轮替周期是每周
monthly 日志的轮替周期是每月
rotate 数字 保留的日志文件的个数,0指没有备份
compress 日志轮替时,旧的日志进行压缩
create mode owner group 建立新的日志,同时指定新日志的权限与所有者和所属组
mail address 当日志轮替时,输出内容通过邮件发送到指定的邮件地址
missingok 如果日志不存在,则忽略该日志的警告信息
notifempty 如果日志为空文件,则不进行日志轮替
minsuze 大小 日志轮替的最小值。也就是日志一定要达到这个最小值才会轮替,否则不轮替
size 大小 日志只有大于指定大小才会进行日志轮替,而不是按照时间轮替
dateext 使用日期作为日志轮替文件的后缀
sharedscripts 在关键字之后的脚本只执行一次
prerotate/endscript 在日志轮替之前执行脚本命令
postrotate/endscript 在日志轮替之后执行脚本命令
47、查看内存日志:
journalctl 可以查看内存日志
常用的指令:
journalctl ##查看全部
journalctl -n 3 ##查看最近3条
journalctl --since 19:00 --until 19:10:10 ##查看起始时间到结束时间的日志可加日期
journalctl -p err ##报错日志
journalctl -o verbose ##日志详细内容
journalctl_PID=1245 _COMM=sshd ##查看包含这些参数的日志
或者journalctl | grep sshd
注意:journalctl 查看的是内存的日志,重启清空
48、linux内核地址:www.kernel
linux0.01源代码及注释
内核如何升级:
1、显示当前系统内核的版本,指令:
uname -a
2、检测内核版本,显示可升级的内核,指令:
yum info kernel -q
3、升级内核,指令:
yum update kernel
4、查看已安装的内核,指令:
yum list kernel -q
49、Linux系统备份:
基本介绍:
实体机无法做快照,如果系统出现异常或者数据损坏,后果严重,要重做系统,还会造成数据丢失。我们可以使用备份和恢复技术。
Linux的备份和恢复很简单,有两种方式:
1、把需要的文件(或者分区)用TAR打包就行,下次需要恢复的时候,再解压开覆盖即可;
2、使用dump和restore命令。
如果Linux上没有dump和restore命令,需要先安装
指令:
yum -y install dump
yum -y install restore
使用dump完成备份:
-----------------
基本介绍:
dump支持分卷和增量备份(所谓增量备份是指上次备份后 修改/增加过的文件,也称差异备份)。
dump语法说明:
dump [-cu][-123456789][-f <备份后文件名>][-T <日期>][目录或文件系统]
dump []-wW
选项说明:
-c:创建新的归档文件,并将由一个或多个文件参数所指定的内容写入归档文件的开头。
-0123456789:备份的层级。0为完成备份,会备份所有文件。若指定0以上的层级,则备份至上一次备份以来修改或新增的文件,到9后,可以再次轮替。c代表[0-9],不指定默认c是0,完整备份。
-f <备份后文件名>:指定备份后文件名
-j:调用bzlib库压缩备份文件,也就是将备份后的文件压缩成bz2格式,让文件更小。
-T <日期>:指定开始备份的时间与日期
-u:备份完毕后,在/etc/dumpdares中记录备份的文件系统,层级,日期与时间等;
-t:指定文件名,若该文件已存在备份文件中,则列出名称
-W:显示需要备份的文件及其最后一次备份的层级,时间,日期;
-w:与-W类似,但仅显示需要备份的文件。
显示需要备份的文件及其最后一次备份的层级,时间,日期:
dump -W
查看备份时间文件:
cat /etc/dumpdates
注意:使用dump备份,如果是备份分区,支持增量备份;如果是备份文件或者目录,不再支持增量备份,即只能使用0级别备份,参数u也不能在备份文件或目录中使用。
如:
1、将/boot分区所有内容备份到/opt/boot.bak.bz2文件中,备份层次为"0"
dump -0uj -f /opt/boot.bak.bz2 /boot
2、在/boot目录下拷贝一个文件,备份层级为"1"(只备份上次使用层次"0"备份后发生改变的数据),注意看boot1.bak有多大
dump -1uj -f /opt/boot1.bak.bz2 /boot
【通过dump命令再配合crontab可以实现无人值守备份。】
使用restore完成恢复:
--------------------
基本介绍:
restore命令用来恢复已备份的文件,可以从dump生成的备份文件中恢复原文件。
基本语法:
restore[模式选择][选项]
模式选择:四个模式。不能混用,在一次命令中,只能指定一种。
-C:使用对比模式,将备份的文件与已存在的文件相互对比;
-i:使用交互模式,在进行还原操作时,restores指令将依序询问用户;
-r:进行还原模式;
-t:查看模式,看备份文件有哪些文件。
选项:
-f <备份设备>:从指定的文件中读取备份数据,进行还原操作。
如:将备份的/opt/boot1.bak.bz2还原
restore -C -f /opt/boot1.bak.bz2 与最新的文件进行比较,不会还原数据,仅仅比较备份的与最新的差异。
restore -r -f /opt/boot1.bak.bz2 还原
restore -t -f /opt/boot1.bak.bz2 查看备份的/opt/boot1.bak.bz2有哪些文件或数据
细节:
restore命令还原模式,注意细节:如果你有增量备份,需要把增量备份文件也进行恢复,有几个增量备份文件就恢复几个,按顺序来恢复即可。[顺序指的是按0-9的顺序来执行]
50、linux可视化管理:
Webmin:
安装webmin&配置:
----------------
下载地址:http://download.webmin/download/yum/
也可以使用 wget http://download/webmin/download/yum/webmin-版本.noarch.rpm
安装:rpm -ivh webmin-版本.noarch.rpm
安装好后,重置密码:[因为Linux系统的管理员也是root,webmin的用户也是root,避免密码弄混]
指令:/usr/libexec/webmin/changepass.pl /etc/webmin root test
修改webmin服务端口:[修改port(系统访问端口)跟listen(对应防火墙)两个端口即可]
vim /etc/webin/miniserv.conf
重启webmin
指令:
/etc/webmin/restart #重启
/etc/webmin/start #启动
/etc/webmin/stop #停止
防火墙开放端口:
firewall-cmd --zone=pubic --list-ports #查看已开放的端口
firewall-cmd --zone=public --add-port=修改的端口/通信协议 --permanent #配置防火墙开放端口
firewall-cmd --reload #更新防火墙配置,使开放的端口生效
登录webmin
http:ip:端口 可以访问了
用webmin的root跟密码登录下
BT:
安装BT&配置:宝塔Linux面板使提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库多项服务器管理功能。
-----------------------------------
安装和使用:
yum install -y wget && wget -O install.sh http://download.bt/install_6.0.sh && sh install.sh
安装成功后控制台会显示登录地址,账号密码,复制浏览器打开登录即可。如果不小心忘记记录账号密码及地址,使用指令:bt default可以查看。
51、分割指令:cut -d “” -f 第几段 与 awk -F “” ‘{print $第几段}’
统计显示前2个访问某个端口的IP次数:[awk -F分割的指令,""表示按什么来分割,{print $第几段}表示将需要取的第几段打印出来]
----------------------------------------------------------------------------------------------------------------------
cat access.log | awk -F " " '{print $取的段号}' | sort | uniq -C | sort -nr | head -2
统计连接到服务器的各个IP情况,并按连接数从大到小排序:
-----------------------------------------------------
netstat -an | grep ESTABLISHED | awk -F " " '{print $5}' | cut -d ":" -f 1 | sort | uniq -c| sort -nr
说明:cut:表分割, -d表示按什么标准,""表示按什么标准内容分割,-f表示取分割的第几段,sort表示排序,uniq -c表示统计相同的个数,
sort -nr表示从总数大到小排序,sort -n表总数从小到大。sort在进行排序时,如果先不排序进行统计,就会使用默认的排序统计;
如果相同的数据不贴邻,那么则不会被uniq -c统计成一类。
注意:
cut -d ""的分割不能用来分割空格;awk -F ""可以用来分割空格,这个空格中间不管有多少个,它将作为一个整体去划分。
用shell写一个脚本,对文本t3.txt中无序的一列数字排序,并将总和输出。
t3.txt内容:
9
6
7
5
4
3
sort -n t3.txt | awk '{sum+=$0;print $0} END '{print "和="sum}'
说明:'sum+=$0'表示将第一列的值求和;print $0表是将第一列的值打印出来,后面的'print "和="sum'是将和的值打印。
统计/home目录下所有文件个数及所有文件总行数的指令:
--------------------------------------------------
find /home -name "*.*" | wc -l 统计文件个数
find /home -name "*.*" | xargs wc -l 统计文件内容总行数
说明:xargs表示统计文件内容的行数;wc -l表示统计最终总数。
监听本机哪个端口的通信指令:
---------------------------
tcpdump -i ens33 host ip地址 and port 端口号 >> 输出文件的位置名称
如:使用tcpdump监听本级,将来自ip 192.168.200.135,tcp端口为22的数据,保存输出到tcpdump.log,用来做数据分析
步骤:
1、首先确认tcpdump指令可以使用不;
2、tcpdump -i ens33 host 192.168.200.135 and port 22 >>tcpdump.log
说明:tcpdump表监听,-i表示对哪个文件,ens33网络设备文件。
chattr(change attribute)锁定,需要操作时再打开的文件。
-----------------------------------------------------
如:锁定/etc/password 让用户不能随意useradd,除非解除锁定。
chattr +i /etc/password 锁定
chattr -i /etc/password 解锁
注意:
如果将/usr/sbin/chattr这个指令移动到别的目录下,那么chattr +i/-i 指令就不能使用了。这个是防止chattr指令被黑客攻击,串改系统文件。
但就这么一移动也不安全,因为会使用find / -name chattr来查找该文件。为了不让被找到,将chattr文件名修改就好。或者干脆直接将/usr/sbin/chattr文件修改就好。
52、常用Nginx模块,用来做什么?
rewrite模块,实现重写功能;
access模块:来源控制
ngx_http_gzip_module:网络传输压缩模块
ngx_http_proxy_module:模块实现代理
ngx_http_upstream_module:模块实现定义后端服务器列表
ngx_cache_purge:实现缓存清除功能
53、mysql数据库root的密码忘记了,怎么解决?
1、在/etc/mysqlf配置文件中,在pid-file行下,添加指令:
skip-grant-tables[告诉系统不走权限表]
2、重启mysql服务
service mysqld restart
3、输入登录数据库指令:
mysql -u root -p
此时的密码为空
4、登录mysql数据库后,使用show database,查看数据库指令
5、使用mysql数据库,指令:user mysql
6、查看表,show tables,找到user这张表,查看user表的字段,指令:desc user;将authentication_string字段的值修改就好了,这个是记录密码的。
7、修改密码,指令:[passwd是个函数。]
update user set authentication_string=password("test@12346") where user = 'root';
8、修改完密码后,刷新下权限,指令:
flush privileges;
9、再进/etc/mysqlf配置文件,将skip-grant-tables注释,让系统走权限表即可。
10、重启MySQL服务就好了,使用修改后的密码登录就行了。
service mysqld restart
54、安全扫描系统攻击或被感染的工具:
可以利用chkrootkit/rootkit hunter检测rootkit脚本。[rootkit是入侵者使用工具,在不察觉的建立了入侵系统途径]
网址:wget ftp://ftp.pangeia.br/pub/seg/pac/chkrootkit.tar.gz
官方网址:http://www.chkrootkit
1、将下载好的压缩文件解压
tar -zxvf chkrootkit.tar.gz
2、进去文件,执行指令:
./chrootkit
检测系统文件就好。如果扫描出来的文件有红色的点,表示有感染。
利用工具Tripwire检查文件系统完整性
网址:http://www.tripwire
55、窗口可视化设置系统自启项:
setup、ntsysv[带*的表示是系统自启的]
56、ubuntu内核下系统的安装:
ubuntu的系统安装与Linux系统内核的centos类似,不同的是:
1、安装的时候,先要设计普通用户的账号跟密码,然后再安装;
2、切换用户的时候,不用加"-";
3、普通用户执行超过本身用户的权限时,可以使用"sudo 执行指令"来执行root用户的权限;
4、root用户在ubuntu中没有密码,当切换的时候,不知道密码,输入不进去,使用"sudo passwd"指令来设置root的密码;
5、切换root用户的时候,输入sudo passwd设置的密码,进入root用户的操作;
6、ubuntu系统下自带python开发工具软件,而linux中的centos没有。
57、Linux中ubuntu系统内核APT软件管理和远程登录:
-------------------------------------------
简介:
APT是Advanced Packaging Tool的简称,是一款安装包管理工具。在ubuntu下,使用apt命令进行软件包的安装、删除、清理等。
内部文件讲解:
/etc/apt/sources.list文件内容有:
1、有服务器地址(该地址在美国);
2、修改指向清华的镜像。
APT的安装、更新、卸载指令:
必须知道的指令:
---------------
sudo apt-get update [更新源]
sudo apt-get install package [安装包]
sudo apt-get remove package [删除包]
sudo apt-get source package [下载该包的源代码]
sudo apt-cache show package [获取包的相关信息。如:说明、大小、版本]
了解的指令:
-----------
sudo apt-cache search package [搜索软件包]
sudo apt-get install package --reinstall [重新安装]
sudo apt-get -f install [修复安装]
sudo apt-get remove package --purge [删除包,包括配置文件等]
sudo apt-get build-dep package [安装相关的编译环境]
sudo apt-get upgarde [更新已安装的包]
sudo apt-get dist-upgrade [升级系统]
sudo apt-cache depends package [了解使用改包依赖哪些包]
sudo apt-cache rdepends package [查看改包被哪些包依赖]
58、Linux自定义系统
步骤:[需要用到2个系统,一个是主系统,一个是映射的系统]
1、添加一块磁盘,分区的时候选择一块磁盘;
2、将新添加的磁盘分区、格式化;
3、挂载磁盘;
4、安装grub,将内核文件拷贝至目标磁盘;
5、验证安装是否成功;
6、拷贝对应的文件系统到挂载的磁盘;
7、修改挂载磁盘的uuid;
8、创建目标主机根文件系统
指令:mkdir -pv /mnt/sysroot/{etc/rc.d,usr,var,proc,sys,dev,lib,lib64,bin,sbin,boot,srv,mnt,media,home,root}
9、拷贝需要的bash和库文件给新的系统使用
cp /lib64/*.* /mnt/sysroot/lib64/
cp /bin/bash /mnt/sysroot/bin/
10、新建添加一个系统,然后将默认分配的硬盘移除掉,执行自定义创建的磁盘即可。
安装指令:安装grub,内核文件拷贝至目标磁盘
grub2-install --root-directory=/mnt/dev/sdbx
验证grub是否安装成功:
hexdump -C -n 512 /dev/sdbx
拷贝需要的文件到磁盘
cp -rf /boot/* /mnt/boot/
修改grub2/grub2.cfg文件,将磁盘的uuid换成自定义磁盘的uuid即可。
在grub2.cfg中linux16后面的末尾加上:selinux=0 init=/bin/bash[告知系统不要走初始系统]
59、web服务器常用负载架构:
1、Nginx
2、Haproxy
3、Keepalived
4、LVS
版权声明:本文标题:Linux实用知识点整理 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1726710724h1016786.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论