一文搞定“Linux简单但实用的学习”两万字Linux通关笔记

一文搞定“Linux简单但实用的学习”两万字Linux通关笔记_第1张图片

文章目录

操作系统的感念

操作系统组成

Linux系统介绍

Linux发行版

系统镜像下载

VMware安装centos7

Linux基本配置

系统基础操作规范

系统基础网络配置

系统基础命令介绍

系统目录相关命令

系统文件相关命令

VIM编辑器

系统压缩相关命令

系统搜索相关命令

系统基本优化

系统时间同步优化

系统远程连接优化

系统内核优化

系统重要配置文件

系统运行级别

破解root密码

系统用户与组

系统文件权限

系统安装软件方式

linux磁盘分区

网络附加存储

iscsi

系统启动流程和服务管理

系统监控

程序与进程

日志系统


操作系统的感念

人与计算机交流的中介,管理和控制计算机中的硬件资源,处于上层应用程序和底层硬件之间的软件平台

操作系统组成

  1. 内核:直接控制管理硬件 内核直接识别计算机二进制语言

  2. 解释器:把c c++ java python 等语言解释称二进制,常见:bash

  3. 软件程序:不同程序,完成不同的需求

Linux系统介绍

  1. unix(肯。汤普逊,丹尼斯。里奇) 1970年

  2. FreeBSD--macOS、IOS NETBSD OPENBSD minix--荷兰,詹宁邦 1980

  3. Linux--芬兰 赫尔辛基大学 林纳斯。托瓦斯 1991

Linux发行版

Fedora redhat上游测试,带桌面图形 Redhat 提供商业服务,商业稳定版 centos 提供免费软件,下游免费稳定版 6.0 7.0 Ubuntu debian的一个不稳定分支的再开发,桌面,开发人员 debian 安全、稳定 solaris sun公司,后被oracle收购 中标麒麟 中国版Ubuntu

系统镜像下载

新版:centos安装包下载_开源镜像站-阿里云

旧版:centos-vault安装包下载_开源镜像站-阿里云 ubuntu-releases安装包下载_开源镜像站-阿里云

VMware安装centos

(1)新建虚拟机文件夹,以便存放centos的文件

(2)网卡: 桥接bridge 借用本地真实网卡连通外网,和真实网卡同一网段,可双向通信 伪装NAT 使用nat地址转换技术连通外网,仅实现虚拟机访问外网,单向通信 仅主机host 不能连通外网,仅用于虚拟机之间连接

(3)改网卡名 安装install,按tab键,输入 net.ifnames=0 biosdevname=0

(4)选择时区(Asia/Shanghai)

(5)软件--最小化--勾选开发工具(1、2、3、6)

(6)手动分区 /boot 200M 启动和引导分区 swap 3G 建议设置物理内存的1.5-2倍(物理内存<=8G) / 所有 系统根分区

(7)安装后重启,进入系统,配置yum源

清华源:

sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
          -e 's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \
          -i.bak \
          /etc/yum.repos.d/CentOS-*.repo

阿里源:

 mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

Linux基本配置

IP地址配置为192.168.8.5

 ifconfig ens33 192.168.8.5

网关配置

 route add default gw 192.168.8.2
 roote del default gw 192.168.8.2

DNS配置

echo “nameserver 8.8.8.8” > /etc/resolv.conf

清除iptables策略

 iptables -F
 iptables -X

关闭防火墙

 systemctl stop firewalld
 systemctl disable firewalld

关闭selinux

 sed -i 's/enforcing/disabled/' /etc/selinux/config
 setenforce 0

设置主机名

 hostnamectl set-hostname web
 bash

配置yum服务器

 cd /etc/yum.repos.d/
 rm -rf *
 wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
 wget -O /etc/yum.repos.d/epel.repo https://mirrors.aliyun.com/repo/epel-7.repo
 yum clean all
 yum makecache

网卡配置文件地址

/etc/sysconfig/network-scripts/ifcfg-ens33

配置完成后操作

  1. 快照:保存系统当前时间点状态,关机快照、开机快照

  2. 克隆:快速创建另外一台虚拟机,链接克隆、完整克隆

网卡名称修改

 cd /etc/sysconfig/network-scripts/
 mv ifcfg-ens33 ifcfg-eth0
 vim ifcfg-eth0

修改: NAME=eth0 DEVICE=eth0 保存退出

 vim /etc/sysconfig/grub

修改: GRUB_CMDLINE_LINUX="rhgb net.ifnames=0 biosdevname=0 quiet"

保存退出

系统基础操作规范

​​​​​​​
  1. [root@ali-hb2-web1 ~]# root:当前登录用户名 ali-hb2-web1: 主机名,尽量表达出位置和功能 ~ :表示当前所在目录名

    :表示当前用户权限是管理员($ 为普通用户)

  2. 命令 回车 例如:ifconfig 命令 (空格) 参数 例如:ip a 命令 (空格) 参数 对象 例如:ip a show eth0

系统基础网络配置

查看网络信息

ip a show ens33
 ifconfig ens33

系统远程连接

  1. 配置系统网络

  2. 确认sshd服务开启

  3. 安装远程管理软件(xshel、超级终端、securecrt、putty)

系统基础命令介绍

关机

 shotdown -h now
 shutdown -h 10

重启

 shutdown -r now

服务管理

 systemctl start vsftpd    #启动vsftpd服务
 systemctl stop vsftpd    #关闭vsftpd服务
 systemctl restart vsftpd    #重启vsftpd服务
 systemctl status vsftpd    #查看vsftpd服务的状态
 systemctl enable vsftpd    #设置vsftpd服务为开机自启动
 systemctl disable vsftpd    #关闭vsftpd服务的开机自启动

查看端口

netstat -anptl |grep vsftpd    #查看目前所有端口
#|同时命令
#grep 针对于

系统目录相关命令

查看文件权限相关

ls -l /etc    #查看/etc相关

创建文件夹

mkdir /data    #创建/data文件夹
 mkdir /{data,backup}    #创建/data和/backup

查看目录树

tree /data

删除目录

rm -r /data    #删除/data这个目录
rm -rf *        #删除当前所在目录下的所有文件,慎用!

查看绝对路径

 pwd    #查看当前所在路径

:ls 列出目录内数据信息 ls -l 长格式列出目录内数据,简写ll ls -d 查看目录本身 ll -t 查看最新编辑文件信息,按时间排序(r反向) ll -S 查看文件信息,按大小排序(r反向)

系统文件相关命令

创建空文件

 touch /data/file01    #在/data下创建file01

写入内容

 echo“hehe” > /data/file01    #此为覆盖所有内容添加
 echo"hehe">> /data/file01    #此为在原有内容基础上追加

多行内容写入

 cat >> /data/file01    #进入添加模式
>
>
>

清空文件

 > /data/file

查看文件内容

 cat /data/file01    #查看file01
 cat /data/file01 |grep -v "^#"    #grep -v 过滤
 cat /data/file01 |grep root        #grep 针对于

复制文件

cp -rp /etc/passwd /backup    #复制/etc/passwd到/backup一份

VIM编辑器

a #在光标所在位置后面插入 
i #在光标所在位置前面插入 
Esc #退回到命令模式 
u #恢复上一次操作 
x #删除单个字符 
dd #删除1行 
yy #复制  
p #粘贴 
/字符串 #搜索 
n #从上到下跳转 
N #从下到上跳转 
G #定位到文件最后一行 
ZZ #直接保存退出 
组合键: / 查询 
n 跳转 
x 删除 
i/a插入数据 
esc 退回到命令行 
ZZ :命令到末行模式 
:wq 保存修改,等同于:x 或 命令模式下ZZ 
:q! 不保存退出 
:w /tmp/file01 另存为 
:r /etc/passwd 把其他文件读入到当前 
:set nu 显示行号 
:set nonu 取消行号 
:s /hehe/haha 查找本行中第一个字符串替换 
:s /hehe/haha/g 查找本行中所有字符串并替换 
:% s/hehe/haha/g 查找全文所有字符串并替换 
:3,5 s/hehe/haha/g 查找第3到5行所有字符串并替换 
home键或“^”或数字“0” 跳转到行首 
End键或“$” 跳转到行尾 
G 跳转到末行 
1G或gg 跳转到首行

系统压缩相关命令

创建100M大小文件

dd if=/dev/zero of=/data/dwj.txt bs=100m count=10

压缩

 gzip /data/dwj.txt
 gunzip -d /data/dwj.txt
 bzip2 /data/dwj.txt
 bunzip2 /data/dwj.txt

解压

#tar后字符为要解药文件格式
tar zcf /backup/etc-boot.tar.gz /etc /boot
tat xf /backup/etc-boot.tar.gz -C /data
tar jcf /backup/etc-boot.tar.bz2 /etc /boot
tar xf /backup/etc-boot.tar.bz2

系统搜索相关命令

 find /etc/ -name network    #查找/etc/名字为network
 find /etc -iname networkmanager    #查找/etc/名字为network并不区分大小写
 find /etc/ -name *.conf    #查找以.conf为后缀的文件,*代表任何
#搜索期限内文件
find . -type f -atime -7    #搜索7天内文件
#搜索用户文件
find / -user lisi -type f    #搜索lisi的文件
#搜索组文件
find / -group cwd -type f    #搜索cwd组的文件
#搜索文件用户已经被删除的文件
find / -type f -nouser    #账户已被删除,但这个账户创建的文件还在
#通过大小搜索
find /-type f -size -3M    #小于3M +3M为大于3M

系统基本优化

下面的命令不用关心其真正的意义是什么,对系统设置后,可以方便以后的运行

关闭selinux

getnforce
setenforce 0
vim /etc/sysconfig/selinux   
SELINUX=disabled    #将SELINUX这一项后面改为disabled

主机名优化

hostname
hostnamectl
hostnamectl set-name web
bash    #更新

下载源优化

sudo sed -e 's|^mirrorlist=|#mirrorlist=|g' \
          -e
's|^#baseurl=http://mirror.centos.org|baseurl=https://mirrors.tuna.tsinghua.edu.cn|g' \
          -i.bak \
          /etc/yum.repos.d/CentOS-*.repo
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo

添加拓展源

yum -y install epel-release
或
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

刷新yum缓存

yum clean all
yum makecache

常用工具安装

yum -y install vim net-tools lrzsz wget telnet bash-completion

系统时间同步优化

时间配置查看

timedatectl

查看时区表

timedatectl list-timezones |grep Shanghai

设置上海时区

timedatectl set-timezone Asia/Shanghai    #linux中中国时区为上海

开启网络时间同步

timedatectl set-ntp 1

手动同步时间服务器

ntpdate ntp1.aliyun.com

手动调整时间

timedatectl set-time '2021-12-18 12:03:23'

查看、修改系统时间

date
date -s "2023-8-7 12:30:59"    #修改时间为2023-8-7 12:30:59

系统远程连接优化

/etc/ssh/sshd_config
79 GGSSAPIauthentication no
115 UseDNS no
sed -i "79s#yes#no$g" /etc/ssh/sshd_config
sed -i 's@#UseDNS yes@UseDNS no@g' /etc/ssh/sshd_config
systemctl reload sshd

系统内核优化

vim /etc/sysctl.d/99-sysctl.conf
添加:

#关闭ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1

# 避免放大攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1

# 开启恶意icmp错误消息保护
net.ipv4.icmp_ignore_bogus_error_responses = 1

# 关闭路由转发
net.ipv4.ip_forward = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0

#开启反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

#关闭sysrq功能
kernel.sysrq = 0

#core文件名中添加pid作为扩展名
kernel.core_uses_pid = 1
net.ipv4.tcp_syncookies = 1

#修改消息队列长度
kernel.msgmnb = 65536
kernel.msgmax = 65536

#设置最大内存共享段大小bytes
kernel.shmmax = 68719476736
kernel.shmall = 4294967296

#timewait的数量,默认180000
net.ipv4.tcp_max_tw_buckets = 6000
net.ipv4.tcp_sack = 1
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_rmem = 4096        87380   4194304
net.ipv4.tcp_wmem = 4096        16384   4194304
net.core.wmem_default = 8388608
net.core.rmem_default = 8388608
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.netdev_max_backlog = 262144


#限制仅仅是为了防止简单的DoS 攻击
net.ipv4.tcp_max_orphans = 3276800

#未收到客户端确认信息的连接请求的最大值
net.ipv4.tcp_max_syn_backlog = 262144
net.ipv4.tcp_timestamps = 0

#内核放弃建立连接之前发送SYNACK 包的数量
net.ipv4.tcp_synack_retries = 1

#内核放弃建立连接之前发送SYN 包的数量
net.ipv4.tcp_syn_retries = 1

#启用timewait 快速回收
net.ipv4.tcp_tw_recycle = 1

#开启重用。允许将TIME-WAIT sockets 重新用于新的TCP连接
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_mem = 94500000 915000000 927000000
net.ipv4.tcp_fin_timeout = 1

#当keepalive 起用的时候,TCP 发送keepalive 消息的频度。缺省是2 小时
net.ipv4.tcp_keepalive_time = 30

#允许系统打开的端口范围
net.ipv4.ip_local_port_range = 1024    65000

#修改防火墙表大小,默认65536
net.netfilter.nf_conntrack_max=655350
net.netfilter.nf_conntrack_tcp_timeout_established=1200

# 确保无人能修改路由表
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.default.secure_redirects = 0

保存退出

sysctl -p 	刷新生效

内核版本升级

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum --disablerepo=\* --enablerepo=elrepo-kernel repolist
yum --disablerepo=\* --enablerepo=elrepo-kernel list kernel*
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml.x86_64
#重启
yum remove kernel-tools-libs.x86_64 kernel-tools.x86_64 -y
yum --disablerepo=\* --enablerepo=elrepo-kernel install -y kernel-ml-tools.x86_64
#查看
rpm -qa | grep kernel
yum remove -y kernel-3.10.0-1127.el7.x86_64

系统重要配置文件

#网卡配置文件 
/etc/sysconfig/network-scripts/ifcfg-ens33 TYPE="Ethernet" 
#网卡类型:以太网 
BOOTPROTO="static" 
#ip获取方式:
dhcp 动态
static 静态 
#网卡名 
NAME="ens33" 
#设备名
DEVICE="ens33"
#是否开机启动
ONBOOT="yes"
#ip地址 
IPADDR=192.168.8.10
#子网掩码
NETMASK=255.255.255.0
#网关
GATEWAY=192.168.8.2 
#首选dns
DNS1=8.8.8.8 
备选dns
DNS2=114.114.114.114

2.域名解析配置文件

cat /etc/resolv.conf    #查看dns
nameserver 8.8.8.8    #dsn格式

查看网关

route -n   

3.自动挂载配置文件

扫描磁盘

#新添加磁盘时,使用此代码进行磁盘扫描
echo "- - -" >> /sys/class/scsi_host/host0/scan
echo "- - -" >> /sys/class/scsi_host/host1/scan
echo "- - -" >> /sys/class/scsi_host/host2/scan 

磁盘配置

fdisk -l    #查看目前已有磁盘
fdisk /dev/sdb    #编辑磁盘
n    #新建分区
w    #保存并退出
mount /dev/sdb1 /data    #挂载已经新建好的分区到文件夹
vim /etc/fstab    #磁盘挂载配置文件
/dev/sdb1   /data   xfs     defaults 0 0    #永久挂载格式

系统运行级别

0 关机

poweroff.target 1 单用户

rescue.target 2 字符多用户,不常用,

multi-user.target 3 字符多用户,有网络,常用

multi-user.target 4 字符多用户,不常用

multi-user.target 5 图形

graphical.target 6 重启

reboot.target

切换运行级别

init 5 #切换至运行级别5

查看默认级别

systemctl get-default    #查看当前所在运行级别

设置默认级别

systemctl set-default granhical/runlevel5    #设置开机默认级别

破解root密码

 #重启过程中按e
 #在linux16行末尾添加 rd.break 按Ctrl+x
mount -o remount,rw /sysroot
chroot /sysroot
echo "123" |password --stdin root
touch .autorelabel
exit
exit

系统用户与组

/etc/passwd 用户信息文件 
/etc/shadow 用户密码信息文件  
/etc/group 用户组配置文件

创建用户

useradd zhangsan
-u #指定用户的uid
-g #指定用户的基本组
-G #指定附属组,可以有多个, 但是这些附属组必须是系统内已经存在的
-c #指定描述
-d #指定家目录
-M #不建立家目录
-s #指定shell
-e #指定用户过期时间, 日期
-f #指定用户过期时间, 天数
#useradd -u 1010 zhangsan

针对已有用户修改属性

usermod 
选项等同于useradd
-L 锁定用户
-U 解除锁定
-l 改名

赋予密码

echo "123" |passwd --stdin zhangsan    #指定zhangsan用户密码为“123”

删除用户

userdel zhangsan     #删除zhangsan
userdel -r zhangsan    #删除关于zhangsan所有

组创建

groupadd cwd    #创建cwd组
groupadd -g 1001 cwd    #指定gid创建cwd

组删除

groupdel cwd    #删除cwd组

添加删除成员到组

gpasswd -a cw1 cwd    #添加
gpasswd -d cw1 cwd    #删除
gpasswd -M cw1,cw2 cwd    #同时添加多个用户

系统文件权限

r, w, x:可读、可写、可执行(r表示数字为4,w为2,x为1)

查看文件属性

ls -l test.txt    #查看此文件信息
-rw-r--r-- 1 root root 0 12月 23 10:33 test.txt    #权限 创建时间 创建用户等信息

第一栏代表这个文件的类型与权限 第一个字符代表这个文件是“目录、文件或链接文件等等”: [ d ]则是目录,例如上表文件名为“.config”的那一行; [ - ]则是文件,例如上表文件名为“initial-setup-ks.cfg”那一行; [ l ]则表示为链接文件(link file); [ b ]则表示为设备文件里面的可供储存的周边设备(可随机存取设备); [ c ]则表示为设备文件里面的序列埠设备,例如键盘、鼠标(一次性读取设备) 接下来的rwx权限字符,以三个为一组: 第一组为“文件拥有者可具备的权限”; 第二组为“加入此群组之帐号的权限”; 第三组为“非本人且没有加入本群组之其他帐号的权限 第二栏表示有多少文件名链接到此节点 第三栏表示这个文件(或目录)的“拥有者账号” 第四栏表示这个文件的所属群组 第五栏表示这个文件的容量大小,默认单位是Bytes(字节) 第六栏表示这个文件的创建日期或者是最近修改日期 第七栏为这个文件的文件名

权限更改(所属组、拥有者、权限设置)

chgrp    #更改文件所属组
chown    #更改文件拥有者
chmod    #设施文件权限
chmod +x test.txt    #给此文件添加执行权限

系统安装软件方式

  • rpm方式

    优点:无需网络安装软件

    缺点:无法解决软件依赖

    •  
      rpm  -ivh   #安装
      rpm  -Uvh   #升级安装,未装则安装
      rpm  -Fvh   #更新安装,未装则不装
      rpm  -e     #卸载(--nodeps忽略依赖,强制卸载)
      rpm  -q     #查看软件是否安装
      rpm  -ql    #查看软件所有的安装文件列表
      rpm  -qc    #查看软件的配置文件
      rpm  -qd    #查看软件的模板文件
      rpm  -qf    #查看命令文件由哪个软件所装

  • yum方式

优点:自动解决软件依赖

缺点:无法定制化安装

yum install #全部安装
yum install package1 #安装指定的安装包package1
yum groupinsall group1 #安装程序组group1
yum update #全部更新
yum update package1 #更新指定程序包package1
yum check-update #检查可更新的程序
yum upgrade package1 #升级指定程序包package1
yum groupupdate group1 #升级程序组group1
yum info package1 #显示安装包信息package1 
yum list #显示所有已经安装和可以安装的程序包
yum provides #文件名  查看文件属于哪一个包
yum list package1 #显示指定程序包安装情况package1
yum groupinfo group1 #显示程序组group1信息
yum search string #根据关键字string查找安装包
yum remove | erase package1 #删除程序包package1
yum groupremove group1 #删除程序组group1
yum deplist package1 #查看程序package1依赖情况
yum clean packages #清除缓存目录下的软件包
yum clean headers #清除缓存目录下的 headers
yum clean oldheaders #清除缓存目录下旧的 headers
yum clean, yum clean all (yum clean packages; yum clean oldheaders) #清除缓存目录下的软件包及旧的headers

仅下载

mkdir /http-rpm    #创建目录
yum -y install --downloadonly --downloaddir=/http-rpm httpd    #安装
cd /http-rpm    #进入
yum -y localinstall *.rpm    
  • 案例:安装mysql

首先挂载mysql包

tar xf mysql-5.7.20-linux-glibc2.12-x86_64.tar.gz -C /usr/local/
cd /usr/local/
mv mysql-5.7.20-linux-glibc2.12-x86_64  mysql
echo "export PATH=/usr/local/mysql/bin:$PATH" >> /etc/profile
source /etc/profile
rm -rf /var/run/yum.pid
yum remove -y mariadb-libs
useradd  mysql
mkdir -p /usr/local/mysql/data
chown -R mysql.mysql /usr/local/mysql/data
/usr/local/mysql/bin/mysqld --initialize-insecure --user=mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
#以下为配置文件编写,复制即可
cat >> /etc/my.cnf << end
[mysqld]
user=mysql
basedir=/usr/local/mysql
datadir=/usr/local/mysql/data
socket=/tmp/mysql.sock
server_id=6
port=3306
[mysql]
socket=/tmp/mysql.sock
prompt=mysql>
end
#分隔符
cat >> /etc/systemd/system/mysqld.service << end
[Unit]
Description=MySQL Server
Documentation=man:mysqld(8)
Documentation=http://dev.mysql.com/doc/refman/en/using-systemd.html
After=network.target
After=syslog.target
[Install]
WantedBy=multi-user.target
[Service]
User=mysql
Group=mysql
ExecStart=/usr/local/mysql/bin/mysqld --defaults-file=/etc/my.cnf
LimitNOFILE = 5000
end
systemctl restart mysql

linux磁盘分区

虚拟机扫描磁盘

echo "- - -" >> /sys/class/scsi_host/host0/scan
echo "- - -" >> /sys/class/scsi_host/host1/scan
echo "- - -" >> /sys/class/scsi_host/host2/scan 
fdisk -l    

磁盘分区

fdisk /dev/sdb    
#以下为进入分区程序后的分区方式
     p: 显示当前硬件的分区,包括没有保存的改动
     n: 创建一个新的分区
     d:删除一个分区
     w: 保存并退出
     q: 不保存退出
     t: 修改分区类型(文件系统类型)
     l: 显示所支持的所有类型
mkfs.xfs /dev/sdb1    #格式化磁盘为xfs格式

磁盘挂载

mount /dev/sdb1 /data

网络附加存储

  • NFS网络文件系统

  • 服务端配置

mkdir /data    
echo "/data *(rw,sync,no_root_squash)" > /etc/exports    #对目录进行权限设置
systemctl start rpcbind nfs
systemctl enable rpcbind nfs
#所有网段都可访问 192.168.8.0/24 8.0都可以访问
#rw:读写访问
#sync:所有数据在请求时写入共享
#no_root_squash:用户具有根目录的完全管理访问权限 
  • 客户端配置

yum install -y nginx
systemctl start nginx
showmount -e 192.168.8.6
mount -t nfs 192.168.8.6:/data /usr/share/nginx/html
echo "192.168.8.6:/data usr/share/nginx/htmo nfs defaults._netdev 0 0" >> /etc/fstab

iscsi

一个基于 TCP/IP 的协议,主要用于通过 IP 网络仿真 SCSI,从而为远程块存储设备提供数据传输和管理。 说白了,就是通过网络由专门的服务器提供存储管理,以实现数据的远程储存,便于数据的集中管理,从而 简化了数据复制、迁移和容灾。

服务端安装与配置

yum -y install targetd targetcli
systecmtl start tatget
systemctl enable target
systemctl status target
#当出现"ImportError: cannot import name ALUATargetPortGroup"
yum install python-rtslib -y    #进行此条命令
targetcli    #进入配置模式
/backstores/block create server0.disk1 /dev/sdb
/iscsi create iqn.2022-10.com.bdqn:disk1
/iscsi/iqn.2022-10.com.bdqn:disk1/tpg1/acls create iqn.2022-10.com.bdqn:client1
#此处配置的是客户端名
/iscsi/iqn.2022-10.com.bdqn:disk1/tpg1/luns create /backstores/block/server0.disk1
exit

客户端安装与配置

yum -y install iscsi-initiator-utils
echo "InitiatorName=iqn.2022-10.com.bdqn:client1" > /etc/iscsi/initiatorname.iscsi
systemctl start iscsi
systemctl enable iscsi
iscsiadm -m discovery -t st -p 192.168.8.10 -l   #链接
lsscsi
gdisk /dev/sdb
partprobe /dev/sdb   #识别新设备
cat /proc/partitions
mkdir /iscsi
mkfs.xfs /dev/sdb1
mount /dev/sdb1 /data
echo "/dev/sdb1 /data  xfs defaults,_netdev 0 0" >> /etc/fstab   #永久挂载

系统启动流程和服务管理

1、BIOS(Basic Input Output System 基本输入输出系统 )加电自检、硬件初始化、引导操作系统

2、读取并且执行第一个开机设备中的MBR(Master Boot Record 主引导记录 )的 bootloader(grub程序:Grand unified bootloader 大统一启动加载器 )

3、依据bootloader设置去加载内核,内核开始侦测硬件并加载驱动程序

boot loader主要功能如下: 提供选单:用户可以选择不同的开机项目 载入核心文件:直接指向可开机的程序区域来开始操作系统 转交其他loader:将开机管理功能转交给其他Loader负责

内核在Linux中的存放位置为/boot分区下,主要有2个文件要被加载: vmlinuz-3.10.0-514.el7.x86_64 内核文件 initramfs-3.10.0-514.el7.x86_64.img 虚拟文件系统

可以使用:lsinitrd 命令查看虚拟文件系统。 [root@localhost boot]# lsinitrd initramfs-3.10.0-957.el7.x86_64.img

如果是sysvinit启动程序(linux6版本) 4、内核启动init进程 5、系统初始化 6、init找到/etc/inittab文件,决定系统的运行级别(X) 7、触发相应的运行级别的事件,运行/etc/rcX.d下的脚本 8、执行/etc/rc.local文件,来到登录界面 9、输入用户名密码,进入到系统中

如果是systemd启动程序(Linux7版本) GRUB2相较于GRUB一代的提升:更健壮、可移植、更强大。支持 BIOS、uEFI和OpenFirmware,支持GPT和MBR分区表。支持非Linux 系统,如苹果HFS文件系统和Windows的NTFS文件系统 systemd 是 linux 系统中最新的初始化系统(init),它主要的设计目标 是克服 sysvinit 固有的缺点,提高系统的启动速度。systemd 和 ubuntu 的 upstart 是竞争对手,但是时至今日 ubuntu 也采用了

4、在硬件驱动加载成功后,内核会主动呼叫systemd程序,并以 default.target流程开机 5、systemd执行sysinit.target初始化系统及basic.target准备操作系统 6、systemd启动multi-user.target下的本机与服务器服务 7、systemd执行multi-user.target下的/etc/rc.d/rc.local文件 8、systemd执行multi-user.target下的getty.target及登录服务 9、systemd执行graphical需要的服务


Init和Systemd的区别

init

1、启动时间长,init是串行启动,只有前一个进程启动完,才会启动下一个进程

2、启动脚本复杂,Init进程只是执行启动脚本,不管其他事情,脚本需要自己处 理各种情况,这往往使得脚本变得很长

3、由Linux内核加载运行,位于 /sbin/init ,是系统中第一个进程,PID永远为1

对于支持 service 的程序,安装的时候,会自动的在 /etc/init.d 目录添加一 个配置文件。当我们使用 service 控制程序时,比如执行开启httpd的服 务:service httpd start 。那么我们的 service 就会开启 /etc/init.d/httpd 配置文件里面指向的 /usr/sbin/httpd 可执行文件

systemd

1、按需启动服务,减少系统资源消耗。

2、尽可能并行启动进程,减少系统启动等待时间

3、由Linx内核加载运行,位于 /usr/lib/systemd/system,是系统中第一个进程, PID永远为1

对于支持 systemd 的程序,安装的时候,会自动的在 /usr/lib/systemd/system 目录添加一个配置文件。当我们使用 systemctl 控制该程序时,比如执行开启httpd服务:systemctl start httpd.service 。 那么我们的 systemctl 就会开启 httpd.service 配置里面指向的 /usr/sbin/httpd 可执行文件

如果我们想让该程序开机启动,我们可以执行命令 systemctl enable httpd,这个命令相当于在 /etc/systemd/system 目录添加一个软链接,指 向 /usr/lib/systemd/system 目录下的 httpd.service 文件。这是因为开机 时,Systemd只执行 /etc/systemd/system 目录里面的配置文件。

永久设置开机模式:

systemctl set-default multi-user.target/runlevel3    #开机默认为文本模式
systemctl set-default graphical.target/runlevel5    #开机默认为图形模式

二、Systemd服务管理

Systemd 是 Linux 系统中最新的初始化系统(init),它主要的设计目标是 克服 sysvinit 固有的缺点,提高系统的启动速度。systemd和ubuntu的 upstart是竞争对手,从15.04版本开始,Ubuntu也已经采systemd作为其 标准的系统初始化系统.

系统初始化需要做的事情非常多。需要启动后台服务,比如启动 SSHD 服务; 需要做配置工作,比如挂载文件系统。这个过程中的每一步都被systemd 抽象 为一个配置单元,即 unit。可以认为一个服务是一个配置单元;一个挂载点 是一个配置单元;一个交换分区的配置是一个配置单元;

Service unit:系统服务,最常见的类型 Target unit:多个 Unit 构成的一个组,执行环境类型 Device Unit:硬件设备 Mount Unit:文件系统的挂载点 Automount Unit:自动挂载点 Path Unit:侦测特定文件或目录类型的 Scope Unit:不是由 Systemd 启动的外部进程 Slice Unit:进程组 Snapshot Unit:Systemd 快照,可以切回某个快照 Socket Unit:进程间通信的 socket服务 Swap Unit:swap 文件 Timer Unit:循环执行的服务

Rhel6 用 service 和 chkconfig 来管理服务,它是 SystemV 架构下的一个工具。

Rhel7 是用 systemctl 来管理服务,它融合了之前的 service 和 chkconfig 的功能于一体。 可以使用它永久性或只在当前会话中启用/禁用服务。systemctl 是 systemd 架构下的一个工具。

动作 Rhel6 旧指令 Rhel7新指令 启动某服务

#centos6
service  network  start    
#centos7
systemctl  start   network

停止某服务

#centos6
service  netowrk   stop                     
#centos7
systemctl  stop  network

重启某服务

#centos6
service  netowrk   restart                  
#centos7
systemctl  restart  network

检查服务状态

#centos6
service  netowrk  status                    
#centos7
systemctl  status  network

删除某服务

chkconfig  --del  httpd

使服务开机自启动

#centos6
chkconfig  --level   5  httpd   on      
#centos7
systemctl   enable  httpd

使服务开机不自启动

#centos6
chkconfig  --level   5  httpd   off     
#centos7
systemctl   disable  httpd

显示所有已启动的服务

#centos6
chkconfig  --list                       
#centos7
systemctl list-unit-files | grep enabled

加入自定义服务

#centos6
chkconfig  --add  test      
#centos7
systemctl   load  test

查询服务是否开机自启

#centos6
chkconfig --list | grep httpd           
#centos7
systemctl  is-enabled   httpd

查看启动失败的服务

systemctl  --failed

systemd的一些常用命令: 列出所有可用单元 :

systemctl  list-unit-files

列出所有运行的单元:

systemctl list-unit-files | grep enabled

列出所有可用服务:

systemctl list-unit-files  --type=service

列出所有运行的服务:

systemctl list-unit-files  --type=service | grep enabled

屏蔽httpd服务:

systemctl  mask httpd

取消屏蔽

httpd: systemctl unmask httpd

RHEL7的服务systemctl脚本存放在:/usr/lib/systemd/目录,有系统 (system)和用户(user)之分,像需要开机不登陆就能运行的程序,存 在系统服务里,即:/usr/lib/systemd/system目录下。每一个服务 以.service结尾,一般会分为3部分:[Unit]、[Service]和[Install],每个部 分内部是一些等号连接的键值对,注意,键值对的等号两侧不能有空格。

vim /usr/lib/systemd/system/sshd.service 
[Unit] 
Description=OpenSSH server daemon 
Documentation=man:sshd(8) man:sshd_config(5) 
After=network.target sshd-keygen.service 
Wants=sshd-keygen.service 
​
[Service]
Type=notify 
EnvironmentFile=/etc/sysconfig/sshd 
ExecStart=/usr/sbin/sshd -D $OPTIONS 
ExecReload=/bin/kill -HUP $MAINPID 
KillMode=process 
Restart=on-failure 
RestartSec=42s 
 ​
[Install] 
WantedBy=multi-user.target

[Unit] [Unit]区块通常是配置文件的第一个区块,用来定义 Unit 的元数据,以及 配置与其他 Unit 的关系。它的主要字段如下。 Description:简短描述 Documentation:文档地址 Requires:当前 Unit 依赖的其他 Unit,如果它们没有运行,当前 Unit 会启动失败 Wants:与当前 Unit 配合的其他 Unit,如果它们没有运行,当前 Unit 不会启动失败 BindsTo:与Requires类似,它指定的 Unit 如果退出,会导致当前 Unit 停止运行 Before:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之后 启动 After:如果该字段指定的 Unit 也要启动,那么必须在当前 Unit 之前 启动 Conflicts:这里指定的 Unit 不能与当前 Unit 同时运行 Condition...:当前 Unit 运行必须满足的条件,否则不会运行 Assert...:当前 Unit 运行必须满足的条件,否则会报启动失败

[Service]

[Service]部分是服务的关键,是服务的一些具体运行参数的设置,只有 Service 类型的 Unit 才有这个区块。它的主要字段如下。 Type:定义启动时的进程行为。它有以下几种值。 Type=simple:默认值,执行ExecStart指定的命令,启动主进程 Type=forking:以 fork 方式从父进程创建子进程,创建后父进程 会立即退出 Type=oneshot:一次性进程,Systemd 会等当前服务退出,再继 续往下执行 Type=dbus:当前服务通过D-Bus启动 Type=notify:当前服务启动完毕,会通知Systemd,再继续往下 执行 Type=idle:若有其他任务执行完毕,当前服务才会运行 ExecStart:启动当前服务的命令 ExecStartPre:启动当前服务之前执行的命令 ExecStartPost:启动当前服务之后执行的命令 ExecReload:重启当前服务时执行的命令 ExecStop:停止当前服务时执行的命令 ExecStopPost:停止当前服务之后执行的命令 RestartSec:自动重启当前服务间隔的秒数 Restart:定义何种情况 Systemd 会自动重启当前服务,可能的值包括 always(总是重启)、on-success、on-failure、on-abnormal、on abort、on-watchdog TimeoutSec:定义 Systemd 停止当前服务之前等待的秒数 Environment:指定环境变量

[install] [Install]通常是配置文件的最后一个区块,用来定义如何启动,以及是否开 机启动。它的主要字段如下。 WantedBy:它的值是一个或多个 Target,当前 Unit 激活时 (enable)符号链接会放入/etc/systemd/system目录下面以 Target 名 + .wants后缀构成的子目录中 RequiredBy:它的值是一个或多个 Target,当前 Unit 激活时,符号 链接会放入/etc/systemd/system目录下面以 Target 名 + .required后 缀构成的子目录中 Alias:当前 Unit 可用于启动的别名 Also:当前 Unit 激活(enable)时,会被同时激活的其他 Unit 注意: 如果服务没有Install段落,一般意味着应该通过其它服务自动调用它们

Target 简单说,Target 就是一个 Unit 组,包含许多相关的 Unit 。启动某个 Target 的时候,Systemd 就会启动里面所有的 Unit。从这个意义上说, Target 这个概念类似于"状态点",启动某个 Target 就好比启动到某种状 态。 传统的init启动模式里面,有 RunLevel 的概念,跟 Target 的作用很类似。 不同的是,RunLevel 是互斥的,不可能多个RunLevel同时启动,但是多个 Target可以同时启动。

//查看当前系统的所有 Target

systemctl list-unit-files --type=target

// 查看一个 Target 包含的所有 Unit

systemctl list-dependencies multi-user.target

//查看启动时的默认 Target

systemctl get-default

//设置启动时的默认 Target

systemctl set-default multi-user.target

//切换 Target 时,默认不关闭前一个 Target 启动的进程,

systemctl isolate

命令改变这种行为, //关闭前一个 Target 里面所有不属于后一个 Target 的进程

systemctl isolate multi-user.target

系统计划调度任务

1.一次性任务-at

yum -y install at
systemctl start atd
systemctl enable atd
at 23:30    #在23:30执行以下命令
tar zcf /backup/etc-boot_$(date +%F).tar.gz  /etc  /boot 
ctrl+d
atq #列出所有at任务  
atrm #删除at任务  
at -c 2 #显示第二条at任务内容

2.batch: batch直接调用at运行计划任务; batch不同于at的地方仅在于其所生成的任务计划是在系统空闲时执行的, 故batch命令后不能指定时间。

batch
tar zcf /backup/etc-boot_$(date +%F).tar.gz  /etc  /boot 
ctrl+d 

3.crond 周期性计划任务

yum -y install crontabs #crontans下载安装

crontab -e -u 用户名 0-59 0-23 1-31 1-12 0-7 命令 分 时 日 月 周

          • 每分钟 2,5,7,9 3 * * * 每天的3点31分

//通常表示时间技巧: :表示任何时刻都接受的意思,所有时间段位上不能同时为 数字:表示具体某一小时某一分钟等,如 8 8 8 8 * 表示每年的8月 8日8时8分 ,:表示分隔时段,表示一段时间范围,如 8 9,13 * * * 表示每天 9:08和13:08 */: 在对应的时间位的有效取值上每#一次,如 */8 * * * * 表示每 8分钟一次 -:某个时间位上的连续区间,如 10-50/8 * * * * 表示第10分和 第50分之间每8分钟一次

案例: mysql数据库: 每周日晚上23:30做一次完整备份; 周一到周六晚上23:30做增量备份(扩展,自己查) 1.安装mysql5.7(参照笔记二进制安装) 2.改密码

mysql_secure_installation
mysqladmin -u root -p password    #更改root的密码,默认空密码第一个直接回车

3.复制world.sql到/root,登录数据库

mysql -uroot -p123.com     #-p后跟的是我设置的密码
source /root/world.sql 

授权 所有权限 库名.表名 用户 主机名 密码

grant all on test.* to  lisi@'%' identified by '123456'; 
#数据库内,命令翻译为添加能够设置test中所有表的用户lisi,‘%’为可远端登录
#密码为‘123456’

%表示任何人都能访问

        插入     删除     更新     查询     创建 删除  
all = insert + delete + update + select   create drop 

4.查看库,切换库,查看表  

show databases; #查看数据库名
create database world; #创建数据库
use world; #进入数据库
show tables; #查看表名称
desc #表名称 查看表结构
create table stu(id int,name varchar(20);    #创建数据表
insert into stu values(1,'zhangsan'); #向表中插入数据
select * from stu; #查看表的内容
source #/备份文件路径/文件名

5.创建备份脚本

mkdir /sh 
vim  /sh/backup.sh
    #!/bin/bash
    /usr/local/mysql/bin/mysqldump -uroot -p123.com --all-databases > /backup/mysql_$(date                 +%F).sql

6.创建计划任务

crontab -e
30 23 * * 0 /bin/bash /sh/backup.sh 
crontab -l  #查看计划任务
crontab -r  #删除计划任务

你可能感兴趣的:(Linux,linux,运维)