linux启动过程

--new190612
环境变量
1、大写
2、在系统大部分地方都可以使用,含义相同。
LANG字符集 PS1(命令行的样子)
PATH 放的是命令的路径/位置
echo $PATH #查看当前路径的值,一般不会改,/etc/profile中永久改
rpm rpm包管理工具
rpm -qa | grep tree #查看某个软件是否安装
rpm -ql tree #查看这个软件包里有啥,查看陌生软件的用法,结构之类的
find 查找文件
-maxdepth 最大的深度
-type 找什么类型的
f file 文件
d directory 目录
-name 什么名字
! 取反
tree 以树形显示目录结构
-L 最多显示基层目录
-d 只显示目录
ls list 列表 显示目录里面的内容
-l 显示详细信息
-F 给不同的类型文件加上不同的尾巴 目录/
touch 摸 创建文件 更新文件的时间戳
###第 1 题 如何过滤出已知当前目录下 oldboy 中的所有一级目录(提示:不包含
oldboy目录下面目录的子目录及隐藏目录,即只能是第一级目录)?
几种方法(在oldboy这个目录下执行):
tree -Ld 1
find -maxdepth 1 -type d
find -maxdepth 1 -type d ! -name "." # !取反,不含.(点)文件
ls -l # 查看
ls -l |grep "^d" #d开头的就是文件夹(目录)
View Code
--new190615
cd - ==== 进入上一次所在的目录
cd . ==== 进入当前目录
cd ..==== 进入当前目录的上一层目录
cd ~ ==== 进入当前用户的家目录
(root用户) ~ ==== /root用户
(普通用户) ~ ====/home/
cd ==== cd ~
ls list 列表 显示目录里的内容
ls -l 显示详细信息
ls -F 给不同类型的文件加上不同的尾巴 目录/
ls -r 倒序
ls -t 按照文件的修改时间进行排序
ls -lrt 按照文件的修改时间进行倒序排序
tail 取文件的最后几行 默认是最后10行
tail -f 显示文件的实时更新
tailf 同上
查看文件时显示文件的行号
1.cat -n simon.txt
2.vim simon.txt
:set nu 显示行号number
:set nonum 不显示行号number
3.grep -n "." simon.txt # .点表示任意一个 正则 ("stu"表示找stu开始的)
grep
-v 排除
-A 显示grep过滤出的内容及接下来的几行
-n 给grep出的行加上行号
egrep === grep -E 高级正则
chkconfig 管理开机自动运行的软件
chkconfig iptables on
chkconfig iptables off
chkconfig --level 5 iptables on 设置某个运行级别
tar zcvf /tmp/etc.tar.gz /etc/
z --通过gzip 工具进行压缩
c --表示create 创建压缩包
v --表示verbose 显示执行过程
f --表示file 接上压缩包的名字
tar ztf /tmp/etc.tar.gz #查看压缩包的内容
t --表示list 显示压缩包的内容
解压:解压前必须先进入到要解压到的目录(linux默认解压到当前目录)
简写:
tar zcf 创建
tar tf 查看
tar xf 解压
wc -l /etc/services #查看文件有多少行
ps -ef 显示系统有多少在运行的进程
ps -ef | grep "sshd" #同样可以通过grep的方式进行关键字查找
单引号:所见即所得
双引号:里面的特殊字符会被解析
inode与block小结:
1、格式化创建文件系统
2、在同一个文件系统(分区),两个文件的inode相同,则互为硬链接
3、创建一个非空文件要占用一个inode和至少一个block
4、如何查看inode和block的使用情况 df -i df -h
df -i #查看总共多少个inode
磁盘空间不足排查:
df -h
du -sh /*|grep G # 找大文件
文件类型
f file 普通文件
d directory 目录
l softlink 软链接(快捷方式)
linux下的扩展名是用来看的,不影响实际使用
.sh 脚本文件
.conf 配置文件
UID user id 用户的id号码==身份证号码
GID group id 用户组的号码==户口本的号码
UID
1.皇帝 root 0
2.傀儡 虚拟用户 1-499 系统中每个进程都要有一个对应的用户,无法使用的。
3.平民百姓 普通用户 500+
如何保护皇帝
1.禁止root远程登录
2.修改ssh默认的端口号22
3.定期分配/var/log/secure 记录着用户的登录信息
与用户有关的文件
/etc/passwd 存放的是用户的信息
/etc/shadow 用户密码的信息
/etc/group 用户组的信息
root:x:0:0:root:/root:/bin/bash
simon:x:500:500::/home/simon:/bin/bash
第一列:用户名
第二列:(以前)存放密码的地方
第三列:UID
第四列:GID
第五列:用户的说明信息,默认为空
第六列:用户的家目录
第七列:用户使用的shell,用户使用的命令解释器
/bin/bash ------- centos默认的命令解释器
/sbin/nologin --- 用户无法登陆系统,相当于是傀儡用户
linux基础权限:
r read 可以读取内容
w write 修改文件内容
x excute 可以运行文件(命令 脚本)
- 什么权限都没有
ls -l /etc/hosts
- rw- r-- r--.
文件类型 主人 家人 陌生人
420 400 400
6 4 4
ls -l /bin/ls
-rwxr-xr-x.
421401401
7 5 5
软连接(windows下的快捷方式):
创建:
ln -s oldboy.txt oldboy.txt-soft #创建
ls -l oldboy.txt* #查看
特点:
1、存放着源文件的位置
2、源文件被删除时再查看会显示出红色
3、节约时间
硬链接
相当于是超市的前后门,通过不同的大门进入超市
在同一个分区中,两个文件的inode相同,则互为硬链接
创建:
ln oldboy.txt oldboy.txt-hard #创建
ls -lhi oldboy.txt* #查看
特点:
1、相当于是超市的前后门,硬链接数量就是超市一共多少门
2、删除硬链接或者源文件,文件还是可以使用的
3、把硬链接和源文件都删除,则意味着文件被删除===硬链接数量为0
文件删除原理:
1.删除这个文件相关的硬链接 -rm ---删除厕所所有的入口
2.这个文件的进程调用数也为0 --- 没有人在使用厕所
1.硬链接数量为0
2.进程调用数为0
某个文件没有被彻底删除,导致磁盘空间不足
解决:重启对应的软件
找出硬链接数量为0,进程调用数不为0的文件
lsof |grep delete #
解决:重启对应的软件/服务
磁盘空间不足排查:
1.block满了--500G的空间存放505G的视频
2.inode满了,有大量的小文件
3.block 硬链接数量为0,进程调用数不为0,文件没有被彻底删除
stat oldboy.txt # 查看文件的三个时间
ctime changetime 文件的属性发生改变 硬链接数量,文件大小,文件权限等
mtime modifytime 修改时间 文件内容的变化时间
atime accesstime 访问时间(看一遍就算,cat都算,后来变成,有内容改变才算)
View Code
-- 190619
history | grep cat # 历史命令
通配符:
1、* 所有
find /oldboy/ -type f -name '*old*' # 相当于sql的like中的%
2、{} # c生成序列
echo {0..100} # 连续生成1-100
echo stu{01..100} # 连续生成1-100
cp oldboy.txt{,.bak} # 备份
#1]正则表达式是用行进行过滤的
#2]禁止使用中文符合
#3]给grep和egrep配置别名
#配置别名
cat >>/etc/profile<<EOF
alias grep='grep --color=auto'
alias egrep='grep --color=auto'
EOF
source /etc/profile #生效
cat -A simon.txt # 把每行的结束以$展示出来
正则表达式与通配符区别:
通配符:用来匹配查找文件名 支持:大部分命令都支持
正则:在文件内容中匹配查询内容 支持:linux三剑客
正则:
基础正则(basic regular expression)BRE
grep sed
^ $ . * [] [^]
扩展正则(extended regular expression)ERE
| + {} () ?
以下是准备的环境:
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my blog is http://oldboy.blog.51cto.com
our site is http://www.etiantian.org
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
start:
0.1] ^ 以什么什么开头
0.2] $ 以什么什么结尾
. 任意一个字符,不包括空行
grep '.' simon.txt #
grep -o '.' simon.txt # -o 正则的执行过程
grep '.$' simon.txt # 以点结尾的行 是转义符
6] * 前一个字符连续出现了0次或1次以上
grep -o '0' simon.txt # 出现的是7行的0
grep -o '0*' simon.txt # 把0连续起来
两个问题:
1.为何取出的是000 而不是00和0 0 0 0
#因为正则在表示连续出现的时候表现出贪婪性 有多少吃多少 有多少匹配多少
2.为何使用'0*' 会把整个文件的内容都显示出来
因为出现0次或1次以上的都会显示
7] .* (点*) 所有字符 所有符号 所有
grep '^m.*m$' simon.txt # 以m开头,以m结尾 .* 中间是任意字符
8] [] 中括号 [abc] 相当于是一个字符 找出包含a或b或c的行
grep '[abc]' simon.txt # 找出含或a或b或c的行
grep '[a-zA-Z0-9]' simon.txt # 找出任意字母或者数字的
grep '[^abc]' simon.txt # 排除,即不要a,不要b,不要c的
扩展正则
1】 + 前一个字符连续出现了1次或多次
grep -E '0+' simon.txt # grep 不支持扩展正则,egrep 即 grep -E支持扩展
1.可以把连续的东西用正则取出来
2.一般与[]配合
2】 | 或者
grep -E 'a|b|c' simon.txt
grep '[abc]' simon.txt # 找出含或a或b或c的行
| 与 [] 本质区别:
1、[] 是基础正则 | 是扩展正则
2、[] 中括号表示的是单个字符的或者 | 单个多个都可以,兼容[] eg:grep -E 'linux|python' simon.txt linux或者python的都ok
3】 () 1.括号中的内容是一个整体 2.后向引用(反向引用)(用的不多,意义初级不大,配合sed使用)
grep -E 'oldb(o|ey)' simon.txt # 找出oldboy 或者 oldbey 的行
4】 {n,m} 前一个字符连续出现了至少n次,最多m次
grep -E '0{2,5}' simon.txt # 2~5次的
grep -E 'l{2,}' simon.txt # 出现最少2次的
grep -E 'l{2}' simon.txt # 出现正好2次的
grep -E 'l{,2}' simon.txt # 出现最多2次的
grep -E '[0-9]{8,}' simon.txt # 出现连续8个数字的
grep -E '[0-9]{8,}' -o simon.txt # 出现连续8个数字的 ,只显示数字内容
5】 ? 连续出现0次或1次
vim simontemp.txt
i
gd
god
good
goood
gid
gpd
giid
grep -E 'go?d' simontemp.txt # 查找o出现了一次或0次的结果是gd和god
grep -E 'go*d' simontemp.txt # 查找出现0次或1次+的
支持基础正则 基础+扩展正则
grep egrep === grep -E
sed sed -r
awk awk
撬棍(转义字符) 可使得基础命令也能使用扩展正则
#帮助命令
man grep
man info