linux基础
linux基础
安装、初始化
安装centos
服务器初始化:[参考文件][]
初始化/优化:更改源(快照),优化基础配置、端口
systemd:服务管理、网络管理等
linux开机过程:bios自检-->启动菜单-->加载操作系统内核-->内核初始化-->启动初始化进程(systemd进程)
bash
bash:命令解释器shell
# 查看当前shell
root@localhost:~# echo $SHELL
/bin/bash
# 查看有哪些bash
root@localhost:~# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash 
# shell提示符(/etc/profile修改)
root@localhost:~# echo $PS1
${debian_chroot:+($debian_chroot)}\[\033[01;33;1m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$
-bash-4.2$ 用户缺少环境变量 cp /etc/skel/.bash* .
命令别名alias if0='ifconfig eth0' 取消别名:unalias
echo 单引号所见即所得;双引号可以使用转义echo -e "test\nTEST";反引号 执行命令
$PATH环境变量
bash shell配置文件
Bash的配置⽂件保存⽤户的⼯作环境
个⼈配置⽂件: ~/.bash_profile ~/.bashrc
全局配置⽂件:/etc/profile /etc/profile.d/*.sh /etc/bashrc
profile类⽂件, 设定环境变量, 登陆前运⾏的脚本和命令
bashrc 类⽂件, 设定本地变量, 定义命令别名
全局配置和个⼈配置设置冲突, 优先使⽤个⼈配置准
shell配置文件应用顺序
//登录式shell配置⽂件执⾏顺序
/etc/profile->/etc/profile.d/*.sh->~/.bash_profile->~/.bashrc->/etc/bashrc
//⾮登陆式shell配置⽂件执⾏顺序
~/.bashrc->/etc/bashrc->/etc/profile.d/*.sh
#验证登陆shell和⾮登陆shell配置⽂件执⾏顺序, 在每个配置⽂件加⼊⼀段 “echo”即可
#最后通过登陆shell和⾮登录shell⽅式登陆linux, 即可验证执⾏顺序
目录结构
/etc 配置文件目录
/var 可变文件,日志文件
/run 系统启动、运行的数据
/home 用户家目录
/root 超级管理员目录
/tmp 临时文件存放目录
/boot 存放系统引导时候需要的文件
/dev 存放设备文件
/usr 应用程序和文件的安装目录
/usr/bin 用户命令目录
/usr/sbin 管理员命令目录
/usr/local 本地自定义安装的软件
vim三种模式
vim三种模式:命令模式、末行模式、编辑模式
打包压缩
优点:
节省磁盘空间占用率;节省网络传输带宽消耗;网络传输更加快捷
# 案例:没有网络,没有账号密码,登录服务器,通过nc方式进行文件传输
# 发送方
tar zcf xx.tar /etc|nc ip 端口
# 接收方
nc -l 端口 | tar -zxf xx.tar -C /tmp
文件属性
# 通过inode删除文件
ls -i test
rm `find . -inum 34774620`
# 或者
find . -inum 3278052 -exec rm -i {} \;
软连接、硬链接
ln -s 源文件 文件
删除软连接:unlink 文件名
生产软连接作用:
软件升级;企业代码发布;不方便目录移动
硬链接:ln 源文件 文件
区别:
1)ln命令创建硬链接,ln -s命令创建软链接。
2)⽬录不能创建硬链接,并且硬链接不可以跨越分区系统。
3)⽬录软链接特别常⽤,并且软链接⽀持跨越分区系统。
4)硬链接⽂件与源⽂件的inode相同,软链接⽂件与源⽂件inode不同。
5)删除软链接⽂件,对源⽂件及硬链接⽂件⽆任何影响。
6)删除⽂件的硬链接⽂件,对源⽂件及链接⽂件⽆任何影响。
7)删除链接⽂件的源⽂件,对硬链接⽆影响,会导致软链接失效。
8)删除源⽂件及其硬链接⽂件,整个⽂件会被真正的删除。
日志审计
通过 sudo 和 syslog 配合实现对所有⽤户进⾏权限的⽇志审计并将记录⽇志集中管理,实施后让所有运维和开发执⾏的sudo命令都有记录可查,杜绝了内部⼈员的操作安全隐患。
sudo⽇志审计,专⻔针对sudo命令的系统⽤户记录其执⾏的命令相关信息,所谓sudo命令⽇志审计,并不记录普通⽤户的操作,⽽是记录执⾏sudo命令的⽤户操作。
1.安装sudo、rysylog
root@localhost:~# yum install -y sudo rsyslog
root@localhost:~# rpm -qa rsyslog sudo
rsyslog-8.24.0-57.el7_9.3.x86_64
sudo-1.8.23-10.el7_9.3.x86_64
2.配置 /etc/sudoers 记录⽇志路径
root@localhost:~#  echo "Defaults logfile=/var/log/sudo.log" >>/etc/sudoers
# 追加配置
root@localhost:~# tail -1 /etc/sudoers 
Defaults logfile=/var/log/sudo.log
root@localhost:~# visudo -c 
/etc/sudoers:解析正确
3.配置 rsyslog ⽇志服务
root@localhost:~# echo "local2.debug /var/log/sudo.log" >>/etc/rsyslog.conf
root@localhost:~# systemctl restart rsyslog
# 查看
cat /var/log/sudo.log
4.普通⽤户使⽤sudo权限验证⽇志记录
//使⽤普通执⾏sudo命令
rm -rf /root/test/
rm: ⽆法删除"/root/test": 权限不够
sudo rm -rf /root/test/
//检查⽤户在什么时间执⾏过什么操作
cat /var/log/sudo.log
系统负载
系统负载是所有cpu的运⾏队列的总和
//假设当前计算机有4个核⼼的cpu,当前的负载是2.92
cpu1 cpu2 cpu3 cpu4
2.94/4(个cpu核⼼) = 73%的cpu资源被使⽤,剩下27%的cpu计算资源是空想的
管道
# 追加到文件中,与重定向的区别是会打印
ip addr|tee filename
磁盘分区
## 添加一块小于2TB的磁盘并分区,步骤如下:
1)给虚拟机添加一块新的硬盘。
2)使用fdisk进行分区。
  fdisk /dev/sdb
  partprobe /dev/sdb
3)使用mkfs进行格式化。
  mkfs.xfs /dev/sdb1
4)使用mount进行挂载。
mount /dev/sdb1 /mnt
## 大于2T磁盘分区,步骤如下:
1)安装gdisk工具
yum -y install gdisk
# a.vmware添加一块磁盘 /dev/sdc
# b.不重启生效
fdisk -l|grep sdb
echo "- - -" > /sys/class/scsi_host/host0/scan # host0不行就换host1或者host2
fdisk -l|grep sdc
Disk /dev/sdc: 1073 MB, 1073741824 bytes, 2097152 sectors
2)开始分区
gdisk /dev/sdc
3)格式化
mkfs -t ext4 /dev/sdc1
4)挂载
mount /dev/sdc1 /data
逻辑卷
多个物理卷pv组成卷组vg,逻辑卷lv是卷组vg中的划分的一部分空间、
- 
部署逻辑卷
1.创建物理卷, 添加物理磁盘 pvcreate /dev/sdb pvs # 检查pv创建情况 2.创建卷组, 添加物理卷加⼊到该卷组 vgcreate datavg /dev/sdb vgs # 检查卷组 3.在卷组中划分逻辑卷 lvcreate -L 100M -n lv1 datavg lvscan # 检查逻辑卷 4.格式化文件系统 mkfs.xfs /dev/datavg/lv1 5.挂载 mount /dev/datavg/lv1 /lv1/ - 
卷组池管理
# 加入新硬盘 pvcreate /dev/sdc # 扩展 vgextend datavg /dev/sdc # 移除某块硬盘 vgreduce datavg /dev/sdb # 迁移 pvmove /dev/sdb - 
扩容逻辑卷
# 逻辑卷的扩展, 取决于vg卷中剩余多少容量, 扩展容量不能超过卷组VG # 扩展lv逻辑卷 lvextend -L +800M /dev/datavg/lv1 lvextend -l +50%FREE /dev/datavg/lv1 # 按百分比 # 扩展fs⽂件系统 //xfs扩容 xfs_growfs /dev/datavg/lv1 //ext扩容 resize2fs /dev/datavg/lv1 - 
缩小逻辑卷
# 实质是删除逻辑卷中没有使用的空间,需要重新格式化并创建一个新的文件系统 # 取消挂载 umount /lv1 # 缩小 lvresize -L 500M /dev/datavg/lv1 # 格式化 mkfs.xfs -f /dev/datavg/lv1 # 重新挂载 mount /dev/datavg/lv1 /lv1/ - 
删除逻辑卷
# 取消挂载,lvremove删除 umount /lv1 lvremove /dev/datavg/lv1 
网络基础
- 
基础知识
ip地址:主机在互联网中的唯一标识 子网掩码:指明ip地址所在的子网 子网/网段:一个网络区域,这个区域内(同一个广播域)的主机都是同一个网段 网关:每个子网连接其他子网的出口称为网关(网络出口。作用:共享上网;ip映射) 路由:不同子网间转发数据的动作,称为路由(选择最佳路径) - 
osi七层模型
 
应用层---应用程序访问网络的接口
表示层---对信息加密、解密
会话层---为应用程序访问网络提供接口访问,对应主机进程
传输层---向通信主机进程之间的通信提供服务,主要的协议有TCP和UDP
网络层---逻辑地址寻址
数据链路层---逻辑连接、硬件寻址、差错控制等
物理层---连接、维护或断开物理连接
- 
三次握手、四次挥手
 
- 
第一次握手:客户发送请求(客户端进入syn_send同步发送状态),此时服务器知道客户能发;
 - 
第二次握手:服务器发送确认(服务器由listen进入syn_rcvd同步收到状态),此时客户知道服务器能发能收;
 - 
第三次握手:客户发送确认(客户发送ack,客户端进入established状态),此时服务器知道客户能收(服务收到客户发送的ack后,也进入established状态)。
 - 
第一次挥手:客户向服务器发送释放连接报文段
 - 
第二次挥手:服务器向客户发送确认段
 - 
第三次挥手:服务器向客户发送释放连接报文段
 - 
第四次挥手:客户确认,进入等待,服务器收到最后一次ack后,关闭
 
为什么需要等待2MSL?
1. 最后一个报文没有确认;
2. 确保发送方的ACK可以到达接收方;
3. 2MSL时间内没有收到,则接收方会重发;
4. 确保当前连接的所有报文都已经过期。
- 网络故障排查
 
日志管理
- 
常见的日志文件
/var/log/messages 绝⼤多数的系统⽇志都记录到才⽂件 /var/log/secure 所有跟安全和认证授权等⽇志都会记录到此⽂件 /var/log/maillog 邮件服务的⽇志 /var/log/cron crond计划任务的⽇志 /var/log/boot.log 系统启动的相关⽇志 - 
syslog日志审查
rsyslog.conf syslog⽇志类型 syslog⽇志的属性: emerg //内核崩溃 alert // crit // err //错误 warnning //警告 nice // info // debug // ⼿⼯发送⽇志logger logger -p authpriv.info -t "test" "Err" tail -n1 /var/log/secure - 
Journal日志审查
# systemd ⾃带的⽇志服务⼯具所有⽇志记录到 /run/log ⽂件中, 必须使⽤如下命令才可打开 # journalctl 查看所有的⽇志 # journalctl -n 5 查看最后5条⽇志 # journalctl -p err 查看err类型的⽇志 # journalctl -f 不断输出最后10条⽇志 # journalctl --since today 查看今天的⽇志 # journalctl --since "2014-02-10 20:30:00" --until "2014-02-13 12:00:00" # journalctl -o verbose 查看⽇志的详细信息 # journalctl _SYSTEMD_UNIT=sshd.service _PID=1182 - 
journal日志持久化
# 持久化保存 journal 的⽇志,默认只会保存⼀个⽉的⽇志 mkdir /var/log/journal chown root:systemd-journal /var/log/journal chmod 2755 /var/log/journal killall -USR1 systemd-journald 
chrony时间服务
timedatectl
# 调整时间,系统命令timedatectl
timedatectl set-timezone Asia/Shanghai
chrony
# 安装
yum install chrony -y
timedatectl set-ntp true
# 配置
 vim /etc/chrony.conf
# 启动服务
systemctl start chronyd && systemctl enable chronyd
# 验证
chronyc sources
ntpdate
yum install ntpdate -y
*/5 * * * * /usr/sbin/ntpdate -u 10.1.106.70 &>/dev/null
ssh远程管理
ssh远程连接不上的原因:端口,网络,防火墙
# 生成秘钥
ssh-keygen 
# 秘钥位置
/root/.ssh
# 拷贝的远程
ssh-copy-id -i ~/.ssh/id_rsa.pub 10.0.0.1
# 连接
ssh -p端口 user@10.0.0.1
# 配置文件
//1.更改SSH远程连接端⼝
Port 6666
//2.绑定本地内⽹地址
ListenAddress 192.168.9.12
//3.禁⽌Root管理员登录
PermitRootLogin no
//4.禁⽌密码登录
PasswordAuthentication no
//允许以root密钥⽅式登陆(禁⽌密码默认以root登陆)
//PermitRootLogin without-password
//5.禁⽌使⽤空密码(默认禁⽌)
PermitEmptyPasswords no
//6.关闭DNS解析,优化连接速度
UseDNS no
GSSAPIAuthentication no
NFS
- autofs自动挂载
 
当检测到⽤户试图访问⼀个尚未挂载的⽂件系统时,将⾃动挂载该⽂件系统。
文件写入/etc/auto.master.d目录下
autofs⾃动挂载服务, 有两种挂载⽅式:
直接:direct /- ⼦配置⽂件必须写本地绝对路径
间接: indirect /path ⼦配置⽂件写相对于/path的⼦⽬录
                    
                
                
            
        
浙公网安备 33010602011771号