Linux学习
文章平均质量分 70
okiwilldoit
这个作者很懒,什么都没留下…
展开
-
mac系统使用经验
mac使用原创 2024-03-28 11:58:00 · 628 阅读 · 0 评论 -
Centos系统常用软件
系统常用软件yum install gityum install lrzszyum install nginxC++环境yum install gccyum install gcc-c++yum install makePython环境原创 2021-10-25 10:40:13 · 1268 阅读 · 0 评论 -
Arena内存池简介
一. 什么是内存池?内存池(Memory Pool)是一种内存分配方式,又被称为固定大小区块规划(fixed-size-blocks allocation)。通常我们习惯直接使用new、malloc等API申请分配内存,这样做的缺点在于:由于所申请内存块的大小不定,当频繁使用时会造成大量的内存碎片并进而降低性能。内存池是在真正使用内存之前,先申请分配一定数量的、大小相等(一般情况下)的内存块留作备用。当有新的内存需求时,就从内存池中分出一部分内存块,若内存块不够再继续申请新的内存。这样做的一个显著优点原创 2020-11-25 18:09:31 · 4071 阅读 · 0 评论 -
vscode共享linux文件 & 搭建samba服务windows共享linux文件
Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。一. Linux端设置1.安装sambayum install samba -y2.修改samba配置vim /etc/samba/smb.conf[global]log file = /var/log/samba/log.%mmax log size = 50obey pam restrictions = nodns proxy = noos level = 33syslog = 3s原创 2020-05-09 17:20:22 · 1164 阅读 · 0 评论 -
Linux进程间通信-消息队列
消息队列提供了一种从一个进程向另一个进程发送一个数据块的方法。Linux提供了一系列消息队列的函数接口来让我们方便地使用它来实现进程间的通信。它的用法与其他两个System V PIC机制,即信号量、共享内存相似。有以下接口:1. msgget,该函数用来创建和访问一个消息队列int msgget(key_t, key, int msgflg); 它返回一个以key命名的消息队列的标识符(非零整数原创 2017-10-31 10:43:16 · 232 阅读 · 0 评论 -
Linux进程通信-信号量C++实现
一、什么是信号量为了防止出现因多个程序同时访问一个共享资源而引发的一系列问题,信号量就可以提供这样的一种访问机制,让一个临界区同一时间只有一个进/线程在访问它,也就是说信号量是用来调协进程对共享资源的访问的。信号量是一个特殊的变量,程序对其访问都是原子操作,且只允许对它进行等待(即P(信号变量))和释放(即V(信号变量))信息操作。最简单的信号量是只能取0和1的变量,这也是信号量最常见的一种形式,叫原创 2017-10-31 11:29:02 · 3075 阅读 · 2 评论 -
Linux进程间通信方式
Linux使用的进程间通信方式主要有6种:(1)管道(pipe)和有名管道(FIFO)(2)信号(signal)(3)消息队列(报文队列)(4)共享内存(5)信号量(6)套接字(socket)一. 管道管道是Linux支持的最初Unix IPC形式之一,具有以下特点:· 管道是半双工的,数据只能向一个方向流动;需要双方通信时,需要建立起两个管道原创 2016-01-06 17:07:45 · 484 阅读 · 0 评论 -
Linux C++线上程序fatal的debug技巧
Segmentation fault(段错误)是由于虚拟内存管理单元的异常所致,而该异常则通常是由于解引用一个未初始化或非法值的指针引起的。 Linux中提供了core dump的功能,使得对这类错误的调试更为容易。一般情况下,linux系统是不允许产生core文件的,因此首先要解除这个限制: ulimit -c unlimited 接下来,运行含segmentation fault的段程序,原创 2016-08-15 17:06:59 · 1040 阅读 · 0 评论 -
Linux进程通信-共享内存
一、共享内存介绍共享内存是IPC(Inter-Process Communication)机制中的一个。 它允许两个不相关的进程访问同一个逻辑内存。 共享内存是在两个正在进行的进程之间传递数据的一种非常有效的方式。 大多数的共享内存的实现, 都把由不同进程之间共享的内存安排为同一段物理内存。共享内存是由IPC为进程创建一个特殊的地址范围, 它将出现在该进程的地址空间中。 其他进程可以将同原创 2016-03-16 14:27:38 · 393 阅读 · 0 评论 -
Linux进程通信-信号学习
Linux中一共有32种信号,在/usr/include/bits/signum.h 头文件中可以看到define SIGHUP 1define SIGINT 2define SIGQUIT 3define SIGILL 4define SIGTRAP 5define SIGABRT原创 2016-03-18 16:43:36 · 597 阅读 · 0 评论 -
进程死锁
一. 死锁定义所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 死锁的发生必须具备以下四个必要条件: (1)互斥条件:指进程对所分配到的资源进行排它性使用,即在一段时间内某资源只由一个进程占用。如果此时还有其它进程请求资源,则请求者只能等待,直原创 2017-10-16 10:52:40 · 262 阅读 · 0 评论 -
Linux下进程、线程同步几种方法
在多道程序环境下,进程是并发执行的,不同进程之间存在着不同的相互制约关系。所谓进程同步(线程同步同理),主要是解决临界资源互斥访问的问题。如多个进程访问同一片共享内存,这片共享内存必须互斥使用。一.进程同步在Linux下,进程同步的解决方式主要有三种: 1. 信号量 2. 文件锁 3. 无锁CAS1. 信号量可以借助Linux的信号量的PV操作来实现对临界资源的互斥访问。 详情可看博文:原创 2017-11-09 11:16:59 · 4757 阅读 · 1 评论 -
Linux常用工具命令
1. 查看网络端口号是否被占用netstat -anp | grep 3306 -p : 显示链接进程号和进程名 -t:仅显示tcp相关选项 -u:仅显示udp相关选项 -l:仅显示处于listening状态的选项2. 查看磁盘状况df -h 查看某个目录的大小 du -sh dir 查看当前目录下所有文件的大小 du -sh *3. 查看IO负载情况用io...原创 2017-10-20 16:10:59 · 609 阅读 · 0 评论 -
epoll学习及实例
epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,是IO多路复用的一种技术。它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率。 在linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epol...原创 2016-01-06 15:44:57 · 1993 阅读 · 1 评论 -
Linux的fork函数
一个现有进程可以调用fork函数创建一个新进程。由fork创建的新进程被称为子进程(child process)。fork函数被调用一次但返回两次。两次返回的唯一区别是子进程中返回0值而父进程中返回子进程ID。子进程是父进程的副本,它将获得父进程数据空间、堆、栈等资源的副本。注意,子进程持有的是上述存储空间的“副本”,这意味着父子进程间不共享这些存储空间。假定父进程malloc的指针指向0...原创 2018-03-27 10:30:45 · 281 阅读 · 0 评论 -
Git使用手册
1. 回退到某个版本先显示提交的log$ git logcommit 4dc08bb8996a6ee02fAuthor: Mark <xxx@xx.com>Date: Wed Sep 7 08:08:53 2016 +0800commit 9cac9ba76574da原创 2018-09-12 09:37:08 · 1815 阅读 · 0 评论 -
使用tcpcopy导线上流量
假设我们要上线一个服务程序,在上线前,免不了单元测试,功能测试,还有使用ab,webbench等等进行压力测试。但这些步骤非生产环境下正式用户的行为。或许你会想到灰度上线,但毕竟可能会影响到部分用户,那该怎么样压测才能不影响线上环境呢?网易的 王斌 开发了tcpcopy, 可以导入线上流量进行功能和压力测试。一. tcpcopy介绍tcpcopy是一种请求复制工具。可以将线上流量拷贝到测试...原创 2018-09-28 15:42:07 · 601 阅读 · 1 评论 -
linux下获取本机ip代码和判断ip
#include <iostream>#include <string.h>#include <netinet/in.h>#include <sys/socket.h>#include <arpa/inet.h>#include <sys/ioctl.h>#include <linux/if.h>原创 2015-12-15 15:24:07 · 1402 阅读 · 0 评论 -
用supervisor管理进程
简介supervisor是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具。可以很方便的监听、启动、停止、重启一个或多个进程。用supervisor管理的进程,当一个进程意外被杀死,supervisor监听到进程死后,会自动将它重启,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。安装配置好yum源后,可以直接安...原创 2019-01-09 16:21:57 · 367 阅读 · 0 评论 -
用shell来写脚本
一.守护脚本用于守护一个进程,如果该进程因意外情况停止运行,则守护脚本会自动启动该进程,以保证该进程一直处于运行状态中。 下面是用shell实现的一个守护脚本:#! /bin/sh#进程名字可修改PRO_NAME=zhb-t#程序启动脚本命令START_SH="./start.sh"#用ps获取$PRO_NAME进程数量NUM=`ps aux | grep ${PRO_NAME} | g原创 2017-09-21 11:07:25 · 541 阅读 · 0 评论 -
Linux多线程及同步
Linux下实现多线程都是用pthread。UNIX以及类UNIX系统中,线程是以轻量级进程的形式实现。在linux内核中,每个线程也拥有独立的task_struct结构,因此,每个线程也拥有自己独立的pid。一个进程中可以包含多个同时运行的线程,这些线程共享了同一个虚拟内存地址空间和系统资源。 1 创建进程时,直接使用系统调用:clone(),fork()也是调用clone()。 2 创原创 2016-03-04 18:25:33 · 741 阅读 · 0 评论 -
linux调试工具gdb初步学习
GDB 是GNU开源组织发布的一个强大的UNIX下的程序调试工具。一.GDB命令 gdb基本命令列表: 命令详细解释如下: 命令 解释 示例file 文件名>加载被调试的可执行程序文件。因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。(gdb) fi原创 2016-02-15 11:18:04 · 429 阅读 · 0 评论 -
Linux下crontab的使用
每五分钟执行 */5 * * * *每小时执行 0 * * * *每天执行 0 0 * * *每周执行 0 0 * * 0每月执行 0 0 1 * *每年执行 0 0 1 1 *详细用法可以参考该博文http://yangqijun.iteye.com/blog/1173016转载 2015-09-08 11:51:06 · 291 阅读 · 0 评论 -
Linux下的tar压缩解压缩命令详解
tar-c: 建立压缩档案-x:解压-t:查看内容-r:向压缩归档文件末尾追加文件-u:更新原压缩包中的文件这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用其中一个。下面的参数是根据需要在压缩或解压档案时可选的。-z:有gzip属性的-j:有bz2属性的-Z:有compress属性的-v:显示所有过程-O:将文件解转载 2015-08-18 16:25:53 · 281 阅读 · 0 评论 -
Ubuntu10.04下安装ns-allinone-2.35
1. 下载ns-allinone-2.35网上有很多。把它放到Ubuntu的放在home folder下。2. 登录root在终端中输入:sudo passwd rootEnter new UNIX password: (在这输入你的密码)Retype new UNIX password: (确定你输入的密码)passwd: password upd原创 2013-12-01 19:20:12 · 983 阅读 · 0 评论 -
Ubuntu下安装jdk
1.下载jdk。2.把jdk安装到usr目录下。进入root权限,把下载的tar文件复制到usr目录下。拷贝A文件到B目录命令:拷贝A文件夹到B目录cp -rv A B如果你正在B目录下,可以这样:cp -rv A ./解压:tar xvfz jdk-8u5-linux-i586.gz3.配置环境变量打开profile文件:sudo gedit /etc/p原创 2014-04-22 14:55:17 · 429 阅读 · 0 评论 -
Ubuntu 14.04 配置 LAMP+phpMyAdmin PHP(5.5.9)开发环境
Ubuntu 14.04下配置 LAMP+phpMyAdmin PHP开发环境详细图解教程。先安装 Apache Web服务器,终端:sudo apt-get install apache2 apache2-doc,然后测试是否安装成功。浏览器地址栏输入:http://localhost,回车,出现下图所示内容则代表成功!接下来安装PHP5和Apache的php模块,终端转载 2015-08-29 17:07:01 · 495 阅读 · 0 评论 -
strace命令
strace命令是一个集诊断、调试、统计与一体的工具,我们可以使用strace对应用的系统调用和信号传递的跟踪结果来对应用进行分析,以达到解决问题或者是了解应用工作过程的目的。当然strace与专业的调试工具比如说gdb之类的是没法相比的,因为它不是一个专业的调试器。 strace的最简单的用法就是执行一个指定的命令,在指定的命令结束之后它也就退出了。在命令执行的过程中,strace会记录和解析命令转载 2016-03-14 11:14:27 · 435 阅读 · 0 评论 -
Linux写pid文件&监控子进程实现
监控子进程是否运行正常的代码:while (1) { if (waitpid(pid, NULL, WNOHANG))//判断子进程是否运行正常 { pid = ForkWorker(); if (pid < 0) { ERROR_LOG("master_原创 2016-04-14 14:10:49 · 920 阅读 · 0 评论 -
Linux编程基础——Socket编程
Linux下的Socket编程大体上包括Tcp Socket、Udp Socket即Raw Socket这三种,其中TCP和UDP方式的Socket编程用于编写应用层的socket程序,是我们用得比较多的,而Raw Socket则用得相对较少,不在本文介绍范围之列。TCP Socket基于TCP协议的客户端/服务器程序的一般流程一般如下:它基本上可以分为三个部分原创 2015-08-31 15:23:27 · 507 阅读 · 0 评论 -
google开源的C++性能分析工具 - gperftools
gperftools是Google提供的一套工具,其中的一个功能是CPU profiler,用于分析程序性能,找到程序的性能瓶颈。 Graphviz是一个由AT&T实验室启动的开源工具包,用于绘制DOT语言脚本描述的图形,gperftools依靠此工具生成图形分析结果。 安装命令:yum install graphviz 编译google-perftools 因为我们只需要tcmalloc功原创 2016-03-14 11:02:05 · 12521 阅读 · 0 评论 -
nginx+fastcgi+c++/php搭建web服务
- 1.Nginx1.1.安装$sudo apt-get install nginx ubuntu安装Nginx之后的文件结构大致为: 所有的配置文件都在/etc/nginx下,并且每个虚拟主机已经安排在了/etc/nginx/sites-available下 启动程序文件在/usr/sbin/nginx 日志放在了/var/log/nginx中,分别是access.log原创 2016-06-13 17:12:28 · 526 阅读 · 0 评论 -
Linux下关于时间的函数
一. Linux下与时间有关的结构体struct timeval { int tv_sec; int tv_usec; }; 其中tv_sec是由凌晨开始算起的秒数,tv_usec则是微秒(10E-6 second)。 struct timezone { int tv_minuteswest; int tv_dsttime; }; tv_minuteswest是格原创 2016-03-23 15:05:22 · 505 阅读 · 0 评论 -
vim常用命令
光标控制命令:命令 光标移动 h 向左移一个字符 j 向下移一行 k 向上移一行 l 向右移一个字符 G 移到文件的最后一行 w 移到下一原创 2016-06-06 11:49:58 · 303 阅读 · 0 评论 -
awk学习
awk是行处理器: 相比较屏幕处理的优点,在处理庞大文件时不会出现内存溢出或是处理缓慢的问题,通常用来格式化文本信息awk处理过程: 依次对每一行进行处理,然后输出awk命令形式:awk [-F|-f|-v] ‘BEGIN{} //{command1; command2} END{}’ file [-F|-f|-v] 大参数,-F指定分隔符,-f调用脚本,-v定义变量 va转载 2015-07-31 14:56:58 · 356 阅读 · 0 评论