linux
Prime吉吉
业精于勤荒于嬉,行成于思毁于随。
展开
-
shell 删除符合条件最老的文件
#/bin/bashFILE_DIR=$1MATCH_NAME=$2ls -lthr $1| grep -E '${MATCH_NAME}_{0-9_}*$'| head -1 | awk '{print $9}' | xargs -I {} rm -rf ${FILE_DIR}/{}举个例子:在/home目录下有map、map_20210908_135801、map_20210807_142301这三个文件或目录,我们要删除满足文件名是map_yyyyMMDD_hhmmss其中最老.原创 2021-09-08 14:04:41 · 650 阅读 · 0 评论 -
shell 获取、修改配置项的值
#!/bin/bashfunction ini_get_value(){ INIFILE=$1;SECTION=$2;ITEM=$3; val=$(sed -n '/\['${SECTION}'\]'/,/^\[/p' ${INIFILE} |grep ${ITEM} | awk -F '=' '{a=1} (a==1 && "'${ITEM}'"==$1){a=0;print $2}') echo $(val)}function ini_set_val.原创 2021-09-03 17:55:42 · 637 阅读 · 0 评论 -
使用addr2line定位so文件段错误的问题
首先、查看我们的程序运行报的段错误信息通过命令dmesg | tail查看,或者查看日志/var/log/message[root@prime complibs]# dmesg | tail[5445490.395794] compseche_default[17560]: segfault at 0 ip 00007f92507e5d32 sp 00007f9234d6c7c0 error 6 in libobj.so [7f92507c9000+33000]然后,此时我们使用Windo原创 2021-08-31 17:14:14 · 1833 阅读 · 0 评论 -
Linux mysql导入导出数据表结构及数据的指令
使用mysqldump命令导出数据库表的表结构和数据mysqldump -u$USER_NAME -p$PASSWORD -h172.16.113.173 $DB_NAME $TABLE_NAME1 $TABLE_NAME2 >> sql_script.sql如果仅导出数据库表结构mysqldump -u$USER_NAME -p$PASSWORD -h172.16.113.173 -d $DB_NAME $TABLE_NAME1 $TABLE_NAME2 >> sq原创 2021-07-23 11:01:19 · 968 阅读 · 0 评论 -
安装cppcheck 1.84
1.下载cppcheck1.84https://sourceforge.net/projects/cppcheck/files/cppcheck/1.84/cppcheck-1.84.tar.gz/download2.解压cppcheck1.84tar -zxvf cppcheck-1.84.tar.gz3.安装cppcheckcd cppcheck-1.84#编译make SRCDIR=build CFGDIR=/usr/share/cppcheck/ -j32#安装ma原创 2021-07-20 11:35:45 · 329 阅读 · 0 评论 -
CentOS8.1安装perf指令
1、下载perf安装包https://download.csdn.net/download/Primeprime/192916862、解压原创 2021-06-01 14:49:10 · 1691 阅读 · 0 评论 -
CentOS7 CentOS8安装expect
首先下载expect所需的安装包和安装脚本https://download.csdn.net/download/Primeprime/13460098然后将下载的安装包拷贝到CentOS 7或者CentOS 8系统里unzip expect_tcl.zip然后执行shell脚本install_expect.sh即可完成安装!以下将install_expect.sh脚本内容展示出来#!/bin/bashCURRENT_DIR=`pwd`function install_ex原创 2020-12-07 10:54:54 · 937 阅读 · 0 评论 -
awk指令使用详解
awk命令格式awk optionsprogram fileawk命令参数可以选项使用说明选项 描述 -F fs 指定行中分隔数据字段的字段分隔符 -f file 指定读取程序额文件名 -V var=value 定义awk中的一个变量及其默认值 -mf N 指定要处理的数据文件中的最大字段数 -mr N 指定数据文件中的最大数据行数 -W keyword 指定awk的兼容模式或告警级别 awk从命令行读取程序脚本aw..原创 2020-10-24 23:51:08 · 523 阅读 · 0 评论 -
sed指令使用详解
sed的选项、命令、替换标记命令格式sed的命令格式:sed [options] 'command' file(s);sed的脚本格式:sed [options] -f scriptfile file(s);选项 -e :直接在命令行模式上进行sed动作编辑,此为默认选项; -f :将sed的动作写在一个文件内,用–f filename 执行filename内的sed动作; -i :直接修改文件内容; -n :只打印模式匹配的行; -r :支持扩展表达式; -h转载 2020-09-30 23:55:30 · 5658 阅读 · 0 评论 -
linux c __sync_fetch_and_add函数族详解
本文转自:https://blog.csdn.net/hzhsan/article/details/25124901我是在现在的公司里第一次遇到__sync_fetch_and_add函数,才知道还有线程无锁化的函数,于是在网络上搜集资料:__sync_fetch_and_add系列一共有十二个函数,有加/减/与/或/异或/等函数的原子性操作函数,__sync_fetch_and_add,顾名思义,先fetch,然后自加,返回的是自加以前的值。以count = 4为例,调用__sync_fetch_转载 2020-08-31 23:07:25 · 5713 阅读 · 0 评论 -
Ubuntu脱网安装mysql
1、获取mysql的安装包1)登录网址https://dev.mysql.com/downloads/mysql/选择Ubuntu Linux系统, OS版本为Ubuntu Linux 16.04(x86,64-bit), 然后选择下载DEB Bundle 8.0.20,即下载软件安装包文件mysql-server_8.0.20-1ubuntu16.04_amd64.deb-bundle.tar下载好后,将文件存储到Ubuntu系统的磁盘中2)获取安装mysql依赖包软件libai.原创 2020-06-24 08:58:00 · 892 阅读 · 0 评论 -
vim的剪切、复制、删除操作
剪切快捷键方式:dd:剪切光标所处当前行n + dd:剪切光标所在行及以下共 n 行按 p 粘贴在光标所在行命令行方式:例如剪切1到10行,并粘贴在12行处:1,10 m 12复制快捷键方式:yy:复制光标所处当前行n + yy:复制光标所在行及以下共 n 行按 p 粘贴在光标所在行命令行方式:例如复制1到10行,并粘贴在12行处:1,...转载 2020-04-21 09:31:04 · 456 阅读 · 0 评论 -
pthread_mutex_init()函数详解
linux下为了多线程同步,通常用到锁的概念。posix下抽象了一个锁类型的结构:ptread_mutex_t。通过对该结构的操作,来判断资源是否可以访问。顾名思义,加锁(lock)后,别人就无法打开,只有当锁没有关闭(unlock)的时候才能访问资源。即对象互斥锁的概念,来保证共享数据操作的完整性。每个对象都对应于一个可称为" 互斥锁" 的标记,这个标记用来保证在任一时刻,只能有一个线程访问...转载 2020-04-19 16:51:06 · 31628 阅读 · 1 评论 -
Linux C++实现拷贝文件夹
Linux C++实现拷贝文件及文件夹源文件:copy.cpp#include<stdlib.h>#include<dirent.h>#include<string.h>#include<stdio.h>#include<sys/stat.h>#include<iostream>#define BUFF...原创 2020-04-14 16:34:10 · 3526 阅读 · 1 评论 -
Linux 信号量使用方法
信号量和互斥锁(mutex)的区别:互斥锁只允许一个线程进入临界区,而信号量允许多个线程同时进入临界区。不多做解释,要使用信号量同步,需要包含头文件semaphore.h。主要用到的函数:int sem_init(sem_t *sem, int pshared, unsigned int value);其中sem是要初始化的信号量,pshared表示此信号量是在进程间共享还是线程间共享...转载 2020-01-14 16:02:14 · 884 阅读 · 0 评论 -
IO模式:Proactor模式和Reactor模式
本文转自:https://www.cnblogs.com/pigerhan/p/3474217.html在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。 在比较这两个模式之前,我们首先的搞明白几个概念,什么是阻塞和非阻塞,什么是同步和异步?同步和异步是针对应用程序...转载 2019-12-30 12:03:10 · 232 阅读 · 0 评论 -
sockaddr、sockaddr_in、sockaddr_in6的区别及转换
本文转自:https://blog.csdn.net/albertsh/article/details/80991684前言最近在学习网络相关的知识,虽然之前代码写了不少,但是长时间不写难免会忘记,简单地复习了一下IO多路复用的方式,对比了解了一下epoll模式和select模式的异同,不过写代码的时候发现,这个socket连接中有几个结构还是挺让人头大的,用着用着突然就强转成其他的类型了,...转载 2019-12-23 08:59:32 · 4964 阅读 · 1 评论 -
sockaddr与sockaddr_in的区别
本文转自:https://blog.csdn.net/will130/article/details/53326740/struct sockaddr和struct sockaddr_in这两个结构体用来处理网络通信的地址。一、sockaddrsockaddr在头文件#include <sys/socket.h>中定义,sockaddr的缺陷是:sa_data把目标地址和端...转载 2019-12-23 08:45:31 · 392 阅读 · 0 评论 -
CentOS7 samba配置
以下是CentOS7.2系统中/etc/samba/smb.conf文件内容,里面共享的是根目录"/",使用的用户是root:# See smb.conf.example for a more detailed config file or# read the smb.conf manpage.# Run 'testparm' to verify the config is correc...原创 2019-12-20 08:35:15 · 228 阅读 · 0 评论 -
基本TCP套接字常用函数及参数详情
1.socket()函数#include <sys/types.h> #include <sys/socket.h>int socket(int domain, int type, int protocol);domain: 协议域type: 套接字类型protocol: 某协议类型常值domain参数的常用值Na...原创 2019-12-19 18:55:42 · 1080 阅读 · 0 评论 -
CentOS7设置samba开机启动
设置开机启动的方法:在终端命令行中输入:chkconfig smb on就可以了,可以reboot重启测试下。原创 2019-12-05 08:55:12 · 3364 阅读 · 1 评论 -
Linux的.a、.so和.o文件(转载)
在说明Linux的.a、.so和.o文件关系之前,先来看看windows下obj,lib,dll,exe的关系windows下obj,lib,dll,exe的关系lib是和dll对应的。lib是静态链接库的库文件,dll是动态链接库的库文件。所谓静态就是link的时候把里面需要的东西抽取出来安排到你的exe文件中,以后运行你的exe的时候不再需要lib。所...转载 2019-11-26 10:09:37 · 346 阅读 · 0 评论 -
解决CentOS7 不能显示IPV4的问题
背景:今天我在Windows主机上安装了VM虚拟机,然后安装了CentOS7.2的操作系统。配置好网卡后,测试联网都OK,但是重启后,看不到IPV4的IP地址,只有MAC地址。解决不显示IPV4的方法:原因是CentOS7的network与NetworkManager模块有冲突,因此停止并禁用NetworkManager就行了:systemctl stop NetworkM...原创 2019-11-25 19:18:12 · 1495 阅读 · 1 评论 -
在c语言写的cgi程序中如何获取URL传递的参数
在c语言写的cgi程序中如何获取URL传递的参数例如在1.html中通下面的js完成页面调转:window.location.href = "abc.cgi?name1="+name1+"&name2="+name2+"+"&pass1="+pass1+";在abc.cgi程序中如何获取页面传递的name1\name2\pass1的值显示在abc.cgi页面第二种通转载 2014-08-21 09:18:34 · 4933 阅读 · 0 评论 -
linux 中 read/write与fread/fwrite 的区别
1,fread是带缓冲的,read不带缓冲.2,fopen是标准c里定义的,open是POSIX中定义的.3,fread可以读一个结构.read在linux/unix中读二进制与普通文件没有区别.4,fopen不能指定要创建文件的权限.open可以指定权限.5,fopen返回指针,open返回文件描述符(整数).6,linux/unix中任何设备都是文件,都转载 2014-08-27 17:40:04 · 961 阅读 · 0 评论 -
centos 6.4下设置samba服务器
今天很激动,通过两天时间的不懈努力,终于转载 2014-08-17 23:52:13 · 831 阅读 · 0 评论 -
LINUX设置打印信息颜色
这里\033[是转义子列,表示后面接的是颜色代码(亮度;背景色;前景色)01是高亮度,不写是低亮度。40是背景色,40:黑,41:红:42:绿,43:黄,44:青,45:蓝,47:白。 32是前景色:30:黑,31:红,32:绿,33:黄,34:蓝,35:紫,36:青,37:白。printf("\033[0;40;32m Begin to download \033[转载 2014-11-15 11:02:02 · 1000 阅读 · 0 评论 -
LINUX C获取命令行输出结果
在c程序中,system函数可以运行命令行,但是只能得到该命令行的int型返回值,并不能获得显示结果。例如system(“ls”)只能得到0或非0,如果要获得ls的执行结果,则要通过管道来完成的。首先用popen打开一个命令行的管道,然后通过fgets获得该管道传输的内容,也就是命令行运行的结果在linux上运行的例子如下:void executeCMD(const char转载 2014-11-24 23:37:48 · 7672 阅读 · 0 评论 -
正则表达式 元字符表(转)
字符描述\将下一个字符标记为一个特殊字符、或一个原义字符、或一个 后向引用、或一个八进制转义符。例如,'n' 匹配字符 "n"。'\n' 匹配一个换行符。序列 '\\' 匹配 "\" 而 "\(" 则匹配 "("。^匹配输入字符串的开始位置。如果设置了 RegExp 对象的 Multiline 属性,^ 也匹配 '\n' 或 '\r' 之后的位置。$转载 2015-01-07 16:35:15 · 876 阅读 · 0 评论 -
linux patch命令(转)
说到patch命令,就不得不提到diff命令,也就是制作patch的必要工具。diff命令,在制作patch文件的时候,基本上只需要使用到diff -Nau 这个参数,如果比较的是文件夹,还要加上-r参数,所以一般直接使用Naur参数。 实验的基本步骤。我打算是建立一个级联目录./x/xx/xxx/,在xxx目录下建立两个不同的文件xxx1,xxx2。然后在xxx目录下用dif转载 2015-01-27 00:17:40 · 858 阅读 · 0 评论 -
linux消息队列函数(转)
linux消息队列函数 -----------------------------------------------------linux消息队列函数--------------------------------头文件:#include #include #include www.2cto.com转载 2015-01-28 00:24:56 · 993 阅读 · 0 评论 -
linux 消息队列实例 (转)
转自:linux 消息队列实例 前言: 消息队列就是一个消息的链表。可以把消息看作一个记录,具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以向其中按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读走消息函数:1.创建新消息队列或取得已存在消息队列原型:int msgget(key_t key, int msgflg转载 2015-01-28 00:15:09 · 682 阅读 · 0 评论 -
patch命令详解(转)
patch,是打补丁的命令,有很多用法,见帮助#man patchpatch -p0 (“p”指的是路径,后面的数字表示去掉路径的第几部分。"0",表示不去掉,为全路径)patch -p1 (“p”后面的数字"1",表示去掉前第一个路径)fetch http://people.freebsd.org/~delphij/misc/patch-bge-r转载 2015-01-27 00:18:50 · 1435 阅读 · 0 评论 -
Makefile 中:= ?= += =的区别(转)
在Makefile中我们经常看到 = := ?= +=这几个赋值运算符,那么他们有什么区别呢?我们来做个简单的实验新建一个Makefile,内容为:ifdef DEFINE_VRE VRE = “Hello World!”elseendififeq ($(OPT),define) VRE ?= “Hello World! First!”endif转载 2015-01-09 15:28:56 · 570 阅读 · 0 评论 -
uboot之makefile源码 (转)
被export声明的变量有:HOSTARCH HOSTOS TOPDIR SRCTREE OBJTREE REMOTE_BUILD obj src CROSS_COMPILE。总结:花了一个多的星期,整篇makefile应该算看懂了。也学到了很多,比如一些基本的shell脚本命令。当然还有make的用法啦。另外源码目录下的mkconfig与config.mk也应该要了解。这三个文件都是互相转载 2015-01-09 15:36:18 · 714 阅读 · 0 评论 -
BCM router 公版软件编译 步骤(转)
安装编译工具(toochain),linux-2.6-router-5.110.27.2205.tar.gz SDK一般使用的toolchain的gcc版本是v4.2.3,安装包为:linux26-external-router-toolchains-gcc-4.2.3.tar.gz或hndtools-mipsel-linux-uclibc-4.2.3.tar.bz2一般推荐的安装目录结构转载 2015-01-09 14:38:05 · 1988 阅读 · 1 评论 -
制作mipsel-linux交叉编译工具(转)
1 前言 在嵌入式开发中,MIPs处理器是常见的几中处理器类型之一。另一方面,Linux是开源软件,应用范围很广, 因其对包括MIPS在内的多种嵌入式处理器架构的良好支持. 因此在嵌入式应用也.也大量采用Linux。在嵌入式开发过程中,很容易获得运行于x86架构PC上的Linux,并可使用其上的丰富的工具。gcc是Linux中一个很著名的C编译器,在编译Linux核心时,就要用到gcc。转载 2015-01-09 19:43:30 · 942 阅读 · 0 评论 -
在Linux里设置环境变量的方法(export PATH)(转)
在Linux里设置环境变量的方法(export PATH)一般来说,配置交叉编译工具链的时候需要指定编译工具的路径,此时就需要设置环境变量。例如我的mips-linux-gcc编译器在“/opt/au1200_rm/build_tools/bin”目录下,build_tools就是我的编译工具,则有如下三种方法来设置环境变量: 1、直接用export命令:#expo转载 2015-01-09 19:57:37 · 785 阅读 · 0 评论 -
网络编程原始套接字(转)
网络编程原始套接字SOCKET_STREAM 流式套接字 SOCKET_DGRAM SOCKET_RAW 原始套接字 IPPROTO_IP IP协议 IPPROTO_ICMP INTERNET控制消息协议,配合原始套接字可以实现ping的功能 IPPROTO_IGMP INTERNET 网关服务协议,在多播中用到转载 2015-01-31 10:54:21 · 1075 阅读 · 0 评论 -
LINUX下的消息队列实例解析(转)
一、消息队列的基本概念消息队列 (也叫做报文队列)是Unix系统V版本中进程间通信机制之一。消息队列就是一个消息的链表。就是把消息看作一个记录,并且这个记录具有特定的格式以及特定的优先级。对消息队列有写权限的进程可以按照一定的规则添加新消息;对消息队列有读权限的进程则可以从消息队列中读出消息。Linux采用消息队列的方式来实现消息传递。这种消息的发送方式是:发送方不必等待接收方检查它所收到的消转载 2015-01-31 00:29:26 · 1287 阅读 · 0 评论