一、linux命令
Linux是一个内核
内核是一个操作系统的核心
现实中热门的操作系统有:windows(个人)、ios苹果、liunx(安卓、鸿蒙、麒麟、欧拉)
企业服务器有的多的有:centos、红帽、ubantv、debian(kaili)
服务器:是一个工业级的电脑,从物理结构上来看我们个人电脑没有一模一样,区别性能更强
工业生产:我们公司跑的网站,用的app,小程序等等线上业务
集群:多台电脑协作完成一件事,对外用户提供服务
Linux下管理员root
windows下管理员角administrator(admin)
我们电脑网卡两个
eth0(linux):作用是将我们的设备和网络中的其他设备联系起来
lo网卡(windows):默认127.0.0.1,设备的自检网卡
容灾思想(如何甩锅):如果这个业务产生了故障,你怎么保证它的数据安全
操作系统里的命令分:内部命令和外部命令
内部:ip a
外部:ifconfig
type可以查看命令是否时内部、外部命令
liunx:用的解析器角shell(又叫bash)
Inodo:相当于身份证
access:访问时间
modify:内容修改时间
change:文件的内容和属性信息的改变(数据信息和元数据信息)
打开VMware-->打开终端,或者打开远程连接工具练级liunx
type是可以查看命令是否是内部命令还是外部命令
1、查看IP命令、网卡情况和系统应用
查看IP:ifconfig
查看系统应用启动与关闭:chkconfig
开启应用:chkconfig --level=5 应用 on
关闭应用:chkconfig --level=5 应用 off
网卡情况:ip a
# hostname弊端为查所以IP,当前如果是自己练习可以使用查ip。
# 工作中有多个IP,就不适合
查IP:hostname -I
2、连网与断网命令
连网:ifup eth0
断网:ifdown eth0
3、查看当前处于的位置、当前路径下有什么
当前位置:pwd
当前路径下有:ls
ls -a #查看当前路径下所以的内容,a表示all
ls -l (简写ll)
# ll查询的结果,总共7部分
1权限 2硬链接数 3属主 4属组 5文件大小 6上次修改文件时间 7文件名
ls --help # 查看命令的帮助
ls -lh # 人性化的方式显示
ls -d test # 查看当前文件的信息
4、查看当前网络情况、结束进程和查看端口
ping命令是
结束进程:CTRL+C
例如:ping 网站(www.baidu,con)
# 查看端口
netstat -antup | grep "端口名称"
netstat -antup | grep "httpd" # 查看httpd的端口
5、路径切换
cd命令
切换到根目录:cd /
切换到上一级:cd ..
cd 目标路径
cd
cd - # 切换到上一次的访问路径
6、创建文件夹(目录)和创建文件(.txt类型)
创建目录:mkdir 目录名称
创建文件:touch 文件名称
例如:
创建test目录:mkdir test
创建多个目录:mkdir test test1 test2
mkdir test{0..5}
mkdir -p ./test/testt # 创建多层文件(套娃)
创建test.txt文件:touch test.txt
创建多个文件: touch test.txt tset1.txt test2.txt
touch test{0..6}.txt
#在同一目录下不能用相同的目录或文件名称
7、删除
# rm命令:
rm 文件名称
例如:删除test(目录)
rm test
rm -r test
rm -rf test
# -f :非交互强制删除
# -r:删除目录(rm -rf 一起使用)
# -r:递归
8、复制
# cp命令 cp还具有改名功能
cp 源文件路径 目标文件路径
例如:把test.txt复制到test里
cp test.txt test
cp -r test test # -r 忽略目录 复制目录test到test
# -r:递归
例如:把test.txt复制到test中.并test.txt修改ttt.txt
cp test.txt test/ttt.txt
例如:复制时不改变文件属性
cp -p test.txt test
9、剪切
# mv命令 还可以修改名称
mv 源文件路径 目标文件路径
例如:把test.txt剪切到test里
mv test.txt test
例如:把test.txt剪切到test里,并修改test.txt为ttt.txt
mv test.txt test/ttt.txt
10、输入输出
#echo命令
echo 字段 文件名
echo 字段
例如:显示在终端
echo “hello word”
例如:写入test.txt
echo "hello word" test.txt
# 输出结果有换行输出
echo -e "hello word \n hello yunjisuan"
11、查看文件内容
# cat命令、head命令、tail命令
# cat:查看全部
# head:默认查看前10行
# tail:默认查看末尾10行
例如:查看test.txt
cat test.txt # 全部
head test.txt # 前10行,默认前10行
tail test.txt # 后10行,默认后10行
# head和tail还有 -n命令
例如: 查看test.txt的前20和查看后20行
head -20 test.txt # 前20行
tail -20 test.txt # 末尾20行
head -20 test.txt;tail -20 test.txt # 前20末尾20行
例如:查询test.txt中的30行到40行的内容
head -40 test.txt | tail -11
例如:查询并查询行号
cat -n test.txt # n表示的是number的意思
nl test.txt # nl表示 cat -n 的缩写
例如:可以查看test.txt隐藏的特殊符号
cat -A test.txt # 可以查看隐藏的特殊符号
例如:到这输出test.txt
tac test.txt # 从最后一行正着输出
例如:实时监控test.txt结尾的文件清空并关闭
tail -f test.txt # 实时监控test.txt的末尾行情况
CTRL+C # 停止监控
例如:以空格出页数
more test.txt # 空格换页,只能向下翻页
例如:按光标查询
less test.txt # 按光标滚轮上下翻页 点q退出
12、find命令
#find命令类型
find 当前路径 -type f或者d
find . -name 目标文件名称
例如:查找test中的test.txt
find . -name "test.txt"
例如:查找当前路径下的文件(.txt类型)或者目录(文件夹)
find . -type f #查找文件
find . ! -type f #查找当前路径下所以不是文件的文件
find . -type d #查找目录(文件夹)
#加其他用法
例如:删除当前目录下的.txt类型的文件
find . -name "*.txt" -type f -exec rm -rf {} \;
find . -name "*.txt" -type f | xargs rm -rf
例如:移动剪切到/tmp中
find . -name "test*" -type f | xargs -i mv {} /tmp \;
find . -name "*.txt" -type f -exec mv {} /tmp \;
#删除.txt类型的文件
find . -name "*.txt" -type f -exec rm -rf {} \;
# 按大小查询
find . -size +M或者-M (+表示大于,-表示小于)
# 按用户查找
find . -user 用户名 # 按用户查找
# 按时间查找
find . -mtime n # 按照时间查找 n表示天数1表示访问一天
# 按当前文件下递归2此查询
find . -maxdepth 2 # 向下递归几层目录来查询
# find中有两个特殊的-a和-o:
# -a:默认并且
# 查找当前目录下所以为test的文件
find . -type f -a -name "test"
find . -type f -name "test"
# -o:或者
# 查找当前目录下所以文件或者名字为test的目录
find . -type f -o -name "test"
# 以inode号976423查文件
find / -inum 976423
13、grep命令
#grep命令类型
grep 目标字段 目标文件(.txt)
例如:查看test.txt中含有t
grep "t" test.txt # 过滤只有t的一行内容
grep -n "t" test.txt # 过滤并显示有t那一行内容并显示行号
grep -v "t" test.txt # 过滤没有t的一行内容
grep -A 10 "11" test.txt # 10行后11行的内容
grep -B 10 "11" test.txt # 10行前11行的内容
grep -C 10 "11" test.txt # 10的前后各11行内容
grep -o "adc{2,4}" test.txt # 只显示test.txt中的adcc、adccc、adcccc
grep -w "ab" test.txt # 精准查找test.txt中的ad
ls | grep -l "ab" # 查找当前路径下显示含有匹配内容的文件名
# 查找test.txt中a、aa、aaa、aaa、aaaa、..等的字符
grep -E "a+" test.txt # E扩展正则,+表示匹配前一个字符一次或无限次
egrep "a+" test.txt # egrep 是 grep -E 的缩写
# 大小写
grep "SEK" test.txt # 大小写必须清楚
grep -i "sek" test.txt # -i 忽略大小写
# 颜色查询
alias grep="grep --color=auto" # 给grep复制
alias grep="grep" # 返回默认grep
grep "t" test.txt # 接上一行grep查询test.txt中查询t并赋给它颜色
# 查询文件中的(点字符)
grep "\." test.txt # 查询文件中含有 . 的内容 , 这里的 \ 表示转换
grep "abc*" test.txt # 查询含有abc*,*表示多个c,这里就是正则的表示
grep "." test.txt # . 表示任意一个字符(正则) 这里的 . 等于 通配符中的 ?
# 查询ab?的结果
grep "ab[abcde]" test.txt
grep "ab.*" test.txt # 正则 .* 表示表示任意,相当于通配符中的*
# 取反
grep "ab[^c]" test.txt # 取abc的相反值
# 查找test.txt只显示匹配adcc、adccc和adcccc的字符
grep -o "adc{2,4}" test.txt # 只显示匹配字符
# 过滤test.txt中的空行并显示行号
grep -n "^$" test.txt
# 查找的test.txt中不显示含有#和空行
grep -Ev "^$\#" test.txt
14、seq命令(随机数)
seq n(n表示随机数)
例如:输出11个数
seq 11
例如:100个随机数写入test.txt
seq 100 > test.txt
15、xargs命令
数据横向转换
find . -type f | xargs grep 字段
#查询出所以文件,并查询该字段
# find 查出的结果是竖着显示,xargs是使竖向的结果横向输出
16、sed
sed '区间' 要查的文件
# p表示行
# -n表示NO的意思
sed '70,80p' test.txt # 要查询的双倍显示
例如:查询test.txt中的70到80行
sed -n '70,80p' test.txt
例如:只查询70行和八十行
sed -n '70p;80p' test.txt
#题型
sed -n '/test/p' test.txt # 查询test.txt中有test字符的哪一行
sed -n '/test/p;/es/p' test.txt # 查询test.txt中的test哪一行和es哪一行
sed -n '/test/,/es/p' test.txt # 查询test.txt的test哪一行到es哪一行之间的内容
sed '/test/d' test.txt # 取反,显示没有test字符的其他行,d表示删除其他的
# 替换旧新内容 ###号可以换成其他的字符
sed 's#旧内容#新内容#' test.txt
sed 's@test@hello@' test.txt # 每行只修改每行第一个匹配字符
sed 's$test$hello$g' test.txt # 修改全部匹配字符
# -i 的使用 是修改test.txt内容
sed -i 's#test#hello#' test.txt # 修改test.txt中的匹配字符
# sed的-n和d不能连用
#####################################################################################
# sed命令中a的使用
sed '1a hello' test # 在文件的第一行的下一行加一行写入hello
sed '1,3a hello' test # 从第1行到第3行的每个下一行加一行写入hello
sed '1i hello' test # 在文件的第一行加hello
sed ‘$a ssss’ test # 在文本末尾加一行写入ssss
sed '1 s/^/#/' test # 在行首插入#号,将第一行注释掉
sed '5 s/^/#/' test # 将第5行注释
sed '/postfix/ s/^/#/' test # 按字符所在的行注释
sed ‘1,5 s/^/#/’ test # 按照范围注释
# sed命令中e的使用
sed -e '/postfix/ s/^/#/' -e '/shhd/ s/^/#/' test # 多条件替换
sed ‘2 s/$/hello/’ test # 行尾加hello
sed ‘1~2 s/^/#/’ test # 按照指定的步长取插入#,注释
sed ‘2c hello 222’ test # 替换第二行内容为hello 222
# 按步长替换 (2~3表示第二行开始替换,每三行换一次)
#(还可以是1~4表示第一行开始,每4行替换一次))
sed ‘2~3c hello 222’ test
# 将test中指定内容替换为空
sed 's#test##' test
# 将文本内容保存成另一个文件
sed '1,3w 1.txt' test # 将文件test中1到3行内容写到1.txt中
sed '1,3r test' 1.txt # 将文件test读到1. txt中
# sed的扩展正则
# 先在当前命令下创建100个文件 touch benen_data_{1..100}_make.txt
# 修改所以文件名称中data给删除
ls | sed -r 's#(.*)_(.*)_(.*)_(.*)#mv \0 \1_\3_\4#' | bash
# test文件中匹配的abc字符之后向下匹配两行
sed -n ‘/abc/,+2p’ test
17、awk
awk '区间' 文件
# NR在awk中表示行号
awk 'NR==90' test.txt # 查询test.txt中的90行内容
awk 'NR>90' test.txt # 查询test.txt中的90行以后内容
awk 'NR<90' test.txt # 查询test.txt中的90行以前内容
awk 'NR>=90' test.txt
awk 'NR<=90' test.txt
awk 'NR<90&&NR>10' test.txt # 查询10行到90行之间内容 &&表示并且的意思
awk 'NR<=90&&NR>=10' test.txt
awk 'NR>=90||NR<=10' test.txt # 查询10行前的内容和90行以后的内容,||表示或者的意思
18、which 和 man
which # 查看命令的绝对路径
例如:cp的绝对路径
which cp
区别:绝对路径cp执行是非交互强制覆盖
cp test.txt ttt # ttt 中有一个test.txt,覆盖有是否确认
/bin/cp test.txt ttt # ttt中有test.txt,覆盖无确认,直接覆盖
man # 查看命令的详细使用方法
man ls # ls 的使用使用方法
19、start
start test.txt # 查看文件的详细情况
20、du
du test.txt # 是查看文件占用磁盘空间的大小
du -sh test.txt # 人性化显示
21、kill 和 ps
ps aux # a 表示all u表示用户 x表示执行
ps -eLf # 查看线程
ps -elf # 查看父进程
kill -9 3008 # 杀死3008这条进程
kill -l 3008 # 重启该进程
kill -9 -t pts/2 # 杀掉异常终端
pkill -1 进程号或者程序名称 # 重启该进程
pkill -9 进程号或者程序名称 # 彻底杀死
# pkill 还可以杀掉异常终端
pkill -9 -t pts/2
22、wc
wc test.txt # 查询的结果 行数 单词数 字符数 文件
wc -l test.txt # 文件行数
23、解压和压缩(打包和解包)
# 压缩grup.conf
gzip grup.conf
# 解压grup.conf
gzip -d grup.conf
unzip grup.conf # 解压并保存原文件
unzip -d /tmp grup.conf # 解压grup.conf到tmp中
gzip -9 grup.conf
# tar acvf 打包后文件存放的路径 目标文件的路径
tar zcvf grup.conf.tar.gz grup.conf
# z:压缩
# c:归档
# v:显示打包过程(可省略)
# f:指向文件(最后放f)
tar tf benet.tar.gz # 打包
tar xf benet # 解压
tar xf benet -C ./test # 解压并改名
tar zcf benet.tar.gz bent/ --exclude = "grup.conf,gz"
24、vi和vim
vi命令分为编辑模式、命令模式、末行模式
#####################################################
命令模式的操作:
j:向下移动光标
k:向上移动光标
h:向左移动光标
l:向右移动光标
u:撤销操作
D和dd和ndd:删除光标及以后内容、删除整行、删除光标后n行
# ndd(可以是任意数字,例如:2dd删除光标下2行内容)
r和R:替换原内容和进入替换模式(esc健退出模式)
G和ngg:到文件末行和跳转到n行()
nyy和p粘贴:复制n行,p粘贴
#####################################################
进入编辑模式:
i和I:前面输入和首行输入
a和A:后面输入和行尾输入
o和O:下一行输入和上一行输入
#####################################################
进入末行模式
set nu # 显示行号
?字段 # 从下而上找 n键向上
/字段 # 从上而下找 n键向下
w键 # 保存
w键+q键 # 保存退出
q # 退出
q! # 强制不保存退出
s/// # 替换当前行内容
% s/// # 切换全部文件全部行
% # 表示全文,g表示整行替换
25、chmod和chown、umask
linux系统下的权限管理是静态管理
软连接相当于Windows下的快捷键
软连接在linux下是绿色的
socket : 守护进程文件
我们在创建文件的时候,已经将文件的权限设定好了
一个文件有软连接也有硬链接
在操作系统中权限以类型分类:
读权限:不对文件产生修改的操作权限(读)(r)(4)
写权限:对文件产生修改的操作权限(增删改)(w)(2)
执行权限:运行该文件的权限(在系统中文件默认不具备执行权)(x)(1)
无权限:无(无)(-)(0)
-----------(使用ll查看文件或者目录)(一般有11个)
第一部分:-(文件)、d(目录)、l(软链接)、p(管道文件)、s(socket通信套接字)、
c(字符设备[键盘设备])、b(块设备文件)
第二部分:属主(u)
第三部分:属组(g)
第四部分:其他用户权限(0)
第五部分:某个国家安全局的保护
lnmt:它分为linux、nginx、mysql和tomact
权限管理
chmod
chmod g+w test # 添加test的属组中的权限(u/g/o)
chmod g-w test # 删除test中属组的权限(u/g/o)
chmod 777 test # 修改test文件的所以权限开启
chmod 444 test # 修改test文件只能读(444、400、404、440)
chmod 222 test # 修改test文件只能写(222、220、202、200)
chmod 111 test # 修改test文件只能执行(111、110、101、100)
chmod 000 test # 关闭test文件所以权限
chown
chown -R tom test # 修改test属主为tom
chown -R tom.benet test # 修改test的(属主和属组)为(tom和benet)
chown -R .benet test # 修改test的属组为benet
umask
# 目录一般是777 文件一般是666
umask码是一个权限掩码
umask码值:超级用户(0022)、普通用户(0002)
umask 333 # 修改umask暂时为 0333
# 创建test时指定权限为0744
mkdir -m 744 test
26、mount和umount(挂载与取消挂载)
mount 设备 挂载路径
mount # 查看当前系统挂载的情况
mount -o ro # 以只读的方式挂载
mount -a # 挂载/etc/fstab下全部
umount -a # 取消挂载/etc/fstab下全部
例如:挂载sr0到cdrom sr0为镜像文件
mount /dev/sr0 /media/cdrom
例如:取消/dev/sr0挂载
df -h # 查看挂载的设备
umount /dev/sr0
27、w、who和whoami
w # 查看当前登录的所以用户 平均负载
who
whoami
28、查看内存使用情况
free -m # 查看内存使用情况
29、history
history # 查询之前使用的命令
history -c # 清除之前的命令
30、防火墙
# CentOS6
service iptables restart # 查看防火墙当前情况
service iptables stop # 关闭防火墙
service iptables start # 开启防火墙
# CentOS7
systemctl start firewalld # 开启防火墙
systemctl stop firewalld # 关闭防火墙
systemctl restart firewalld # 查看防火墙当前情况
二、特殊符号
①波浪线(~):家目录
②井号(#):超级用户、注释
③花括号({}):序列、可以是数字、字母
例如:在终端中输出0到10
echo {0..10}
# 正则
grep -E "abc{2,4}" test.txt # abc{2,4} 等于 abcc、abccc、abcccc
# {n,m} :匹配前一个字符n次到m次
# {n}:匹配前一个字符n次
# {n,} : 匹配前一个字符无限次
④星号(*):任意
例如:查询当前路径下所以
ls *
⑤点(.)(..):一个点表示当前路径、两个点表示上一级路径
cd .. #回到上一级
ls . #查询当前路径下东西
⑥大于(>)(1>)(2>)(&>)(>>)(1>>)(2>>)(&>>)
#重定向
echo "111" > 1.txt # 把111写入1.txt中,二次输入会覆盖
echo "111" 1> 1.txt #命令正确写入111到1.txt
echo "222" 2> 1.txt # 命令写错时报错码写入到1.txt
echo "333" &> 1.txt #正确1.txt中有333,错误1.txt中报错码
echo "111" >> 1.txt
echo "222" 1>> 1.txt
echo "333" 2>> 1.txt
echo "444" &>> 1.txt
⑦(!:感叹号):取反
find . ! -name 目标文件/目录字段 #查看没有字段的内容
⑧(|:管道符)(&&:表示并且)(||:表示或者)
管道符:将管道符左侧命令的执行结果传给右侧,成为右侧的执行对象
# | (管道符)
例如:
find . -type f | grep t #查找当前项目下的所以文件给右侧,右侧过滤有t的内容
ls /data | grep "can" | xargs rm -rf # 删除data下含有can的文件和目录
# || (前面命令执行不成功,执行后面的命令)
# &&(前面命令执行成功,执行后面的命令)
例如:进入test失败的话创建test
cd test || mkdir test # 有test 的话就不会创建testl
例如:进入test并显示ttttt
cd test && echo ttttt # 进入test并显示ttttt,如果没有test则报错
⑨分号(;)
分号:并列执行
head -20 test.txt ; tail -20 test.txt
#结果是test.txt的前20行和末尾20行
⑩等号(=)($:取变量值)
#赋值
a=2
echo $a # 输出时加$可以显示赋值的值
``(反引号)和 $()
# 删除当前目录下所以
rm -rf `find . -name "*" -type d`
rm -rf $(find . -find d -name "*")
(右斜杠)(转义符)
echo -e "hello world \n hello yuo" # \n 输出时换行
?(问号)
echo "hello?world?hello" # ?表示任意一个字符
&:表示查询放在后台执行
[]:匹配括号内任意字符
[1-6]:匹配1到6的数字
[123456]=[1-6]
[1-6]=[123456]
三、理论
1、简单理论
绝对路径:从根下到目标位置的路径
相对路径:以当前路径为启示到目标的路径
三剑客:grep、sed、awk
grep 命令是用来过来文件内容中的字符
find 根据文件类型或者文件名称来查找的
sed 用来过滤文件内容的字符,并且可以对内容进行修改
awk 精确过滤文件内容中的字符(并且根据需要统计数值)
xargs 将文本流格式改成文件名格式
四个重要查找命令:cat、head、tail、grep
硬件、cpu、内存,程序到进程的区别:程序是写着代码的文件的,存在硬盘里我们要执行程序需要把程序执行到内存里
cat在工作中是一个危险命令,cat是将文件一次性全部打开到内存中,在工作中查看大文件的时候要慎重,
grep、sed、awk三个命令是按行读取文件,这三个命令可以和正则符号配合实现更准确的查找内容,正则式一些匹配规则。
PATH:在系统里有个环境变量PATH,它记录了系统命令存放的位置
2、符号理论(除正则外的叫法和用发)
#:超级用户的标识,注释
~:家目录
*:任意的意思
?:任意一个字符
..:标识上一级目录
.:标识当前路径
>:输出重定向(先清空目录文件,在输入)
>>:追加输出重定向(不清空源文件,直接在源文件末尾追加内容)
1>:正确输出重定向
2>:错误输出重定向
&>:无论正确错误都重定向
!:取反*(否定)*
|:管道符
;:分号表示并列执行,分号的前后都是一条完整的命令
$:取变量值
{}:序列
\:转义符
&&:表示并且
||:表示或者
``:优先执行($()功能一样)
&:程序在后台执行
[]:匹配括号内任意一个字符
[5-9]:匹配括号内5-9数字
3、正则符
^:以……开头
$:以……结尾
^$:空行
():分组
|:或者
*:表示匹配前一个字符0次或无限次
.:表示任意一个字符
.*:表示任意
[]:表示匹配括号内任意字符,括号内加^则表示匹配这个字符取反
+:表示匹配前一个字符1次或无限次
?:表示匹配前一个字符0次或1次
{n}:表示匹配前一个字符n次
{n,}:表示匹配前一个字符n到无限次
{n,m}:表示匹配前一个字符n到m次
{,m}:表示匹配前一个字符0到m次
三、快捷键、目录和略记的单词
单词
mem # 内存
cpu # cpu
net/network # 网络
disk # 硬盘
master # 接待用户请求,但不处理用户请求,
# master进程接待用户请求但不会处理,会创建一个子进程,由子进程处理,master会监听应用端口
worker #
socket # 守护进程
CTRL + U # 剪切光标之前的子
CTRL + K # 剪切光标之后的子
CTRL + y # 黏贴时的内容
CTRL + C # 结束进程
CTRL + D # 注销
CTRL + A # 光标移动到行首
CTRL + E # 光标移动到行尾
CTRL + Z # 后台运行
fg # 显示后台
根路径
/root :系统管理员的家目录(宿主目录)
/home :普通用户家目录的宿主目录
/boot :系统启动文件存放的位置
/dev :设备管理文件存在
/etc :保存配置文件的目录???.conf文件,这个是各个应用的核心配置文件
/bin :普通用户使用命令文件存放目录
/sbin/ :超级用户使用命令文件存放位置
/usr 和 /opt :用来做第三方应用的安装路径
/var :主要是存放临时文件,比如日志文件,程序运行起来的临时缓存文件
/mut :一般用来挂载移动设备
/media :多媒体文件存放位置
/lib 和 /lib64 :库文件存放位置
proc 这是一个特殊目录,这个目录是存放在内存中
# proc中都是 进程在proc中运行
/dev/null/:黑洞文件
/dev/zero/:零时文件
/etc/init.d 和 /etc/init
/etc/yum.repos.d/ : yum源文件路径
/etc/sysconfig/network-scripts/ifcfg-eth0 :网卡配置文件
/etc/hosts :主机映射文件
/etc/rc.d/rc.local :开机自动执行脚本
/etc/skel/ :创建用户的初始环境
/etc/defaults/useradd/ 或者 /etc/login.defs :创建的用户信息
/etc/group/ 或者 /etc/gshadow/ :管理组文件
/etc/posswd/ 或者 /etc/shadow/ :影子文件
/etc/profile/ :权限掩码
# 影子文件分布 以冒号分隔
# /etc/posswd/ 密码占用符一般用x表示 有7个字段
# 登录脚本分两种:该用户禁止登录/sbin/noloin 和 该用户允许登录/bin/bask
用户名 : 密码占用符 : 用户id : 组id : 说明 : 家目录 : 登录脚本
# /etc/shadow/ 8个字段
用户名 : 加密后的密码 : 用户创建时间 : 创建多久后可以修改密码 : 密码过期天数 :
强制修改密码提示时间 : 当密码过期后经过多少天该账户会禁用 : 密码过期日期
四、区别
1、 {}和[]的区别
括号 | 命令 | 解释 |
---|---|---|
{} | touch {a..z} | 识别{},创建a到z文件 |
[] | touch [a-z] | 不识别[],创建一个[a-z] |
2、单引号('')双引号(“”)不加引号的区别
引号 | 命令 | 解释 |
---|---|---|
无引号 | echo $PATH abcdefg {0..10} | 一切符号都是本身意义 |
单引号 | echo '$PATH abcdefg {0..10}' | 不识别通配符 |
双引号 | echo "$PATH abcdefg {0..10}" | 一切符号不生效 |
3、parted和fdisk
parted | fdisk |
---|---|
mbr和gpt管理 | mbr管理方式 |
没有限制 | 最大划分2T;大于2T看不见无显示 |
没有逻辑分区 | 只能划分4个主分区,其余都是逻辑分区 |
不能手动保存 | 分完区后手动保存 |
4、硬链接与软连接
链接 | 是否可以夸系统(设备)使用 | 是否可以手动创建 | 指向 | 删除移动源文件后是否影响使用 |
---|---|---|---|---|
软链接 | 可以 | 可以 | 文件名 | 影响 |
硬链接 | 不可以 | 对文件可以,对目录不可以 | indoe号 | 不影响 |
5、进程和程序
程序 | 进程 |
---|---|
可运行的文件,含有程序员写的代码的可运行文件 | 运行的程序 |
静态文件 | 动态的资源 |
硬盘上 | 内存 |
永久存在 | 临时存在 |
五、正则符
^ # 以.....开头
$ # 以....结尾
[] # 匹配括号里的任意一个字符,再括号与^一起使用表示取反
^$ # 表示的是空行
* # 表示匹配前一个字符0次到无限次(次数)
. # 表示任意一个字符
.* # 表示任意,相当于通配符中的*
+ # 匹配内容一次到无限次(扩展正则)
| # 或者
() # 分组
{n} # 匹配前一个字符n次
{n,m} # 匹配前一个字符n到m次
六、安装
rpm包,相当于我们在windows下用的.exe文件 xxx.rpm
lrzsz-0.12.20-27.1.el6.x86_64.rpm 安装
cd / # 切换到根
mkdir /media/cdrom # 创建挂载点
mount /dev/sr0 /media/cdrom # 挂载sr0
cd /media/cdrom/Packages/ # 切换到lrzsz所在文件
rpm -ivh lrzsz-0.12.20-27.1.el6.x86_64.rpm # 安装lrzsz
# i 表示install
# v 显示安装过程
# h 以#号显示安装过程
rpm -qa lrzsz # 查找安装的lrzsz应用
rpm -qi lrzsz # 查看lrzsz的应用信息
rpm -ql lrzsz # 查看命令和应用安装路径
rpm -qf /usr/bin/sz # 归属安装包
rpm -e lrzsz # 卸载lrzsz
# 这是 -e 先别删除 可以从windows桌面或者文件中拖拽到xshell中的当前文件中
# rz是拖进命令
yum安装
cd / # 切换到根
mkdir /media/cdrom # 创建cdrom
mount /dev/sr0 /media/cdrom # 挂载sr0
df -h # 查看挂载
cd /etc/yum.repos.d # 切换到yum文件
mkdir backcp # 创建backcp 创建部分
mv *.repo backcp # 移动所以后缀为repo的文件进入备份
cp backcp/CentOS-Media.repo . # 复制备份中的CentOS-Media.repo到当前路径
vi CentOS-Media.repo # 检查文件来源 是否启用软件
# vi 修改gpgchenk=0 enabled=1
# gpgchenk 的0表示不检查,1表示检查
# enabled 的0表示不启动,1表示启动
yum -y clean all # 清理缓存
yum makecache # 创建缓存7
# yum文件都是以 .repo 结尾的
源码安装
#获取安装包
下载或者yum直接下载
#配置yum源
yum配置
#下载支持包(httpd支持包包)
浏览器下载
#将源码包导入到系统(服务器系统)(导入需要先安装lrzsz应用)
yum -y install gcc gcc-c++ make #从物理机使用shell把安装包拖到liunx种
#解压源码包到指定路径(解压到/usr/src)
tar xf http-2.2.12 -C /usr/src
#切换到源码包路径下(切换到/usr/src/httpd)
cd /usr/src/httpd
#进行预配置(指定到某个路径)()
./configure --prefix=/usr/local/apache
echo $? # 结果必须是0
#进行编译
make
echo $? # 结果必须是0
#开始安装
make install # 安装
echo $? # 结果必须是0
yum的应用
yum -y install gcc # yum安装gcc # -y 表示不交互 不询问
yum -y remove gcc # yum卸载gcc
yum history # yum查看操作历史
yum history undo 操作的id # yum 回滚
yum search rz(命令的) # 查看某个命令的安装包
yum provides *bin/rz # 查询某个命令的安装包
七、创建
1、创建逻辑卷
pvcreate /dev/sd[bc] # 创建物理卷
vgcreate -s 8 vg0 /dev/sd[bc] # 创建卷组 vg0为卷组名称
lvcreate -L 5G -n lvg vg0 # 创建逻辑卷 lvg为逻辑卷名称 L指定逻辑卷为多少
mkfs.ext4 /dev/lvg # 格式化逻辑卷与卷组
mkdir /date # 创建挂载点
mount /dev/lvg /date # 挂载
# 在线扩容
pvcreate /dev/sdd # pv化物理卷
vgdisplay /dev/lvg /dev/sdd # 扩容系统卷组
# 扩容系统逻辑卷
lvextend -L 10G /dev/lvg # 直接增加逻辑卷的内容到10G
lvextend -L +10G /dev/lvg # 在逻辑卷的原基础内存上加10G
lvextend -L +100%FREE /dev/lvg # 把硬盘剩余所以内存加到指定逻辑卷种
2、创建RAID5
# 添加至少4块硬盘或者系统盘
mdadm -Cv /dev/md5 -L5 -x1 /dev/sd[bcde]
# 格式化
mkfs.ext4 /dev/md5
# 创建data
mkdir data
# 挂载
mount /dev/md5 /data
# 修改/etc/fstab加一行 挂载的命令为创建挂载的目录
# 加 /dev/md5 挂载的目录 ext4 defaults 1 2
vi /etc/fstab
mdadm -D -s > /etc/mdadm.conf
# 修改/etc/mdadm.conf 第一行行尾加auto=yes
vi /etc/mdadm.conf
3、sda毁坏
将系统盘(sda)备份MBR分区到数据盘
1、增加数据盘并且格式化挂载
mkfs.ext4 /dev/sdb
mkdir /data
mount /dev/sdb /data
2、备份sda系统盘
dd if=/dev/sda of=/dev/mbr.bak bs=512 count=1
3、系统盘坏了
dd if=/dev/zero of=/dev/sda bs=512 count=1 # 没坏自毁一次来一遍
reboot # 重启
4、进入紧急模式
CentOS6 开机时选择re……并不连网
5、进入shell
6、创建挂载点并挂载数据盘到挂载点
mkdir /date
mount /dev/sdb /date
dd if=/date of=/dev/sda bs=512 count=1
7、重启
4、fdisk:mbr分区
创建分区顺序
fdisk /dev/sdb
n # 添加一个新分区
p # 一级分区
1 # 分区号
回车 # 第一个气缸(默认1)
+5G # 最后一个圆柱体
w # 保存退出
5、parted创建分区
创建分区顺序:
parted /dev/sdb
mklabel # 创建新的分区
gpt # 分区类型
mkpart # 做一个分区
part1 # 分区名称
ext2 # 文件系统类型
1K # 起始点
+5G # 结束点
q # 退出parted模式
6、useradd的使用(创建用户)
# 如果出现bash的问题应该 cp -r /etc/skel/.nash* /root/
useradd user1 # 创建用户user1
head /etc/passwd # 查看创建的user1
head /etc/shadow # 查看创建的user1
passwd user1 # 创建修改user1的密码
# 基本组:创建用户时与用户相同的组,每个用户只能有一个基本组
# 附加组:根据需求将用户添加的其他组,可以有多个附加组
usaradd -g 506 user4 # 创建用户时指定基本组 -g 指定基础组
useradd -G user1 user5 # 指定附加组
useradd -u 508 user8 # 指定uid 指定新用户
useradd -c “test web” user6 # 描述用户信息 -c 扩展名
-d # 共用一个家目录
useradd -M user10 # 不创建家目录
useradd -s /sbin/nologin user11 # 指定登录脚本
useradd -e 20231123 user18 # 指定用户的有效期7655
useradd -e 7day user10 # -e 也可以指定天数,日期
userdel -r user1 # 不加-r只删除用户不删除家目录,加-r连家目录一起删除
passwd -l user1 # 锁定用户user1
passwd -u user1 # 解锁用户user1
passwd -s user1 # 查看用户的当前状态
gpasswd -a "tom" user4 # 将tom增加到user4的附加组中
groupadd -g 506 user4 # 指定附加组
id user1 # 查看user1的uid、gid和组
w # 查看当前登录的所以用户 平均负载
who #
whoami #
八、特点
开机十部
1、开机时先进行BIOS自建,硬盘插在主板,检测硬盘的完整性和可用性,蜂鸣报警
2、开机进行MBR引导,读取了mbr引导分区,通过2字节效验码识别是否是系统盘,开始进行启动系统。通过引导程序加载启动系统。通过主引导程序加载启动模块
3、进入了grub菜单,在grub菜单里记录,内核信息,和逻辑卷信息
4、启动内核
5、由内核启动系统的一个进程,进程的id是1,1号进程在centos6下叫init进程,在centos7下叫systemd进程
6、启动1号进程以后,1号进程会读取/etc/initrab启动开机模式,进行下一步启动
7、开始进行初始化系统加载/etc/rc.d/init.d
8、读取/etc/rc.d/rcn.d确定当前需要启动的应用
9、读取个人配置脚本:/etc/rc.d/rc.local
10、进入开机界面
linux下有7中开机启动级别:
0:关机
1:单用户模式,此模式免密登录,不支持远程操作,只能是在主机旁登录
2、无网络文件系统的多用户模式
3、有网络文件系统的多用户模式
4、开发者模式或者是叫保留模式(这种模式未被启动)
5、桌面模式(系统了桌面模式,如果没装没有用)
6、重启
九、密码丢失
centOS6的管理员(root)密码找回
屏幕初起亮屏时,按e
选择第2个
下一部按e
下一部加 空格加1
回车
下一步按b
现在就可以修改root密码了 passwd root
重启 密码为你修改的密码
centOS7
屏幕初起亮屏时, 按e
下一步在liunx16的行尾加空格rd.break
CTRL+X 下一步
挂载mount -o remount,rw /sysroot
切换到/sysroot 命令:chroot /sysroot
修改root密码:passwd root
创建/.autorelabel文件 :touch /.autorelabel
退出sh-4.2#模式:exit
重启:reboot
登录