![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
linux
文章平均质量分 84
半夏云流
山有扶苏,隰有荷华。
展开
-
双向链表实现(C语言)
1. 概念百度百科:双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。...原创 2021-06-17 21:58:24 · 1752 阅读 · 3 评论 -
单向链表实现(C语言)
单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。链表中的数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) +指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。...原创 2021-06-11 12:01:18 · 1411 阅读 · 0 评论 -
SHELL编程学习笔记
Linux基础是结合shell编程能做很多重要的事情,以下只对shell编程的基础进行总结。Linux基础请参考:LINUX入门教程目录1.给shell脚本传递位置参数 $n2.给函数传递位置参数 ${n}3.特殊变量3.1 $*与$@3.2 $?获取函数返回值4.字符串4.1 字符串拼接,直接放在一起,不要空格4.2字符串截取从指定字符(子字符串)开始截取...原创 2019-04-14 17:15:31 · 367 阅读 · 0 评论 -
SHELL脚本自动登录远程主机执行脚本或命令
1.Expect语言实现自动化交互简介:摘自百度Expect是一个免费的编程工具语言,用来实现自动和交互式任务进行通信,而无需人的干预。Expect的作者Don Libes在1990年开始编写Expect时对Expect做有如下定义:Expect是一个用来实现自动交互功能的软件套件(Expect [is a] software suite for automating interactiv...原创 2019-04-26 14:56:46 · 22186 阅读 · 2 评论 -
SHELL 脚本检测FTP连接
在主机运维的过程中,我们可能需要监控或检测FTP是否可达,与ping类似,FTP直接跟IP地址或主机名,可检测FTP是否可以连接。我们可以加上用户名和密码,但此处,并不登录FTP服务器,只是进行尝试连接,并检测是否超时。以下是检测常规端口21 FTP连接的脚本:#!/bin/bash#d定义数组,保存IPIP_A=(10.254.96.3810.254.96.40#1.1.1.1...原创 2019-04-26 15:14:30 · 4530 阅读 · 1 评论 -
SHELL 脚本FTP批量上传或下载文件
特别注意的坑ftp视图下,cd 与lcd目录切换都应该使用相对路径,如果不确定是否能切换目录,最好登录手动试试FTP 登录服务器批量上传文件到指定目录:注意,以下的目录都是环境变量,自定义。#!/bin/sh#lcd 应该使用相对路径#从本地向FTP批量上传文档echo "--------------------------------------上传 ${YESTERDA...原创 2019-04-26 15:26:35 · 3195 阅读 · 0 评论 -
SHELL 脚本在指定目录下遍历指定文件的列表
以下脚本是在做一个稽核任务的时候写的项目代码,暂时作为参考。功能是遍历指定目录下指定文件名称的文件是否存在于该目录,并列出文件列表和大小。仅供参考,其中用到数组,for, if else ,case 等各种控制语句,做一个综合应用shell脚本的实例,初学的脚本,比较抠脚,哈哈。ListFile.sh#!/bin/bashFILEDIR=/jzcj1/Ndata/VOLTE/VL...原创 2019-04-26 15:42:40 · 3672 阅读 · 0 评论 -
expect 获取日期
在做一个主机巡检任务的时候,由于目录是按日期每天都在变化的,因此远程登录巡检的过程中,需要使用到日期,在网上参考了一些,自己理解写了日期运算,暂作为笔记参考 主要函数为 clock 和 format代码如下#!/usr/bin/expectset date [ clock format [ clock seconds ] -format "%Y%m%d" ]set secon [ ...原创 2019-05-13 11:05:09 · 3647 阅读 · 0 评论 -
Linux系统利用脚本删除空行或者空格的方法
Linux系统利用脚本删除空行的4种方法1)用tr命令 cat 文件名 |tr -s ‘\n’2)用sed命令 cat 文件名 |sed ‘/^$/d’ 3)用awk命令 cat 文件名 |awk ‘{if($0!=””)print}’cat...转载 2019-06-04 17:05:49 · 1003 阅读 · 0 评论 -
linux 系统lsof 查找文件系统占用情况的脚本
简介lsof(list open files)是一个列出当前系统打开文件的工具。在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件。所以如传输控制协议 (TCP) 和用户数据报协议 (UDP) 套接字等,系统在后台都为该应用程序分配了一个文件描述符,无论这个文件的本质如何,该文件描述符为应用程序与基础操作系统之间的交互提供了通用接口。因为应...原创 2019-07-25 13:08:04 · 446 阅读 · 0 评论 -
Makefile C与C++混编的简单写法
目录结构:socket中是基本的socket类,except是捕捉异常类,include 是头文件,basetype.h等,主程序文件在当前目录#TARGET : 目标文件#OBJ_DIR_THIS : 中间文件存放目录#COMPILE.cpp和COMPILE.c : 编译#LINK.cpp和LINK.c : 链接#SOURCE_PATHS : 源码.c和.cpp存放目录,多个目...原创 2019-09-06 18:05:36 · 1584 阅读 · 0 评论 -
Crontab 每隔整点1小时2小时执行一次任务
下面是crontab的格式:分 时 日 月 星期 要运行的命令第1列分钟1~59第2列小时1~23(0表示子夜)第3列日1~31第4列月1~12第5列星期0~6(0表示星期天)第6列要运行的命令文件中是通过 5 个“*”来确定命令或任务的执行时间的,这 5 个“*”的具体含义如表 2 所示。表 2crontab 时间表示 项目 含义 ...原创 2019-03-28 14:53:10 · 40839 阅读 · 2 评论 -
封装一个可变参数打印函数
在开发中,经常会用到打印,而这些打印在程序运行阶段不需要,仅在调试或开启现象的时候需要,我们用printf来打印往往不能对其进行灵活的控制,这个时候,我们就可以自己封装一个与printf功能相同的打印函数,加一些调试开关,就可以。用到的接口:#include <stdarg.h> int vprintf(const char *format, va_list...原创 2018-09-06 16:11:11 · 1854 阅读 · 0 评论 -
linux 内核hash_list学习笔记
linux内核为了方便进行链表的操作,定义了一系列很方便的宏定义,在平时的项目开发中,应用宏定义能使得项目事半功倍,下面是内核实现源码的实现,仅重定义了名字,正在学习,就暂时记录下来吧:结构定义:typedef struct hlist_node { struct hlist_node *next; // 指向下一个结点的指针 struct hli...原创 2018-07-30 20:53:06 · 735 阅读 · 0 评论 -
一些方便的按位操作宏定义
一些方便的按位操作符宏定义,在通信中运用十分方便:#ifndef BIT_TEST#define BIT_TEST(a, b) ( 0 != ((a) & (b)))#endif#ifndef BIT_SET#define BIT_SET(a, b) ((a) |= (b))#endif#ifndef BIT_RESET#def...原创 2018-07-30 21:04:42 · 1503 阅读 · 0 评论 -
创建HASH的一个模板,以Linux内核hash_list为例
百度百科:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希(Hash)表,函数f(k...原创 2018-08-01 22:11:43 · 742 阅读 · 0 评论 -
快速排序及多线程快排优化 & 选择 & 归并排序
一、写在前面1.回调函数:用到函数指针,即指向函数的指针,这在代码框架结构设计中十分简洁高效,看代码typedef enum tagSORT_FUNC{ SELECT_SORT= 0, MERGE_SORT, QUICK_SORT, SORT_FUNC_MAX}SORT_FUNC_E;typedef void (*SORT_CALLBACK_PF...原创 2018-08-18 20:11:49 · 1638 阅读 · 0 评论 -
linux获取时间,精确到微秒usec
包含系统头文件:#include <sys/time.h>用到的接口:int gettimeofday(struct timeval *tv, struct timezone *tz);计算时间间隔,精确到微秒:1.首先获取任务起始时间值,使用上述接口,也可以封装,并记录到微秒2.中途执行其他任务3.再次获取任务结束时间值,使用上述接口,也可以简单封装4....原创 2018-08-18 20:21:48 · 5637 阅读 · 0 评论 -
linux主机序与网络序的转换
在网络通信中,经常用到字节序转换,实际上内核已经帮我们实现了两套通用的转序宏定义,但是在转换过程中,都是进行主继续与网络序的转换,代码难免冗余,我们可以根据已经提供的特性,来添加一些执行规则,这样就可以用一个转序函数实现两种转序,例如,htonl,既可以实现原htonl的功能,也实现了ntohl的功能,不用写两套转换函数,只需要将转序函数重新定义一个名字就可以。定义如下,未实测。实现的规则就是...原创 2018-08-18 20:56:35 · 1625 阅读 · 0 评论 -
Epoll 服务器的一种通用框架,epoll_data_t 的使用
一、前言前面已经介绍过一个原始结构epoll服务器的使用,原文请点击查看:epoll原始结构服务器现在,我将在原epoll服务器的基础上对epoll的用法进行改进,进一步简化epoll服务器的编码方式,这种框架在大型项目中十分高效,正所谓框架搭的好,往里面填“dog shit”都不会有问题。这当中,我们需要用到一个简单的消息封装结构,这在通信中十分常见,类似于一种伪协议,只有内部通用。...原创 2018-08-19 17:37:50 · 2723 阅读 · 5 评论 -
C++类继承简介
C++中类作为一种自定义类型的数据结构,在面向对象程序设计思想中有着相当重要的作用。类代表一类事物的集合,与现实社会相似,类类型同样具有继承实现的可能。现实社会中事物的继承性随处可见,如父子的继承关系等。C++软件开发中,继承机制有着很多的运用。通常在软件编程中,继承与多态性的结合运用可以增加软件的扩展性以及应用程序可重用性。C++语言中将继承分为三种情况,即public、protected以...转载 2018-09-05 17:10:12 · 289 阅读 · 0 评论 -
Epoll学习服务器的简单实现-Linux内核原始Epoll结构
1.Begins~学习linux编程很久,只知道网络编程是socket,bind, listen。。。,然而这些都是网络通信软件最基本的接口。在某网络公司待了y,也了解到公司的基础就是网络转发 ,然而网络转发实现并非我们平时所见的简单的send,recv。公司设备的转发都是建立在稳定并且高效的内部业务的基础上的,例如一个可靠性的服务:BFD(链路双向快速检测),进程内业务就是建立在内核与用户态...原创 2018-07-29 15:51:34 · 599 阅读 · 0 评论