学习linux 心得体会 (飞天计划)

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 学习linux,遇见的一些问题和心得。主要是安装mysql 数据库的问题。

大家好!我来自 一名19级的在读网络工程专业的学生 。Linux是一种广泛使用的类UNIX操作系统,它不仅可以在Intel,AMD等系列个人计算机上运行,也可以运行在许多工作站上。它是真正多用户、多任务操作系统,他继承了UNIX系统的主要特征,具有强大的信息处理功能,特别在Internet和Intranet应用中占有明显优势。 1991年,芬兰赫尔辛基大学的学生Linux Torvalds在Inter386个人计算机上开发了Linux核心,并利用互联网发布了源代码,从而创建了Linux操作系统。之后,许多系统软件设计专家共同对它进行改进和提高。

1.与UNIX系统兼容。2.自由软件和源码公开。3.性能高和安全性强。4.便于定制和再开发。 5.互操作性高。6.全面的多任务和真正的32位操作系统,当今的Linux有两种版本:核心版本和发行版本。其中核心版本主要是Linux的内核。随着Linux技术的更加成熟、完善,其应用领域和市场份额继续快速增大。目前,其主要应用领域是服务器系统和嵌入式系统。然而,它的足迹已遍布各个行业,几乎无处不在

                   介绍一下linux ,mysql的安装步骤记录

       一、安装包和环境准备

1.所需的安装包的

mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz安装包上传至服务器

2.解压和创建用户

执行命令 tar -xzvf mysql-8.0.29-linux-glibc2.12-x86_64.tar.xz,重命名文件夹为mysql

创建用户组以及用户和密码

创建目录 mkdir data

执行命令 groupadd mysqluseradd -g mysql mysql 创建用户组信息

授权用户 chown -R mysql.mysql /usr/local/mysql

二、安装步骤

1.初始化信息

执行命令 cd /usr/local/mysql/bin 到解压bin目录下

执行初始化命令 ./mysqld --user=mysql --basedir=/usr/local/mysql-8.0 --datadir=/usr/local/mysql-8.0/data/ --initialize

这里需要注意在 mysql 8.0 以后,如果要设置不区分大小写,需要在初始化时指定--lower-case-table-names=1,如果在初始化之后修改my.cnf配置文件会出现报错。

执行命令初始化 ./mysqld --user=mysql --lower-case-table-names=1 --basedir=/usr/local/mysql-8.0 --datadir=/usr/local/mysql-8.0/data/ --initialize

成功之后,获得到数据库临时密码

2.编辑文件,添加服务

修改my.cnf配置文件

执行命令 vi /etc/my.cnf

注释mysqld_safe,修改信息如下

basedir=/usr/local/mysql/mysql-8.0.20/ (mysql的安装目录)

datadir=/usr/local/mysql/mysql-8.0.20/data/ (data的目录)

socket=/tmp/mysql.sock

添加服务及授权

添加mysqld服务到系统 cp -a ./support-files/mysql.server /etc/init.d/mysql(这里要切换到安装目录下执行)


执行授权命令chmod +x /etc/init.d/mysqlchkconfig --add mysql

3.启动mysql服务

相关命令

启动mysql服务 service mysql start

查看启动状态 service mysql status

启动成功后,用临时密码登录mysql mysql mysql -uroot -p


修改root密码

执行命令 ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'root';

执行 flush privileges; 使密码生效

修改远程连接

update user set host=‘%’ where user=‘root’;

flush privileges;

exit;


4.开放防火墙端口

firewall-cmd --add-port=3306/tcp --permanent

firewall-cmd --reload


至此mysql就安装完毕


注意的是在阿里云要配置安全规则开放相关端口 !!!!。

                 我学习Linux的收获  

     通过这学期的学习,我慢慢的学习到了更深入的知识内存寻址,进程,内存管理,中断与异常,系统调用,内核中的同步,以及文件系统等,下来浅谈几个自己掌握的比较好的方面: 

 1、内存寻址:  

    内存寻址是指CPU允许支持的内存大小。双通道内存技术其实是一种内存控制和管理技术,它依赖于芯片组的内存控制器发生作用,在理论上能够使两条同等规格内存所提供的带宽增长一倍。当计算机面临大量的数据流时,32位的寄存器和指令集不能及时进行相应的处理运算。32位处理器一次只能处理32位,也就是4个字节的数据;而64位处理器一次就能处理64位,即8个字节的数据。举例来说,32位好像是单车道,当车流过大的时候,就会无法承载,而64位好比高速公路,在多任务,多程序处理的情况下,64位计算平台能随意加速、把电脑性能发挥到极致。  

2、Linux进程调度:  

     内核线程只运行在内核态,不受用户态上下文的拖累,唯一使用的资源是内核栈和上下文切换时保持寄存器的空间,调度时的开销可能和进程自身差不多昂贵,资源的同步和数据共享比整个进程的数据同步和共享要低一些  a.调度过程:由在用户空间实现的线程库,在所属进程内进行调度 Linux使用的线程库 LinuxThreads是用户空间的线程库,所采用的是线程-进程1对1模型(即一个用户线程对应一个轻量级进程,而一个轻量级进程对应一个特定的内核线程),将线程的调度等同于进程的调度,调度交由内核完成,而线程的创建、同步、销毁由核外线程库完成(LinuxThtreads 已绑定到GLIBC中发行)。 在LinuxThreads中,由专门的一个管理线程处理所有的线程管理工作。当进程第一次调用pthread_create()创建线程时就会先创建(clone())并启动管理线程。后续进程 pthread_create()创建线程时,都是管理线程作为pthread_create()的调用者的子线程,通过调用clone()来创建用户线程,并记录轻量级进程号和线程id的映射关系,因此,用户线程其实是管理线程的子线程。LinuxThreads只支持调度范围为PTHREAD_SCOPE_SYSTEM的调度,默认的调度策略是SCHED_OTHER。用户线程调度策略也可修改成SCHED_FIFO或SCHED_RR方式,这两种方式支持优先级为0-99,而SCHED_OTHER只支持0。  b.linux内核的三种调度方法: 1.SCHED_OTHER 分时调度策略2.SCHED_FIFO实时调度策略,先到先服务 3.SCHED_RR实时调度策略,时间片轮转  ①当所有任务都采用linux分时调度策略时步骤: 

 1)创建任务指定采用分时调度策略,并指定优先级nice值(-20~19)  

2)将根据每个任务的nice值确定在cpu上的执行时间(counter)。  

3)如果没有等待资源,则将该任务加入到就绪队列中 

 4)调度程序遍历就绪队列中的任务,通过对每个任务动态优先级的计算(counter+20-nice)结果,选择计算结果最大的一个去运行,当这个时间片用完后(counter减至0)或者主动放弃cpu时,该任务将被放在就绪队列末尾(时间片用完)或等待队列(因等待资源而放弃cpu)中。 

 5)此时调度程序重复上面计算过程,转到第4步。 

 6)当调度程序发现所有就绪任务计算所得的权值都为不大于0时,重复第2步。  ②当所有任务都采用FIFO时的步骤:  

1)创建进程时指定采用FIFO,并设置实时优先级rt_priority(1-99)。 

 2)如果没有等待资源,则将该任务加入到就绪队列中。 

 3)调度程序遍历就绪队列,根据实时优先级计算调度权值(1000+rt_priority),选择权值最高的任务使用cpu,该FIFO任务将一直占有cpu直到有优先级更高的任务就绪(即使优先级相同也不行)或者主动放弃(等待资源)  4)调度程序发现有优先级更高的任务到达(高优先级任务可能被中断或定时器任务唤醒,再或被当前运行的任务唤醒,等等),则调度程序立即在当前任务堆栈中保存当前cpu寄存器的所有数据,重新从高优先级任务的堆栈中加载寄存器数据到cpu,此时高优先级的任务开始运行。重复第3步。  5)如果当前任务因等待资源而主动放弃cpu使用权,则该任务将从就绪队列中删除,加入等待队列,此时重复第3步。  ③所有任务都采用RR调度策略时的步骤:  1)创建任务时指定调度参数为RR,并设置任务的实时优先级和nice值(nice值将会转换为该任务的时间片的长度)  2)如果没有等待资源,则将该任务加入到就绪队列中  3)调度程序遍历就绪队列,根据实时优先级计算调度权值(1000+rt_priority),选择权值最高的任务使用cpu  4)如果就绪队列中的RR任务时间片为0,则会根据nice值设置该任务的时间片,同时将该任务放入就绪队列的末尾。重复步骤3.  5)当前任务由于等待资源而主动退出cpu,则其加入等待队列中。重复步骤3  

3、Linux内存管理:  在Linux中经常发现空闲内存很少,似乎所有的内存都被系统占用了,表面感觉是内存不够用了,其实不然。这是Linux内存管理的一个优秀特性,在这方面,区别于Windows的内存管理。主要特点是,无论物理内存有多大,Linux 都将其充份利用,将一些程序调用过的硬盘数据读入内存,利用内存读写的高速特性来提高Linux系统的数据访问性能。Linux的这一特性,主要是利用空闲的物理内存,划分出一部份空间,做为cache、buffers ,以此提高数据访问性能。页高速缓存(cache)是Linux内核实现的一种主要磁盘缓存。它主要用来减少对磁盘的I/O操作。具体地讲,是通过把磁盘中的数据缓存到物理内存中,把对磁盘的访问变为对物理 内存的访问。  A.内存管理机制:  我们知道,直接从物理内存读写数据要比从硬盘读写数据要快的多,因此,我们希望所有数据的读取和写入都在内存完成,而内存是有限的,这样就引出了物理内存与虚拟内存的概念。物理内存就是系统硬件提供的内存大小,是真正的内存,相对于物理内存,在Linux下还有一个虚拟内存的概念,虚拟内存就是为了满足物理内存的不足而提出的策略,它是利用磁盘空间虚拟出的一块逻辑内存,用作虚拟内存的磁盘空间被称为交换空间。  作为物理内存的扩展,Linux会在物理内存不足时,使用交换分区的虚拟内存,更详细的说,就是内核会将暂时不用的内存块信息写到交换空间,这样以来,物理内存得到了释放,这块内存就可以用于其它目的,当需要用到原始的内容时,这些信息会被重新从交换空间读入物理内存。  Linux的内存管理采取的是分页存取机制,为了保证物理内存能得到充分的利用,内核会在适当的时候将物理内存中不经常使用的数据块自动交换到虚拟内存中,而将经常使用的信息保留到物理内存。  Linux系统最大的有点就是它的开源性,这点是十分难得的,也是它能够存在到现在一个重要原因。随着IT从业人员的增多,理论上会有更多的人使用Linux操作系统。所以可以肯定,Linux在今后很长一段时间内不会消失。Linux操作简单,占内存少,特别是对程序开发人员来说Linux很简单。目前全球资源供应紧张,建立资源节约型社会已成为人类社会的共识,所以Linux在资源节约型社会的构建过程中将发挥更大的作用。Linux的前途无限光明。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
Ubuntu 安全 Unix
【Linux学习】零基础学习Linux
【Linux学习】零基础学习Linux
|
1月前
|
监控 网络协议 Java
Linux 网络编程从入门到进阶 学习指南
在上一篇文章中,我们探讨了 Linux 系统编程的诸多基础构件,包括文件操作、进程管理和线程同步等,接下来,我们将视野扩展到网络世界。在这个新篇章里,我们要让应用跳出单机限制,学会在网络上跨机器交流信息。
Linux 网络编程从入门到进阶 学习指南
|
1月前
|
Ubuntu Unix 大数据
为什么要学习 Linux ????
为什么要学习 Linux ????
30 0
|
1月前
|
Linux 编译器 开发工具
Linux学习第二枪(yum,vim,g++/gcc,makefile的使用)
Linux学习第二枪(yum,vim,g++/gcc,makefile的使用)
|
4天前
|
Unix Linux Windows
Linux的学习之路:3、基础指令(2)
Linux的学习之路:3、基础指令(2)
28 0
|
4天前
|
消息中间件 Unix Linux
Linux的学习之路:17、进程间通信(1)
Linux的学习之路:17、进程间通信(1)
18 1
|
4天前
|
存储 安全 Linux
Linux的学习之路:9、冯诺依曼与进程(1)
Linux的学习之路:9、冯诺依曼与进程(1)
18 0
|
19天前
|
Linux 应用服务中间件 网络安全
小白学习Linux的学习建议和阶段
【4月更文挑战第5天】小白学习Linux的学习建议和阶段
48 0
|
1月前
|
存储 消息中间件 网络协议
Linux 系统编程从入门到进阶 学习指南
本文旨在为初学者提供一个清晰的 Linux 系统编程入门指南,带你步入 Linux 系统编程的世界,从基本概念到实用技能,一步步建立起您的知识体系。
Linux 系统编程从入门到进阶 学习指南
|
1月前
|
存储 Linux 程序员
linux学习之虚拟地址
linux学习之虚拟地址