- 博客(42)
- 收藏
- 关注
原创 linux系统编程(7)--线程
Linux下线程的属性是可以根据实际需要进行设置,如我们对程序的性能提出更高的要求那么需要设置线程属性,比如可以通过设置线程栈的大小来降低内存的使用,增加最大线程个数。//线程的分离状态 int schedpolicy;//线程调度策略 struct sched_param schedparam;//线程的调度参数 int inheritsched;//线程的继承性 int scope;//线程的作用域 size_t guardsize;
2023-04-04 22:03:32
637
原创 linux系统编程(6)--守护进程
守护进程(Daemon Process),也就是通常说的 Daemon 进程,是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。一般采用以d结尾的名字。守护进程是个特殊的孤儿进程,这种进程脱离终端,为什么要脱离终端呢?之所以脱离于终端是为了避免进程被任何终端所产生的信息所打断,其在执行过程中的信息也不在任何终端上显示。
2023-04-02 21:46:16
778
原创 linux系统编程(5)--进程间通信
管道也叫无名管道,它是是 UNIX 系统 IPC(进程间通信) 的最古老形式,所有的 UNIX 系统都支持这种通信机制。半双工,数据在同一时刻只能在一个方向上流动。数据只能从管道的一端写入,从另一端读出。写入管道中的数据遵循先入先出的规则。管道所传送的数据是无格式的,这要求管道的读出方与写入方必须事先约定好数据的格式,如多少字节算一个消息等。管道不是普通的文件,不属于某个文件系统,其只存在于内存中。管道在内存中对应一个缓冲区。不同的系统其大小不一定相同。
2023-04-02 21:20:37
436
原创 linux系统编程(4)--进程管理
程序:是静态的,程序是存放在存储介质上的可执行文件。进程:是动态的,是程序的一次执行过程。进程的状态是变化的,其包括进程的创建、调度和消亡。在 Linux 系统中,操作系统是通过进程去完成一个一个的任务,(如:当前需要用到哪些环境变量,程序运行的目录在哪,当前是哪个用户在运行此程序等)和(如:处理器 CPU 占用率、存储器、I/O设备、数据、程序)。
2023-04-02 21:15:50
465
原创 linux系统编程(3)--系统调用
系统调用,顾名思义,说的是操作系统提供给用户程序调用的一组“特殊”接口。用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务,比如用户可以通过文件系统相关的调用请求系统打开文件、关闭文件或读写文件,可以通过时钟相关的系统调用获得系统时间或设置定时器等。从逻辑上来说,系统调用可被看成是一个内核与用户空间程序交互的接口——它好比一个中间人,把用户进程的请求传达给内核,待内核把请求处理完毕后再将处理结果送回给用户空间。
2023-04-02 21:10:10
719
原创 linux系统编程(2)--Makefile
创建变量: 变量名 = 变量值 #使用变量: $( 变量名) ${变量名} #注意: #makefile变量名可以以数字开头 #makefile变量名大小写敏感 #变量一般在makefile的头部定义clean: rm -rf $( OBJS) test #Tips: 使用make clean可以快速清理生成的文件除了使用用户自定义变量,makefile中也提供了一些变量(变量名大写)供用户直接使用,我们可以直接对其进行赋值。CPPFLAGS : C预处理的选项 如:-I。
2023-04-02 21:00:21
931
2
原创 linux系统编程(1)--GCC和GDB
GNU工具集中的调试器是GDB(GNU Debugger),该程序是一个交互式工具,工作在字符模式。除gdb外,linux下比较有名的调试器还有xxgdb, ddd, kgdb, ups。启动程序,可以按照你的自定义的要求随心所欲的运行程序。可让被调试的程序在你所指定的调置的断点处停住。(断点可以是条件表达式)当程序被停住时,可以检查此时你的程序中所发生的事。动态的改变你程序的执行环境。
2023-04-02 20:52:35
864
原创 学了一点点Git,Github,Gitlab
一.Git1.版本控制版本控制软件提供完备的版本管理功能,用于存储、追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是软件公司的基础设施。版本控制软件的最高目标,是支持软件公司的配置管理活动,追踪多个版本的开发和维护活动,及时发布软件。cvs,svn,git都是版本控制系统,腾讯 tapd, 阿里 云效等也是一站式的版本控制。cvs和svn都是 集中式 版本控制系统,而git是 分布式 版本控制系统。2.Git简介Git 是一个免费的开源分布式版本控制系统,旨在快速高效地处理从小型
2022-05-13 17:55:46
556
原创 浅学一下Shell脚本(7)--一些案例
1.脚本自动搭建nfs服务#!/bin/bashecho '1,checking network... 'ping -c1 192.168.1.10 &> /dev/nullif [ $? -eq 0 ];then echo 'network is ok!'else echo 'network is not ok! ' exit 1fiecho '2.Configure selinux and firewalld... 'setenforce 0 &>
2022-05-08 17:42:53
295
原创 浅学一下Shell脚本(6)--grep,sed,awk
一.grepgrep用于根据关键字进行行过滤1.语法结构基本语法 grep 选项 '关键字' 文件选项: -i 不区分大小写 -v 反向选择 -w 按单词搜索 -o 打印匹配关键字 -c 统计匹配到的次数 -n 显示行号 -r 逐层遍历目录查找 -A 显示匹配行及后面多少行 -B 显示匹配行及前面多少行 -C 显示匹配行前后多少行 -l 只列出匹配的文件名 -L 列出不匹配的文件名 -e:
2022-05-04 17:07:02
483
原创 浅学一下Shell脚本(5)--函数,随机数,正则表达式
一.函数shell中允许将一组命令集合或语句形成一段可用代码,这些代码块称为shell函数。给这段代码起个名字称为函数名,后续可以直接调用该段代码的功能。1.函数定义函数名(){ 函数体(一堆命令的集合,来实现某个功能) }# 可以带function 函数名() 定义,也可以直接 函数名() 定义,不带任何参数function 函数名(){ 函数体(一堆命令的集合,来实现某个功能) }函数中return说明:1.return可以结束一个函数,类似于前面讲的循环控制
2022-04-21 14:15:55
580
原创 浅学一下Shell脚本(4)--流程控制和循环
一.流程控制语句1.if语句1.1 语法结构if 语句语法格式:if [ condition ];then command1 command2 ...fi# 也可以用下面这种方式[ 条件 ] && commandif else 语法格式:if [ condition ];then command1else command2fi# 也可以用下面这种方式[ 条件 ] && command1 || command2if
2022-04-16 00:26:15
749
原创 浅学一下Shell脚本(3)--变量
一.Shell中的变量1.变量的定义规则命名只能使用英文字母,数字和下划线,首个字符不能以数字开头。中间不能有空格,可以使用下划线 _。不能使用标点符号。不能使用bash里的关键字(可用help命令查看保留关键字)。环境变量建议大写,便于区分2.bash中的引号双引号"" :会把引号的内容当成整体来看待,允许通过$符号引用其他变量值。单引号’’ :会把引号的内容当成整体来看待,禁止引用其他变量值,shell中特殊符号都被视为普通字符反撇号`` :反撇号和$()一样,引
2022-04-12 23:33:14
1039
原创 浅学一下Shell脚本(2)--脚本的创建,执行,测试
一.什么是ShellShell 是一个用 C 语言编写的程序,它是用户使用 Linux 的桥梁。Shell 既是一种命令语言,又是一种程序设计语言。Shell 是指一种应用程序,这个应用程序提供了一个界面,用户通过这个界面访问操作系统内核的服务。Shell 本身并不是内核的一部分,它只是站在内核的基础上编写的一个应用程序,它和 QQ、Firefox 等软件没有什么区别。然而 Shell 也有着它的特殊性,就是开机立马启动,并呈现在用户面前;用户通过 Shell 来使用Linux。二.Shell脚本
2022-04-10 21:35:33
1387
原创 浅学一下Shell脚本(1)--先学一些小工具
一.一些小工具1.cut工具cut是 列 截取工具,用于列的截取语法和选项cut [选项] [文件名]#选项:-c: 以字符为单位进行分割,截取-d: 自定义分隔符,默认为制表符\t-f: 与-d一起使用,指定截取哪个区域举例cut -d: -f1 1.txt # 以:冒号分割,截取第1列内容cut -d: -f1,6,7 1.txt # 以:冒号分割,截取第1,6,7列内容cut -c4 1.txt # 截取文件中每行第4个字符cut -c1-4 1.txt
2022-04-09 03:45:28
394
原创 Linux进阶(12)--计划任务
一.一次性计划任务(at)1.at命令的安装和启用CentOS7自带,其他版本可能需要手工安装yum install atsystemctl start atdsystemctl enable atd2.at的使用at -l #查看任务列表at -c [任务号] #查看任务内容at -r [任务号] #取消任务执行atq #查看没有执行的计划任务atrm [任务号] #删除指定的计划任务at允许使用一套相当复杂的指定时间的方法。● 能够接受在当天的hh:mm(
2022-04-06 01:35:36
218
原创 Linux进阶(11)--SELinux管理
一.什么是SELinux1.访问控制分类DAC(Discretionary Access Control,自主访问控制)依据进程的所有者与文件资源的rwx权限来决定有无访问权限。缺点:1.如果某个进程以root身份运行,可能被恶意目的2.用户可以取得进程来获得文件的访问权限DAC针对控制的主体是用户MAC(Mandatory Access Control),强制访问控制依据策略规则决定进程可以访问哪些文件。优点:即使是root用户,在使用不同进程时,所能取得的权限并不一定是root,需
2022-04-03 04:16:14
1722
原创 Linux进阶(10)--防火墙策略优化
一.火墙介绍从RHEL7以后,iptables服务的启动脚本已被忽略。请使用firewalld来取代iptables服务。防火墙是一组规则。当数据包进出受保护的网络区域时,进出内容(特别是关于其来源、目标和使用的协议等信息)会根据防火墙规则进行检测,以确定是否允许其通过。在RHEL7里有几种防火墙共存:firewalld、iptables、ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等。其实Iptables服务与Fire
2022-03-31 03:43:45
1748
原创 Linux进阶(9)--DNS部署
一.DNS概述DNS(domain name system ) 域名管理系统是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便的访问互联网,而不用记住能够被机器直接读取的IP地址。1.DNS的正向解析域名的正向解析将主机域名转换为对应的IP 地址,以便网络程序能够通过主机域名访问到对应的服务器主机。A记录 :域名——>IP2.DNS的反向解析域名的反向解析将主机的IP地址转换为对应的域名,以便网络(服务)程序能够通过IP地址查询到主机的域名。P
2022-03-28 00:52:13
1596
原创 Linux进阶(8)--NFS服务
一.NFS概述NFS(Network File System)网络文件系统,是由SUN公司研制的UNIX表示层协议,能使使用者访问网络上别处的文件就像在使用自己的计算机一样。主要用于Linux系统上实现文件共享的一种协议,其客户端主要是Linux。samba实现的是windows和windows,windows和linux,linux和linux之间的共享。nfs实现的是linux和linux,linux和unix,unix和unix之间的共享。特点:NFS没有用户认证机制,且数据在网络
2022-03-25 00:59:47
1478
原创 Linux进阶(7)--SAMBA服务
一.什么是SAMBA1.SMB协议SMB(Server Message Block)协议实现文件共享,也称为CIFS(Common Internet File System ),是Windows和类Unix系统之间共享文件的一种协议。SMB协议是微软(Microsoft)和英特尔(Intel)在1987年制定的协议,主要是作为Microsoft网络的通讯协议。SMB 是在会话层和表示层以及小部分应用层的协议。windows的网络邻居就是使用smb协议进行文件的共享。2.SAMBA软件Samba是
2022-03-22 01:36:04
1463
原创 Linux进阶(6)--MariaDB数据库
一.数据库的介绍1. 什么是数据库数据库是“按照数据结构来组织、存储和管理数据的仓库”。是一个长期存储在计算机内的、有组织的、可共享的、统一管理的大量数据的集合。数据库是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合,可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、7更新、删除等操作。2. 常见数据库常见的关系型数据库有Mysql,SqlServer,Oracle,DB2,SQLite等。常见的非关系型数据库有Mong
2022-03-20 04:11:24
2372
原创 Linux进阶(5)--Apache服务
一.Apache介绍Apache(音译为阿帕奇)是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上,由于其跨平台和安全性被广泛使用,是最流行的Web服务器端软件之一。在我们使用互联网访问地址的时候,通常是以 http:// 的方式访问,企业将资源通过超文本传输的方式将资源进行共享。提供超文本传输协议的软件也有很多:除了Apache还有nginx,stgw,jfe,Tengine等软件。可以使用命令"curl -I [域名]"打印HTTP头部信息二.Apache的实
2022-03-16 21:25:59
1315
原创 Linux进阶(4)--FTP服务
一.FTP介绍FTP(file transfer protocol):互联网中最老牌的文件传输协议。FTP协议包括两个组成部分,其一为FTP服务器,其二为FTP客户端。其中FTP服务器用来存储文件,用户可以使用FTP客户端通过FTP协议访问位于FTP服务器上的资源。在开发网站的时候,通常利用FTP协议把网页或程序传到Web服务器上。此外,由于FTP传输效率非常高,在网络上传输大的文件时,一般也采用该协议。主要用于互联网中文件的双向传输(上传/下载)、文件共享跨平台 Linux、Windows
2022-03-14 04:12:59
2305
原创 Linux进阶(3)--RAID简介
一、RAID介绍RAID(Redundant Array of Independent Disk 独立冗余磁盘阵列)技术是加州大学伯克利分校1987年提出,最初是为了组合小的廉价磁盘来代替大的昂贵磁盘,同时希望磁盘失效时不会使对数据的访问受损失而开发出一定水平的数据保护技术。RAID就是一种由多块廉价磁盘构成的冗余阵列,在操作系统下是作为一个独立的大型存储设备出现。RAID技术主要有以下三个基本功能:(1)通过对磁盘上的数据进行条带化,实现对数据成块存取,减少磁盘的机械寻道时间,提高了数据存取速度。
2022-03-11 01:05:26
205
原创 Linux进阶(2)--LVM逻辑卷管理+ vdo虚拟数据优化器
一.逻辑卷管理器LVM1.LVM介绍百度百科解释:逻辑卷管理器(LogicalVolumeManager)本质上是一个虚拟设备驱动,是在内核中块设备和物理设备之间添加的一个新的抽象层次,如图所示。它可以将几块磁盘(物理卷,PhysicalVolume) 组合起来形成一个存储池或者卷组(VolumeGroup)。LVM可以每次从卷组中划分出不同大小的 逻辑卷(LogicalVolume) 创建新的逻辑设备。底层的原始的磁盘不再由内核直接控制,而由LVM层来控制。对于上层应用来说卷组替代了磁盘块成为数
2022-03-07 02:10:59
754
原创 Linux进阶(1)--存储的基本管理
一.硬盘的基本知识在linux中设备接入系统后都是以文件的形式存在。1. 磁盘设备的命名设备文件名称设备文件位置说明SATA/SAS/USB/dev/sda,/dev/sdbs=SATA,d=disk,a=第几块IDE/dev/hd0,/dev/hd1h=hardVIRTIO-BLOCK/dev/vda,/dev/vdbv=virtioM2(SSD)/dev/nvme0,/dev/nvme1nvme=m2SD/MMC/EMMC(卡)/de
2022-03-06 18:08:42
475
原创 Linux系统基础(14)--远程管理服务ssh
一.远程连接介绍在对服务器进行管理时,需要通过网络在远程主机中开启 shell 来进程操作远程主机必须提供这样的开启 shell 的方式。以上的需求由 openssh 服务来提供,远程主机中开启了openssh这个程序,就可以通过网络来连接这台主机了1.SSH协议SSH是一种网络协议,用于计算机之间的加密登录。SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是较可靠,专为远
2022-03-05 17:44:11
751
原创 Linux系统基础(13)--CentOS7启动流程
Linux系统基础(13)–CentOS7启动流程CentOS6系统启动流程用的CentOS7,发现启动流程基本时向下兼容CentOS6的,然后去查了下CentOS6的启动流程如上。CentOS7启动流程:第一步:硬件启动阶段这一步和CentOS6差不多,用户打开电源后POST开始自检,检测硬件设备是否确实或者存在故障(是否影响正常开机),如果不影响正常开机,就把任务交给BIOS。BIOS通过搜索,安装启动确定启动设备,启动项一般为硬盘,BIOS去读取硬盘的前512字节到内存,找到BootLoad
2022-01-21 19:09:43
1155
原创 Linux系统基础(12)--软件管理
Linux系统基础(12)–软件管理一.Linux下的软件安装包类型目前主流的for linux软件安装包,主要有两种:二进制包以及源码包(tar包)。1.二进制包二进制包,也就是源码包经过成功编译之后产生的包。由于二进制包在发布之前就已经完成了编译的工作,因此用户安装软件的速度较快,且安装过程报错几率大大减小。二进制包是 Linux 下默认的软件安装包,目前主要有以下 2 大主流的二进制包管理系统:RPM 包管理系统:功能强大,安装、升级、査询和卸载非常简单方便,因此很多 Linux 发行
2021-08-26 16:28:24
722
原创 Linux系统基础(11)--网络配置
Linux系统基础(11)–网络配置一.一些基本概念1.IP地址和MAC地址以太网上的两台计算机之所以能够交换信息就是因为每个设备都有一块网卡,并且每块网卡拥有唯一的物理地址(称为MAC地址)和唯一的逻辑地址(称为IP地址)。MAC地址是由生产厂商烧录好的,一般不能改动,并且全球唯一;IP地址需要绑定在网卡上,并且同一个IP地址不能绑定在多个网卡上。IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。区别:MAC地址和IP地址分配方式不一样。
2021-07-25 19:54:03
1022
原创 Linux系统基础(10)--日志管理及时间同步
Linux系统基础(10)–日志管理实验环境:需要两台处于同一网段的虚拟机:client : 172.25.254.10server : 172.25.254.20systemctl stop firewalld #暂时先关掉火墙一.journald服务名称:systemd-journald.service日志查看工具:journalctl默认日志存放路径: /run/log1.查看日志查看日志基本方式journalctl -n 3 #日志的最新3条journ
2021-07-18 21:54:40
932
1
原创 Linux系统基础(9)--文件传输
Linux系统基础(9)–文件传输实验环境:需要两台处于同一网段的虚拟机:client : 172.25.254.10server : 172.25.254.20一.SCP命令SCP命令的主要作用是实现Linux与Linux系统之间的文件传输。SCP命令时基于SSH协议,所以两台服务器的sshd服务必须处于开启状态,否则无法完成上传与下载操作。#1.上传文件scp linux本地文件路径 远程用户名@linux主机地址:远程路径#2.下载文件scp 远程用户名@linux主机地址:
2021-07-16 15:03:21
217
原创 Linux系统基础(8)--自有服务管理
Linux系统基础(8)–自有服务管理自有服务,可以简单理解为Linux系统开机自动运行的服务。一.CentOS6与CentOS7差异CentOS6/RHEL6:service命令(管理服务开启、停止以及重启)+ chkconfig(定义开机启动项)service 服务名称 start|stop|restartCentOS7/RHEL7:systemctl命令 = system系统 + control控制(服务管理+开启启动项管理)systemctl start|stop|restart
2021-07-13 18:22:40
248
原创 Linux系统基础(7)--进程管理
Linux系统基础(7)–进程管理1.进程是什么程序是人使用计算机语言编写的可以实现特定目标或解决特定问题的代码集合。进程是指程序运行时的形态,是程序的一个副本进程是有生命周期的(准备期,运行期,终止期)2.进程与线程的区别进程是资源调用的最小单位线程是进程的最小单位当进程是多任务物, cpu 是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程线程资源是共享的3.进程的状态进程状态-R(TAKS_RUNNING)可执行态( running ,
2021-07-08 17:22:31
425
原创 Linux系统基础(6)--权限管理
Linux系统基础(6)–权限管理1.权限的基本概念☆ 为什么要设置权限☆ 权限的类型权限针对文件权限针对目录读 r表示可以查看文件内容;cat表示可以(ls)查看目录中存在的文件名称写w表示可以更改文件的内容;vim 修改,保存退出表示是否可以删除目录中的子文件或者新建子目录(rm/touch/mkdir)执行x表示是否可以调用文件中的程序,一般指二进制文件(.sh) => 绿色表示是否可以进入目录中(cd)...
2021-06-14 20:29:05
630
原创 Linux系统基础(5)--用户和用户组
Linux系统基础(5)–用户和用户组1.用户和用户组存在的意义用户:服务器添加多账户的作用:针对不同用户分配不同的权限,不同权限可以限制用户可以访问到的系统资源。提高系统安全性。帮助系统管理员对使用该系统的用户进行追踪。3A认证:身份 account授权 author认证 auth用户组:用户组是一个逻辑容器,对用户进行归类和统一授权。理论上Linux系统中的每个用户在创建时都应该有一个对应的用户组,这个组就称之为用户的主组。同时,有些情况下,某个用户需要临时使用某个组的
2021-06-04 00:20:35
897
2
原创 Linux系统基础(4)-输入输出
Linux系统基础(4)-输入输出1.输入输出的定义字符设备:就是显示字符到屏幕上的文件stdin:标准输入 编号为0 (键盘鼠标打字机)stout:标准正确输出 编号为1sterr:错误输出 编号为22.如何管理输入“<” 输入重定向 tr 'a-z' 'A-Z ' < test #把test文件中的内容定向到tr程序中“<<” 多行录入 tr 'a-z' 'A-Z ' << EOF #此处EOF可为任意字符
2021-05-30 20:16:47
284
原创 Linux系统基础(3)--vim编辑器的使用
Linux系统基础(3)–vim编辑器的使用一.vim编辑器1.vi编辑器vi(visual editor)编辑器通常被简称为vi,它是Linux和Unix系统上最基本的文本编辑器,类似于Windows 系统下的notepad(记事本)编辑器。2.vim编辑器Vim(Vi improved)是vi编辑器的加强版,比vi更容易使用。vi的命令几乎全部都可以在vim上使用。3.安装vim编辑器Centos通常都已经默认安装好了 vi 或 Vim 文本编辑器,我们只需要通过vim命令就可以直接打开v
2021-05-28 16:32:59
2663
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人