Linux学习篇
文章平均质量分 93
stay_the_course
这个作者很懒,什么都没留下…
展开
-
Linux系统负载高排查指南
机器负载高,无从下手?看完必会原创 2022-06-21 17:20:05 · 4009 阅读 · 0 评论 -
守护进程
一、概念守护进程(又称精灵进程)是脱离于终端,并且在后台运行的进程。特点: 1. 一般是一直在服务器上执行; 2. 守护进程脱离于终端是为了避免进程在执行过程中的信息在任何终端上显示并且进程也不会被任何终端所产生的终端信息所打断,无控制终端,而且不许需要和用户交互,只需要处理任务; 3. 而且守护进程不受客户端的登录与退出的影响,因为其自成会话,自成进程组;二、创建API: pid_t se原创 2017-06-27 16:37:48 · 244 阅读 · 0 评论 -
crond和crontab
1.概念 crond的概念和crontab是不可分割的。crontab是一个命令,在Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于”crontab”文件中,以供之后读取和执行。该词来源于希腊语chronos(χρόνος),原意是时间。而crond正是它的守护进程。 2.用法 crontab -u //设定某个用户的cron服务 c原创 2017-06-27 08:59:00 · 256 阅读 · 0 评论 -
计算机网络端口分类
逻辑意义上的端口有多种分类标准,下面将介绍常见的按端口号分布的分类:知名端口(Well-Known Ports)知名端口即众所周知的端口号,范围从0到1023,这些端口号一般固定分配给一些服务。比如21端口分配给FTP(文件传输协议)服务,25端口分配给SMTP(简单邮件传输协议)服务,80端口分配给HTTP服务,135端口分配给RPC(远程过程调用)服务等等。网络服务是可以使用其他端口号的,如果不原创 2017-07-06 16:12:28 · 804 阅读 · 0 评论 -
数据链路层MAC帧校验——CRC
CRC循环冗余校验是一种被广泛应用于计算机网络中数据链路层帧校验的方法。 具体做法如下图: 这里选定P:1101、M:10101、校验码位数为3原创 2017-06-28 11:03:05 · 3548 阅读 · 0 评论 -
Linux中的socket通信——TCP
一、socket通信原理简述 socket是 一种特殊的IO,完成的是网络中的两个主机上的两个特定进程的通信,我们暂且忽略协议栈和具体的网络传输过程,其原理简单地说就是主机A的x号进程将要通信的数据通过网络发送给主机B上的y号进程,而我们知道在网络中用IP地址可以标识一台主机,在一个机器上,用一个序号(将用以通信的进程序号称为端口号)就可以标识一个进程,所以套接字就由IP+端口号组成,原创 2017-07-06 18:43:53 · 646 阅读 · 0 评论 -
Shell字符串截取的八种方式
shell字符串截取str=’IP:192.168.3.123,port:8080’# 截取echo ‘1: ‘${str#*,} #是运算符,*,表示从左侧第一个字符开始,到,结束,删除这些字符 上例显然截取之后结果为 port:8080## 截取echo ‘2: ‘${str##*.} *.表示从左侧第一个字符开始,到最后一个.结束,将最后一个.之前的字符全部删除% 截取,原创 2017-07-27 09:32:22 · 5665 阅读 · 0 评论 -
Linux中socketpair用法简析
1.作用在Linux中socketpair用以创建一对匿名的,并且已经连接的套接字,完成双向通信的任务,我们知道,用pipe()、mkfifo() 这两个方法创建出来的管道都是单向通信的,这是管道这种进程间通信的缺陷所在,socketpair就是用来弥补管道的只能单向通信这一缺点,实现了双向通信。2.API第1个参数doman,表示协议族,只能为AF_LOCAL或者AF_UNIX;第2个参数type原创 2017-09-06 11:50:17 · 732 阅读 · 0 评论 -
Linux系统git公钥配置
大神详解戳这里转载 2019-03-25 17:03:20 · 2118 阅读 · 0 评论 -
Linux--信号屏蔽
我们知道一个信号从产生(Generation)到实际执行这个信号的处理动作称为信号递达(Delivery),信号从产生到递达之间的状态,称为信号未决(Pending)。进程可以选择阻塞(Block )某个信号。被阻塞的信号产生时将保持在未决状态,直到进程解除对此信号的阻塞,才执行递达的动作。 需要注意的的是:阻塞和忽略是不同的,只要信号被阻塞就不会递达,而忽略是在递达之后可选的一种处理动作。画一个原创 2017-06-12 21:18:43 · 408 阅读 · 0 评论 -
线程安全和可重入函数
1.线程安全目前的计算机科学中,线程是操作系统调度的最小单元,进程是资源分配的最小单元。当对一个复杂对象进行某种操作时,从操作开始到操作结束,被操作的对象往往会经历若干非法的中间状态。调用一个函数(假设该函数是正确的)操作某对象常常会使该对象暂时陷入不可用的状态(通常称为不稳定状态),等到操作完全结束,该对象才会重新回到完全可用的状态。如果其他线程企图访问一个处于不可用状态的对象,该对象将不能正确响原创 2017-06-11 19:34:58 · 279 阅读 · 0 评论 -
TCP连接与释放解析
我们知道TCP是面向连接的可靠的传输层协议,TCP协议中用了很多的方法来保证他的可靠性,比如相应应答机制、丢失重传机制、滑动窗口等,这里简单讲解一下,连接与释放和TIME_WAIT状态。连接时的三次握手先看一个简单的示意图: 建立连接的过程:Client向Server发送一个SYN位为1的请求建立连接报文,并且这个报文的序号为1000,这个序号用作临时地址,因为接收端要对接收到的报文进行确认原创 2017-07-03 10:01:36 · 533 阅读 · 0 评论 -
Linux进程之僵尸进程和孤儿进程简析
僵尸进程是指:一个子进程在其父进程没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。如果这个父进程还存在并且一直不调用wait(),那么这个僵尸进程将无法回收,等到其父进程退出后该进程将被init回收。下面我们在Linux环境下验证一下,编写如下代码: 对代码作简要分析,用fork()函数创建进程,fork()函数有两个返回值,给子进程返回0,给父进程返回子进程的PID原创 2017-04-26 20:25:08 · 484 阅读 · 0 评论 -
Linux指令-stat简析
stat可以查看查看的内容有很多,具体可以使用不同的参数查看相应的内容,这里简要分析一下无参的stat指令。如下图所示,向myfile文件中写入100个hello,然后执行stat指令查看myfile的状态信息: 蓝色方框内的: Inode:结点编号 硬链接:当前结点被应用的次数,相当于引用计数 cat myfile指令的显示结果: 现原创 2017-03-16 14:02:59 · 373 阅读 · 0 评论 -
Linux环境下权限简析
进入一个文件夹或者目录中需要什么权限?x—可执行权限可能我们会觉得是需要可读权限,但其实不然,需要的是可执行权限,我们来作如下验证: 这里用mkdir命令创建了一个名为infile的文件夹,它的初始权限如图中红色方框内画出来的为 dwxrwxr-x(775) ,接下来用chmod指令修改它的权限为666,也就是去掉了它所有者,用户组以及其他使用者的可执行权限,然后用cd指令进入infile,得到原创 2017-03-15 23:07:08 · 320 阅读 · 0 评论 -
使用GDB调试多进程/多线程程序
首先简单总结一下gdb常用命令:我们看这样一个简单的例子: gdb默认的是执行主进程(父进程),可以通过show follow-fork-mode命令查看当前是什么模式(图中1),可以通过set follow-fork-mode [child|parent],set detach-on-fork [on|off],来修改gdb 的调试模式(图中2),简单的说就是,不修改模式,gdb只执行父进程。进原创 2017-06-08 16:23:21 · 342 阅读 · 0 评论 -
TCP定时器
TCP 管理着四个不同的定时器:重传定时器、坚持定时器、保活定时器 以及 2MSL 定时器。重传定时器 为了防止丢失数据报文段或确认报文段,当 TCP 发送报文段时,启动了特定报文段的重传计时器,若在计时器超时之前收到对报文段的确认,则撤销计时器。若收到特定报文段的确认之前计时器已经超时,则重传该报文,并把计时器复位。这里最重要的是超时的时间计算,有关该时间的请查阅具体的算法,这里不再进行记录原创 2017-07-10 16:30:53 · 287 阅读 · 0 评论 -
TCP标志位
TCP标志位 简述: 详解:URG: 此标志表示TCP包的紧急指针域(后面马上就要说到)有效,用来保证TCP连接不被中断,并且督促中间层设备要尽快处理这些数据;ACK: 此标志表示应答域有效,就是说前面所说的TCP应答号将会包含在TCP数据包中;有两个取值:0和1,为1的时候表示应答域有效,反之为0;PSH: 这个标志位表示Push操作。所谓Push操作就是指在数据包到达接收端以后,立原创 2017-07-10 16:45:27 · 666 阅读 · 0 评论 -
Linux子进程的异步等待方式
我们知道当一个父进程创建一个子进程时,最好要调用wait或者waitpid函数等待子进程,不然会产生僵尸进程造成是内存泄漏的问题。一般父进程在等待子进程时有两种方式等待,一种是阻塞式等待,这时父进程不能处理自己的工作;另一种是以非阻塞式等待,父进程处理自己工作的同时,要定时去查看有没有子进程等待清理。1.验证子进程在退出的时候会给父进程发送一个SIGCHLD信号一般情况下父进程收到这个信号的默认处理原创 2017-06-11 16:19:02 · 625 阅读 · 0 评论 -
Linux系统编程之atexit()简析
atexit()叫做注册函数,会在main函数return之前调用。我们来看简单的代码:其中的func1()、func2()、func3()、func4()和如图所示的func5()一样,只有一句输出用于标识,然后在main()函数中的代码进入和return之前的位置输出两句话作为标志,我们看到如下的运行结果:由此可以看到atexit()函数有点类似于C++的析构函数,先定义的后析构,atexit(原创 2017-04-26 20:43:46 · 279 阅读 · 0 评论