Linux 内核(kernel)版本主要有 4 个系列,分别为 Linux kernel 2.2
、Linux kernel 2.4
、Linux kernel 2.6
,Linux kernel3.x
,更多更新的内核版本请浏览 https://www.kernel.org/
Linux的发行商包括,Redhat,Debian,SUSE,Centos,Ubuntu,红旗,麒麟…turbolinux等。
目录结构 | 说明 |
---|---|
/dev | 存放设备文件 |
/boot | 存放内核与启动命令 |
/lib | 存放系统库文件 |
/bin | 存放二进制文件 binary |
/sbin | 存放特权级二进制文件 |
/usr | 存放安装程序,软件默认目录 |
/var | 存放经常变化的日志文件,如:/var/log/messages:系统级别日志,一个很重要的排错文件 |
/mnt | 文件挂载目录,U盘,光驱等 |
/home | 普通用户家目录 |
/tmp | l临时文件夹 |
/etc | 存放配置文件目录 |
/opt | 大型软件存放目录,也可自定义存放 |
/sys | 系统文件 |
/srv | 服务相关数据 |
/run | 里面的文件是系统运行时需要的,不能随便删除,但是重启时应该抛弃,下次系统运行时重新生成 |
/proc | 内存系统文件 |
文件 | 说明 |
---|---|
/etc/fstab | 配置开机设备自动挂载的文件 |
/etc/rc.local | 存放开机自启动程序命令的文件 |
/etc/inittab | 系统启动设定运行级别等配置文件 |
/etc/profle | 配置系统的环境变量,别名等的文件,和/etc/bashrc一样 |
/etc/init.d | 软件启动程序所在目录(centos 6) |
/usr/lib/systemd/system | 软件启动程序所在目录(centos 7) |
/etc/motd | 配置用户登录系统之后显示提示内容的文件 |
/etc/redhat-release | 声明Redhat版本号和名称信息的文件 |
/etc/sysconfig/network-scripts/ifcfg-ens33 | 网卡配置文件,也可能是eth0,ens32等 |
/etc/resolv.conf | Linux系统DNS客户端配置文件 |
/etc/hostname | 主机名配置文件 |
/etc/hosts | 系统本地的DNS解析文件 |
/etc/sysctl.conf | Linux内核参数设置文件 |
/etc/issue和/etc/issue.net | 配置在用户登录终端前显示信息的文件 |
/etc/profile.d | 用户登录后执行脚本所在目录 |
列出文件夹种的内容
参数:
-a all,显示所有的目录及隐藏文件
-l 详细输出文件夹中的内容
-h 和-l配合使用,以可读方式输出文件大小
-t 根据最后修改的实际排序文件
-S 对文件从大到小排序
-r 逆转排序,可以-t,-S等结后使用
-i 显示文件的inode信息
打印当前工作目录的绝对路径
用户切换
su - 用户名,完全的环境变量用户切换
退出当前系统用户,或者exit
创建文件夹
参数:
-p 递归创建
-m 建立目录的同时设置目录的权限
案例:
mkdir -mp 700 /test/cc
1.创建新的空文件
2.将每个文件的访问实际和修改实际改为当前实际
参数:
-c 不创建任何文件
-r 使用指定文件的实际属性代替当前文件时间
-t 修改文件的时间
--help 帮助信息
案例:
[root@localhost test]# touch -t 200808080808 aoyunzhongguo.txt
[root@localhost test]# ll
total 0
-rw-r--r-- 1 root root 0 Aug 8 2008 aoyunzhongguo.txt
将一个或多个源文件复制到目标文件
-r 递归复制目录,即复制目录下所有的子目录和子文件
-p 复制的时候保持属性不变
-d 复制的时候保持软连接
-a 等于-prd
-i 覆盖前询问提示
案例:
递归复制
cp -r /etc/sysconfig/network-scripts/ ./
复制 保持属性改名
cp -a /etc/sysconfig/network-scripts/ifcfg-ens33 eht0
复制多个文件
cp mjj.txt mjj.gif /test
移动或者重命名文件
参数:
-f 覆盖前不询问
-i 覆盖前询问
案例:
改名
mv mjj.txt njj.txt
移动且改名
mv njj.txt /root/mjj.txt
以树形图形象目录下的内容,安装yum install tree -y
参数:
-C 在文件和目录清单加上色彩,便于区分类型
-d 显示目录名称而非内容
-D 列出文件和目录的更改时间
-f 在每个文件或目录之前,显示完整的相对路径
删除一个或多个文件
参数:
-f 强制删除
-i 在删除前需要确认
-T 删除超过三个文件或者递归删除前要求确认
-d 删除目录
-r 递归删除
--help 帮助
--version 显示版本信息并退出
危险命令,慎用
man
--help
info
案例:
man ls
rm --help
info cp
shutdown 重启或关机
-r 重启 例: shutdown -r 10 或者10:30 (时间) now 立即重启
-h 关机 例: shutdown -10 十分钟后关机, 0 now 立刻关机
reboot 重启 poweroff 关机
init 切换运行级别,0关机, 6重启
功能强大的文本编辑器
安装:yum install vim -y
vim 的四种模式:
正常模式
插入模式 字母,i o等进入
命令模式 :冒号进入
可视模式 ctrl+v q!不保存退出 wq!保存退出
vim快捷键:
方向:
h:左
j:下
k:上
l:右
光标快捷键:
w/e:移动到下一个单词
b:移动到上一个单词
数字0移动到行首
字符$移动到行尾
ctrl + f 下一页
ctrl + b 上一页
`. 光标移动到上一次修改的行
命令模式的查找:
/ + 要找的内容
n 向下找
N 向上找
命令模式的复制,粘贴,删除
输入yy 复制光标所在行;4yy表示复制4行
p 在光标的下一行,打印粘贴的内容
dd 删除光标所在行
D 删除光标当前位置到行尾的内容
d0 从当前的光标开始向前剪切,一直到行首
dG 删除光标所在行到最后一行的内容
x 删除光标当前字符,向前删除,X向后删除
dw 删除一个单词
cc 修改整行文字
u 撤销上一步动作,ctrl+r 反撤销
. 重复上一次操作
快捷操作:
C 删除光标所在位置到行尾内容,且进入编辑模式
o 在当前光标的下一行开始编辑
A 快速进入行尾,且进入编辑模式
ZZ 快捷保存退出
批量注释快捷操作:
ctrl + V 进入可视模式,
上下左右选择需要操作的块
选中后输入大写I,输入#
两次ESC,自动生成多行代码
即批量注释
再次批量选择注释符,d删除注释
命令模式:
:set nu 显示行号
:set nonu 关闭行号
:set list 查看使用使用tab键
:set nolist 关闭
替换模式:--REPLACE--
命令行输入R进入替换模式;退出ESC
:s/old/new 只替换光标所在行的第一个 old string
:s/old/new/g 替换光标所在行的所有old string g表示global ; n表示一个行号
:%s/old/new/g 将文本所有的old string替换为new string
:1,2s/old/new/g 替换1到2行中的old string 为new string
:.,2s/old/new/g 替换光标所在行到地二行的
:2,$/old/new/g 替换第2行到最后一行的old string为new string
:!command 在不退出编辑器的情况下执行一条命令
当同时编辑多个文件时,因为同一时间只能显示一个文件,所有在vim中切换打开的文件可以使用:N或:n来切换打开的文件
批量移动代码
ctrl + v 选择块代码
shift + > 向右移动
shift + < 向左移动代码
= 对齐
批量保存
:n,m w filename 命令将第n行到m行的内容保存到指定的filename文件中,filename必须由vim自动生成
将数据传到其他地方
符号 | 解释 |
---|---|
< 或者 << | 标准输入stdin ,代码为0 |
> 或者 >> | 标准输出stdout,代码为1 |
2> 或者 2>> | 标准错误输出stderr,代码为2 |
将输出都重定向到/dev/null的几种写法:
>/dev/null 2>$1
1>/dev/null 2>/dev/null
&>/dev/null
给其他命令传递参数的一个过滤器
参数:
-n 多行输出
-d 为输入指定一个定制的分隔符,默认是空格
-I 让xargs执行多个命令
-i 用{}代替传递的数据
案例:
## -n的用法
[root@localhost test]# cat tets.txt
a b c d e f g
h i j k l m n
o p q
r s
t u v w x y z
[root@localhost test]# cat tets.txt |xargs
a b c d e f g h i j k l m n o p q r s t u v w x y z
[root@localhost test]# cat tets.txt |xargs -n3
a b c
d e f
g h i
j k l
m n o
p q r
s t u
v w x
y z
## -d的用法
[root@localhost test]# echo "namexnamexnamexname" | xargs -dx
name name name name
[root@localhost test]# echo "namexnamexnamexname" | xargs -dx -n2
name name
name name
#-i参数的用法,用{}替代传递的数据
找到当前目录所有的.txt文件,然后拷贝到其他目录下
find . -type f -name "*.txt" | xargs -i cp {} /opt
#找到指定目录所有的txt文件,然后删除
find /opt -type f -name "*.txt" |xargs -i rm -rf {}
功能 | 说明 |
---|---|
查看内容较少的纯文本文件 | cat filename |
多个文件合并 | cat file1.txt file2.txt > file3.txt |
非交互时编辑或追加内容 | cat >> file.txt< |
清空文件内容 | cat /dev/null > file.txt |
1.参考内容较少的纯文本文件
2.连接多个文件并打印到标准输出
3.显示文件内容中不可见的字符(控制符,换行符,制表符)
参数:
-b 对非空行输出编号
-E 每行结束处显示$
-n 对输出的所有行编号
-s 不输出多行空行,多个空行减为一个,一个空行不受影响
--help 显示帮助信息并退出
案例:
[root@localhost test]# cat test.txt
a
b
c
[root@localhost test]# cat test.txt -s
a
b
c
[root@localhost test]#
按行为单位反向显示文件内容,如果没有文件或文件为 - 则读取标准输入
处理多个文件时,依次将每个文件反向显示,而不是将所有文件连载一起再反向显示
案例:
[root@localhost test]# seq 1 3 > 1
[root@localhost test]# seq 4 6 > 2
[root@localhost test]# cat 1 2
1
2
3
4
5
6
[root@localhost test]# tac 1 2
3
2
1
6
5
4
21[root@localhost test]# cat 1
1
2
3
[root@localhost test]# tac 1
3
2
1
Linux提供的管道符将两条命令隔开,管道符左边命令会做为管道符右边命令的输入
分屏查看大文本内容的命令
操作:
enter 回车是下一行
空格是向下滚动一个屏幕大小
=显示当前行号
q退出
less 参数
-e 文件内容显示完毕后,自动退出
-f 强制显示文件
-l 搜索是服了大小写的差异
-N 每一行行首显示行号
-s 连续多个空号压缩成一行显示
-S 在单行显示较长的内容,而不换行显示
-x 将tab字符显示为指定个数的空格字符
more参数
-s 将多个空号压缩成一行显示
-<数字> 指定每屏显示的行数
-c 不进行滚屏操作,每次刷新这个屏幕
head 默认是从头往后看10行
tail 默认是从后向前看10行,也可以指定行数,用法与head等同
tail 参数
-f 实时刷新文件内容变化
-F 不断打开新文件,可以和-f结合使用
扩展点:tail -f 与 -F 还有tailf的区别
tail -f 更加文件描述符进行追踪,当文件改名或被删除,追踪停止
tail -F 根据文件名进行追踪,并保持重试,即该文件被删除或改名后,如果再次创建相同的文件名,会继续追踪
tailf 等同于 tail -f -n 10(tail -f 或者-F 默认也是打印最后10行,然后追踪文件),与tail -f不同的是,如果文件不增长,它不会去访问磁盘文件,所有tailf也不适合那些便携机上跟踪日志文件,因为它减少了磁盘访问,可以节省电量。
常用操作:
ctrl + S 暂停终端
ctrl + Q 继续终端
ctrl + c 退出
在文件的每一行中提前片段,
在每个文件的各行中,把提取的片段显示在标准输出
语法:cut 参数 数值区间 文件
参数:
-b 以字节为单位分隔
-n 取消分隔多字节字符,与-b一起使用
-c 以字符为单位
-d 自定义分隔符,默认以tab为分隔符
-f 与-d 一起使用,指定显示那个区域
范围:
N- N至结尾
N-M N到M,并包括M,字符或字段
-M 开头到M,并包括M,字符或字段
案例:
准备文件
[root@localhost test]# tail -3 /etc/sysconfig/network-scripts/ifcfg-ens33 > ens33
[root@localhost test]# cat ens33
NETMASK=255.255.255.0
GATEWAY=192.168.178.254
DNS1=119.29.29.29
截取每一行的第四个字符
[root@localhost test]# cut -c 4 ens33
M
E
1
截取4到6个字符
[root@localhost test]# cut -c 4-6 ens33
MAS
EWA
1=1
指定分隔符,进行截取
[root@localhost test]# cut -d "." -f 3 ens33
255
178
29
将输入的文件内容安装规则排序,然后输出结果
参数:
-n 根据字符串数组比较
-r 逆序输出排序结果
-u 去重排序
-t 使用指定的分隔符代替非空格到空格的转换
-k 位置
案例:
[root@localhost test]# cat test.txt
11.0.0.1
10.0.0.5
15.0.0.2
13.0.0.8
10.0.0.5
对第一个字符排序,默认从小到大排序
[root@localhost test]# sort -n test.txt
10.0.0.5
10.0.0.5
11.0.0.1
13.0.0.8
15.0.0.2
逆序排序
[root@localhost test]# sort -nr test.txt
15.0.0.2
13.0.0.8
11.0.0.1
10.0.0.5
10.0.0.5
去重排序
[root@localhost test]# sort -u test.txt
10.0.0.5
11.0.0.1
13.0.0.8
15.0.0.2
指定分隔符,指定区域排序
[root@localhost test]# sort -t "." -k 4 test.txt
11.0.0.1
15.0.0.2
10.0.0.5
10.0.0.5
13.0.0.8
显示忽略重复的行,常与sort排序结合使用
参数:
-c 在每行开头显示重复次数
-d 只输出重复的行
-u 只显示出现过一次的行,
案例:
[root@localhost test]# cat test.txt
1
1
1
12
55
13
55
16
12
55
55
只能去除连续的重复行
[root@localhost test]# uniq test.txt
1
12
55
13
55
16
12
55
结合sort使用,去重很精准
[root@localhost test]# sort -n test.txt |uniq
1
12
13
16
55
统计每一行重复次数
[root@localhost test]# sort -n test.txt |uniq -c
3 1
2 12
1 13
1 16
4 55
只找出文件中重复行,且统计次数
[root@localhost test]# sort -n test.txt |uniq -d -c
3 1
2 12
4 55
找出只出现过一次的行
[root@localhost test]# sort -n test.txt |uniq -c -u
1 13
1 16
用于统计文件的行数,单词,字节数
参数:
-c 打印字节数
-m 打印字符数
-l 打印行数
-L 打印最长行的长度
-w 打印单词数
案例:
统计文件个数
[root@localhost ~]# ls | wc -l
1
显示目前登入系统的用户信息
[root@localhost ~]# w
20:49:43 up 8:26, 2 users, load average: 0.00, 0.01, 0.05
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root pts/0 192.168.178.1 13:58 7.00s 13.59s 0.00s w
root pts/1 192.168.178.1 19:43 1:03m 0.02s 0.02s -bas
从标准输入中替换,压缩,删除字符,并将结果写到标准输出
参数:
-c 取代所有不属于第一字符集的字符
-d 删除所有不属于第一字符集的字符
-s 把连续重复的字符以单独一个字符表示
-t 先删除第一字符集较第二字符集多出的字符
案例:
把连续重复的字符以单独一个字符表示
[root@localhost ~]# echo " iii lllovve yyou" |tr -s 'ilvy'
i love you
替换标准输入中的大小写
[root@localhost ~]# echo "every good" |tr "[a-z]" "[A-Z]"
EVERY GOOD
使用-d 参数删除
[root@localhost ~]# echo "every good 666" |tr -d 'a-z'
666
把文件当中标准输入,进行字符替换,不会改变文件
[root@localhost ~]# cat test.txt
every good 666
[root@localhost ~]# tr 'o' 'O' < test.txt
every gOOd 666
以文字的格式来显示inode的内容,(比ls输出的信息更加详细)
参数:
-L 跟随链接
-f 显示文件的系统状态而非文件状态
-t 使用简洁格式输出
用来在指导目录下查找文件
参数:
--maxdepth 设置最大目录层级
--mindepth 设置最小目录层级
-atime 按照文件访问时间查找,atime ctime mtime单位都是天;
# 如:-1以内;1 恰好一天;+1 超过一天(一天以前)
-ctime 按照更改时间查找,
-mtime 根据修改修改(modify)时间查找,最常用
-neme 根据名字查找,支持通配符
-perm 根据文件权限查找
-size 根据指定大小查找文件,+表示大于,-表示小于,无表示等于;如+10M,—10M
-path 配合-prune参数排除指定的目录
-prune 使用find命令不在指定的目录查找
-exec或ok 对匹配的文件执行响应的shell命令
-delete 删除找出的文件
-a / -o 取交集,并集,
-type 查找某一类型的文件;b-块设备文件;d-目录;c-设备文件;p-管道文件;l-符号链接文件;f-普通文件;s-socket文件;-普通文件
案例:
根据修改时间查找文件
一天以内,被访问过的文件
find . -atime -1
一天以内,内容变化的文件
find . -mtime -1
恰好在七天内被访问的文件,查找最大目录层级为2,类型为文件
find / -maxdepth 2 -type f -atime -7
find反向查找
[root@localhost ~]# find . -maxdepth 1 -type d
#在当前目录下查找最大深度为1,文件夹类型的数据,加感叹号表示取反,代表取除了文件夹以外类型的数据
[root@localhost ~]# find . -maxdepth 1 ! -type d
按照文件大小查找
find . -maxdepth 2 -size +10M #查找超过10M大小的文件
使用-exec或是-ok再次处理,-ok比--exec存在用户提示,更加按照
#找出以.txt结尾的文件后执行删除动作且提示确认
[root@localhost test]# find /test/ -type f -name "*.txt" -ok rm {} \;
< rm ... /test/file.txt > ? y
< rm ... /test/test.txt > ? y
-exec跟着shell命令,结尾必须以“;”分号结束,考虑系统差异,加上转义符 “\” ;{}作用是替代find查阅到的结果,{}前后必须有空格
[root@localhost test]# touch {1..3}.txt
[root@localhost test]# ls
1.txt 2 2.txt 3.txt ens33
[root@localhost test]# find /test/ -type f -name "*.txt" -exec rm {} \;
[root@localhost test]# ls
2 ens33
#找到目录中所有.txt 文件,且将查询结果写入到all.txt文件中
find ./ -type f -name "*.txt" -exec cat {} \; > all.txt
#把30天以前的日志,移动到/log 文件中
find . -type f -mtime +30 -name "*.log" -exec cp {} /log \;
显示文件的类型
参数:
-b 列出辨识结果,不显示文件名称
-z 尝试取解读压缩文件的内容
查找PATH环境变量中的文件
例如:
[root@localhost test]# which vim
/usr/bin/vim
用来定位指令的二进制程序,源代码文件和man手册页等相关文件的路径
参数:
-b 只查找二进制文件
例如:
[root@localhost test]# whereis cd
cd: /usr/bin/cd /usr/share/man/man1/cd.1.gz /usr/share/man/mann/cd.n.gz
[root@localhost test]# whereis -b cd
cd: /usr/bin/cd
对多个文件进行压缩,打包,解包
参数:
-c 建立新的备份文件
-C 指定目录解压缩
-x 从备份文件中还原文件
-t 列出备份文件的内容
-z 通过gzip指令处理备份文件
-f 指定备份文件,-f参数必须放到最后
-v 显示指令执行过程
-r 添加文件到已经压缩的文件
-u 仅追加比归档中副本更新的文件
-k 保留源文件不覆盖
-p 用原来的文件权限还原文件
-P 文件名称使用绝对路径,不移除文件名称前的“/”;不推荐使用
--exclude 排除符号范本样式的文件
-h 跟踪符号链接,将他们所指向的文件归档并输出;
-h 参数能够保证,打包的不仅仅是个快捷方式,而是找到源文件
案例:
仅打包不压缩
tar -cvf all.tar ./*
打包且用gzip压缩,节省磁盘空间
tar -czvf all.tar.gz ./*
拆开tar包
tar -xf all.tar
拆开tar压缩包到指定目录
tar -xzvf all.tar.gz -C /opt/
列出tar.gz包有什么内容
[root@localhost test]# tar -tzvf all.tar.gz
-rw-r--r-- root/root 0 2021-02-06 23:42 ./1.txt
-rw-r--r-- root/root 0 2021-02-06 23:42 ./2.txt
-rw-r--r-- root/root 0 2021-02-06 23:42 ./3.txt
lrwxrwxrwx root/root 0 2021-02-06 23:36 ./d -> /dw/
[root@localhost test]# tar -xzvf all.tar.gz ./d
./d
[root@localhost test]# ls
all.tar.gz d
排除文件解压缩
[root@localhost test]# tar -xzvf all.tar.gz --exclude d
./1.txt
./2.txt
./3.txt
[root@localhost test]# ls
1.txt 2.txt 3.txt all.tar.gz
压缩快捷方式的源文件,而不是压缩快捷方式
[root@localhost test]# tar -czf d.tar.gz d
[root@localhost test]# tar -tvzf d.tar.gz d
lrwxrwxrwx root/root 0 2021-02-06 23:36 d -> /dw/
[root@localhost test]# tar -czhf d.tar.gz d
[root@localhost test]# tar -tvzf d.tar.gz d
drwxr-xr-x root/root 0 2021-02-06 23:14 d/
-rw-r--r-- root/root 0 2021-02-06 23:14 d/1
-rw-r--r-- root/root 0 2021-02-06 23:14 d/2
-rw-r--r-- root/root 0 2021-02-06 23:14 d/3
用来压缩文件,gzip压缩解压都会删除源文件
参数:
-l 列出压缩文件的相关信息
-q 不显示经过信息
-r 递归处理,将指定目录下的所有文件及子目录一并处理
-t 测试压缩文件是否正确无误
-v 显示指令执行过程
-<压缩效率>,一个介于1-9之间的数值,预设值为6,指定数值越大压缩效率越高
--best 此参数效果和指定“-9” 参数相同
--fast 此参数效果和指定“-1”参数相同
-c 保留原始文件,生成标准输出流()接哼重定向使用
#gzip 无法压缩文件夹,必须先tar对文件夹打包后,才可以gzip压缩
案例:
压缩文件
[root@localhost test]# gzip *
解压缩文件
[root@localhost test]# gzip -d *
zip是一个应用广泛的跨平台压缩工具,压缩文件的后缀为zip文件,还可以压缩文件夹
unzip用于解压zip格式的文件;centos7需要安装:yum install -y unzip zip
参数:
-r 递归处理
-m 压缩完毕后,删除源文件
-S 包含系统和隐藏文件
-q 不显示指令执行过程
-<压缩效率>,一个介于1-9之间的数值
案例:
压缩
zip -q all.zip ./*
解压缩
unzip all.zip
用于显示当前系统时间,或者修改系统时间
常用案例:
显示:
[root@localhost test]# date
Sun Feb 7 00:20:47 CST 2021
[root@localhost test]# date +%F
2021-02-07
[root@localhost test]# date "+%F %T"
2021-02-07 00:21:18
修改:只有root权限才能设置
[root@localhost test]# date -s 20080808
Fri Aug 8 00:00:00 CST 2008
[root@localhost test]# date
Fri Aug 8 00:00:06 CST 2008
[root@localhost test]# date -s "20210206 23:24:36"
Sat Feb 6 23:24:36 CST 2021
[root@localhost test]# date -s "2021-02-06 23:24:36"
Sat Feb 6 23:24:36 CST 2021
多次覆盖文件,使得即使是昂贵的硬件探测仪页难以将数据复原
案例:
随机覆盖文件内容,不删除源文件
shred 1.txt
彻底粉碎且删除文件
shred -u 1.txt
BIOS初始化,开始post开机自检 --检查硬件是否正常
加载mbr到内存
grub引导
加载内核
启动systemd进程
读取/etc/inittab文件
执行/etc/rc.d/rc.sysinit程序
执行/bin/login,等待用户登录。