
centos
文章平均质量分 82
土戈
软件开发
展开
-
linux-查找某目录下包含关键字内容的文件
grep -r "{关键字}" {路径}例如:grep -r "test" /data/reportsgrep -R --include="*.cpp" key dir上述命令的含义:在dir目录下递归查找所有.cpp文件中的关键字key在application目录下递归查找所有.sh文件中的关键字 81,显示所属行并将查找到的结果覆盖写入/root/t.txt中grep -R -n --include="*.sh" 81 ./application >/r...转载 2021-02-04 16:43:12 · 2130 阅读 · 0 评论 -
linux shell中“2>&1“含义
在计划任务中经常可以看到。例如我们公司的计划任务举例:*/2 * * * * root cd /opt/xxxx/test_S1/html/xxxx/admin; php index.php task testOne >/dev/null 2>&1*/2 * * * * root cd /opt/xxxx/test_S1/html/xxxx/admin; php index.php task testTwo >/dev/null 2>&1对于& 1转载 2021-02-01 08:56:27 · 362 阅读 · 0 评论 -
时间系统、进程的调度与切换
注:本分类下文章大多整理自《深入分析linux内核源代码》一书,另有参考其他一些资料如《linux内核完全剖析》、《linux c 编程一站式学习》等,只是为了更好地理清系统编程和网络编程中的一些概念性问题,并没有深入地阅读分析源码,我也是草草翻过这本书,请有兴趣的朋友自己参考相关资料。此书出版较早,分析的版本为2.4.16,故出现的一些概念可能跟最新版本内核不同。此书已经开源,阅读地址http://www.kerneltravel.net一、时间系统大部分PC 机中有两个时钟源,...转载 2021-01-12 10:51:10 · 738 阅读 · 0 评论 -
linux系统编程之基础必备(七):read/write函数与(非)阻塞I/O的概念
一、read/write 函数read函数从打开的设备或文件中读取数据。#include <unistd.h>ssize_t read(int fd, void *buf, size_t count);返回值:成功返回读取的字节数,出错返回-1并设置errno,如果在调read之前已到达文件末尾,则这次read返回0参数count是请求读取的字节数,读上来的数据保存在缓冲区buf中,同时文件的当前读写位置向后移。注意这个读写位置和使用C标准I/O库时的读写位置有可能不同.转载 2021-01-12 10:49:53 · 927 阅读 · 0 评论 -
linux系统编程之基础必备(五):Linux进程地址空间和虚拟内存
一、虚拟内存先来看一张图(来自《Linux内核完全剖析》),如下:分段机制:即分成代码段,数据段,堆栈段。每个内存段都与一个特权级相关联,即0~3,0具有最高特权级(内核),3则是最低特权级(用户),每当程序试图访问(权限又分为可读、可写和可执行)一个段时,当前特权级CPL就会与段的特权级进行比较,以确定是否有权限访问。每个特权级都有自己的程序栈,当程序从一个特权级切换到另一个特权级上执行时,堆栈段也随之改换到新级别的堆栈中。段选择符:每个段都有一个段选择符。段描述符指明段的大小、访问权.转载 2021-01-12 10:48:05 · 120 阅读 · 0 评论 -
linux系统编程之基础必备(四):C 标准库IO缓冲区和内核缓冲区的区别
1.C标准库的I/O缓冲区 UNIX的传统 是Everything is a file,键盘、显示器、串口、磁盘等设备在/dev 目录下都有一个特殊的设备文件与之对应,这些设备文件也可以像普通文件(保存在磁盘上的文件)一样打开、读、写和关闭,使用的函数接口是相同的。用户程序调用C标准I/O库函数读写普通文件或设备,而这些库函数要通过系统调用把读写请求传给内核 ,最终由内核驱动磁盘或设备完成I/O操作。C标准库为每个打开的文件分配一个I/O缓冲区以加速读写操作,通过文件的FILE 结构体可以...转载 2021-01-12 10:45:47 · 214 阅读 · 0 评论 -
apt-get 与 yum的区别 (转)
一般来说著名的linux系统基本上分两大类:1.RedHat系列:Redhat、Centos、Fedora等2.Debian系列:Debian、Ubuntu等説明 Redhat系 Debian系 更新缓存 yum makecache apt-get update 更新包 yumupdate apt-get upgrade 检索包 yumsearch apt-cachesearch 检索包内文件 yumprovides a...转载 2021-01-08 09:18:42 · 289 阅读 · 0 评论 -
linux 离线源制作(基本适用所有离线包安装)
apt的一些命令:apt-get的卸载相关的命令有remove/purge/autoremove/clean/autoclean等。具体来说:apt-get purge / apt-get --purge remove删除已安装包(不保留配置文件)。如软件包a,依赖软件包b,则执行该命令会删除a,而且不保留配置文件apt-get autoremove删除为了满足依赖而安装的,但现在不再需要的软件包(包括已安装包),保留配置文件。apt-get remove删除已安装的软件包(...转载 2021-01-06 14:09:00 · 2563 阅读 · 1 评论 -
Linux系统下-进程间通信(消息队列-详解)
Linux下进程间通信方式:# 管道( pipe ):管道是一种半双工的通信方式,数据只能单向流动,而且只能在具有亲缘关系的进程间使用。进程的亲缘关系通常是指父子进程关系。# 有名管道 (named pipe) : 有名管道也是半双工的通信方式,但是它允许无亲缘关系进程间的通信。# 信号量( semophore ) : 信号量是一个计数器,可以用来控制多个进程对共享资源的访问。它常作为一种锁机制,防止某进程正在访问共享资源时,其他进程也访问该资源。因此,主要作为进程间以及同一进程内不同线程之间的转载 2021-01-05 11:30:27 · 784 阅读 · 0 评论 -
System v 和 Posix作用和区别(进程间通信IPC)
当我们在linux系统中进行进程间通信时,会有比如共享内存(shm),信号量(sem),消息队列(msg)等方式时,会发现有System v以及POXIS两种不同的类型。我们探究一下System v和Posix到底代表着什么意义又有什么区别。Posix:Posix(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的一簇标准。该标准是基于现有的UNIX 实践和经验,描述了操作系统的调用服务接口,转载 2021-01-05 11:05:33 · 1062 阅读 · 0 评论 -
【Linux】进程间通信(IPC)之消息队列详解及测试用例
什么是消息队列?消息队列是SystemV版本中三种进程通信机制之一,另外两种是信号量和共享存储段。消息队列提供了进程间发送数据块的方法,而且每个数据块都有一个类型标识。消息队列是基于消息的,而管道是基于字节流。创建的消息队列,生命周期随内核,只有内核重启或用户主动去删除,才可以真正关闭消息队列。背景知识:I P C 标识符:每一个内核中的IPC结构(消息队列,信号量,共享存储段)都用一个非负整数的标识符(identifier)加以引用。当一个消息队列发送或取消息,只需要知道其队列标示符。//转载 2021-01-05 10:41:39 · 1991 阅读 · 0 评论 -
linux系统编程之信号(七):三种时间结构及定时器setitimer()详解
一,三种时间结构time_t://secondsstruct timeval {long tv_sec; /* seconds */long tv_usec; /* microseconds */};struct timespec {time_t tv_sec; /* seconds */long tv_nsec; /* nanoseconds */};二,setitimer()现在的系统中很多程序不再使用alarm调用,而是使用setitimer调用..转载 2021-01-04 16:58:24 · 467 阅读 · 0 评论 -
linux系统编程之信号(六):信号发送函数sigqueue和信号安装函数sigaction
一,sigaction()#include <signal.h>int sigaction(int signum,const struct sigaction *act,struct sigaction *oldact));sigaction函数用于改变进程接收到特定信号后的行为。该函数的第一个参数为信号的值,可以为除SIGKILL及SIGSTOP外的任何一个特定有效的信号(为这两个信号定义自己的处理函数,将导致信号安装错误)。第二个参数是指向结构sigaction的一个实例的指针,.转载 2021-01-04 16:32:44 · 507 阅读 · 0 评论 -
linux系统编程之信号(五):信号集操作函数,信号阻塞与未决
牛人博主:https://simba.blog.youkuaiyun.com/article/details/8944982一,信号集及相关操作函数信号集被定义为一种数据类型:typedef struct { unsigned long sig[_NSIG_WORDS];}sigset_t信号集用来描述信号的集合,每个信号占用一位(64位)。Linux所支持的所有信号可以全部或部分的出现在信号集中,主要与信号阻塞相关函数配合使用。下面是为信号集操作定...转载 2021-01-04 15:42:33 · 177 阅读 · 0 评论 -
linux系统编程之信号(四):alarm和可重入函数
一,alarm()#include <unistd.h>unsigned int alarm(unsigned int seconds)系统调用alarm安排内核为调用进程在指定的seconds秒后发出一个SIGALRM的信号。如果指定的参数seconds为0,则不再发送 SIGALRM信号。后一次设定将取消前一次的设定。该调用返回值为上次定时调用到发送之间剩余的时间,或者因为没有前一次定时调用而返回0。注意,在使用时,alarm只设定为发送一次信号,如果要多次发送,就要多次使用转载 2021-01-04 11:29:56 · 535 阅读 · 1 评论 -
linux系统编程之信号(三):信号安装、signal、kill,arise讲解
一,信号安装linux主要有两个函数实现信号的安装:signal()、sigaction()。其中signal()只有两个参数,不支持信号传递信息,主要是用于前32种非实时信号的安装;而sigaction()是较新的函数,有三个参数,支持信号传递信息,主要用来与 sigqueue() 系统调用配合使用,当然,sigaction()同样支持非实时信号的安装。sigaction()优于signal()主要体现在支持信号带有参数。二,signal()用法#include <signal.h>转载 2021-01-04 11:17:18 · 550 阅读 · 1 评论 -
linux系统编程之信号(二):信号处理流程(产生、注册、注销、执行)
对于一个完整的信号生命周期,可以分为三个阶段:信号诞生 信号在进程中注册 信号在进程中的注销 信号处理函数执行1 信号诞生 信号事件的发生有两个来源:硬件来源(比如我们按下了键盘或者其它硬件故障);软件来源,最常用发送信号的系统函数是kill, raise, alarm和setitimer以及sigqueue函数,软件来源还包括一些非法运算等操作。Linux支持的信号列表如下。很多信号是与机器的体系结构相关的信号值 默认处理动作 发出信号的原因SIGHUP 1 A ...转载 2021-01-04 10:52:30 · 287 阅读 · 0 评论 -
浅谈Linux中的信号处理机制
信号的基本概念信号被认为是一种软件中断(区别于硬件中断)。信号机制提供了一种在单进程/线程 下处理异步事件的方法。具体过程是当进程运行到某处,接受到一个信号,保留“现场”,响应信号(注意这里的响应是一种宏观意义上的响应,对信号的忽略(SIG_IGN)也被以为是一种响应,后面会详细谈到信号响应的方式。),在返回到刚刚保存的地方继续运行。 产生信号的条件有很多,某些组合键(CTRL+C、CTRL+\,CTRL+Z等),kill命令,kill系统调用以及由内核产生的某些信号(如内核检测到段错...转载 2020-12-29 10:06:39 · 567 阅读 · 0 评论 -
Linux:结束线程的三种方式
一般情况下,线程终止后,其终止状态一直保留到其它线程调用pthread_join获取它的状态为止。但是线程也可以被置为detach状态,这样的线程一旦终止就立刻回收它占用的所有资源,而不保留终止状态。不能对一个已经处于detach状态的线程调用pthread_join,这样的调用将返回EINVAL错误。也就是说,如果已经对一个线程调用了pthread_detach就不能再调用pthread_join了。pthread_cancel函数杀死(取消)线程 对应进程中 kill() ...转载 2020-12-31 09:17:53 · 8648 阅读 · 0 评论 -
linux系统编程之信号(一):中断与信号
一,什么是中断?1.中断的基本概念中断是指计算机在执行期间,系统内发生任何非寻常的或非预期的急需处理事件,使得CPU暂时中断当前正在执行的程序而转去执行相应的事件处理程序,待处理完毕后又返回原来被中断处继续执行或调度新的进程执行的过程。引起中断发生的事件被称为中断源。中断源向CPU发出的请求中断处理信号称为中断请求,而CPU收到中断请求后转到相应的事件处理程序称为中断响应。在有些情况下,尽管产生了中断源和发出了中断请求,但CPU内部的处理器状态字PSW的中断允许位已被清除,从而不允许CPU响应中转载 2020-12-31 09:17:30 · 1191 阅读 · 0 评论 -
linux类似于GetLastError的函数
#include <errno.h>errnoDWORD GetLastError(){ return errno;}原创 2020-12-31 09:16:25 · 2331 阅读 · 0 评论 -
查看Windows、linux动态库的导出函数
打开vs的命令窗口:在命令行输入命令:dumpbin /exports dll文件完整路径,即可得到DLL的接口。如:dumpbin /exports “C:\Windows\System32\user32.dll”查看静态库的信息要用命令行来实现:dumpbin /LINKERMEMBER Test.lib > 1.txt上面的功能是将静态库的信息导出保存在1.txt文件中,这样就可以在1.txt文件中查看相关的信息了linux动态库(参考:ht...原创 2020-06-29 09:00:40 · 1473 阅读 · 0 评论 -
linux pthread线程详解(Posix线程)
这是一个关于Posix线程编程的专栏。一、 线程创建1.1 线程与进程可以与同进程中的其他线程共享数据,但拥有自己的栈空间,拥有独立的执行序列。1.2 创建线程int pthread_create(pthread_t * thread, pthread_attr_t * attr,void * (*start_routine)(void *), void * arg)与fork()调用创建一个进程的方法不同,pthread_create()创建的线程并不具备与主线程...转载 2020-12-31 09:15:13 · 2075 阅读 · 0 评论 -
linux mmap内存文件映射
一、传统文件访问unix访问文件的传统方法使用open打开他们,如果有多个进程访问一个文件,则每一个进程在自己的地址空间都包含有该文件的副本,这浪费了存储空间。下面说明了两个进程同时读一个文件的同一页的情形,系统将该页从磁盘读到高速缓冲区中,每个进程再执行一个复制操作将数据从高速缓冲区读到自己的地址空间。二、共享内存映射现在考虑林一种处理方法:进程A和进程B都将该页映射到自己的地址空间,当进程A第一次访问该页中的数据时,它生成一个缺页终端,内核此时读入这一页到内存并更新页表使之指向它,以后,转载 2020-12-31 09:14:59 · 422 阅读 · 0 评论 -
10分钟学会在centos7环境下配置vncserver
一、简介VNC(Virtual Network Console),即虚拟网络控制台。它是一款优秀的远程控制工具软件,而且是基于 UNIX 和 Linux 操作系统的免费开源的。1、优点远程控制能力强大,高效实用,其性能可以和 Windows 和 MAC 中的任何远程控制软件媲美2、VNC基本上是由两部分组成一部分是客户端的应用程序(vncviewer); 另外一部分是服务器端的应用程序(vncserver);yum -y install tigervnc-serve...转载 2020-12-30 10:31:26 · 2453 阅读 · 1 评论 -
工作中常用到的linux命令(持续更新中)
netstat-a (all)显示所有选项,默认不显示LISTEN相关-t (tcp)仅显示tcp相关选项-u (udp)仅显示udp相关选项-n --numeric 直接使用IP地址,而不通过域名服务器。(显式数字地址)-l 仅列出有在 Listen (监听) 的服務状态-p 显示建立相关链接的程序名(pid)-r 显示路由信息,路由表-e 显示扩展信息,例如uid等-s ...原创 2018-11-20 17:31:47 · 922 阅读 · 1 评论 -
centos7 telnet服务的安装和启动
https://blog.youkuaiyun.com/chentao19830819/article/details/749741922:在安装Telnet前先检查系统是否安装了telnet-server和xinetdrpm -qa | grep telnetrpm -qa | grep xinetd如果没有安装,则开始安装,安装之前先查找Telnet的安装包yum list | gre...转载 2018-09-18 15:22:10 · 11571 阅读 · 3 评论 -
Linux shell标准输入,标准输出,错误输出
shell中可能经常能看到:1>/dev/null 2>&1 eg:sudo kill -9 `ps -elf |grep -v grep|grep $1|awk '{print $4}'` 1>/dev/null 2>/dev/null命令的结果可以通过>的形式来定义输出/dev/null 代表空设备文件> 代表重定向到哪里,例如:echo...转载 2018-09-17 14:19:57 · 1357 阅读 · 0 评论 -
Linux中设置服务自启动的三种方式
需要Linux系统在开机的时候自动加载某些脚本或系统服务主要用三种方式进行这一操作:ln -s 在/etc/rc.d/rc*.d目录中建立/etc/init.d/服务的软链接(*代表0~6七个运行级别之一)chkonfig 命令行运行级别设置ntsysv 伪图形运行级别设置...转载 2018-11-18 10:40:48 · 18378 阅读 · 0 评论 -
链接选项rpath,容易被忽略的一个功能
问题来源最近在做一个项目的客户端的SDK,实现为一个动态链接库,其依赖于其他的若干个动态库文件。那么在利用SDK开发应用程序的时候,编译的时候除了链接SDK库本身,还得链接SDK库所依赖的库,这样编译命令里面得一一的添加这些库。 比如,SDK库的名称为liba.so, 其依赖于libb.so和libc.so,那么在编译应用程序的时候使用以下命令:gcc -o test test.c -I...转载 2018-10-26 14:14:08 · 12311 阅读 · 0 评论 -
动态链接库 .so的生成与使用
静态库编译时加载,动态库运行时加载。 静态库的格式:libxxxx.a 动态库的格式:libxxxx.so.major.minor xxxx为该lib的名称 major主版本号 minor副版本号ldconfig指令详解ldconfig 命令的用途主要是在默认目录 (/usr/lib、/lib)以及动态库配置文件/etc/ld.so.conf所列目录下搜索出可共享的动态链接库,创建出动态装...转载 2018-10-26 11:44:48 · 2522 阅读 · 0 评论 -
一个通用的Makefile
对原文进行了精炼,以便于阅读一 makefile的作用Makefile的宗旨就是:让编译器知道要编译一个文件需要依赖其他的哪些文件。当那些依赖文件有了改变,编译器会自动发现最终的生成文件已经过时,而应该重新编译相应的模块。默认的情况下,make命令会在当前目录下按顺序找寻文件名为"GNUmakefile"、"makefile"、"Makefile"的文件,找到了解释这个文件。当然也可以使用...转载 2018-10-29 09:30:44 · 157 阅读 · 0 评论 -
一个通用的makefile写法,自动推导文件的依赖关系
假设有两个头文件目录 header1,header2;两个cpp文件目录,src1,src2,一个lib目录 写一个完整的makefile步骤如下:1 定义可执行文件的名称 TARGET = MyPro 2 指定此编译工程所要使用的头文件所在的目录 INC = -I. -Iheader1 -Iheader23 指定cpp文件所在的目录 VP...转载 2018-10-29 09:29:49 · 853 阅读 · 1 评论 -
linux下从源代码编译安装软件的一般步骤
1.下载并解压文件如果下的压缩文件的后缀是tar.gz 解压用 tar -xzvf xxx.tar.gztar.b2 解压用 tar -xjvf xxx.tar.b2tar 解压用 tar -xvf xxx.tar2.配置安装路径在/usr/local/下创建放置将要安装的软件目录mkdir /usr/local/newAppcd 到源代码所在的文件夹,配置安...转载 2018-10-29 09:29:17 · 12200 阅读 · 0 评论 -
linux安装软件问题:普通用户与root用户
软件包安装一般需要root权限,因为都是安装到绝对路径,需要往系统文件夹写文件。原码编译就看情况了,可以通过参数指定安装路径。具体用什么用户安装要看用途和需求。比如Oracle产品,是拒绝使用root用户安装的。如果不需要root权限的情况,就不用root,权限最小化原则.这个安装过Oracle就知道,Oracle只有2个脚本需要root来执行,其他的都是在oracle权限下编译不需要r...原创 2018-10-28 10:52:28 · 26689 阅读 · 0 评论 -
linux下编译安装boost库
1、下载并解压boost 1.58 源代码boost的官网:http://jaist.dl.sourceforge.net/project/boost/boost/下载wget http://jaist.dl.sourceforge.net/project/boost/boost/1.58.0/boost_1_58_0.tar.bz2解压tar -xjf boost_...转载 2018-08-19 15:33:21 · 356 阅读 · 0 评论 -
CentOS 添加环境变量的三种方法
在CentOS 系统上安装完 MATLAB 后,为了使用方便,需要将 matlab 命令加到系统命令中,如果在没有添加到环境变量之前,执行“matlab”命令时,则会提示命令不存在的错误,如下所示:(MATLAB 安装在 /usr/local/MATLAB/R2013a/bin 目录下)。方法一(暂时生效)直接运行命令export PATH=$PATH:/usr/local/MAT...转载 2018-09-12 16:02:28 · 69980 阅读 · 2 评论 -
CentOS下添加自定义动态链接库目录
vi /etc/ld.so.conf分别添加了两个路径,每个路径占一行。编辑完后,重新加载库:/sbin/ldconfig -v命令ldconfig -v |grep "libaivse000" 查看系统是否有加载该库缓存文件默认是/etc/ld.so.cache,此文件保存已经排好序的动态链接库名字列表。总结:1. 往/lib和/usr/lib里面加东西,是不用修改...原创 2018-09-12 10:49:51 · 8706 阅读 · 0 评论 -
取消centOS7虚拟机锁屏
转载 2018-08-15 09:13:18 · 5368 阅读 · 1 评论 -
【SSH免密码登录】SSH Secure Shell Client用public key认证登录
SSH Secure Shell Client用public key认证登录启动:Edit->settings->Keys点击“Generate New”->下一步->key类型和key长度可以选择默认->下一步(20秒左右)->下一步->(文件名:起一个你能知道干嘛的名字就可以喽,注释,密码) 下一步,完成。在...转载 2018-08-17 14:47:29 · 3484 阅读 · 1 评论