lsmod 查看内存中加载的各种模块
locate xfs 快速查看
cat /proc/filesystems 查看操作系统所支持的文件系统
which xfs_info 查看xfs_info这个工具的路径是什么
rpm -qf `which xfs_info` 查询这个路径的工具来自于哪个包
lsblk -f 可以查看分区的文件系统
mkfs.ext4 /dev/sda6 给sda6分区创建ext4的文件系统
blkid 查看文件系统列表
mkfs.ext4 -L /data/mysql /dev/sda6 给sda6分区设置一个标签,叫/data/mysql
mke2fs -t ext4 /dev/sdb1 mke2fs专门创建ext系列的文件系统,啥都不加默认是ext2文件系统,如果把ext2文件系统加-j 则加上日志功能,但是文件系统自动变成ext3
要想彻底清空分区,得使用 dd if=/dev/zero of=/dev/sdb1 bs=1M 用0填充sdb1分区,每块1M,直到填满为止,sdb1分区连文件系统都会被清掉的
dd if=/dev/zero of=/dev/sdb bs=1M 用0把分区表冲了,就没有分区了
mkfs.ext4 -b /dev/sdb1 指定sdb1分区的文件系统块大小为1024字节
tune2fs -l /dev/sdb1 创建完sdb1分区的文件系统后,可以查看文件系统的具体信息
如果/data目录下的空文件f1, du -sh /data 查看data目录大小为4K,往f1文件里追加一个空行,echo >> /data/f1 ,那么会发现du -sh /data data目录大小为8K,因为有块的概念,虽然f1文件也1个字节,但还是会给他4K空间
mkfs.ext4 -m 0.1 /dev/sdb1 给sdb1分区的文件系统预留0.1%的块,给root用
mkfs.ext4 -i 1024 /dev/sdb1 给sdb1分区的文件系统指定1024个字节创建一个节点号
mkfs.ext4 -N 100000 /dev/sdb1 指定给sdb1分区的文件系统10万个节点编号
mkfs.ext4 -O ^has_journal /dev/sdb1 禁用sdb1分区文件系统的日志功能
mkfs.ext4 -O has_journal /dev/sdb1 启用sdb1分区文件系统的日志功能
blkid -L /data/mysql 查看/data/mysql这个卷标的设备是什么
blkid -U 288e8c19-0d00-458e-8349-1bb69487b74d 查看这个UUID的设备是哪个
mkfs.xfs -f /dev/sdb2 -L /data/html 如果sdb2已经有文件系统了,则需使用-f强行创建,就会覆盖了
e2label /dev/sda6 查看sda6的卷标 只能查看ext系列的
e2label /dev/sda6 /data/logs 给sda6从新设置个卷标 只能修改ext系列的
findfs UUID=288e8c19-0d00-458e-8349-1bb69487b74d 查看这个文件系统UUID属于哪个设备
grep ' / ' /etc/fstab |cut -d" " -f1
findfs `sed -rn '/^UUID/s#(^.*) / .*#\1#p' /etc/fstab`
tune2fs -l /dev/sdb1 查看sdb1分区的文件系统的元数据
echo -e "n\n19516\n+1G\nw\n" | fdisk /dev/sda 非交互式创建分区,echo里如果有 \ 转义符,必须配合-e 才行
fdisk /dev/sda <<EOF 非交互式创建分区
n
19516
+2G
w
EOF
centos6自己创建的分区文件系统不自带acl功能,要想自己加acl得使用:
tune2fs -o acl /dev/sda6
创建完分区,设置完文件系统,如果不把设备挂载的话,是没法在设备的分区上写数据的,所以把设备挂载完才能创建文件mkdir /mnt/sda7;mount /dev/sda7 /mnt/sda7
setfacl -m u:wang:rwx /mnt/sda7/f1 设置acl权限
如果分区已经挂载了,你要想在文件系统上加acl权限,先取消挂载,然后设置文件系统的acl权限,然后再挂载,挂载完后再设置文件的acl权限
dumpe2fs /dev/sda6 查看sda6分区文件系统的块分组,只支持ext系列的;xfs得使用 xfs_info /dev/sda1才能查
dd if=/dev/zero of=/dev/sdb1 bs=1M count=6 用/dev/zero里的0冲掉sdb1分区的6M,但是会破坏节点表和元数据,该造成sdb1分区的文件无法访问,因为节点表已经被破坏了,就找不到文件了。分区出现故障,首先要做的就是取消挂载 umount,防止别人往里面写东西,然后使用fsck /dev/sdb1排查错误,fsck -y /dev/sdb1 修复分区,不用手动输入yes了,还可以使用fsck -a /dev/sdb1 自动修复,修复完可以再检查一次,虽然能修复分区,但是修复完之后,分区的数据就找不到了,因为节点表和元数据已经被损坏了
分区创建出来,要想使用就得把设备挂载到一个文件夹里
mount
dd if=/dev/zero of=/data/html/f1 bs=1M count=100 往新创建的f1文件里填充100M的0,F1文件大小就为100M
mount 是临时挂载
umount /dev/sdb1 取消挂载 如果有人在sdb1分区里,则取消不了
lsof /data/html 可以查看/data/html有谁在里面
fuser -v /data/html 看谁在这个目录里用
fuser -km /data/html 强行把目录里使用的用户踢出
一个挂载点对应的设备只能是一个,不能是多个;如果sda1分区挂载到了/data目录,sda2分区也要挂载到/data目录的话,则会把sda1分区的挂载给顶掉,最后就成了sda2分区挂载/data目录,而且以前存在sda1里面的数据就看不到了,但是不会丢,再拿sda1挂载/f1目录的时候,就可以在/f1目录里看到以前sda1分区里的数据了;挂载点,在设备挂载前,应该是空的,要不挂载完,里面的数据就看不到了
一个设备可以挂载多个挂载点;sda1分区可以挂载到/data目录下,sda1分区也可以挂载到/data/mysql目录下,然后进入/data/mysql目录,也会看到/data/目录下的文件夹,也有个mysql
mount 也可以查到挂载
umount /data/mysql 取消/data/下的mysql目录挂载
dd if=/dev/zero of=/data/bigfile bs=1M count=1024 在/data下填充一个大小为1G的bigfile文件,可以把这个大小为1G的文件给映射成一个设备,可以对这个文件设备创建文件系统 ,mkfs.ext4 /data/bigfile ,然后使用blkid /data/bigfile 可以看到bigfile这个文件系统;然后可以挂载,mount /data/bigfile /mnt/file 可以把文件设备挂载到/mnt/file文件夹,file文件夹里创建的文件就存放到了bigfile这个文件设备里。losetup -a 可以看到文件设备挂载情况;也可以使用 ll /dev/loop*看到这个文件设备
centos6 挂载文件设备得使用 mount -o loop /data/file /mnt/disk
mknod /dev/loop b 7 8 可以创建loop设备数量 还可以编辑文件修改, vim /boot/grub/grub.conf 添加个 max loop=100 修改完后reboot
mount /data /mnt/data -B 可以把文件夹挂载
mount UUID="048df61c-0b1e-4f9b-9c99-177d146558b0" /data/f2 设备的uuid也可以挂载
mount LABEL=“/data/logs” /mnt//sda6 可以用卷标挂载
mount -r /dev/sda6 /data/f000 挂载到f000文件夹,把f000文件夹设置为只读,把挂载点设置为只读
mount -o rw,remount /data/f000 指定为读写挂载,重新挂载
mount -o acl /dev/sda7 /data/f2 在没设置acl功能的分区,挂载的时候指定acl,可以在没设置acl的分区,在这个分区里创建文件也可以设置acl功能
findmnt /data 可以查看/data目录有没有挂载设备
要想挂载存的住,必须写到文件;blkid /dev/sda6 >> /etc/fstab 下,修改fstab ,vim /etc/fstab,0是不备份,3是检测顺序,编辑完后,执行mount -a ,mount -a 只负责对/etc/fstab文件修改完成后生效。如果设置的挂载有只读权限和acl权限,就在挂载点里创建不了文件,也设置不了acl,但可以修改vim /etc/fstab文件,把只读,ro选项去掉,去掉完后,需要重新挂载才行,mount -o remount /mnt/sda6 这样之后,就可以创建文件和设置acl权限
centos6 因为sda6分区在/etc/fstab 挂载文件中,最后面的检测修改为了3,为第三个检测,所以执行 dd if=/dev/zero of=/dev/sda6 bs=1M count=10 用0冲掉sda6分区的节点表和元数据,然后reboot,会发现电脑起不来,然后ESC看过程,输入root口令,进入到/etc//fstab中修改,把第三个检测的数3修改为0,不检测,然后保存退出,结果文件系统是只读的,不是所看到的rw,然后执行 mount -o rw,remount / 因为/etc/目录是属于根目录下的,根目录挂载设置为只读,只能重新挂载根目录,并设置为rw权限,重新挂载完后,vim /etc/fstab,把检测设置为0,不检测,保存reboot,电脑起来后,blkid会发现文件系统sda6的没了,然后修复文件系统,fsck /dev/sda6 -y 修复完之后,文件系统恢复了,但里面的数据就没了,所以以后设置挂载分区时,后面的检测设置为0,不检测,以免造成故障,电脑起不来,先能开启电脑才能修复
centos7 把vim /etc/fstab 文件的分区uuid修改一个,然后保存重启,发现起不来,不管是不是启动分区,只要是分区有故障,电脑就起不来。然后进去/etc/fstab可以直接修改保存,就可以起来了
文件设备要在/etc/fstab里进行挂载的话, 前面不能写uuid,得写文件的具体路径,后面默认的那里得写loop,这样才能存的住
目录挂载目录 文件系统那里写none 默认的那里写bind
光盘挂载,fstab里,文件系统那里写iso9660
free -h 可以看swap大小
添加分区,并且设置为swap分区,fdisk /dev/sdb 把里面的分区id改成为82,然后执行mkswap /dev/sdb1 把sdb1分区文件系统设置为swap 然后在/etc/fstab 里面添加挂载,执行 :r!blkid /dev/sdb1,照上面swap改,swap swap ,设置完之后,swapon -a 可以让修改完的swap挂载fstab文件生效;因为新加的swap比原来旧的swap性能高(因为sdb1在磁盘的外圈,性能好;sda5则是在磁盘的里圈 ),vim /etc/fstab ,在defaults,pri=10 然后退出,先取消挂载swap,swapoff /dev/sdb1 然后在执行swapon -a 在生效,然后swapon -s 可以查看到sdb1的优先级高于sda5
swapon -s 可以查看swap分区情况
想删除swap分区:
1、swapoff /dev/sdb1 取消swap分区挂载
2、从vim /etc/fstab 中,把swap挂载信息清除
3、dd if=/dev/zero of=/dev/sdb1 bs=1 count=16 seek=446 用0冲掉sdb硬盘的分区表,因为只有一个分区,sdb1,所以直接清掉前16个字节可以清除分区表,系统就找不到分区了,跳过前面446个字节
4、partx -d --nr 1 /dev/sdb 同步到内存中
拿一个文件当swap分区用:
1、dd if=/dev/zero of=/data/swapfile bs=3G count=1 先创建一个3G的文件
2、mkswap /data/swapfile 给swapfile设置文件系统
3、blkid /data/swapfile 因为不是分区,要想看到,就得加/data/swapfile才行
4、vim /etc/fstab ,:r!blkid /data/swapfile ,设置挂载
5、swapon -a 读取fstab文件,生效
6、chmod 600 /data/swapfile 修改swapfile文件的权限为600,因为swapfile文件变成了虚拟内存,里面都是内存中的数据,所以别人不能看
eject 弹出光驱
eject -t 弹入光驱
cp /dev/cdrom /data/centos.iso 把光盘创建为一个iso文件
mkisofs -r -o etc.iso /etc/ 把/etc/目录打包成了一个etc.iso文件,然后挂载,mount etc.iso /mnt -o loop 把etc.iso当文件设备挂载到mnt目录下,因为是文件设备,centos6后面必须有 -o loop ,指定为loop
lsusb 查看usb设备
tail /var/log/messages 查看日志
sync 强行把缓存中的数据写入到u盘中
df -h 看具体挂载大小
df -H 看挂载大小,是10的次方看
df -i 可以看挂载的节点编号
du 默认是显示当前目录大小,并且每个子目录也显示,看的是目录
du -h 可以看到单位
du -sh 看的是总目录大小
du -sh /* 查看/下每个目录的大小
du --max-depth=2 /data 查看/data/目录下最多两级目录大小
dd if=/dev/zero of=/data/f7 bs=1 count=1024 conv=fdatasync 将数据写入到磁盘中,而不是缓冲区
dd if=/dev/sda of=/data/f6 bs=1 count=20 seek=300 conv=notrunc 默认填入300个往后20个字节,但是后面的内容默认是截断的(不要了),加上conv=notrunc,后面的内容就不截断了,后面的内容也留着
raid
raid 可以提供高性能,容错率也高,防止了一块硬盘损坏,造成数据丢失
raid0:至少两块磁盘;而且磁盘大小必须一样;虽然硬盘是多个,但是启动只会看到一个设备名称 sda;优点是:读写速度快;缺点是:如果一块损坏,数据就用不了了,容错性差
raid1:至少两块磁盘;有点:容错性好,一块磁盘写数据,一块做镜像;缺点:性能差,两块硬盘性能只有百分之五十;raid1是完全镜像,如果你删除数据,镜像也是删除数据,恢复不了,raid1是防止硬盘损坏,而不是人为损坏
raid4:至少三块硬盘,两块写数据,一块是校验盘,如果坏了一块,可以通过异或值校验出坏的那块磁盘的数据,容错率高,性能好,但是校验盘总坏;磁盘利用率为n分之(n-1),只能防止一块硬盘损坏
raid5:至少三块硬盘,每块硬盘都是校验盘,每块也都存数据,级别是一样的;但是只能允许坏一块硬盘损坏,磁盘利用率为n分之(n-1)
raid6:至少四块硬盘,可以最多允许两块硬盘损坏,有两块校验盘,磁盘利用率为n分之(n-2)
raid10:至少四块硬盘,两两一组;两组先做raid1,再做raid0;如果raid1里一组坏了一个,第二组还可以再坏一个,但不能坏第一组;磁盘利用率为百分之五十,失败率为3分之1,生产中优先选择raid10
raid01:至少四块磁盘,两两一组;先做raid0,再做raid1;如果raid0一组坏一个,则一组就坏了,但是还有raid1,还有第二组可以用;磁盘利用率为百分之五十,失败几率为3分之2
create . 把当前目录创建为yum源仓库,里面会多出来一个repodata,证明当前目录是yum源仓库
进入/etc/yum.repos.d/编辑yum源的配置文件
使用yum 安装dnf,dnf可以把yum源当做他自己的源仓库,dnf包在光盘上没有,得去互联网下载,属于epel源,下载好dnf的rpm包,创建yum,仓库,用Yum安装dnf,解决依赖性,而且dnf可以把yum仓库当做自己的仓库
repodata在哪个目录下,哪个目录就是Yum源仓库
dnf repolist
time dnf reinstall vsftpd -y 可以看安装的时间是多少
编译安装
光盘就相当于一个yum源仓库,然后再/etc/yum.repos.d/下配置一个yum源仓库的配置文件
gcc 编译c,c++ 把c语言变异成二进制文件,
gcc hello.c -o hello 编译hello.c,并制定文件名为hello
刚生成的可执行二进制文件,外部命令路径里没有路径,要想执行,得使用./hello
dnf info httpd 查看httpd的信息
一般源码编译都放在,/usr/local/src目录下
wget 配合 网址,可以直接把网址东西下载下来
gcc只能编译解压单个文件
1、下载的源代码编译,下载到/usr/local/src目录中,
2、使用tar xvf httpd-2.4.25.tar.bz2 加包名,解压
3、编译安装前,先得看看 README 和INSTALL
4、查看有没有configure这个脚本,如果没有就直接编辑,Makefile,输入make,必须得在自己的/etc/local/src/tree目录下输入make ,编译,make install ,编译安装tree
5、把Makefile文件的路径设置成自己的路径prefix=/data/apps/,没有的文件夹自动创建
6、改完然后执行Makefile,./Makefile 执行,因为还没有路径,得使用./执行
7、/data/apps/下会有/bin /man两个目录,就可以使用了
8、所有操作必须是在源码编译的目录/usr/local/src目录下完成所有操作
9、然后可以配置man 手册的路径,man帮助手册的路径在/etc/man_db.conf这个文件夹中,只适用于centos7 /etc/man.config 是centos6的man帮助手册的路径
10、whereis tree 可以看到tree的二进制程序路径,和man帮助手册的路径
11、在/etc/man_db.conf文件中,添加一个路径,/data/apps/man
12、可以把修改二进制程序的路径,vim /etc/profile.d/env.sh 把路径添加上 PATH="/data/apps/bin:$PATH", 然后 . /etc/profile.d/env.sh 就可以了
sz 后面跟具体文件,就可以把linux上的文件上传到windows上
如果开多个窗口,一个屏幕source一下生效了,但是另一个窗口还是不管用,除非退出或者source一下
13、如果编译安装完如果生成的二进制文件是一个的话,直接可以生成一个$PATH路径上的软链接,
ln -s /data/apps/bin/tree /usr/bin/ 不用去修改/etc/profile.d/,如果是多个二进制程序,还是得去修改配置文件
make clean 在/src/解压包的目录下,清空.o结尾的编译文件,要想完全清除编译文件,直接把解压完的目录删除,从新解压;要想卸载编译安装的程序,平常yum删完,编译安装的包还有,只能把编译安装的包的文件夹完全删除,/data/apps/
1、./configure --help 看看configure脚本的帮助,都支持什么
2、./configure --prefix=/data/apps/xxxxx --sysconfdir=/etc/xxxxx,执行 执行configure脚本,指定路径,指定配置文件的路径
3、执行完之后形成makefile文件 ,echo $? 看看上个操作成功没成功
4、make -j 4 && make install && echo -e '\a' 编译,-j表示支持的cpu数量,短路与,对了往后走,编译安装,安装完提示铃
5、如果少文件的话,使用yum search 搜索,也可以使用 yum provides 查询所依赖的包(谁提供的)
6、一般缺什么软件,搜索到他,后面补个devel就行了
7、然后把缺的软件安装上
8、如果出现安装晚了的提示,则删除解压完的目录,从新操作,先把缺少的文件安装完,然后解压,然后再执行./configure脚本
9、然后把安装完生成完的程序设置为软链接ln -s /data/apps/cmatrix/bin/cmatrix /usr/bin/
10、修改man帮助路径vim /etc/man_db.conf
1、./configure --prefix=/data/apps/httpd \ 命令太多执行的时候可以换行,\
> --sysconfdir=/etc/httpd \
> --enable-htttp2 \
> --enable-ssl \
> --disable-auth-basic
2、启用的功能太多的时候会报错,因为功能依赖于很多包的,得把依赖的包也安装上,依赖的包安装完之后,再重新执行脚本
3、yum search 可以无视大小写
4、yum search找不到的,用yum provides 搜索
5、生成makefile后,编译安装,执行make -j 4 && make install && echo -e '\a'
6、如果yum search 和yum provides 搜不到的话,就得使用epel源搜索,epel源优先
ubuntu
dpkg -l =rpm -qa
dpkg -i 安装
dpkg -r 卸载
cat /etc/apt/sources.list ubuntu的apt仓库路径,可以替换里面的源
apt update 上网上更新apt的数据库
sed '/^PATH/d' /etc/profile.d/env.sh 把PATH开头的行删除
硬盘结构
b表示位 8位一字节
B表示字节
一个扇区512字节
echo 512*63*26108*255/1024/1024/1024|bc 硬盘大小
一个16进制等于4位二进制
早期硬盘:
一个磁道最多有2的6次方个扇区(64)
磁道数是2的10次方(1024)
磁头数是2的8次方(256) 0-255
512*64*1024*256/1024/1024/1024=8G
512*63*255/1024/1024 一个柱面大小8M
第一个磁道的第一个扇区,也就是0磁道0扇区:512个字节,前446个是一个基于操作系统之外的软件,用来找到操作系统,64个字节是分区表,每个分区16个字节,最后两个字节表示为55aa,55aa就表示是有分区的;分区的16个字节的第五个字节如果为0,那么表示分区没使用,如果为1,表示被使用
hexdump -C /dev/sda -n 512 看硬盘的前512个字节
80表示活动分区,00表示非活动分区,4个主分区只有一个是活动的
hexdump -C -n 512 /dev/sdb -v 可以看过程
mbr分区,最多能支持2T
k
M
G
T
P
E
Z
Y
B
N
D
uuidgen 随机生成32个16进制数字
GPT分区支持128个分区,还有备份
lsblk 查看块设备
lsblk -f 可以看文件系统
parted
parted /dev/sda print 把/sda硬盘的具体信息打印出来
parted /dev/sdb mklabel msdos 把sdb硬盘设置成为mbr分区
parted /dev/sdb mklabel gpt 把sdb硬盘设置成为gpt分区
parted /dev/sdb mkpart primary 1 1001 创建一个主分区,大小为1000M
parted 创建分区是实时生效的,敲回车就生效了,没有后悔的机会
parted /dev/sdb rm 1 删除sdb硬盘上的第一个分区
如果有分区的情况下,再执行parted /dev/sdb makelabel msdos 命令,会把原有的硬盘清空,分区也没了
fdisk /dev/sdb 给mbr分区分配分区 也可以删除,上面有选项
/proc/partitions 可以看分区情况
fdisk -l /dev/sda 看的是硬盘中的分区表
partprobe 使增加的分区的分区表同步到内存中,centos6中用不了
partx -a /dev/sda 这个可以使centos6中增加的分区的分区表同步到内存中
partx -d --nr 6-8 /dev/sda 从内存中删除分区6-8
dd if=/dev/sdb of=/data/partition bs=1 count=64 skip=446 把/dev/sdb的硬盘的内容(16进制)放到/data/partition文件里,没有文件自动创建,每块一个字节,一共64个,跳过/dev/sdb硬盘的前446个字节,从446个字节往后开始复制64个,因为是16进制,得使用hexdump -C 进行看
scp /data/partition 172.18.1.6:/data/ 把本机/data/partition 文件发给172.18.1.6这个ip主机的/data/下
dd if=/dev/zero of=/dev/sdb bs=1 count=64 seek=446 把源/dev/zero填充到sdb硬盘的分区表,跳过目标sdb硬盘的前446个字节,从446字节后面开始填充
填充完可以查看hexdump -C -n 512 /dev/sdb -v
dd if=/dev/sdb of=/data/partition bs=1 count=64 skip=446 把sdb硬盘的前446个字节跳过,从446个字节之后开始复制到/data/partition文件中,做备份
scp /data/partition 172.18.1.6:/data/ 把本地的 /data/partition文件发送到172.18.1.6远程主机的/data目录下做备份
在救援模式中,把远程主机172.18.1.6中的partition文件发送到当前主机中,但因为当前模式下没有ip地址,所以自己临时配一个ip地址:ifconfig ens37 172.18.1.3/24,然后使用ifconfig就可以查到,然后把远程主机的文件发送过来,scp 172.18.1.6:/data/partition . 把172.18.1.6主机中的partition文件发送到当前目录下。
然后执行 dd if=partition of=/dev/sda bs=1 seek=446 把当前目录下的partition文件填充到sda硬盘的分区表,一个字节一个字节的填充,跳过目标sda硬盘分区表的前446个字节
hexdump -C -n 512 /dev/sda -v 这样就可以看到sda硬盘分区表的内容填充上了
然后执行 sync 让填冲完的内容立马写进磁盘,避免写入缓冲区
然后reboot重启就OK了
gdisk /dev/sdb 给sdb硬盘创建gpt分区