
Linux
pengshengli
横看成峰侧成岭,远近高低各不同。
不识庐山真面目,只缘身在此山中。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Brew自动安装
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)" 开始执行Brew自动安装程序 [cunkai.wang@foxmail.com] ['2022-01-24 16:07:53']['11.5'] https://zhuanlan.zhihu.com/p/111014448请选择.原创 2022-01-24 16:12:40 · 789 阅读 · 0 评论 -
正则表达式-实用的过滤
1.定义:根据定义的模式模板,来过滤文本。2.类型1)纯文本2)特殊字符3)锚字符4)点号字符5)字符组6)排除型7)区间8)星号9)问号10)加号11)花括号12)管道...原创 2020-04-16 16:24:10 · 1053 阅读 · 0 评论 -
vim辅助工具
1.ctags2.TagList原创 2020-01-06 15:40:39 · 487 阅读 · 1 评论 -
linux查看进程启动及运行时间
https://segmentfault.com/a/1190000018947680ps -eo pid,lstart,etime | grep 7199转载 2019-11-25 09:54:45 · 840 阅读 · 0 评论 -
tmux的使用
https://baijiahao.baidu.com/s?id=1612188417527865848&wfr=spider&for=pc1.tmux ls 查看会话列表2.cat ~/.tmux.conf 查看设置项(设置前缀等信息)3.tmux new -s session_name 创建一个新会话4.Ctrl + a d 暂退会话5.tmux ...转载 2019-11-22 14:52:42 · 189 阅读 · 0 评论 -
单台百万并发
1.设置/etc/security/limits.conf/etc/sysctl.conflinux 修改端口范围echo 1024 65000 > /proc/sys/net/ipv4/ip_local_port_range客户端net.ipv4.tcp_mem = 262144 524288 786432net.ipv4.tcp_wmem = 1024...原创 2019-05-23 21:37:06 · 293 阅读 · 0 评论 -
线程
进程是管理资源的单位,线程是CPU调度的基本单位。1.定义linux线程创建函数的定义: #include <pthread.h> int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), ...原创 2019-05-22 21:38:37 · 383 阅读 · 0 评论 -
Linux socket编程实战(阻塞)
1.服务端#include<sys/socket.h>#include<sys/types.h>#include<arpa/inet.h>#include<unistd.h>#include<stdio.h>#include<errno.h>int main(int argc, char* argv[]){...原创 2019-05-12 22:05:28 · 618 阅读 · 0 评论 -
socket API(linux)
1.socket函数(1)定义 作用:创建socket #include <sys/types.h> /* See NOTES */ #include <sys/socket.h> int socket(int domain, int type, int protocol);(2)参数domain 设置网络通信域...原创 2019-05-12 13:18:44 · 1115 阅读 · 0 评论 -
进程
1.介绍 现在的操作系统里,进程只是进行管理资源(进程参与调度时,频繁地从CPU的寄存器和进程堆栈的保存运行状态和对应的信息都很耗时,所以现代进程仅仅进行资源管理),真正参与执行的是线程,每个进程都会无形中默认的创建一个线程,让其至少能执行任务。 Linux中定义进程描述符的结构体task_struct,在include/linux/sched.h中定义。2.进程树$...原创 2019-05-11 10:28:13 · 705 阅读 · 0 评论 -
Linux I/O复用技术---select
1.介绍select 函数的作用是检测一组 socket 中某个或某几个是否有“事件”就绪,即可读、可写。 在Linux平台下的select定义如下: /* According to POSIX.1-2001, POSIX.1-2008 */ #include <sys/select.h> /* According to earlier standards */...原创 2019-05-14 22:36:43 · 305 阅读 · 0 评论 -
coredump配置调试
1.介绍 程序异常退出时,会产生一个core文件,该文件记录了程序运行时的内存,寄存器状态,堆栈指针,内存管理信息还有各种函数调用堆栈信息等,我们可以理解为是程序工作当前状态存储生成的一个文件,通过工具分析这个文件,我们可以定位到程序异常退出的时候对应的堆栈调用等信息,找出问题所在并进行及时解决。2.设置core文件生成的目录 如果不设置,默认会在当前的目录生成一个core...原创 2019-05-14 14:33:34 · 986 阅读 · 0 评论 -
Linux I/O复用技术---epoll
1.介绍epoll和之前介绍的select/poll有很大的差异,几乎现在所有的高并发I/O模型都使用epoll(如nginx)。 #include <sys/epoll.h> int epoll_create(int size); int epoll_ctl(int epfd, int op, int fd, struct epoll_event *even...原创 2019-05-19 00:54:43 · 167 阅读 · 0 评论 -
线程的同步手段
线程诞生是从LinuxThreads--->NTPL为了减少切换的代价,线程共享了进程中的资源,进而由于公用了资源,多个线程使用时就需要有序的进行,保证不乱;这种方式就是线程的同步。同步的手段有一下几种:1.互斥锁如果没有请求到锁,那么就把该线程放入等待队列里,挂起整个线程;如果持有锁的线程执行完且释放锁,则会唤醒等待队列里的某个线程去执行。#include <pth...原创 2019-05-22 22:39:58 · 178 阅读 · 0 评论 -
线程池
线程池的作用:在并发编程过程中,会使用线程去执行任务,那么一般的做法是:创建一个线程,执行任务,然后销毁。但是在某些应用场景总需要多个线程去执行任务,频繁的创建和销毁线程会增加一些额外的负担。所以可以这样做:创建一大堆的线程,放在这个池子里,他们在程序运行过程中,一般都不销毁。线程池的设计根据应用场景设计: 主要设计三部分内容:1.设计一个队列保存任务;2.任务队列没有...原创 2019-05-22 22:46:17 · 146 阅读 · 0 评论 -
Linux I/O复用技术---poll
1.介绍poll函数的作用是检测一组 socket 中某个或某几个是否有“事件”就绪,即可读、可写。 在Linux平台下的poll定义如下: #include <poll.h> int poll(struct pollfd *fds, nfds_t nfds, int timeout);参数:fds struct pollfd指针类型,struct p...原创 2019-05-18 10:28:56 · 208 阅读 · 0 评论 -
libevent的使用
注:本例是在windows平台上使用1.官网:http://libevent.org/下载:libevent-2.1.8-stable2.使用vs命令工具进行编译:我使用vs2013。进入到libevent-2.1.8-stable目录下执行:nmake /f Makefile.nmake执行完之后,会生成三个lib文件:libevent.lib lib...原创 2019-05-22 12:26:51 · 988 阅读 · 0 评论 -
多线程中的count++问题---互斥、自旋、原子操作
1.互斥mutex:阻止其他线程的进入,其他线程会挂起2.自旋锁:一直等,(while(1))线程不会切换,操作时间比较短,简单的适合自旋锁3.原子操作:三条指令合在一起#include<stdio.h>#include<pthread.h>#include<unistd.h>#define THREAD_NUM 10pthread_mut...原创 2019-06-11 21:28:59 · 603 阅读 · 0 评论 -
Linux性能优化----内存性能
1.虚拟地址Linux虚拟地址空间分为内核空间和用户空间。32位和64位操作系统的虚拟地址空间图如下:进程在用户态只能访问用户态地址空间,进程进入到内核态才能访问内核态地址空间。虚拟内存和物理内存通过内存映射进行对应。2.虚拟内存的分布3.内存的分配和回收C语言提供的malloc对应的系统调用为brk()和mmap()。对于内存分配小于128k时调用brk(),...原创 2019-07-02 22:20:20 · 376 阅读 · 0 评论 -
Linux性能优化----磁盘I/O性能
1.Linux文件系统Linux系统为每个文件分配了索引节点和目录结构索引节点(index node,简称inode):记录文件的元数据,比如 inode 编号、文件大小、访问权限、修改日期、数据的位置等。 目录结构(directory entry,简称dentry):记录文件的名字、索引节点指针以及与其他目录项的关联关系。索引节点是每个文件的唯一标志,而目录项维护的正是文件系统的树目...原创 2019-07-03 17:30:20 · 1318 阅读 · 0 评论 -
Linux性能优化----网络性能
1.网络的数据转发流程 网络的本质跨计算机的进程通信,说是进程间的通信,其实数据交互的流程非常复杂。数据从机器A流向到机器B,首先从机器A的应用层到数据链路层,层层封装,然后数据再到网卡,从网卡发出,经过复杂的网络到达机器B,机器B和A正好是相反的操作,如下示意图:这里要说明一下,当数据到达B网卡的时候,会通过DMA的方式(网卡直接从主内存之间读写它们的I/O数据,CPU不参...原创 2019-07-10 15:57:08 · 793 阅读 · 0 评论 -
Linux性能优化----CPU性能
一、CPU性能1.uptime--系统平均负载~$ uptime 16:04:46 up 2:41, 4 users, load average: 0.86, 0.33, 0.12前面三个参数代表:系统当前时间,系统运行时间,系统登录用户;load average后面三个数字分别代表1分钟,5分钟,15分钟平均负载。其中,平均负载表示平均活跃进程数。比如:2核CP...原创 2019-06-30 21:54:09 · 748 阅读 · 0 评论 -
Linux socket编程实战(非阻塞)
socket在创建的时候默认是阻塞的,要想设置为非阻塞的有以下几种方法:1.ioctl 和 fcntl 设置已经创建socket的fdioctl用于设备控制 #include <sys/ioctl.h> int ioctl(int fd, unsigned long request, ...);fcntl用于文件控制 #include <uni...原创 2019-05-13 22:15:36 · 7259 阅读 · 0 评论 -
makefile
1.介绍 make命令执行的时候一定需要一个Makefile文件,通过这个Makefile告诉make命令需要怎么样的去编译和链接程序。make命令会自动智能地根据当前的文件修改的情况来确定哪些文件需要重编译,从而自己编译所需要的文件和链接目标程序。2.Makefile规则target... : prerequisites ... command ... ...注...原创 2019-05-08 23:01:11 · 122 阅读 · 0 评论 -
nginx搭建静态网页
1.安装nginx官网:http://nginx.org/下载:wget http://nginx.org/download/nginx-1.14.2.tar.gztar -vxf nginx-1.14.2.tar.gz进入nginx-1.14.2目录cd nginx-1.14.2配置: ./configure --prefix=/usr/local...原创 2019-01-29 23:27:52 · 4676 阅读 · 0 评论 -
nginx 报异常"/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)处理方法
解决:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf原理:使用nginx -c的参数指定nginx.conf文件的位置参考:https://blog.youkuaiyun.com/tjcyjd/article/details/69683360 ...转载 2019-01-29 22:45:25 · 4970 阅读 · 0 评论 -
ubantu安装nginx ./configure: error: the HTTP rewrite module requires the PCRE library.
./configure: error: the HTTP rewrite module requires the PCRE library.You can either disable the module by using --without-http_rewrite_moduleoption, or install the PCRE library into the system,...原创 2019-01-29 20:28:59 · 4791 阅读 · 1 评论 -
windows下vs2017中使用pthread(收藏)
找了好久,这个还行,测试通过了window下使用pthread链接:https://blog.youkuaiyun.com/user11223344abc/article/details/80536280转载 2019-01-16 13:57:29 · 1456 阅读 · 0 评论 -
Linux C编程一些函数汇总
之前项目用到的函数汇总一下:1.access原型:int access(const char *filenpath, int mode);头文件:io.h功 能: 确定文件或文件夹的访问权限。检查某个文件的存取方式,比如说是只读方式、只写方式等。如果指定的存取方式有效,则函数返回0,否则函数返回-1。 用 法: int access(const char *file...原创 2018-12-19 12:33:11 · 903 阅读 · 0 评论 -
Ubantu安装PyCharm
方法一:命令添加源:$ sudo add-apt-repository ppa:mystic-mirage/pycharm安装收费的专业版:$ sudo apt update$ sudo apt install pycharm安装免费的社区版:$ sudo apt update$ sudo apt install pycharm-community方法二:图形化ubantu安装...原创 2018-12-11 11:00:24 · 753 阅读 · 0 评论 -
ubnatu18.04在虚拟机上安装错误:客户机操作系统已禁用 CPU。请关闭或重置虚拟机;end kernel panic - not syncing 虚拟机
在网上找了很多方法都不行,我用的是WMWare10.0,后来下载了WMWare14就可以了下载链接:https://www.cr173.com/soft/68480.html序列码在网也下面:可用 Keys:VMware 2018 v14.x 永久许可证激活密钥FF31K-AHZD1-H8ETZ-8WWEZ-WUUVACV7T2-6WY5Q-48EWP-ZXY7X-Q...原创 2018-12-15 23:14:47 · 2348 阅读 · 1 评论 -
Linux下python2升级到python3
听说官方到2020年不再支持Python2,所以还是安装Python3吧。# wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tar.xz # 获取# tar xvf Python-3.7.1.tar.xz #解压# mkdir /usr/local/python3 # 创建编译安装目录# cd Pytho...原创 2018-11-27 14:42:09 · 967 阅读 · 0 评论 -
日常Linux命令--vi/vim复制一行,粘贴
在光标的位置按“yy”,复制当前行;然后再光标的行按“p”,粘贴到下一行,原来的往下顺移。举例:复制前按"yy",在"p"另外:删除当前行-------dd复制多行----------nyy(比如3yy,复制3行)删除多行----------ndd复制多遍----------np...原创 2018-11-27 14:10:30 · 94382 阅读 · 3 评论 -
"/usr/local/nginx/logs/nginx.pid" failed (2: No such file or directory)
解决:/usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.conf参看:https://blog.youkuaiyun.com/tjcyjd/article/details/69683360转载 2019-01-30 09:04:15 · 14789 阅读 · 1 评论 -
E: 无法获得锁 /var/lib/apt/lists/lock - open (11: 资源暂时不可用)
解决:kill PID 杀死apt的进程参看:https://blog.youkuaiyun.com/xianrenmodel/article/details/81016193原创 2019-01-30 19:59:16 · 1313 阅读 · 0 评论 -
根据进程查端口, 根据端口查进程
转:https://blog.youkuaiyun.com/stpeace/article/details/69934763 1. 根据进程pid查端口: lsof -i | grep pid 2. 根据端口port查进程(某次面试还考过): lsof -i:port 3. 根据进程pid查...转载 2019-02-19 09:41:48 · 7417 阅读 · 0 评论 -
gdb
0.绪GDB(GNU Debugger)是类 Unix(如 Linux)操作系统下的一款开源的 C/C++ 程序调试器。要使用gdb进行调试,需要在gcc/g++命令选项加“-g”,去掉调试信息使用“strip”命令。例如:下面fork.c文件:#include<stdio.h>#include<unistd.h>int main(){ ...原创 2019-05-08 20:49:54 · 283 阅读 · 0 评论 -
Linux扩容(虚拟机)
1.虚拟机设置:看一下个哪个分区再根目录下:lsblk2.查看磁盘容量:fdisk -l看到已经加进来了,但是:3.删除旧分区,新建新分区:fdisk /dev/sda4.刷新:resize2fs /dev/sda2注:下面命令查看格式df -T /dev/sda2xfs格式用xfs_growfs命令,e...原创 2019-04-29 21:28:23 · 3522 阅读 · 0 评论 -
【重学Linux系列(二)之一一Linux内核更换】
0.预备当前版本:4.15升级为5.0.9(我下载的是这个版本)虚拟机配置:(硬盘至少30GB)扩容的方法:https://blog.youkuaiyun.com/pengshengli/article/details/896832251.下载内核:https://www.kernel.org/2.解压:xz -d linux-5.0.9.tar.xz解压为:l...原创 2019-04-28 23:00:54 · 1190 阅读 · 0 评论 -
Linux系统网络I/O模型
Linux系统网络I/O模型几个概念:阻塞非组赛同步异步原创 2019-04-13 20:03:03 · 145 阅读 · 0 评论