Linux操作系统
文章平均质量分 86
常见问题、指令集、插件配置的解释和扩展。
giturtle
Stay hungry, stay foolish. Lu
展开
-
Docker学习笔记总结
Docker一、Docker介绍1.1 引言环境不一致问题,多用户操作系统下会互相影响,运维成本过高问题,关于安装软件成本过高等。1.2 Docker的思想集装箱:会将所有需要的内容放到不同的集装箱中,谁需要这些环境就直接拿这个集装箱就可以。标准化:运输的标准化:Docker有一个中央码头,所有上传的集装箱都放在这个中央码头。当需要某一环境,就直接指派“大海豚”去搬运这个集装箱。命令的标准化:Docker提供了一系列的命令,帮助我们去获取\上传集装箱等操作。提供了RES原创 2021-08-23 23:48:16 · 986 阅读 · 3 评论 -
Shell脚本获取变量类型
function check(){ local a="$1" printf "%d" "$a" &>/dev/null && echo "integer" && return printf "%d" "$(echo $a|sed 's/^[+-]\?0\+//')" &>/dev/null && echo "integer" && return printf "%f" "$a" &am转载 2021-06-15 16:30:35 · 1981 阅读 · 0 评论 -
SecureCRT报错:keyboard-interactive authentication with the ssh2 server failed
现象描述平时在使用secureCRT平台SSH远程登陆会话时经常会弹窗如图问题,每次选择Skip跳过再进行操作比较麻烦,思考成因并希望取消此弹窗。问题成因图中译文为:与SSH2服务器的键盘交互身份验证失败。在当前设置下,作为会话登陆的身份验证方式,键盘交互的优先级高于已保存密码登陆的方式。所以点击OK后会让用户重新配置:解决方法选择 Menu bar 中的 Session Options 选项,进行会话设置。选择Password,上箭头亮起。点击上箭头,将此会话中验证方式Passwo原创 2020-11-19 15:08:21 · 16398 阅读 · 2 评论 -
网络之HTTP协议
http协议URLHTTP是典型的应用层协议,是目前最流行的通信协议,没有之一。其衍生出了封装SSL协议的“安全版”:HTTPS协议,相对于传统的HTTP协议更为安全,但也是“相对的安全”。只要保证通信传输一端发送时构造的数据, 在另一端能够正确的进行解析, 就是可以的,这种约定就是 应用层协议。这其中也涉及序列化与反序列化。虽然应用层协议是程序猿自定制的的。但实际上, 已经有大佬们定义了...原创 2019-07-11 10:19:50 · 1040 阅读 · 0 评论 -
从进程、线程过渡:理解协程
进程、线程、协程进程线程协程协程与线程的比较进程进程是一个程序在一个数据集中的一次动态执行过程,可以理解为“正在执行的程序”。进程一般由程序集、数据集、进程控制块三部分组成。进程是系统进行资源分配和调度的基本单位,是操作系统的基础。进程是线程的容器,进程是程序的实体。程序集:描述进程要完成哪些功能以及如何完成数据集:程序在执行过程所需要使用的资源进程控制块:保存程序运行的状态进程的...转载 2019-12-03 20:04:03 · 264 阅读 · 0 评论 -
C++封装一个Epoll类,实现epoll简单使用
#include <iostream>#include <vector>#include <sys/epoll.h>#include "tcpsocket.hpp"class Epoll { private: int _epfd; public: bool Init() { //创...原创 2019-06-19 12:20:26 · 3307 阅读 · 4 评论 -
C++模拟实现Select模型(IO多路转接模型之一)
#include <vector>#include <iostream>#include <sys/select.h>#include "tcpsocket.hpp"class Select{ public: Select():_max_fd(-1){ //void FD_ZERO(fd_set *set...原创 2019-06-12 23:33:58 · 379 阅读 · 0 评论 -
[Linux] 进程间如何进行通信?
进程间通信:基础介绍:是操作系统提供的进程间的几种通信方式:1. 管道[★] 命名管道 匿名管道System V标准的进程间通信方式 (另:POSIX标准)2. 共享内存[★]3. 消息队列(选学) 实践使用较少4. 信号量(选学)每个进程都是独立的个体,需要给他们提供一个通信的方式。因此想要通信,必须能够共同访问一个相同的媒介。进程间通信的目的: 1. 数据传输 2..................原创 2019-05-05 19:37:28 · 552 阅读 · 1 评论 -
[Linux] 操作系统五种IO模型
IO模型五种IO模型:阻塞IO非阻塞IO信号驱动IO异步IO多路转接(复用)IOIO操作分了两个过程:等待 + 数据拷贝。阻塞IO:发起IO调用,若不具备IO条件,则等待IO条件具备。具备则数据拷贝完毕后返回。一直等待资源浪费。非阻塞IO:发起IO调用,若不具备条件则立即报错返回。通常是循环发起调用,若具备IO条件,则拷贝数据完毕后返回。不够实时。信号驱动IO:先定义I...原创 2019-06-07 21:30:42 · 2385 阅读 · 0 评论 -
[Socket编程] 封装TCP实现一个socket类,实现客户端与服务端间的tcp通信
目录头文件(tcpsocket.hpp)客户端(tcp_client.cpp)服务器(tcp_server.cpp)头文件(tcpsocket.hpp)#include <string>#include <stdio.h>#include <unistd.h>#include <stdlib.h>#include <errno.h...原创 2019-06-01 00:06:34 · 1308 阅读 · 2 评论 -
[Socket编程] 封装UDP实现一个socket类,实现客户端与服务端间的udp通信
目录头文件(udpsocket.hpp)客户端(udp_client.cpp)服务器(udp_server.cpp)头文件(udpsocket.hpp)#include <iostream>#include <string>#include <stdio.h>#include <stdlib.h>#include <unistd....原创 2019-05-17 23:32:21 · 920 阅读 · 0 评论 -
[Linux] C++实现一个线程池
/*=============================================================== * 自主实现线程池 ================================================================*/#include <iostream>#include <queue>#incl...原创 2019-05-10 23:04:50 · 167 阅读 · 0 评论 -
[Linux] 信号量实现队列操作的同步与互斥(C++版)
/*===============================================================* Author: giturtle* 描 述:实现线程安全的环形队列 (线性表实现的环形队列)* 使用信号量实现队列操作的同步与互斥=========================================================...原创 2019-05-10 12:11:09 · 566 阅读 · 0 评论 -
[Linux] 食客吃面模型(条件变量实现同步)
/**************************************************************************> Author: giturtle*> Describe: 实现条件变量的基本使用 吃面的前提是:有人做面 如果没有现成的面,等待老板做出来 老板做出来面,就要唤醒顾客 老板不会做太多的面...原创 2019-05-10 01:13:42 · 173 阅读 · 0 评论 -
[Linux] 黄牛抢票系统(互斥锁实现互斥)
version 1.0/**************************************************************************> version 1.0*> File Name: lock.c*> Author: giturtle*> Describe: 实现互斥锁的基本使用以及线程安全的基本认识 黄牛抢票--...原创 2019-05-09 22:39:33 · 1016 阅读 · 1 评论 -
[Linux] 生产者与消费者模型的C++实现
Q:如何保证生产者与消费者的线程安全?A:生产者与生产者之间应该具有互斥关系。消费之与消费者之间应该具有互斥关系。生产者与消费者之间应该具有同步 + 互斥关系。生产者与消费者模型:一个场所,两种角色,三种关系。(场所:线程安全的队列)BlockQueue:std::queue<>、capacity、mutex、cond_product、cond_consumer...原创 2019-05-10 01:17:37 · 824 阅读 · 0 评论 -
浅谈-fPIC与-fpic
-fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置,都可以正确的执行。这正是共享库所要求的,共享库被加载时,在内存的位置不是固定的。gcc -shared -fPIC -o 1.so 1.c这里有一个-fPIC参数:PIC就是positi...转载 2019-04-22 08:02:23 · 3700 阅读 · 2 评论 -
[Linux] 多线程(下)同步与互斥、死锁、信号量
线程安全同步与互斥互斥锁、条件变量、生产者与消费者模型、POSIX标准信号量、读写锁(读写者模型)线程池设计模式线程安全的单例模式原创 2019-05-09 19:48:17 · 528 阅读 · 0 评论 -
[Linux] 多线程(上)线程引入、线程控制接口
多线程线程概念线程控制线程安全同步与互斥线程池设计模式线程概念大条件:Linux中:因为Linux环境下线程以进程的PCB模拟实现线程,所以Linux中PCB是线程。因此Linux线程也叫轻量级进程。进程就是线程组。以前所描述的进程其实是单线程进程。因为Linux线程是PCB,因此线程是CPU调度的基本单位。因为进程是线程组,程序运行起来,资源是分配给整个线程组的,因此进程是资源.........原创 2019-04-21 17:09:34 · 526 阅读 · 0 评论 -
[Linux] 信号
信号信号生命周期信号的产生信号在进程中的注册信号在进程中的注销信号的处理信号认识:软件中断,通知事件的发生。信号有不同的种类,每个信号对应了不同事件。信号的生命周期:从产生,到处理。Linux下信号的种类:1~31号继承于Unix系统,每个信号都有各自对应的事件。非可靠信号 / 非实时信号。非可靠:信号有可能会丢失~34~64后续添加的信号,没有特定事件。可靠信号 / 实时信号.........原创 2019-04-20 10:49:13 · 189 阅读 · 0 评论 -
[Linux] 文件系统、inode、软硬链接与静动态库
文件系统Linux的ext2进行讲解每个分区都有文件系统,同一个磁盘不同分区可以拥有不同文件系统。分块式存储 默认4096字节。交换分区文件系统分区存储文件流程:通过inode_bitmap在inode table中找到空闲的inode节点通过data_bitmap在数据块区域找到空闲的数据块将数据块位置信息,记录到inode节点中将文件数据写入数据块中将文件名和inode...............原创 2019-04-20 10:44:03 · 278 阅读 · 0 评论 -
[Linux] 基础IO控制 -- 文件操作接口
基础IO:回顾标准库io接口: fopen、fclose、fwrite、fread、fseek stdin、stdout、stderr 文件流函数,类型:FILE* fopen: 【写】覆盖式写入 r 只读 r+ 可读可写,每次都在文件首部开始,覆盖式读写 w 只写,文件不存在则创建,存在则清空内容 truncate:截断file to zero length截断点为0............原创 2019-04-10 01:28:07 · 1271 阅读 · 0 评论 -
[Linux] 自己实现一个minishell
/* * minishell的实现*/#include <fcntl.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <ctype.h>#include <wait.h>#include <string.h>...原创 2019-04-08 22:05:25 · 260 阅读 · 0 评论 -
[Linux] 进程控制
进程控制进程终止(进程退出)进程等待程序替换前面博客中讲解了进程控制中的一小部分:进程创建。下面开始其他部分内容总结:进程终止(进程退出) [man 2]:系统调用手册 [man 3]:库函数手册main函数中 return 或者 exit 才是终止进程 exit:库函数 _exit:系统调用函数所以实际是exit调用了_exit系统函数●在main函数中r...原创 2019-04-08 22:07:36 · 562 阅读 · 0 评论 -
[Linux] 初识进程(下)
进程状态一般系统进程状态:就绪,阻塞,运行。Linux下主要有:R运行态:相当于就绪+运行,并不意味着进程一定在运行中,它表明进程要么在运行中要么在运行队列中。S睡眠状态(可中断睡眠态):意为着这个进程在等待事件完成。D磁盘休眠状态(不可中断睡眠态)这个状态的进程会等待I/O的结束。T停止状态:可以通过发送SIGSTOP信号给进程来停止进程,这个被暂停的进程可以通过发送SIGVO......原创 2019-04-07 00:21:21 · 313 阅读 · 2 评论 -
[Linux] 初识进程(上)
进程旧识铺垫进程概念进程查看进程创建旧识铺垫我们之前学过冯 · 诺依曼奠定了现代计算机的硬件体系,目前现代计算机的五大硬件单元:运算器控制器存储器:内存等输入设备:键盘等输出设备:显示器等所以这就引出了我们的一句概念:硬件结构决定软件行为。主频:时钟振荡周期 一秒钟可以处理多少个指令 2.6GHz 值越大系统吞吐量越大操作系统:(软件)目的:让计算机更好用功能...原创 2019-04-05 15:03:51 · 167 阅读 · 0 评论 -
[Linux]进度条代码
#include &lt;unistd.h&gt; #include &lt;string.h&gt; #include &lt;stdio.h&gt; int main(){ int i...转载 2019-01-06 23:30:31 · 227 阅读 · 0 评论 -
[Linux] 什么是 段错误(吐核)?
吐核:突出了一个“核心转储文件”(core dump文件)也是使用gdb调试器最常用到的场景查看核心转储文件ll -a查看全部文件 +默认隐藏文件其实操作系统有限制,默认不允许随意吐核,影响机器性能ulimit -a查看与程序相关的属性core file size就是刚才吐核的核心转储文件,为0表示不允许吐核,更改一下文件大小为无限制ulimit -c unlimited再执行./h...原创 2018-12-29 00:56:41 · 59270 阅读 · 17 评论 -
[Linux] ssh登陆慢 解决方案
ssh不知道大家有没有这种现象?每次在Xshell模拟终端下输入ssh + IP地址连接登录到虚拟机时,如图中的登陆窗口会经过很久才会弹出针对这个登陆弹窗过慢情况,本篇博客将详细讲解一下配置操作.切换至CentOS系统终端界面上 或者 在已连接到虚拟机的Xshell界面中,准备输入指令.(这里以Xshell作为演示)输入su,进入 root 用户输入指令,打开此路...原创 2018-12-26 12:34:09 · 334 阅读 · 0 评论 -
[Linux] 系统编程原理详解(深入gcc、gdb、Makefile)
Linux编程整体步骤1. 创建文件2. 键入代码3. 编译4. 执行gccgdbMakefile通过前几篇博客的学习,相信大家已经对Linux系统有了一个初步的认知和了解,那么本篇博客就对所学内容进行有机整合,进入Linux系统编程的阶段.前面讲过在Linux环境下进行编程需要以下 4 个工具:代码编辑器 vim编译器 gcc调试器 gdb工程管理工具 makefilev...原创 2018-12-28 00:50:10 · 835 阅读 · 0 评论 -
[Linux] Vim教程 / 基础操作指令
VimVim是从 vi 发展出来的一个文本编辑器。代码补全、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用,和Emacs并列成为类Unix系统用户最喜欢的文本编辑器。我们可以通过Vim代码编辑器进行程序的书写.Vim普遍被推崇为类Vi编辑器中最好的一个,事实上真正的劲敌来自Emacs的不同变体。1999 年Emacs被选为Linuxworld文本编辑分类的优胜者,Vim屈...原创 2018-12-25 09:20:48 · 190 阅读 · 0 评论 -
[Linux] IP地址的获取
IP地址上次讲到ifconfig指令输入后,有的人无法正确获取到IP地址,在这里讲解一下如何更改相关配置:[正确获取IP地址的情况]如果与图片中有出入,请进行下列修改:输入指令 su 切换至root用户,红色方框都表明着已经切换成功输入指令,切换到network-scripts目录下cd /etc/sysconfig/network-scripts/输入指令ls查看目录...原创 2018-12-24 12:04:21 · 294 阅读 · 0 评论 -
[Linux] Xshell模拟终端
Xshell在我们日后的开发环境中,不会直接在服务器上进行开发,而是使用一个模拟终端的软件通过互联网对服务器进行远程控制我们这里使用的软件为XshellXshell是一个强大的安全终端模拟软件,它支持SSH1, SSH2, 以及Microsoft Windows 平台的TELNET 协议。Xshell 通过互联网到远程主机的安全连接以及它创新性的设计和特色帮助用户在复杂的网络环境中享受他...原创 2018-12-24 11:31:09 · 1176 阅读 · 0 评论 -
[Linux] 知识扩展
一个很现实的问题:我们后端开发者因为种种原因只能拥有 Windows 的操作系统,要怎么样才能进行 Linux 系统编程?办法总比问题多,我们想要在非Linux操作系统搭建好Linux环境进行编程需要两个材料:虚拟机我们这里用到的虚拟机为VMware Workstation 12,大家可以在官网上自行下载https://www.vmware.com/镜像文件/光盘同时搭建好L...原创 2018-12-24 17:48:16 · 276 阅读 · 0 评论 -
[Linux] 命令简称/缩写
su:Swith user &nbsp;切换用户,切换到root用户cat: Concatenate &nbsp;串联uname: Unix name &nbsp;系统名称df: Disk free &nbsp;空余硬盘du: Disk usage 硬盘使用率chown: Change owner 改变所有者chgrp: Change group 改变用户组ps:Process St...转载 2018-12-21 15:00:23 · 1006 阅读 · 0 评论 -
[Linux] 系统基本指令
基本指令本篇博客主要讲解具体的指令与操作含义:打开CentOS 7操作系统,右键点击 “打开终端” ,进入终端.进入终端后,在屏幕上出现这么一段字符,我们就可以在这里输入指令进行操作了,这段字符具体讲解如下:用户名: 用户设置的使用者名称分隔符: 单纯的分隔一下用户名和主机名~主机名: 如果不设置,默认就是localhost.当前目录: 表示当前home目录提示符: 表示用户...原创 2018-12-20 19:27:54 · 200 阅读 · 0 评论 -
[Linux] 基础通识
Linux基础Linux是什么?为什么学习Linux?Linux如何学/学什么?为什么不用Linux图形界面?Linux是什么?Linux是一个操作系统的内核,而不是通常大家认为的操作系统.它的作者是Linus,这位大佬同样是Git的开创者,果然大佬的优秀已经成为了一种习惯~这里顺便纠正一下它的发音,可以中式英语抽象成为里纳克斯~我们这里使用的操作系统为CentOS 7.除了Cen...原创 2018-12-20 10:49:49 · 225 阅读 · 0 评论