![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Linux
文章平均质量分 71
M_jianjianjiao
这个作者很懒,什么都没留下…
展开
-
Linux下 定时任务执行
Linux下 定时任务执行单次定时任务at 与 周期定时任务cron设置单次定时任务at 命令设置一次定时任务当需要再某一特定时间 执行一个任务的时候,我们使用at 命令进行设置。比如设置在某一时间发送邮件,或者在半个小时后自动关机,此时我们就可以使用at设置任务在30 分钟后输出hello[root@VM_70_170_centos ~]# at now + 30 minutesat> echo "hello"at> <EOT>job 1 at Th原创 2021-03-04 22:46:56 · 453 阅读 · 1 评论 -
linux 系统查看、设置、获取环境变量
linux 系统的环境变量操作系统的环境变量一般是指用来指定系统运行环境中的一些参数常见的环境变量有:PATH:指定命令的搜索路径HISTSIZE: 保存历史命令的记录条数SHELL:当前的shell ,值通常是bin\bashHOME:指定用户的主工作目录查看环境变量:使用env 命令来查看所有的系统的环境产看系统的环环境环境变量使用 echo $NAME //NAME...原创 2020-01-03 16:25:55 · 4670 阅读 · 2 评论 -
死锁的产生及处理策略条件
死锁什么是死锁?我们先从互斥量造成的死锁说起。当一个线程去申请一个已经被持有,但是还没有释放的互斥量时,线程将会被阻塞,直到该互斥量被释放。如果该互斥量不被释放,该线程将会被一直阻塞。因次,基于以上的原因,我们可以认为当一个线程去申请一个永远不会被释放的互斥量时,该线程将会被永远阻塞,这种情景我们称之为死锁。更宽泛的说,死锁就是,一个线程阻塞的等待一个永远不会为真的条件。以下为两个常...原创 2018-12-02 23:29:46 · 179 阅读 · 0 评论 -
生产者与消费者模型--基于posix信号量的
基于posix信号量的生产者于消费者模型(此处只有一个生产者与一个消费者)使用一个循环队列作为生产者于消费者之间的交易场所,生产者向其中放数据,消费者从中拿取数据。为了达到同步使用posix信号量。posix 信号量信号量就相当于一个计数器,记录共享资源的份数。每当有一个线程申请访问该共享资源,就将信号量的数目–,当信号量的数目为零时,表示所有的公共资源都正在被访问。其他想要继续申请信号量...原创 2018-11-30 23:21:09 · 689 阅读 · 0 评论 -
读写锁---理解及测试实例
读写锁互斥锁与读写锁的区别同样都是锁,互斥锁与读写锁之间什么区别和联系?互斥锁:当使用互斥锁时,每次只能有一个线程拿到锁,进入临界区,访问临界资源。在对临界资源的访问中,可以将访问方式份为两种:(1)读取数据(2)修改数据我们对与临界资源加锁,是为了保护临界资源的安全性与正确性,防止多个线程在同一时间段中对临界资源同时修改。但是,读取数据时我们只对于数据进行读取,并不对与数据进行修改...原创 2018-12-01 00:44:39 · 1115 阅读 · 0 评论 -
telnet 安装及使用
Centos7telnet的安装及使用检测是否安装telnet命令rpm -qa telnet-serverrpm -qa xinetd安装telnetyum list |grep telnetyum -y install telnet-server.x86_64yum -y install telnet.x86_64yum list |grep xinetdyum -y ...转载 2019-01-13 14:47:48 · 1185 阅读 · 0 评论 -
cookie 与 sessionId
cookie 与 sesionhttp协议是无状态的,每次不会保存用户的状态信息优点:http由于是无状态的,不必保存客户端的状态,所以可以减少服务器的CPU和内存的消耗http协议十分简单由于http协议是无状态的,无法得知上一次请求的状态信息,当有的需要登陆时,每次的请求都要进行认证,在请求中添加自己的账号密码信息,但是每次都将账号和密码放入其中无疑增加了繁琐程度,每次的请求服务...原创 2019-01-15 17:20:33 · 521 阅读 · 1 评论 -
HTTP协议详解
http协议应用层协议:双方的一种约定,能够保证发送双方发送的数据都能被对方所能正确的解析。URL: 统一资源定位符定位资源所在的位置互联网上的内一个文件都有一个唯一的位置资源:对web资源的统称,包括图片文字等平时所说的网址即为urlurl格式<scheme>:// <user>:<password> @<host>...原创 2019-01-15 17:21:19 · 899 阅读 · 0 评论 -
UDP用户数据报协议
传输层传输层负责将数据从发送端传输到接收端TCP与UDP都属于传输层协议端口号通过IP与端口号可以在网络中确定一个唯一的进程端口号可以标识一台主机上的唯一的一个进程一个进程可以绑定多个端口号可以通过源IP地址 目的IP地址 源端口号 目的端口号 协议的版本来确定一个唯一的通信可以通过setsockopt()实现端口的复用第三个参数使用SO_REUSEADD...原创 2019-01-15 21:45:13 · 406 阅读 · 0 评论 -
TCP报文格式详解
TCP协议 传输控制协议TCP的特点:面向连接: 使用TCP协议进行通信时,需要先建立连接可靠传输: 具有确认应答机制,超时重传等机制保证数据的可靠传输面向字节流的: 传输的数据是面向字节流的,没有长度的限制关于连接的概念在内核中有有一个结构体来描述连接TCB,再通过队列将其管理起来操作系统维护一个链接是需要成本的包括时间成本和空间资源成本必须要使用合理的方式管理连接否则会导...原创 2019-01-15 21:47:44 · 3497 阅读 · 0 评论 -
TCP的拥塞控制 粘包问题等
拥塞控制TCP慢启动机制在开始进行数据发送时,如果在一开始就发送大量的数据,可能此时网络上的数据比较多,比较拥堵。此时数据就会堵在网络上,使网络更加拥堵。此时,可以通过慢启动机制,先发送少量的数据探测出当前网络的拥堵的情况,然后再决定发送多少数据。按多大速度传输数据。拥塞窗口发送开始时,拥塞窗口的大小定义为1每次收到一个ACK应答,拥塞窗口的大小就会加1每次发...原创 2019-01-22 07:46:02 · 462 阅读 · 0 评论 -
TCP TIME_WAIT状态
TCP的TIME_WAIT 状态什么是TIME_WAIT状态TCP的TIME_WAIT是指在四次挥手中,主动断开方 在收到对方发送的FIN后,向对方发送ACK后就会进入TIME_WAIT状态处于TIME_WAIT状态时,端口被占用,无法创建新连接只有等待2MSL(报文在网络中的最大生存时间)后,才会进入CLOSED状态TIME_WAIT状态一般是主动断开的一方TIME_WAIT存在...转载 2019-01-22 07:48:11 · 627 阅读 · 0 评论 -
一个基于TCP HTTP的具有文件共享功能的服务器
基于TCP、HTTP的文件共享服务器服务器的基础架构构建TCP服务器对于文件的传输来说,我们必须要保证文件内容的准确性。所以在数据传输时我们选择保证数据可靠传输的TCP协议。首先使用socket创建套接字进行对端口号与IP地址进行绑定。然后监听来自客户端的请求。连接任务的处理对于来自客户端的连接请求,我们使用多线程对每个请求进行处理。能够保证并发性的请求处理。考虑到线程的创建时...原创 2019-03-01 01:05:04 · 1238 阅读 · 0 评论 -
生产者和消费者模型实现(基于条件变量)
基于条件变量的生产者和消费者模型实现我们在这里使用使用一个生产者和一个消费者来实现。并且使用一个定容的队列来作为两者的缓冲区域,即交易场所。生产者与消费者模型及条件变量理解点这里基本思路:生产者向队列中放入数据消费者从队列中拿走数据存放数据的队列最为两者共享区域,必须进行互斥访问,使用互斥量保持同步,避免饥饿问题。使用条件变量当队列为空时,消费者进行等待,直到被生产者唤醒消费...原创 2018-11-27 08:16:53 · 543 阅读 · 0 评论 -
生产者与消费者模型 及 条件变量
生产者与消费者问题 及 条件变量什么是生产者和消费者模型生产者,顾名思义就是生产东西的人,而消费者就消费的人。在系统中,假设有一块内存,生产者要向内存中放数据,而消费者要从内存区域中拿数据。这片内存区域可以被所有的线程访问,所以这片内存区域就是临界资源,而在对临界区的访问时,要保证不会出错,必须每次对临界区的访问是互斥的。所以当有许多生产者消费者时,每次只能有一个生产者放数据,也只能有一个消...原创 2018-11-25 23:31:56 · 428 阅读 · 0 评论 -
进程 创建 等待 与 终止
进程创建等待与终止进程的创建:Linux通过fork函数进行进程的创建他从已存在的进程中创建一个新进程。新进程为子进程,而原进程为父进程。#include <unistd.h>pid_t fork(void);子进程返回0,父进程返回子进程pid,出错返回-1进程调用fork后,内核分配新的内存块和内存数据结构给子进程,将父进程部分数据结构内容拷贝至子进程,添加子进程到...原创 2018-10-23 09:09:38 · 161 阅读 · 0 评论 -
Linux下动态库和静态库生成 及基础
静态库与动态库静态库与动态库都是二进制文件静态库静态库的名字一般以lib前缀开头,以.a结尾 ,例如c静态库为 libc.a静态库(.a):程序在编译链接的时候将库的代码链接到可执行文件中。程序运行的时候就不需要静态库了。(程序将需要的代码拷贝一份到可执行文件中,此后再运行时就不需要静态库了)生成静态库:先生成二进制的.o 文件[wens@localhost 10_19]$ ls...原创 2018-10-21 15:13:19 · 225 阅读 · 0 评论 -
理解文件系统
理解文件系统文件包含两部分 :属性信息和内容信息 存放在硬盘上。Linux中内存区中保存文件的属性信息的地方为inode .通常情况下一个文件一个inode,一个inode号。[wens@localhost code2]$ ls -ltotal 28-rw-rw-r--. 1 wens wens 34 Oct 14 01:59 file-rw-rw-r--. 1 wens wen...原创 2018-10-21 15:20:18 · 445 阅读 · 0 评论 -
文件描述符fd
文件描述符在linux中open函数调用成功后会返回一个非负整数,这个非负整数就是文件描述符。Linux 默认情况下会缺省打开三个文件描述符 标准输入0 标准输出1 标准错误20 1 2 对应的物理设备一般是: 键盘 显示器 显示器文件描述符就是从0开始的小整数。当我们打开文件时,操作系统需要创建相应的数据结构来描述目标文件 file结构体 表示一个已经打开的文件对象。当进程执行op...原创 2018-10-21 15:34:19 · 3382 阅读 · 0 评论 -
文件IO调用接口 open close read write
openlinux下,open函数用于打开和创建文件。#include &amp;lt;sys/types.h&amp;gt;#include &amp;lt;sys/stat.h&amp;gt;#include &amp;lt;fcntl.h&amp;gt;int open(const char *pathname, int flags);int open(const char *p原创 2018-10-21 15:36:53 · 293 阅读 · 0 评论 -
实现简易shell (输入 输出 追加重定项)
实现简易shell (输入 输出 追加重定项)在之前的基础上加上支持 输出重定项 输入重定项 追加重定向相关知识可以查看系统文件io调用接口文件描述符 1 #include &amp;lt;stdio.h&amp;gt; 2 #include &amp;lt;unistd.h&amp;gt;..原创 2018-10-21 15:49:15 · 209 阅读 · 0 评论 -
进程程序替换
进程程序替换使用fork创建进程后,子进程与父进程执行相同的代码程序(有可能执行不同的代码分支)。子进程通过调用一种exec函数,执行另一个程序。当进程调用一种exec函数时,该子进程的用户空间代码和数据完全被新程序替换,从新程序的启动例程开始执行。调用exec函数并不创建新进程,所以exec调用前后进程的id没有发生改变替换函数六种以exec开头的函数统称为exec函数#includ...原创 2018-10-21 15:51:47 · 143 阅读 · 0 评论 -
Linux ipc System V 消息队列
Linux ipc System V 消息队列消息队列提供了从一个进程向另一个进程发送有类型数据块的方法。消息队列由操作系统内核提供,可以同时被两个进程同时看到。每个数据块都被认为是有一个类型值的,接受者可以接受不同种类型的值。每个消息对列的最大长度是有上限的(MSGMAX),每个消息队列的总字节数是有上限的(MSGMNB),系统上消息队列的总数也是有上限的(MSGMNI)。I P C ...原创 2018-10-26 11:08:42 · 169 阅读 · 0 评论 -
linux管道 匿名管道 命名管道 详解及用
管道管道是文件,文件类型 为p 的是管道文件管道文件的本质:两个不同的进程能看到一份公共的管道文件。管道是一个进程连接到另一个进程的数据流。匿名管道匿名管道的创建#include &amp;lt;unistd.h&amp;gt;函数:int pipe(int fd[2])参数:fd数组 ,fd[0]表示读端,fd[1]表示写端//存放的是两个文件的 fd返回值:成功返回为0 失...原创 2018-10-24 16:53:24 · 474 阅读 · 0 评论 -
信号的阻塞
信号的阻塞每个信号都有两个标志位分别表示阻塞block和未决pending,还有一个函数指针表示处理动作。(block与pending是两个位图,)信号产生时,内核在该进程控制块中设置该信号的未决标志位,当信号抵达时,才消除该信号。posix.1允许递送系统一次或多次该信号,Linux中,在常规信号递达之前产生多次只记一次,而实时信号产生多次,可依此放在一个队列中。sigset_t 信...原创 2018-11-13 14:30:42 · 392 阅读 · 0 评论 -
可重入函数与volatile限定符
可重入函数与volatile限定符可重入函数进程捕捉到信号并对其进行处理时,进程正在执行的正常指令序列就被信号处理函数中断,进程就会跳转去执行信号处理函数。当执行完信号处理函数返回后,再返回之前主程序执行流继续按原指令执行。此时会出现一个问题,假设主执行流正在执行一个链表的插入操作,在一个无头的单链表中,当主程序刚将一个节点头插到首节点上,但还未将头指针前移时,捕捉到信号,而信号处理函...原创 2018-11-13 14:38:00 · 231 阅读 · 0 评论 -
pthread_cancel为何无法取消掉一个线程
pthread_cancel如何取消线程pthread_cancel取消线程的机制线程可以通过调用pthread_cancel函数来取消同一进程中的其他线程pthread_cancel函数#include &lt;pthread.h&gt;int pthread_cancel(pthread_t tid);成功取消返回0 不成功返回非0pthread_cancel 函数的作用...原创 2018-11-18 20:49:55 · 1767 阅读 · 0 评论 -
进程 PCB 僵尸进程 孤儿进程 环境变量
进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配(cpu时间,内存)和调度的基本单位,是操作系统结构的基础。描述进程-PCB为了描述控制进程的运行,系统中存放进程的管理和控制信息的数据结构称为进程控制块(PCB Process Control Block),它是进程实体的一部分,是操作系统中最重要的记录性数据结构。它是进程管理和控制的最重要的数据结...原创 2018-10-23 09:08:40 · 303 阅读 · 0 评论