
Linux
oria2006
这个作者很懒,什么都没留下…
展开
-
python+wget快速搭建文件下载环境
1.在工作目录中创建一个待下载文件a.gz2.python搭建一个http serverpython -m http.server3.wget http://192.168.31.133:8000/a.gz原创 2021-04-26 19:27:06 · 568 阅读 · 0 评论 -
Linux C语言内存分配方式
malloc#include <stdlib.h>void *malloc(size_t size);从堆中分配指定长度的内存,不初始化分配的内存,有固定的对齐长度,比如32字节allocvoid *calloc(size_t nmemb, size_t size);和malloc的区别是alloc能将分配的内存区域初始化为nmembreallocvoi...原创 2020-04-20 17:51:43 · 363 阅读 · 0 评论 -
Redis服务启动过程中用到的几个系统函数(非常有用)
1.setlocale(LC_COLLATE,""); //地域信息设置2.tzset(); /* Populates 'timezone' global. */ //时区设置3.srand(time(NULL)^getpid());//随机数种子原创 2021-01-28 17:07:24 · 227 阅读 · 0 评论 -
Redis 定时处理机制实现流程
int serverCron(struct aeEventLoop *eventLoop, long long id, void *clientData) /* Types and data structures */typedef void aeFileProc(struct aeEventLoop *eventLoop, int fd, void *clientData, int mask);typedef int aeTimeProc(struct aeEventL...原创 2020-12-17 14:40:28 · 2537 阅读 · 0 评论 -
Linux C语言热加载技术
ptrace原创 2020-11-30 11:42:58 · 522 阅读 · 0 评论 -
一种优化TC(流控)规则下发的方法
标准用法tc命令在tc代码中增加一个socket侦听,将tc命令原创 2020-11-24 09:40:52 · 517 阅读 · 0 评论 -
linux基础之-sysrq-trigger
1.立即重新启动计算机echo "b" > /proc/sysrq-trigger2.立即关闭计算机echo "o" > /proc/sysrq-trigger3.导出内存分配的信息echo "m" > /proc/sysrq-trigger4.导出当前CPU寄存器信息和标志位的信息echo "p" > /proc/sysrq-trigger5.导出线程状态信息echo "t" > /proc/sysrq-trigger6.故意让系统崩溃echo原创 2020-11-25 14:19:11 · 1016 阅读 · 0 评论 -
一种能够提升CS架构中服务端性能的方法
服务端并发处理数据目前基本都是在数据处理阶段采用并发技术,这主要有两个原因:第一,一般情况下瓶颈都卡在数据处理阶段,比如磁盘读写;第二,实现不了并发接收数据,因为服务端口,比如WEB服务80端口,只能绑定到一个socket上。对于有些使用场景,比如客户端向服务端推送大量数据包,这时候如果接收端不能并发处理可能会存在丢包丢数据的情况。为了能够实现并发接收数据,可以为服务端绑定多个服务器端口。但是标准的端口号只有一个,比如WEB服务80端口,绑定的其它扩展端口,网络中的其它客户端是不知道的,客户端只原创 2020-11-23 16:36:16 · 556 阅读 · 0 评论 -
Socket 安全读和写(read/write)
接手的一个小程序,因为原本已经在线上运行了一段时间,本着能不动就不动的原则,没有调整源码。但是看到源码中读写还是直接调用的read和write的,还是忍不住把这块改了int myRead(int fd, char *buf, int count){ ssize_t nread, totlen = 0; while(totlen != count) { nread = read(fd,buf,count-totlen); if (nread == 0)原创 2020-11-23 16:22:21 · 255 阅读 · 0 评论 -
C语言实现的内存池
用C语言写了个插件,在第三方服务器上跑。对方基于稳定、安全性等方面的考虑,提出了各种限制条件,其中有一个要求是程序运行期间,只允许申请一次内存空间。逼着只能自己实现一个内存池。步骤1.程序启动时申请一块内存M;步骤2.封装malloc函数,该函数实现申请的内存节点都从M内存块中划分;步骤3.封装free函数,该函数实现将内存节点还给M内存块;步骤4.为了避免内存节点碎片,释放后的小内存节点需要合并成一块。相比直接调用malloc,有下面几点优点:1.提升了性能,相对于malloc调用原创 2020-11-18 16:40:55 · 465 阅读 · 1 评论 -
Socket几种使用模式
1. socket->accept->rcv(阻塞/非阻塞)->read/write(单线程\多线程)2.socket0/socket1->select/poll/epoll->accept->rcv(阻塞/非阻塞)->read/write(单线程\多线程)3.socket0/socket1->select/poll/epoll->accept->rcv(阻塞/非阻塞)->aio_read/write...原创 2020-11-17 16:23:53 · 524 阅读 · 0 评论 -
Linux 进程空间地址映射(smaps)说明
00400000-00404000 r-xp 00000000 08:03 803280 //文本区,如字符串参数Size: 16 kBRss: 12 kBPss: 12 kBShared_Clean: 0 kBShared_Dirty: 0 kBPrivate_Clean: 0 kBPr...原创 2020-11-13 17:07:42 · 1003 阅读 · 0 评论 -
NGINX 事件(epoll)处理框架源码分析
函数调用int ngx_cdeclmain(int argc, char *const *argv) | |___>ngx_single_process_cycle/ngx_master_process_cycle | |___>ngx_start_worker_processes | |___>ngx_spawn_process原创 2020-06-22 20:21:17 · 272 阅读 · 0 评论 -
Nginx 配置文件源码分析
struct ngx_cycle_s { void ****conf_ctx; …………}#define ngx_get_conf(conf_ctx, module) conf_ctx[module.index]//ngx_cycle.cngx_cycle_t *ngx_init_cycle(ngx_cycle_t *old_cycle){ ………… cycle->conf_ctx = ngx_pcalloc(pool,.原创 2020-06-17 10:41:43 · 249 阅读 · 0 评论 -
SHELL $0, $#, $*, $@, $?, $$
$NN是数字,类似main(int argc,char *argv[])中的argv参数数组如执行[root@localhost flock]# ./flock.sh 10 200 300$0:是脚本名称./flock.sh$1:第一个参数 10$2:第二个参数200,依次类推$#参数数量,类似argv如执行[root@localhost flock]...原创 2020-04-26 14:06:12 · 324 阅读 · 0 评论 -
Nginx 编译安装
相关路径配置/etc/nginx/默认页面/var/www/html配置配置/etc/nginx/sites-available相关操作重启sudo service nginx restart原创 2020-04-23 19:35:10 · 187 阅读 · 0 评论 -
实测有名管道缓存大小
在需要用FIFO的时候,特别是读取端是第三方开源组件的时候(一般第三方开源组件默认都支持文件加载数据的方式比如ffmpeg),有名管道就特别方便。今天测试了缓存大小实测应该是64K,#include <stdio.h>#include <unistd.h>#include <fcntl.h>#include <sys/stat.h>#i...原创 2020-04-17 19:35:51 · 1881 阅读 · 0 评论 -
Linux常用的系统调用
#include <stdio.h>#include <unistd.h>int main(int argc, char **argv){ int fd_num = sysconf(_SC_OPEN_MAX ); printf("Fd Num %d\n", fd_num); int cpu_num = sysconf( _SC_NPROCE...原创 2020-04-17 17:05:17 · 243 阅读 · 0 评论 -
动态修改进程名
ps -aux查看nginx进程,可以根据进程名称知道其作用root 56085 0.0 0.0 22480 64 ? Ss Apr11 0:00 nginx: master process /usr/local/nginx/sbin/nginx -c /usr/local/nginx/conf/nginx.confnobody 5608...原创 2020-04-17 16:00:53 · 902 阅读 · 0 评论 -
intptr_t 与指针的区别
intptr_t在/usr/include/stdint.h文件中定义了typedef int intptr_t;intptr_t定义的目的是为了保持地址,它与指针保存的值一样相同点两者保存的值一样,都是指向某个内存空间的地址值区别指针:能访问地址指向的内存空间intptr_t:只是保持地址值,不能访问地址指向的内存空间...原创 2020-04-17 10:03:10 · 803 阅读 · 2 评论 -
利用flock锁确保一个进程或shell脚本只能同时运行一个
#include <stdio.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h>#include<unistd.h>int main(int argc, char **argv){ int ...原创 2020-04-16 19:44:11 · 745 阅读 · 0 评论 -
PCAP基本源码结构
大概了解了一下PCAP的基本源码结构,以及关键函数调用pcap_t *pcap_create(const char *device, char *errbuf) | |__> p = pcap_create_interface(device_str, errbuf); p->opt.device = device_str; | |____> pcap...原创 2020-03-13 15:28:42 · 771 阅读 · 0 评论 -
killall脚本,根据名称kill进程
发现centos没有killall命令,不能根据进程名称kill,脚本写了一个killall.sh脚本#!/bin/shNAME=$1NUM=`ps -ef |grep $NAME | grep -v 'grep' | grep -v 'killall' |awk '{print $2}' |wc -l`for((i=1;i<=$NUM;i++)); do PID=`ps ...原创 2020-03-12 10:39:15 · 867 阅读 · 0 评论 -
线程pthread在join和detach状态下的资源回收问题
1. 创建线程1.1 方法1void my_pthread_create(void){ thread_t thread_id; pthread_create(&thread_id, NULL, pthread_fn, (void *)&threads_argv); pthread_join(threads, NULL);}pthread_j...原创 2020-01-16 19:44:58 · 2035 阅读 · 0 评论 -
linux-制作文件系统
接手一个嵌入式项目,公司只给了一块主板,SDK中只有kernel,烧录还需要文件系统,手动制作一个文件系统1.新建文件系统跟目录rootfs2.在rootfs里创建目录 etc proc dev等linux系统运行需要的文件在dev目录下创建两个设备节点mknod -m 666 console c 5 1mknod -m 666 null c 13etc目录下创建文件ini...原创 2020-01-02 16:55:51 · 346 阅读 · 0 评论 -
Socket实现C/S架构的基本代码
目录Client端代码Server端代码:Server端多线程版本代码:Client端代码#include <stdio.h>#include <string.h>#include <sys/types.h>#include <sys/stat.h>#include <sys/socket.h>#in...原创 2019-12-27 14:47:20 · 619 阅读 · 1 评论 -
Linux环境中一个C程序常用的一些头文件
#include <sys/types.h>重定义了基本的数据类型如int8_t、int16_t#include <string.h>字符、字节操作函数如strcpy、memcpy#include <stdio.h>输出、输出函数如printf、fprintf、vscanf等#include <errno.h>#incl...原创 2019-12-27 11:11:29 · 229 阅读 · 0 评论 -
Linux 常用命令汇总
grep1.在指定目录下(当前目录)搜索字符grep -rn "H123" ./2.在指定目录下(当前目录)中的指定文件类型中搜索字符grep -rn --include=*.c "H123" ./tartar cf 1.tar.bz2 1/打包文件夹1下的所有C文件,包含子目录tar -cvf CDK2_20180802.tar.bz2 `find CDK2/...原创 2018-07-17 10:05:55 · 308 阅读 · 0 评论 -
常用的Linux 系统资源监控命令
top:监控系统CPU使用情况htop:可以看做是top的高级版本NetHogs:能够监控到每个进程的网络流量IPTraf:网络流量监控,可以基于网卡、IP、协议等监控iotop:监控进程磁盘I/Onetstat:监控TCP\UDP流lsof:监控打开的句柄iftop:监控TCP\UDP流的网络流量iostat:监控每个磁盘分区的读写情况...原创 2019-11-27 14:31:40 · 248 阅读 · 0 评论