linux
文章平均质量分 53
libinbin_1014
穷的叮当响
展开
-
openrestry body_filter_by_lua_file无法建立TCP连接
在 body_filter_by_lua_file阶段,需要把body的内容写入redis中,但是发现redis无法建立连接。经过查询发现,这是openrestry的机制导致的。https://github.com/iresty/nginx-lua-module-zh-wiki解决方案:采用定时器的方式进行绕过...原创 2021-06-25 18:44:19 · 878 阅读 · 2 评论 -
Rsyslog在日志切割后不再同步日志的问题
这里写自定义目录标题Rsyslog配置同步日志,刚开始一切正常,但是到了第二天切割日志后,发现不再有日志同步。因为该日志文件inode未发生改变,但是文件offset偏移量与rsyslog所记录的不一样,导致rsyslog无法重新记录iCurrOffs解决方法:在子imfile配置中添加配置:reopenOnTruncate="on"官方文档:http://www.rsyslog.com/doc/master/configuration/modules/imfile.html...原创 2020-07-23 10:52:18 · 672 阅读 · 0 评论 -
openresty aes加密的补齐方式
github lua-string-resty地址:https://github.com/openresty/lua-resty-stringlua代码:local aes = require "resty.aes"local str = require "resty.string"local iv = "78afc8512559b62f"local key = "78afc85...原创 2020-04-15 11:24:29 · 4102 阅读 · 0 评论 -
xpath解析xmlns字段的xml文件
如果xml文件中有xmlns命名空间,则普通xpath语法无法解析解决方法: 参考链接: http://stackoverflow.com/questions/5239685/xml-namespace-breaking-my-xpath原创 2017-04-06 15:19:07 · 1755 阅读 · 0 评论 -
linux下ss命令源码学习(二):linux c代码获取后台进程名称及pid
该代码来源于ss命令源码#include <stdio.h>#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <syslog.h>#include <fcntl.h>#include <sys/ioctl.h>#include <string.h>#include <arpa/inet.h>#inclu原创 2016-10-29 09:41:41 · 1752 阅读 · 0 评论 -
linux下ss命令源码学习(一):进程名、pid的获取及存储
linux ss源码学习进程名、pid的获取及存储当执行ss -p命令时,会返回进程的名称、pid信息,接下来就分析一下该信息是如何获取及存储的获取1、 当指定p参数时, 会将全局变量show_users进行++操作,之后会执行user_ent_hash_build()函数。2、 该函数第一步首先获取环境变量PROC_ROOT的值,若为空,则默认路径为/proc/目录3、原创 2016-10-27 18:27:04 · 5532 阅读 · 0 评论 -
unable to initialize decompress status for section .zdebug_info解决办法
使用NetBeans编译时出现如下问题unable to initialize decompress status for section .zdebug_info原因是因为编译时的ld,版本比较久了ld的该bug在2015年7月份才解决,故重新编译并使用2016年新版本的ld,即可解决该问题原创 2016-09-27 19:05:36 · 6009 阅读 · 0 评论 -
一个简单的makefile的例子
SRC += main.cSRC += mysql_pool.cSRC += email_process.ctarget = maincc = gcc cflags = -L/usr/bin/mysql -I/usr/include/mysql -lmysqlclient option = -Wall -gobj = $(SRC:%.c=%.o)all:$(target)$(targe原创 2016-04-21 16:41:58 · 619 阅读 · 0 评论 -
正向代理与反向代理的区别(清晰明了)
一、正向代理的概念 正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录,有时候并不知道是用户的请求,也隐藏了用户的资料,这取决于代原创 2016-05-05 21:22:02 · 504 阅读 · 0 评论 -
linux下popen的使用心得
函数原型: #include “stdio.h” FILE popen( const char command, const char* mode )参数说明: command: 是一个指向以 NULL 结束的 shell 命令字符串的指针。这行命令将被传到 bin/sh 并使用 -c 标志,shell 将执行这个命令。 mode: 只能是读或者写中的一种,得到的返回值(标准 I/O 流)也原创 2016-05-24 15:23:42 · 14303 阅读 · 1 评论 -
Linux下C语言计算文件的md5值(转)
代码直接可用,更改一下文件路径及名称即可如果是字符串,则只需调用MD5Update这个函数即可感谢原创作者 http://www.tuicool.com/articles/jYB77n#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#include <sys/types.h>#inclu原创 2016-04-28 10:06:34 · 2889 阅读 · 0 评论 -
C/C++ union用法
在C/C++程序的编写中,当多个基本数据类型或复合数据结构要占用同一片内存时,我们要使用联合体;当多种类型,多个对象,多个事物只取其一时(我们姑且通俗地称其为“n 选1”),我们也 可以使用联合体来发挥其长处。首先看一段代码:union myun {struct { int x; int y; int z; }u; int k; }a; int main() { a.u.x =4;原创 2016-02-29 19:29:29 · 447 阅读 · 0 评论 -
Linux C获取系统的运行时间
1、前言 时间对操作系统来说非常重要,从内核级到应用层,时间的表达方式及精度各部相同。linux内核里面用一个名为jiffes的常量来计算时间戳。应用层有time、getdaytime等函数。今天需要在应用程序获取系统的启动时间,百度了一下,通过sysinfo中的uptime可以计算出系统的启动时间。2、sysinfo结构 sysinfo结构保持了系统启动后的信息,主要包括启动到现在的时间,可用原创 2016-01-26 17:39:55 · 6294 阅读 · 0 评论 -
Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again
今天在测试环境使用yum安装,遇到一个问题:Error: Cannot retrieve metalink for repository: epel. Please verify its path and try again处理很简单,修改文件“/etc/yum.repos.d/epel.repo”, 将baseurl的注释取消, mirrorlist注释掉。即可。参考URL: http://www转载 2015-12-29 15:14:04 · 378 阅读 · 0 评论 -
如何在main函数外获取main函数的参数(argc、argv)
如何在main函数外获取main函数的参数(argc、argv)在main函数主函数外不采用全局变量的方式获取argc、argv调用attribute,在程序的.init_array字段添加指定函数地址,其传入的参数中就有argc、argv参数。代码示例#include <stdio.h>#include <string.h>static void get_main_para_test(int a原创 2016-11-21 20:25:15 · 6561 阅读 · 0 评论 -
rpm命令安装低版本rpm包
rpm 安装低版本rpm包如果使用rpm -Uvh命令想强制安装一个低版本的安装包,则会提示已经安装过,导致安装失败。下面是解决方案: 使用命令 rpm -Uvh –oldpackage 进行安装即可!原创 2016-11-28 11:58:15 · 15241 阅读 · 0 评论 -
Nginx Etag学习
Nginx Etag学习Nginx Etag什么是EtagLast-Modified / If-Modified-SinceEtag工作原理为什么要使用EtagEtag字符含义强Etag和弱EtagEtag丢失问题Etag配置Etag带来的问题Nginx Etag什么是EtagEtag其实是一个页面的Hash值,当浏览器刷新页面的时候,浏览器会发送页面的Etag值,让服务器进行比较,服务器如...原创 2019-09-30 14:02:29 · 4684 阅读 · 0 评论 -
Linux 安装bundler命令
安装命令gem install bundler如果没有gem命令yum install ruby ruby-devel -y原创 2018-12-17 16:06:57 · 3594 阅读 · 0 评论 -
Axure rp8.1.0.3381激活码(亲测可用)
Axure rp8.1.0.3381激活码(亲测可用)Axure rp8.1.0.3381激活码(亲测可用)Axure rp8.1.0.3381激活码(亲测可用)License:zd423Key:LrZoHQetrL7OK8XOVWgvTFn+XOR32hQkrxkYj0CkbDUsvvENp6GCS38B8GiOS1ec...原创 2018-12-27 11:18:46 · 2759 阅读 · 1 评论 -
mv -f bash导致ssh无法登陆的问题分析
背景及复现在centos6.6的机器上,拷贝了一个centos6.0机器上的bash文件,通过mv -f将centos6.0的bash替换了centos6.6机器上的bash,然后重新使用xshell登陆,发现登陆不成功分析及原因同事通过几次调试发现,跟selinux有关,如果开起了Selinux,则会出现该问题,如果关闭则不会出现该问题查阅资料发现,可能是linux的Se...原创 2018-08-02 17:40:03 · 535 阅读 · 0 评论 -
虚拟机NAT模式下无法获取IP的解决方法
错误信息no link present check cable方法在ifcfg-eth0配置文件加上check_link_down(),,不过不管用后来发现,是虚拟机的NAT服务没有开启运行输入services.msc打开服务,然后找到VMware的相关dhcp、nat服务启动,然后在重启网卡,发现能正常获取ip问题和下面的链接问题一样,感谢他提供的解决思路参考链接...原创 2018-07-13 10:30:45 · 7672 阅读 · 0 评论 -
Java的JNA调用C语言的So动态链接库
Java的JNA调用C++的So动态链接库Java的JNA调用C++的So动态链接库JNA简介JNA技术原理JNA链接JNA ExamplesJNA demo编写So设置JNA的jar包编写Java参考链接JNA简介先说JNI(Java Native Interface)吧,有过不同语言间通信经历的一般都知道,它允许Java代码和其他语言(...原创 2018-06-22 14:22:28 · 10638 阅读 · 1 评论 -
std::string内存泄露问题之分析解决
std::string使用错误导致的内存泄露分析参考链接: http://www.cppblog.com/qinqing1984/archive/2009/08/07/92479.html复原在一次编程中,对性能进行测试发现有明显的内存泄露,定位到一个函数获取字符串赋值给一个string对象,屏蔽这行,就没有内存泄露,或者使用cout打印下这个string对象,内存也不泄露,特别诡异原创 2018-02-07 15:43:47 · 6046 阅读 · 1 评论 -
一个Lex/Yacc完整的示例(转)
本框架是一个lex/yacc完整的示例,包括详细的注释,用于学习lex/yacc程序基本的搭建方法,在linux/cygwin下敲入make就可以编译和执行。大部分框架已经搭好了,你只要稍加扩展就可以成为一个计算器之类的程序,用于《编译原理》的课程设计,或者对照理解其它lex/yacc项目的代码。本例子虽小却演示了lex/yacc程序最重要和常用的特征:* lex/yacc程序组成结构、文件格式。原创 2017-12-18 15:01:39 · 16313 阅读 · 0 评论 -
代码判断linux网卡是否是promisc模式
ifconfig是我们查看/设定网口状态常用的命令,其实这个命令就是对一些系统函数的封装,通过对struct ifreq的修改,我们可以很轻易地设定网口状态,获取网口状态。这个结构体位于/** * \file getifstat.c * \author wzj * \brief 访问这个struct ifconf 修改,查询状态 * \version * \note原创 2017-08-16 16:51:11 · 1660 阅读 · 0 评论 -
c语言利用inet_pton 函数检查ip合法性(转)
#include <arpa/inet.h>#include <stdlib.h>#include <stdio.h>#include <string.h>int check_ipaddr (char *str) {if (str == NULL || *str == '\0')return 1;struct sockaddr_in6 addr6; struct sockaddr_in原创 2017-03-24 11:40:15 · 2477 阅读 · 0 评论 -
HTTPS建立连接都发生了什么
HTTPS建立连接都发生了什么?首先我们先登录百度,www.baidu.com 哇!发现http变成了https! 下面我们就用WireShark 来分析一下,HTTPS建立前的这几毫秒都发生了什么。原创 2015-11-27 17:21:58 · 761 阅读 · 0 评论 -
利用bastille配置安全的linux系统
今天试了一下bastille,bastille俗称城堡linux,是一个用来加固linux系统安全的软件。最大的优点就是以提问的方式完成一系列的安全设置,而且这个过程中并不需要你懂太多的linux知识。就可以得到一个安全的linux系统。 当然缺点还是有的,由于每个linux系统都会有很大的不同,bastille并不能适应所有的系统。还有由于是自动修改配置,这个过程一旦出现问题,查找起来转载 2015-07-14 13:56:01 · 725 阅读 · 0 评论 -
linux c 代码获取移动介质USB的插拔信息
#include #include #include #include #include #include #include #include #include #include #include #include #include #define UEVENT_BUFFER_SIZE 2048 static int原创 2015-05-13 15:14:34 · 1249 阅读 · 0 评论 -
linux下启用或禁用打印机的打印操作
启用或禁用打印机的打印操作1、enable 和 disable 命令enable 和 disable 命令控制打印机打印还是停止打印打印队列中的请求。当您禁用打印机时,打印机将停止打印队列中的请求。但是,请求仍被添加到队列中。若不希望将请求添加到队列中,则必须将打印机设置为拒绝打印请求。 使用 Solaris Print Manager 添加打印机后,将启用该打印机以执行打印任务并接受原创 2015-05-11 09:57:52 · 6202 阅读 · 0 评论 -
linux下打印机的原理与打印流程
Linux打印原理在Linux下采用假脱机(spooling)打印方法,当用户需要打印一个文件时,该文件并不直接送到打印机,而是送到spool目录下,然后由一个负责打印的后台进程把这些数据送入打印机。Linux对每台打印机都定义了一个打印缓冲区,打印机守护程序经常扫描打印缓冲区以查看有无要打印的新文件。如果存在,就按先进先出的顺序打印缓冲区中的文件。Linux系统除了可以在本地打印机上原创 2015-05-11 09:44:59 · 4082 阅读 · 0 评论 -
linux下用代码获取系统的IP与MAC
#include #include #include #include #include #include #include #include #include #define MAXINTERFACES 16#define MAC_ADDR_LEN 18#define ADDR_LEN 16void err_quit(char *msg)原创 2015-04-13 17:04:30 · 1096 阅读 · 0 评论 -
linux下获取系统CPU的id
#include char *cpu_id(char *id) {//char s[30];unsigned long s1,s2,s3,s4; char sel; asm volatile ( "movl $0x01 , %%eax ; \n\t"原创 2015-04-13 17:06:54 · 5819 阅读 · 1 评论 -
如何判断主机大小端
(1)何为大小端大端:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中小端:是指数据的高字节保存在内存的高地址中,而数据的低字节保存在内存的低地址中 (2)为什么会有大小端 这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。 但是在C语言中除了8bit的char之外,还有16bit的原创 2015-04-30 15:14:09 · 813 阅读 · 0 评论 -
linux下用c编写定时器函数
#include <stdio.h> /* printf() */#include <unistd.h> /* pause() */#include <signal.h> /* signal() */#include <string.h> /* ...原创 2015-04-17 17:33:38 · 712 阅读 · 0 评论 -
linux下IDE硬盘序列号的获取方法
//虚拟机大都是SCSI硬盘,获取硬盘序列号的方法不知道,但是本人将虚拟机的硬盘类型更改为IDE类型,通过下面的代码获取成功是00000000000000001#include #include #include #include #include int getHardSerialNo(char *info){ struct hd_driveid id;原创 2015-04-20 17:10:54 · 1765 阅读 · 0 评论 -
linux下用setsockopt()来控制recv()与send()的超时
在send(),recv()过程中有时由于网络状况等原因,收发不能预期进行,而设置收发超时控制:在Linux下需要注意的是时间的控制结构是struct timeval而并不是某一整型数,以下是来自于网上一篇文章中的摘录,它是这样写的:int nNetTimeout=1000;//1秒,//设置发送超时setsockopt(socket,SOL_SOCKET,SO_SNDTIME原创 2015-04-28 11:41:18 · 1233 阅读 · 0 评论 -
linux下用代码实现系统命令
第一例:实现系统命令#include #include #include #include void my_system(char *str){pid_t pid;pid=fork();if(pid{perror("fork");}if(pid==0){execlp("/bin/sh","sh","-c",str,NULL);}i原创 2015-04-13 16:55:02 · 913 阅读 · 0 评论 -
linux c 下获取USB设备的信息并禁止使用USB设备的实现
#include #include #include #include #include #include #include #include #include #include #include #include #include #define UEVENT_BUFFER_SIZE 2048 static int原创 2015-05-13 15:17:40 · 5938 阅读 · 0 评论 -
linux下 alias与unalias命令简单解析
linux中的alias命令是 给linux下的命令起一个别名1、在终端敲入alias,查看当前状态有哪些别名2、敲入alias bb='ls',即,将ls命令重新起名为 bb, 并敲入alias进行查看,发现多了一个bb的别名3、分别敲入bb 和 ls 命令,两者起到的效果相同4、使用unalias命令,删除曾经定义的系统别名。原创 2015-05-07 14:55:37 · 809 阅读 · 0 评论