3月25日
定时任务要领:
* * * * * /bin/sh /server/scripts/bak.sh &>dev/null
如何调试定时任务?
1查看错误日志
/var/log/cron
学会最小化排除:
先清空,>/var/log/cron
然后再测试和观察
2增加执行任务频率调试任务
把频率调快
3把定时任务执行时间比当前时间拖后5分钟
4调整系统时间
5通过脚本日志调试定时任务
定时任务输出
* * * * * /bin/sh /server/scripts/bak.sh&>/tmp/bak.log
脚本输出
tar zcvf oldboy.tar.gz./data >./tmp/tar.log
注意点:有时候程序只能执行一次,一定要在测试环境测试好,然后直接复制到正式
常见企业故障案例
磁盘满的报错
原因往往是inode被占满了。因为定时任务没有加到&>dev/null,定时任务执行的时候把输出给系统root发邮件
程序可以手动执行,放定时任务里不执行
定时任务在执行的时候,多数情况没办法加载环境变量,特别是/etc/profile,登录后怎么操作都对,但就是放到定时任务里不行。
命令行:bash登录方式
1手工登录后,加载所有环境变量
2定时任务执行脚本属于非登录状态
登录系统后,命令行出现如下提示:为什么?
[root@oldboyedu/home/chenglong1]# su - chenglong1
-sh-4.2$
解答:
用户的环境变量缺失导致的。
执行如下命令解决添加用户要用的文件
-sh-4.2$ cp/etc/skel/.bash* .
-sh-4.2$ source./.bash_profile ./.bashrc
export PS1='[[\e[34;1m]\u@[\e[0m][\e[32;1m]\H[\e[0m][\e[31;1m]\w[\e[0m]]$'
用户管理知识
用户相关文件:
/etc/passwd 用户所在文件
/etc/shadow 密码所在文件
useradd oldboy 添加用户实际上就是修改上述两个文件
passwd oldboy 改密码实际上就是密码所在文件
用户组相关文件:
/etc/group 用户组所在文件
/etc/gshadow 用户组密码所在文件(废弃状态)
useradd oldboy 添加用户实际上也会修改上述两个文件(因为要创建同名的用户组)
groupadd sa 添加用户组就是修改上述两个文件
md5sum 给文件设置指纹(计算和检查MD5数字信息)
用户密码所在文件
/etc/passwd文件:
linux是命令行管理,平时输入ls,cp,谁识别帮我们把我们想要的要的输出,这个工具就是bash(命令行解释器)
用户登录:输入命令,希望哪个解释器解释(结尾列决定)
/etc/passwd:bingbing:x:1004:1006::/home/bingbing:/bin/bash
centos7默认解释器就是bash
/etc/default/useradd文件 useradd命令的配置文件
bash是sh的扩展,sh是bash的软连接。
[root@oldboyedu~]# tail -1 /etc/shadow
shadow文件各字段含义
bingbing 用户
:!! 密码
:17980 最近更改密码的时间
:0 禁止修改密码的天数
:99999 用户必须更改口令的天数
:7 警告更改密码的期限
: 在用户密码过期之后到禁用账户的天数
: 从1970年1月1日起,到用户被禁用的天数
: 保留
/etc/default/useradd文件 useradd命令的配置文件
默认shell就是/bin/bash
为什么默认的家目录在home下
为什么默认的家目录/home/用户名下面有很多隐藏文件,从哪来的。
就是/etc/default/useradd文件配置的。
文件的修改方法
useradd -D -s /bin/sh
/etc/skel目录,创建用户默认就会i把此目录下的文件拷贝到/home/用户名下
/etc/skel 为每个用户提供环境变量的目录
添加用户要用的文件
/etc/login.defs /etc/skel /etc/default/useradd
编辑/etc/passwd,通过注释来删除。
不交互设置密码:
方法1:
[root@oldboyedu~]# echo 123456|passwd --stdin oldgirl
Changing passwordfor user oldgirl.
passwd: allauthentication tokens updated successfully.
方法2:
[root@oldboyedu~]# echo 123456 >pass
[root@oldboyedu~]# cat pass
123456
[root@oldboyedu~]# passwd --stdin oldgirl
Changing passwordfor user oldgirl.
passwd: allauthentication tokens updated successfully.
[root@oldboyedu~]# tail -4 /etc/passwd|awk -F ":" '{print $1":oldboy"}'>user.log
[root@oldboyedu~]# cat user.log
gongli1:oldboy
gongli2:oldboy
chenglong1:oldboy
zongsheng:oldboy
chpasswd对密码文件的要求是上述user.log
方法1:
[root@oldboyedu~]# chpasswd
方法2:
[root@oldboyedu~]# tail -4 /etc/passwd|awk -F ":" '{print$1":oldboy"}'|chpasswd
3月26日
[oldboy@oldboyedu ~]$ ls /root
ls: cannot open directory /root: Permission denied
完成上面的动作。
给oldboy用户,针对ls设置权限。
visudo进入编辑状态,100G
## Allow root to run any commands anywhere
root ALL=(ALL) ALL
oldboy ALL=(ALL) /usr/bin/ls,/bin/cp #<===增加一行
用户 主机=(角色) 命令
注意:
1、路径要全路径:
which cp查
2、不要vim /etc/sudoers编辑,如果非要用编辑完visudo -c检查语法
oldboy是管理员,并且不要密码:
oldboy ALL=(ALL) NOPASSWD: ALL
登录后切到root运行。
[oldboy@oldboyedu ~]$ sudo su - root
Last login: Tue Mar 26 10:32:57 CST 2019 on pts/3
[root@oldboyedu ~]#
为了安全禁止root远程连接linux。
工作中如何登录?
使用普通用户登录然后利用sudo提权到root。
Wecomle to oldboy training 58期。
[oldboy@oldboyedu ~]$ whoamioldboy
[oldboy@oldboyedu ~]$ sudo ls /root
a.txt c.txt data1 etc oldboy oldboy_b oldboy_soft_link pass test.txt user.log
b.txt d d.txt grep.txt oldboy_1.txt oldboyedu.txt oldboy.txt test test.txt.ori
[oldboy@oldboyedu ~]$
[oldboy@oldboyedu ~]$ sudo su -
Last login: Tue Mar 26 11:42:09 CST 2019 on pts/0
[root@oldboyedu ~]#
[root@oldboyedu ~]# su - oldboy
Last login: Tue Mar 26 10:44:08 CST 2019 on pts/3
[oldboy@oldboyedu ~]$ ls /root
ls: cannot open directory /root: Permission denied
[oldboy@oldboyedu ~]$ sudo -l
We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type. #3) With great power comes great responsibility.
[sudo] password for oldboy:
Matching Defaults entries for oldboy on oldboyedu:
User oldboy may run the following commands on oldboyedu:
(ALL) /bin/ls
[oldboy@oldboyedu ~]$ sudo ls /root
a.txt c.txt data1 etc oldboy oldboy_b oldboy_soft_link pass test.txt user.log
b.txt d d.txt grep.txt oldboy_1.txt oldboyedu.txt oldboy.txt test test.txt.ori
[oldboy@oldboyedu ~]$ ls /root
ls: cannot open directory /root: Permission denied
[oldboy@oldboyedu ~]$
3月27日
早期磁盘:与现在磁盘做比较
磁盘知识的体系结构分六个层次
磁盘的外部结构:
磁盘、盘片、磁头、磁盘接口
磁盘接口的类型:
SAS、SATA、SCSI、PCI-E
磁盘的分类:
企业级SAS硬盘 :
容量尽量不要选最大
尽量分成4个盘来选
SATA硬盘:
SSD固态电子盘:
企业生产普及及程度SAS>SSD>SATA
单位容量对比性能和价格SSD>SAS>SATA
单位价格购买磁盘容量SATA>SAS>SSD
固态磁盘缺点
写入寿命有限
数据难以恢复
磁盘的内部结构组成
磁头:用来写入和读取数据的
磁道:
扇区:磁道上最小的单位 512字节
柱面:
单元块:
命令 echo + bc awk
都可当做来计算算器使用
磁盘容量大小的计算方式:
512字节*每磁道扇区数=磁道大小
磁道大小*磁道数=盘面大小
盘面大小*磁头数=磁盘容量
磁盘容量=盘面大小*磁头数
磁盘容量=磁道大小*磁道数*磁头数
磁盘容量=512字节*每磁道扇区数*磁道数*磁头数
磁盘容量=柱面大小*柱面数(磁道数)
柱面大小=磁道大小*磁头数
磁道大小=512字节*每磁道扇区数
磁盘容量=512字节*每磁道扇区数*柱面数(磁道数)*磁头数
磁盘容量=512字节*每磁道扇区数*磁道数*磁头数
磁盘容量=512字节*每磁道扇区数*柱面数(磁道数)*磁头数
磁盘读写是按柱面来读写的
3月28日
raid是廉价冗余磁盘阵列,有时也简称磁盘阵列
raid级别 raid0 raid1 raid5 raid10
常见raid分两类
软raid系统层面实现的,性能差
硬raid,硬件层面实现的,性能好
主板板载raid:功能弱,0,1
独立raid卡:功能强,0,1,5,10……工作选择
LVM全称(Logic Volume Management (Manager))逻辑卷管理,它的最大用途是可以【灵活的管理磁盘的容量】,让磁盘分区可以随意放大或缩小,便于更好的应用磁盘的剩余空间,如果过于强调性能与备份,那么还是应该使用RAID功能,而不是LVM。
LVM是软件层面实现的,性能太低,性能降低5-10%
买服务器插满磁盘,分区规划好,永远都不需要LVM
raid和LVM区别
为什么需要raid?
RAID1又称为Mirror或Mirroring(镜像),
它的宗旨是最大限度的保证用户数据的可用性和可修复性。
RAID1的操作方式是把用户写入一个磁盘的数据百分之百地自动复制到另外
一个磁盘上,从而实现存储双份的数据。
raid5 中庸
raid5是一种是一种存储性能、数据安全和存储成本兼顾的存储解决方案。
raid5的特点
RAID5需要三块或以上的物理磁盘,可以提供热备盘实现故障的恢复;
采用【奇偶校验】,可靠性强,且只有同时损坏两块硬盘时数据才会完全损坏,
只损坏一块硬盘时,系统会根据存储的奇偶校验位重建数据,临时提供服务;此时如果有热备盘,系统还会自动在热备盘上重建故障磁盘上的数据;
(1)什么是分区?
磁盘分区就相当于给磁盘打隔断。
(2)磁盘和分区在Linux里的命名。
IDE /dev/hda hdb
SCSI sda sdb
分区数字表示:sda1 sda2 sda3
(3)磁盘分区类型和特点:
- 主分区 (primary) P
1)系统中必须要存在的分区,系统盘选择主分区安装
2)数字编号只能是1-4 sda1. sda2.sda3.sda4
3)主分区最多四个,最少一个
2.扩展分区(extend) E
1)相当于一个独立的小磁盘。独立的分区表,不能独立存在
2)有独立的分区表
3)不能独立存在,即不能直接存放数据
4)必须在扩展分区上建立逻辑分区才能存放数据
5)占用主分区的编号(主分区+扩展分区)之和小于等于4
6)扩展分区可以没有最多只能一个
3.逻辑分区 (logic) L
1)数字编号只能是从5开始
2)存放于扩展分区之上
3)存放任意普通数据
磁盘分区注意事项要点
一块硬盘的分区方式只能为如下组合之一:
(1)任意多个主分区,但要求1≤主分区数量≤4。
例如:一个硬盘可以分为4个主分区3个主分区2个主分区或1个主分区。
(2)扩展分区可以和主分区组合,但要求2≤(主分区+扩展分区)数量≤4)。
例如:3个主分区+1个扩展分区或2个主分区+1个扩展分区或1个主分区+1个扩展分区。
当总分区的数量大于4个的时候,必须提前分一个扩展分区,扩展分区最多只能有一个。
(3)如果要分成四个磁盘分区的话,那么最多就是可以:
P + P + P + P
P + P + P + E
磁盘分区工作原理
磁盘分区按柱面分区
磁盘分区登记的地点:磁盘分区表
磁盘分区表示存放结果信息的
磁盘分区表位置,0磁道 0磁头1扇区(512字节)
占用1扇区的前446字节(系统引导信息的)后面的64 字节(分区表)剩余2个字节分区结束标志
磁盘分区表的容量是有限的,64字节,一个分区固定占16字节
61/16=4分区(主分区+扩展分区)
磁盘分区实战
磁盘分区关键就是改64字节的分区而已
磁盘分区常用命令fdisk,修改MBR分区表,MBR格式。
缺陷,被修改的磁盘大小不能大于2T.
磁盘分区其他命令parted,gpt分区格式,既能修改小于2T也能修改大于2T
小于2T就用fdisk
大于2T就用parted
fdisk -l 查看磁盘分区大小
fdisk /dev/sdb #<==开始给sdb磁盘分区
m #<==查看分区的帮助信息。
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition #<==删除一个分区。
g create a new empty GPT partition table
G create an IRIX (SGI) partition table
l list known partition types
m print this menu #<==查看分区的帮助信息。
n add a new partition #<==添加一个新分区。
o create a new empty DOS partition table
p print the partition table #<==查看分区结果信息。
q quit without saving changes #<==退出不保存。
s create a new empty Sun disklabel
t change a partition's system id
u change display/entry units
v verify the partition table
w write table to disk and exit #<==保存并退出。
x extra functionality (experts only)
3月29日
磁盘分区
fdisk 磁盘分区 容量<2T
fdisk /dev/sdb 给sdb磁盘分区
fdisk退出分区时,需要保存。
partprobe /dev/sdb 使保存的分区生效
fdisk分区时 删除分区用d
parted命令磁盘分区 容量>2T用parted
parted /dev/sdb #<==交互式分区模式
mklabel gpt #<==修改分区格式为gpt
mkpart primary 0 4800000 #<==创建一个4.8T主分区
mkpart primary 4800001 5800001 #<==创建一个1T主分区
mkpart primary 5800002 5804098 #<==创建一个4G主分区
parted分区时自动保存
parted分区时 删除分区用rm
parted mklabel msdos 改回 dos格式
============一键分区==============
parted9 /dev/sdb mklabel gpt
parted /dev/sdb mkpart primary 0 480 I
parted /dev/sdb mkpart primary 481 580 I
parted /dev/sdb p
fdisk分区与parted分区不要混合使用
fdisk分区用dos格式
parted分区用gpt格式
问题需求:刚买的服务器 4块2T 刚买,要做RAID5,装系统怎么搞定?方法
1:Raid制作视频(李导发的),Raid里可以支持RAID5后,6T,允许你把6T分成虚拟磁盘。
200G分成第一个虚拟磁盘剩下不分留着装系统后(parted)。
方法2:装系统过程中有这个功能,系统镜像支持GPT格式分区,很隐蔽。
方法3:引导工具,进入然后用parted分区。
文件系统:
1.什么是文件系统?
计算机存储和组织数据的方法和机制。
2.为什么需要文件系统?
磁盘、物理介质、磁粒子物理元素。硬件需要软件驱动使用,硬盘需要文件系统驱动文件系统实现通过磁盘管理规划、存取数据。
3.文件系统有哪些种类?
windows:ntfs、fat32、msdos
linux:ext2、ext3(c5)、ext4(c6)、xfs(c7)、btrfs
4.创建文件系统实践:
5.文件系统原理(ext文件系统)、文件系统特点
6.企业中如何选择文件系统?
7.如何优化文件系统?
dd 创建一个虚拟文件系统
dd if=/dev/sda of=/dev/sdc bs=512 count=10240
来源 生成文件系统 block大小 块个数
mkfs -t ext4 /dev/sdb1 #格式化ext4文件系统
mkfs.ext4其实关键下就是生成一定数量的inode和block
mount /dev/sdb1 /mnt #临时挂载到/mnt
df -h #查看挂载结果
cat /proc/mounts #查看挂载结果
umount /mnt 卸载挂载的设备
umount -lf /mnt #<==强制卸载
#没有格式化没法挂载mkfs.xfs /dev/sdb2 #格式化xfs文件系统
如何开机自动挂载?
/etc/fstab 开机自动挂载
UUID=3a3a295f-88f8-456d-94dc-1a3eeb517c02 / vxfs defaults 0 0
设备 挂载点 文件系统类型 默认挂载选项 是否备份 是否开机磁盘检查
mount -t xfs /dev/sdb2 /opt 指定xfs文件类型挂载
tail -1 /etc/fstab
mount -a 可以将fstab里的信息挂载。
查看文件系统内部细节
dumpe2fs /dev/sdb1 #查看ext文件系统内部细节
dumpe2fs /dev/sdb1|egrep -i "size"
fsck 磁盘检查和修复
1正常的磁盘不能操作
2卸载挂载点再操作
文件删除原理
no space left on device.
swap作用,内存不够时候,用来充当内存,一般内存1.5倍。大于8G给8G
将来JAVA服务,内存泄漏。。。
swap就会占用。。。操作系统性能下降
[root@oldboyedu ~]# free -m
total used free shared buff/cache available
Mem: 1980 143 1689 9 146 1671
Swap: 767 0 767
增加swap分区 100M