
linux
文章平均质量分 78
学习linux编程
bugcoder-9905
长期更新学习笔记
展开
-
【Linux】tmux简单使用
总的来说,Tmux为终端用户提供了更灵活的工作环境,允许他们更有效地管理和组织终端会话,特别是在需要同时处理多个任务或在远程服务器上工作时。它允许你在一个终端窗口中创建多个终端会话,并在它们之间进行切换。重新进入一个会话attach-session。进入tmux会话管理器,进行ping。在某个会话进入另一个会话switch。关闭一个会话kill-session。在某个会话,退出当前会话exit。手动创建一个会话new。查看后台的会话 ls。原创 2023-12-05 21:55:27 · 857 阅读 · 0 评论 -
进程通信机制总结
顾名思义,进程通信( InterProcess Communication,IPC)就是指「进程之间的信息交换」。实际上,「进程的同步与互斥本质上也是一种进程通信」(这也就是待会我们会在进程通信机制中看见信号量和 PV 操作的原因了),只不过它传输的仅仅是信号量,通过修改信号量,使得进程之间建立联系,相互协调和协同工作,但是它「缺乏传递数据的能力」虽然存在某些情况,进程之间交换的信息量很少,比如仅仅交换某个状态信息,这样进程的同步与互斥机制完全可以胜任这项工作。但是大多数情况下,原创 2022-10-26 22:20:29 · 242 阅读 · 0 评论 -
主线程调用return和pthread_exit有什么区别?
pthread_detach()即主线程与子线程分离,两者相互不干涉,原创 2022-09-19 13:31:23 · 968 阅读 · 0 评论 -
Linux netstat命令详解
在互联网中,如果 IP 地址是 IP 服务器在互联网中唯一的地址标识,那么大家可以想象一下:我有一台服务器,它有固定的公网 IP 地址,通过 IP 地址可以找到我的服务器。但是我的服务器中既启动了网页服务(Web 服务),又启动了文件传输服务(FTP 服务),那么你的客户端访问我的服务器,到底应该如何确定你访问的是哪一个服务呢?我们可以简单地理解为每个常规服务都有一个默认端口(默认端口可以修改),这个端口是所有人都知道的,客户端可以通过固定的端口访问指定的服务。State:状态,常见的状态主要有以下几种。.原创 2022-08-31 16:50:20 · 2557 阅读 · 0 评论 -
Linux ps命令详解
僵尸进程的产生一般是由于进程非正常停止或程序编写错误,导致子进程先于父进程结束,而父进程又没有正确地回收子进程,从而造成子进程一直存在于内存当中,这就是僵尸进程。"ps aux"命令可以看到系统中所有的进程,"ps -le"命令也能看到系统中所有的进程。僵尸进程会对主机的稳定性产生影响,所以,在产生僵尸进程后,一定要对产生僵尸进程的软件进行优化,避免一直产生僵尸进程;对于已经产生的僵尸进程,可以在查找出来之后强制中止。ps 命令是最常用的监控进程的命令,通过此命令可以查看系统中所有运行进程的详细信息。...原创 2022-08-31 16:23:18 · 3481 阅读 · 0 评论 -
Linux top命令详解
另外值得说明的是,其统计的不仅仅是运行中的任务,也包含 D (uninterruble_sleep, disk sleep) 状态的任务,其数据也要结合 CPU 核数来看才有意义。简单来说,平均负载除 CPU 核数大于3就负载有问题了。Linux 中的平均负责有如下有一个值,一个简单的理解是 他们分别对应 1分钟,5分钟,15分钟的平均负载。但是其实它是指数移动平均来计算的,也就是之前的负载值对当前的负载值的影响比较小。......原创 2022-08-31 15:51:08 · 777 阅读 · 0 评论 -
Linux三剑客awk数组、判断、循环
统计次数:统计每个用户ip出现的次数,统计每种状态码出现次数,统计系统中每个用户被攻击的次数,统计攻击者ip出现的次数。awk使用条件判断时,第一个条件在{动作}前,后面还有条件判断用if。求和:统计每个ip消耗的流量。awk数组中取变量不用。...原创 2022-08-16 17:23:55 · 919 阅读 · 0 评论 -
Linux三剑客awk模式匹配
代码】Linux三剑客awk模式匹配。原创 2022-08-16 16:06:05 · 1434 阅读 · 0 评论 -
Linux三剑客awk之行和列
AWK 是一种处理文本文件的语言,是一个强大的文本分析工具,也是一门语言,有自己的数据结构,可以进行过滤、统计、计算、取行取列等操作之所以叫 AWK 是因为其取了三位创始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的 Family Name 的首字符wak -F, 'BEGIN{print "name"}NR==2{print $2}END{print "end of file"}' oldboy.txt # 条件为,行==2。......原创 2022-08-16 11:42:48 · 2556 阅读 · 0 评论 -
Linux三剑客sed之反向引用
反向引用:先保护(小括号取出匹配的部分)、再使用。原创 2022-08-16 10:25:24 · 832 阅读 · 0 评论 -
Linux三剑客sed之增删改查
实际生产环境中,如果文件太大,我们一般不用vim/cat等命令查看,一般使用more/less/head/tail/grep/sed/awk等查看。查找从11:02:13开始,到11:02:140结束的日志,查找从11:02:13开始,到11:02:14结束的日志。在指定行添加指定内容或进行替换。sed默认不支持扩展正则,查找11:02:13的日志。实际上记一个a就可以。......原创 2022-08-15 21:43:22 · 2376 阅读 · 0 评论 -
Linux三剑客sed介绍
sed是一种流编辑器,它是文本处理中非常好的工具,能够完美的配合正则表达式使用处理时,把当前处理的行存储在临时缓冲区中(逐行处理),称为“模式空间”(pattern space);接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕;接着处理下一行,这样不断重复,直到文件末尾处理时文件内容并没有改变,除非你使用重定向存储输出或者 -i 参数sed主要用来自动编辑一个或多个文件,可以将数据行进行替换、删除、新增、选取等特定工作,简化对文件的反复操作,编写转换程序等。......原创 2022-08-15 19:51:29 · 171 阅读 · 0 评论 -
Linux三剑客grep核心参数
w参数可以在我们过滤端口号的时候使用,比如我们过滤22端口,如果不用-w,就会出现类似于2267、12234、3227等端口,加上-w就只过滤出22端口了。我们查看1.py是否在运行时,就算1.py没有运行,grep的结果还是有一个,这是grep自己产生的进程,于是我们用。参数过滤掉grep进程。如果1.py没有运行,就输出0,运行就大于0。...原创 2022-08-15 18:00:35 · 157 阅读 · 0 评论 -
Linux三剑客 grep扩展正则使用
如果说我们不想要文件中其他的字符,只想要能匹配上的,加。grep命令默认只支持基础正则,我们一般用。要求:17位数字,最后一位是数字或者大写X。以下几种方式都能实现匹配。参数,反向查找,查找不满足正则的行。:匹配方括号内字符的任何排列形式。用组合符号匹配连续出现的数字。参数显示匹配过程即可。不行,该指令匹配的是。这需要用到grep的。......原创 2022-08-15 17:35:05 · 560 阅读 · 0 评论 -
Linux三剑客 grep基础正则使用
我们一般这样使用:[a-z]、[A-Z]、[0-9],用于匹配ASCII码表上相邻的字符。匹配[abc]内任意一个字符,可我们看见匹配了ac,这是俩字符,我们显示一下匹配过程。没找到以m结尾的行,我们cat查看文件内容,发现是以m结尾的行。表示出现0次或者0次以上,出现0次,相当于是空,即没有这个字符。注意,这条指令匹配的是以任何字符结尾的行,而不是以。我们想匹配从开头到字符t的部分,中间可以是任意字符。我们想匹配从开头到字符o的部分,中间可以是任意字符。查看文件中的隐藏字符发现,m后面还有空格,使用。..原创 2022-08-15 16:03:19 · 554 阅读 · 0 评论 -
gdb调试
启动程序后,在14行打断点,然后继续运行,这时会先执行13行printf,然后阻塞在14行的断点处。我们打印一下n和g_var的值,看是否和printf的相同。我们重新启动程序,进入add函数后bt打印一下函数调用堆栈。使用s进入函数,finish结束当前函数。进入gdb调试界面,并在12行打断点。再次重新启动程序,删除第17行的断点。:显示当前进程的线程信息。b + 行号/函数名。clear + 行号。thread 线程号。...原创 2022-08-14 17:10:32 · 953 阅读 · 0 评论 -
增加系统调用以树形结构打印进程pid
一、设计思路二、实现过程1. 下载linux内核源码2. 在系统调用表中添加系统调用号3. 系统调用头文件中写出自定义的系统调用函数4. 修改内核源码,添加自定义系统调用函数的实现5. 安装依赖工具,重新编译内核,并使用新的内核6. 编写测试代码并测试三、编译内核遇到的问题以及解决方法四、参考资料原创 2022-02-14 21:25:09 · 435 阅读 · 0 评论 -
Linux多线程编程
线程同步: 多线程环境中,无论调度顺序怎么样,都能得到我们想要的结果同步的方法: 信号量、互斥锁、条件变量、读写锁互斥锁只能用于互斥型场景,它的作用等同于二值(0/1)信号量的作用pthread_create:创建并启动线程pthread_exit:退出线程#include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <string.h>#include <pthre原创 2022-01-06 19:23:12 · 2127 阅读 · 5 评论 -
Linux守护进程
守护进程: 后台执行,运行周期长,无需和用户交互原创 2022-01-04 10:09:24 · 1954 阅读 · 0 评论 -
Linux中的进程通信
管道可以用来在两个进程之间传递数据,如: ,其中就是管道,其作用就是将 ps 命令的结果写入管道文件,然后 grep 再从管道文件中读出该数据进行过滤。管道通信方式为 半双工点对点通信创建管道文件命令:默认大小:4096字节读进程写进程当读进程关闭时,再写入则收到内核发送的SIGPIPE,导致程序结束管道文件在内存里,不在硬盘里,显示永远为0父子进程可利用无名管道进行通信,fork后管道文件描述符的引用计数分别加1管道特点:临界资源: 同一时刻,只允许被一个进程或线程访问的资源临界区: 访原创 2021-08-24 20:16:03 · 802 阅读 · 3 评论 -
Linux中文件、进程替换exec以及信号signal
一、操作文件的系统调用int open(const char* pathname, int flags,mode_t mode)ssize_t read(int fd, void* buf, size_t count)ssize_t write(int fd, const void* buf,size_t count)int close(int fd)练习:C语言拷贝文件#include<stdio.h>#include<stdlib.h>原创 2021-08-01 15:57:12 · 614 阅读 · 0 评论 -
Linux 多进程编程fork
一、关于printf的缓冲区1、阻塞3秒后,屏幕上才出现hello2、屏幕上先看到hello,才看到阻塞的现象在这里,\n的作用和fflush(stdout)的作用一样,都是将缓冲区中的数据显示到屏幕上。三种情况下,需要将缓冲区的数据显示到屏幕上,缓冲区刷新、放满、程序结束。由于显示到屏幕上需要使用系统调用功能,所以CPU要从用户态切换为内核态,比较浪费时间,而这个缓冲区则可以提高时间利用效率。exit()先fflush缓冲区,然后再_exit退出程序。而_exit直接退出程序,以上的代原创 2021-07-31 11:04:52 · 446 阅读 · 2 评论 -
linux基本命令以及库文件
关于前后台任务切换:bg % + 任务号fg % + 任务号批量结束进程: pkill + 进程名监测系统运行状态: topvim常用配置:将文件打包或解包: tar + 参数 + 文件名将文件压缩或解压: gzip + 包名...原创 2021-07-23 22:47:10 · 784 阅读 · 2 评论