Linux
文章平均质量分 52
枫★曦
Stay simple,stay positive...
展开
-
Linux之Docker实现Redis一主双从
下载Redis镜像docker pull redis下载中下载完成查看镜像状态docker images配置Redis Mastermkdir redis# 在redis官网https://redis.io/topics/config/下载redis.conf# 拷贝redis.confcp redis.conf redis-master.cnf# 修改master配置vi redis-master.conf修改点如下# bin...原创 2020-07-20 15:31:24 · 206 阅读 · 0 评论 -
Linux之Redis6.0.3编译安装
编译步骤创建redis文件夹mkdir -p redis cd redis下载Redis,本例中下载redis-6.0.3.tar.gzwget http://download.redis.io/releases/redis-6.0.3.tar.gz下载中下载完成解压tar -zxvf redis-6.0.3.tar.gz解压中。。。解压完成编译cd redis-6.0.3 make编译中编译...原创 2020-06-28 15:06:31 · 481 阅读 · 0 评论 -
Linux之CentOS7安装和卸载GNONE桌面
安装GNONE桌面# 查看当前的运行级别和可以安装的groupsystemctl get-defaultyum grouplist见下图# 查看安装的包有哪些内容yum group info "Graphical Administration Tools" # 安装GNOME桌面yum -y groups install "GNOME DESKTOP" "Graphical Administration Tools"安装过程中如果出现下述错误Requires:原创 2020-05-18 22:33:51 · 4896 阅读 · 0 评论 -
Linux之CentOS7安装MySQL-5.7.29
卸载之前的版本# 卸载之前的版本rpm -qa|grep mysqlyum remove mysql-libs# 注意:# 有的系统可能不太一样,没有mysql-libs,而是mariadb-libs,此时要移除的则是mariadb-libsrpm -qa|grep mariadbyum remove mariadb-libs下载安装包# 下载安装包wget htt...原创 2020-04-28 13:29:53 · 908 阅读 · 0 评论 -
Linux之MySQL数据库主从复制及错误Slave_IO_Running: Connecting,Last_IO_Errno:2003解决方案
MySQL数据库主从复制(基于Docker)的操作步骤如下:基本环境虚拟机VMWare WorkStation 15 Pro CentOS 7 MySQL-5.7 Latest Docker创建文件夹mkdir -p /home/wing/mysql/master/datamkdir -p /home/wing/mysql/master/confmkdir -p /hom...原创 2020-03-31 15:00:28 · 2716 阅读 · 1 评论 -
Linux之VMware Workstation Pro 15安装Ubuntu 18.04 Server LTS设置
我这里使用VMware Workstation Pro 15安装Ubuntu 18.04 Server LTS. 步骤如下,- 打开VMWare软件,选择“文件->新建虚拟机”,或者直接点击“创建虚拟机”,然后选择“自定义(高级)”- 点击“下一步”- 然后在“下一步”,选择“安装程序光盘映像文件(iso)(M):”,接着选择Ubuntu Server镜像所在路径下的文件...原创 2020-02-29 09:20:58 · 723 阅读 · 0 评论 -
Linux 网络栈剖析
协议简介虽然对于网络的正式介绍一般都参考了 OSI(Open Systems Interconnection)模型,但是本文对 Linux 中基本网络栈的介绍分为四层的 Internet 模型(如图 1 所示)。图 1. 网络栈的 Internet 模型 这个栈的最底部是链路层。链路层是指提供对物理层访问的设备驱动程序,这可以是各种介质,例如串口链路或以太网设备。链转载 2012-02-08 10:55:19 · 401 阅读 · 0 评论 -
Linux 中的零拷贝技术,第 1 部分
引言传统的 Linux 操作系统的标准 I/O 接口是基于数据拷贝操作的,即 I/O 操作会导致数据在操作系统内核地址空间的缓冲区和应用程序地址空间定义的缓冲区之间进行传输。这样做最大的好处是可以减少磁盘 I/O 的操作,因为如果所请求的数据已经存放在操作系统的高速缓冲存储器中,那么就不需要再进行实际的物理磁盘 I/O 操作。但是数据传输过程中的数据拷贝操作却导致了极大的 CPU 开销,限转载 2012-03-15 15:05:50 · 540 阅读 · 0 评论 -
Linux 中的零拷贝技术,第 2 部分
Linux 中的直接 I/O如果应用程序可以直接访问网络接口存储,那么在应用程序访问数据之前存储总线就不需要被遍历,数据传输所引起的开销将会是最小的。应用程序或者运行在用户模式下的库函数可以直接访问硬件设备的存储,操作系统内核除了进行必要的虚拟存储配置工作之外,不参与数据传输过程中的其它任何事情。直接 I/O 使得数据可以直接在应用程序和外围设备之间进行传输,完全不需要操作系统内核页缓存的转载 2012-03-15 15:07:03 · 626 阅读 · 0 评论 -
浅谈 Linux 内核开发之网络设备驱动
网络设备介绍网络设备是计算机体系结构中必不可少的一部分,处理器如果想与外界通信,通常都会选择网络设备作为通信接口。众所周知,在 OSI(Open Systems Interconnection,开放网际互连)中,网络被划分为七个层次,从下到上分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。我们所讲的网络设备也包括两个层次,一层叫做 MAC(Media Access Con转载 2012-03-15 15:09:00 · 634 阅读 · 0 评论 -
Linux 动态库剖析
库用于将相似函数打包在一个单元中。然后这些单元就可为其他开发人员所共享,并因此有了模块化编程这种说法 — 即,从模块中构建程序。Linux 支持两种类型的库,每一种库都有各自的优缺点。静态库包含在编译时静态绑定到一个程序的函数。动态库则不同,它是在加载应用程序时被加载的,而且它与应用程序是在运行时绑定的。图 1 展示了 Linux 中的库的层次结构。图 1. Linux 中的库层次结构转载 2012-04-20 14:10:49 · 482 阅读 · 0 评论 -
在 Linux 平台中调试 C/C++ 内存泄漏方法
由于 C 和 C++ 程序中完全由程序员自主申请和释放内存,稍不注意,就会在系统中导入内存错误。同时,内存错误往往非常严重,一般会带来诸如系统崩溃,内存耗尽这样严重的后果。从历史上看,来自计算机应急响应小组和供应商的许多最严重的安全公告都是由简单的内存错误造成的。自从 70 年代末期以来,C/C++ 程序员就一直讨论此类错误,但其影响在 2007 年仍然很大。与许多其他类型的常见错误不同,内存错误转载 2012-06-07 13:17:30 · 567 阅读 · 0 评论 -
技巧:Linux 动态库与静态库制作及使用详解
两个要知道的基本知识Linux 应用程序因为 Linux 版本的众多与各自独立性,在工程制作与使用中必须熟练掌握如下两点才能有效地工作和理想地运行。Linux 下标准库链接的三种方式(全静态 , 半静态 (libgcc,libstdc++), 全动态)及其各自利弊。Linux 下如何巧妙构建 achrive(*.a),并且如何设置链接选项来解决 gcc 比较特别的链转载 2012-02-08 10:46:13 · 744 阅读 · 0 评论 -
内存详解
Java 堆(每个 Java 对象在其中分配)是您在编写 Java 应用程序时使用最频繁的内存区域。JVM 设计用于将我们与主机的特性隔离,所以将内存当作堆来考虑再正常不过了。您一定遇到过 Java 堆 OutOfMemoryError ,它可能是由于对象泄漏造成的,也可能是因为堆的大小不足以存储所有数据,您也可能了解这些场景的一些调试技巧。但是随着您的 Java 应用程序处理越来越多的数据和越来转载 2012-02-08 11:01:34 · 1222 阅读 · 0 评论 -
学习 Linux,101: 引导程序
概述在本文中,学习如何为一个 Linux 系统设计一个磁盘分区布局。您将学习:为独立的分区或磁盘分配文件系统和交换空间;根据系统的预定用途调整设计;确保系统能够启动。本文讨论 PC 引导过程和 Linux 中使用的两个主要的启动加载程序 — LILO 和 GRUB — 帮助您准备 Linux Professional Institute's Junior Lev转载 2012-01-11 16:49:11 · 1787 阅读 · 0 评论 -
学习 Linux, 101: 运行级别、关机和重新启动
概述在本文中,学习关闭或重启您的 Linux 系统,警告用户系统正在关闭,请切换到单用户模式或者一个多少有点限制性的运行级别。学习:设置默认运行级别运行级别间的变化改为单用户模式从命令行关闭或重启系统警告用户主要系统事件,包括切换到另一个运行级别适当地终止进程除非特殊说明,本文中的示例使用带有 2.6.26 内核的 Fedora 8。upstar 示转载 2012-01-11 16:45:23 · 901 阅读 · 0 评论 -
学习 Linux,101: 硬盘布局
概述在这篇文章中学习为 Linux 系统设计磁盘分区布局。您将学到:为各分区或磁盘分配文件系统和交换空间为系统的目标用途定制设计确保系统能够引导本文将帮助您准备 Linux Professional Institute's Junior Level Administration (LPIC-1) 考试 101 中主题 102 下的目标 102.1。该目标的权值为转载 2012-01-11 16:43:37 · 604 阅读 · 0 评论 -
学习 Linux,101: 引导系统
概述本文将帮助您理解从 BIOS 到引导结束整个过程的引导顺序,并演示方法:向启动加载程序提供常用命令在引导时向内核提供选项检查日志文件中的引导事件引导进程的某些特征是大多数系统所共有的,但有些硬件相关特征则是某个特殊架构所特有的。本文中的资料专门针对使用 BIOS 引导系统的 x86 和 x86_64 架构。对于规模大于 2TB 的驱动器,一种使用Extens转载 2012-01-11 16:42:15 · 1742 阅读 · 0 评论 -
使用 ftrace 调试 Linux 内核,第 3 部分
内核头文件 include/linux/kernel.h 中描述了 ftrace 提供的工具函数的原型,这些函数包括 trace_printk、tracing_on/tracing_off 等。本文通过示例模块程序向读者展示如何在代码中使用这些工具函数。使用 trace_printk 打印跟踪信息ftrace 提供了一个用于向 ftrace 跟踪缓冲区输出跟踪信息的工具函数,叫做转载 2011-12-08 19:42:26 · 804 阅读 · 0 评论 -
Linux SCSI 子系统剖析
GNU/Linux 和 SCSI 是很好的一个组合,因为二者在各自的环境中具有类似的特征。GNU/Linux 是一种安全可靠的操作系统,可以不间断地运行。SCSI 适合于可靠和高性能存储。二者都是开源的。您可以下载和查阅 International Committee on Information Technology Standards (INCITS) T10 Technical Commit转载 2011-12-07 19:28:41 · 676 阅读 · 0 评论 -
Python 代码调试技巧
使用 pdb 进行调试pdb 是 python 自带的一个包,为 python 程序提供了一种交互的源代码调试功能,主要特性包括设置断点、单步调试、进入函数调试、查看当前代码、查看栈片段、动态改变变量的值等。pdb 提供了一些常用的调试命令,详情见表 1。表 1. pdb 常用命令命令解释break 或 b 设置断点设置断点转载 2012-05-18 13:36:46 · 823 阅读 · 0 评论 -
Linux 下定时器的实现方式分析
概论定时器属于基本的基础组件,不管是用户空间的程序开发,还是内核空间的程序开发,很多时候都需要有定时器作为基础组件的支持,但使用场景的不同,对定时器的实现考虑也不尽相同,本文讨论了在 Linux 环境下,应用层和内核层的定时器的各种实现方法,并分析了各种实现方法的利弊以及适宜的使用环境。首先,给出一个基本模型,定时器的实现,需要具备以下几个行为,这也是在后面评判各种定时器实现的一个转载 2012-05-18 14:22:21 · 920 阅读 · 0 评论 -
Yacc 与 Lex 快速入门
Lex 代表 Lexical Analyzar。Yacc 代表 Yet Another Compiler Compiler。 让我们从 Lex 开始吧。LexLex 是一种生成扫描器的工具。扫描器是一种识别文本中的词汇模式的程序。 这些词汇模式(或者常规表达式)在一种特殊的句子结构中定义,这个我们一会儿就要讨论。一种匹配的常规表达式可能会包含相关的动作。这一动作可能还包括返转载 2012-07-04 18:50:27 · 650 阅读 · 0 评论 -
如何移除或禁用 Ubuntu Dock
如果你想用其它 dock(例如 Plank dock)或面板来替换 Ubuntu 18.04 中的 Dock,或者你想要移除或禁用 Ubuntu Dock,本文会告诉你如何做。Ubuntu Dock - 屏幕左侧栏,可用于固定应用程序或访问已安装的应用程序。使用默认的 Ubuntu 会话时,无法使用 Gnome Tweaks 禁用它(禁用无效)。但是如果你需要,还是有几种方法来摆脱它的。下面我...转载 2018-10-29 22:03:39 · 3830 阅读 · 1 评论 -
CMake入门指南
CMake是一个比make更高级的编译配置工具,它可以根据不同平台、不同的编译器,生成相应的Makefile或者vcproj项目。通过编写CMakeLists.txt,可以控制生成的Makefile,从而控制编译过程。CMake自动生成的Makefile不仅可以通过make命令构建项目生成目标文件,还支持安装(make install)、测试安装的程序是否能正确执行(make test,或者cte...转载 2018-04-28 21:04:33 · 384 阅读 · 0 评论 -
如何在Ubuntu上开启SSH服务
1. 更新源列表打开"终端窗口",输入"sudo apt-get update"-->回车-->"输入当前登录用户的管理员密码"-->回车,就可以了。2. 安装openssh-server在终端中输入: sudo apt-get install openssh-server3. 查看查看ssh服务是否启动打开"终端窗口原创 2016-09-20 16:38:08 · 202283 阅读 · 7 评论 -
Hyper-V Ubuntu修改分辨率
打开文件/etc/default/grub找到GRUB_CMDLINE_LINUX_DEFAULT所在行,在最后加上video=hyperv_fb:[分辨率]修改完毕后在Terminal环境里运行sudo update-grub重启机器后,便可以看到Ubuntu运行在新的分辨率下了。重启完之后的效果。注意:这种方法最高原创 2016-08-19 17:27:24 · 33265 阅读 · 3 评论 -
Linux下开发C#程序
1. 安装MonoDevelop环境。 OS:Ububtu16.04 打开Software,选择Development Tools。然后选择MonoDevelop,选择Install。当然我这里已经安装好了。2.创建,编译和运行C#控制台程序。1)打开MonoDevelop。2)选择New,选择。Net和Console Project。原创 2016-05-18 13:45:01 · 19532 阅读 · 1 评论 -
Ubuntu init启动流程分析
现行的Linux distros主流的有两种init方式:一种是广为流传的System V initialization,它来源于Unix并且至今仍被各种Linux distros所采用;另一种是近几年提出的Upstart方式,基于事件机制,系统的所有服务,任务都是由事件驱动的。据我所知,采用后一种方式的目前有Ubuntu(6.10 and later),Fedora(9.10 and later转载 2016-04-20 20:25:35 · 518 阅读 · 0 评论 -
C 和 C++ 的矩阵库
本文假设读者对 C/C++ 有一定的了解并非常关注 C/C++ 本身没有矩阵功能。您可能在分析计量经济学的数据或模拟雨林。对于我来说,我正从事神经网络的研究而一两个矩阵可以大大简化神经网络的实现。虽然 C/C++ 包括可被看作矩阵(例如数组和标准库中的向量、列表和图)的容器,但是,真正 是矩阵的容器将使手中的任务变得很容易。所以我们将介绍三个开放源代码库供您选择,它们不要求您从头开始构建矩阵,但的转载 2016-02-18 19:58:32 · 2926 阅读 · 0 评论 -
使用 C++11 编写 Linux 多线程程序
前言在这个多核时代,如何充分利用每个 CPU 内核是一个绕不开的话题,从需要为成千上万的用户同时提供服务的服务端应用程序,到需要同时打开十几个页面,每个页面都有几十上百个链接的 web 浏览器应用程序,从保持着几 t 甚或几 p 的数据的数据库系统,到手机上的一个有良好用户响应能力的 app,为了充分利用每个 CPU 内核,都会想到是否可以使用多线程技术。这里所说的“充分利用”包含了两个层转载 2015-12-23 20:22:12 · 1596 阅读 · 0 评论 -
使用 C++11 编写 Linux 多线程程序
前言在这个多核时代,如何充分利用每个 CPU 内核是一个绕不开的话题,从需要为成千上万的用户同时提供服务的服务端应用程序,到需要同时打开十几个页面,每个页面都有几十上百个链接的 web 浏览器应用程序,从保持着几 t 甚或几 p 的数据的数据库系统,到手机上的一个有良好用户响应能力的 app,为了充分利用每个 CPU 内核,都会想到是否可以使用多线程技术。这里所说的“充分利用”包含了两个层转载 2016-01-15 17:21:06 · 474 阅读 · 0 评论 -
Linux 下的两种分层存储方案
背景介绍随着固态存储技术 (SSD),SAS 技术的不断进步和普及,存储介质的种类更加多样,采用不同存储介质和接口的存储设备的性能出现了很大差异。SSD 相较于传统的机械硬盘,由于没有磁盘的机械转动,寻址速度大大提高,尤其在随机读写较多的应用环境下,性能会大大提升,但这些高性能存储设备的单位存储价格相对于传统的磁带和 SATA 硬盘也高出很多,如图 1 所示。图 1 不同存储设备的转载 2015-10-22 20:43:39 · 2279 阅读 · 0 评论 -
详谈 UNIX 环境进程异常退出
进程异常退出进程退出意味着进程生命期的结束,系统资源被回收,进程从操作系统环境中销毁。进程异常退出是进程在运行过程中被意外终止,从而导致进程本来应该继续执行的任务无法完成。进程异常退出可能给软件用户造成如下负面影响:软件丧失部分或者全部功能性,无法完成既定任务。 如果进程正在处理数据,可能造成数据损坏。 如果是关键软件服务,必然导致服务异常中止 , 造成无法预计的损失。 进程异常退转载 2013-06-28 19:38:35 · 651 阅读 · 0 评论 -
浅析 Linux 的国际化与本地化机制
什么是国际化和本地化不同的国家和地区因文化的差异,在日期、时间以及货币符号等表示方式上都不完全相同,最为明显的就是语言。有时在编写软件给用户使用时,开发者、维护者以及最终用户可能分别来自不同的区域,而要求他们均使用同一种语言显然是不明知的,因此当一个程序或者软件编写给全世界人使用时,通常分为两个部分:国际化 (internationalization,即缩写为 i18n,这是由于在这个单词转载 2012-09-13 17:27:41 · 1024 阅读 · 0 评论 -
RPC 编程
简介任何 RPC 客户机-服务器程序的重要实体都包括 IDL 文件(接口定义文件)、客户机 stub、服务器 stub 以及由客户机和服务器程序共用的头文件。客户机和服务器 stub 使用 RPC 运行时库通信。RPC 运行时库提供一套标准的运行时例程来支持 RPC 应用程序。了解运行时例程的内部情况有助于进一步了解 RPC 编程。在一般的应用程序中,被调用的过程在相同的地址空间中转载 2012-09-13 17:26:02 · 551 阅读 · 0 评论 -
剖析 ext4
Linux 内核的每次发行都伴随一些惊喜,今年 12 月份发行的 2.6.28 也不例外。这个发行版是首个稳定的 ext4 文件系统(它还包含其他出色的特性,比如正在开发的 Btrfs)。这个下一代扩展文件系统提供更好的伸缩性、可靠性和许多新功能。ext4 的伸缩性如此之大,以致最大的文件系统所用的磁盘空间将达到 100 万 TB。扩展文件系统的简史虚拟文件系统交换转载 2012-08-20 15:37:44 · 1062 阅读 · 0 评论 -
Linux 与存储生态环境
Linux 意味着许多事情,它的力量在于它能够灵活地支持截然不同的使用模式。但是 Linux 最重要的优势之一是作为存储领域的主力。关于 Linux 和存储通常让人想到直接附加存储或最新的文件系统,但是关于存储和 Linux 还有比所看到的多得多的东西。Linux 中的元素不仅稳定而且高端。本文探讨了使 Linux 处于存储领域中心的各种存储技术。让我们从底部开始 — 即存储架构 —,然后转载 2012-08-20 15:34:06 · 1191 阅读 · 0 评论 -
使用 ftrace 调试 Linux 内核,第 2 部分
ftrace 操作概述使用 ftrace 提供的跟踪器来调试或者分析内核时需要如下操作:切换到目录 /sys/kernel/debug/tracing/ 下查看 available_tracers 文件,获取当前内核支持的跟踪器列表关闭 ftrace 跟踪,即将 0 写入文件 tracing_enabled激活 ftrace_enabled ,否则 function转载 2011-12-08 19:41:32 · 583 阅读 · 0 评论 -
使用 ftrace 调试 Linux 内核,第 1 部分
ftrace 是内建于 Linux 内核的跟踪工具,从 2.6.27 开始加入主流内核。使用 ftrace 可以调试或者分析内核中发生的事情。ftrace 提供了不同的跟踪器,以用于不同的场合,比如跟踪内核函数调用、对上下文切换进行跟踪、查看中断被关闭的时长、跟踪内核态中的延迟以及性能问题等。系统开发人员可以使用 ftrace 对内核进行跟踪调试,以找到内核中出现的问题的根源,方便对其进行修复。另转载 2011-12-08 19:40:26 · 690 阅读 · 0 评论