Linux学习
文章平均质量分 67
雪沫沫
程序代码是个很神奇的东西,我不知道我会在这条路上走多久,但是和他打交道的每一秒我都是开心的,付出努力的。
展开
-
Linux学习——初级命令
(1)ls命令:列出当前目录内容 (2)lsblk命令:详细列出当前文件夹里的内容(其中的文件也有可能是文件夹) (3)md5sum命令:计算和检验MD5信息签名 (4)mkdir命令:创建新的目录 (5)uname命令:显示机器名、操作系统和内核详细信息 (6)history命令:代表历史记录,显示了在终端所执行过的所有命令的历史 (7)sudo命令:允许授权用户执行超级用户或其他用户原创 2016-11-01 22:03:25 · 569 阅读 · 0 评论 -
Linux网络基础——TCP中的定时器
TCP 是提供可靠的传输层,它使用的方法之一就是确认从另一端收到的数据。但是数据和确认都可能会丢失。TCP 通过在发送时设置一个定时器来解决这个问题。如果当定时器溢出时还没收到确认,它就会重传该数据。关键在于超时和重传策略,即怎样决定超时的时间间隔和如何确定重传的频率。 1、TCP 通过以下方式提供可靠性: ◆ 应用程序分割为TCP认为最合适发送的数据块。由TCP传递给IP的信息单位叫做报文原创 2017-06-19 23:41:41 · 300 阅读 · 0 评论 -
Linux网络基础——TCP握手与挥手
1.为什么连接的时候是三次握手,关闭的时候却是四次握手? 因为当Server端收到Client端的SYN连接请求报文后,可以直接发送SYN+ACK报文。其中ACK报文是用来应答的,SYN报文是用来同步的。但是关闭连接时,当Server端收到FIN报文时,很可能并不会立即关闭SOCKET,所以只能先回复一个ACK报文,告诉Client端,”你发的FIN报文我收到了”。只有等到我Server端所有的报原创 2017-06-19 23:44:15 · 183 阅读 · 0 评论 -
Linux——利用Shell脚本编写进度条
初级版本(原始进度条):#!/bin/bashecho "hello"printf "\n"sleep 3i=0bar=''lable=('|' '\\' '-' '/')while [ $i -le 100 ]do#echo $iprintf "[%-100s][%d%%][%c]\r" "$bar" "$i" "${lable[$i%4]}"bar='#'$barlet i原创 2017-07-11 15:48:28 · 1402 阅读 · 0 评论 -
Linux【Shell脚本】—eval命令和命令代换(`和$())
1、eval命令: 1.eval命令将首先会扫描命令行进行所有的替换,然后再执行命令。该命令使用于那些一次扫描无法实现其功能的变量。该命令对变量进行两次扫描。这些需要进行两次扫描的变量有时候被称为复杂变量。 2.eval也可以用于回显简单变量,不一定是复杂变量。Value=nameeval echo $Valuename3.两次扫描 创建test.txt文件写入“hello world”,然原创 2017-07-01 20:22:43 · 576 阅读 · 0 评论 -
Linux网络基础——CRC校验
为了确保数据在计算机系统中传输和存储中正确可靠,引入了信道编码。对于信道编码有两个方面,一是要求编码后的码流频谱适应信道频率特性,二是检测并纠正产生的误码。前者属于谱成形技术,后者为差错控制技术。CRC码属于后者。它是通过增加冗余信息,达到发现误码的目的。常见的冗余校验有奇偶校验,海明校验,循环冗余校验。CRC(循环冗余校验):循环冗余码是建立在近世代数基础上的。编解码电路简单,检错能力强。在计算机原创 2017-06-10 23:59:40 · 1255 阅读 · 0 评论 -
Linux【网络编程】——I/O多路转接之Poll服务器
Select服务器: 系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这⾥里等待,直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄,其实就是一个整数,我们最熟悉的句柄是0、1、2三 个,0是标准输入,1是标准输出,2是标准错误输出。0、1、2是整数表示的,对应的FILE *结构的表示就是s原创 2017-07-02 20:17:21 · 274 阅读 · 0 评论 -
Linux【网络编程】——I/O多路转接之Select服务器
Select: 系统提供select函数来实现多路复用输入/输出模型。select系统调用是用来让我们的程序监视多个文件句柄的状态变化的。程序会停在select这?里等待,直到被监视的文件句柄有一个或多个发生了状态改变。关于文件句柄,其实就是一个整数,我们最熟悉的句柄是0、1、2三个,0是标准输入,1是标准输出,2是标准错误输出。0、1、2是整数表示的,对应的FILE *结构的表示就是stdin、原创 2017-07-02 20:40:50 · 286 阅读 · 0 评论 -
Linux【网络编程】——I/O多路转接之epoll服务器
epoll是为处理大批量句柄而作了改进的poll。,被公认为Linux2.6下性能最好的多路I/O就绪通知方法。 epoll只有epoll_create,epoll_ctl,epoll_wait 3个系统调用。int epoll_create(int size); 创建一个epoll的句柄。自从linux2.6.8之后,size参数是被忽略的。需要注意的是,当创建好epoll句柄后,它就是会占原创 2017-07-01 21:51:52 · 297 阅读 · 0 评论 -
Linux网络基础——ARP协议
ARP协议: 地址解析协议 对于以太网,数据链路层上是根据48bit的以太网地址来确定目的接口,设备驱动程序从不检查IP数据报中的目的IP地址。ARP协议为IP地址到对应的硬件地址之间提供动态映射。 在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地址,而数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址原创 2017-06-12 23:21:25 · 377 阅读 · 0 评论 -
Linux网络基础——NAT技术与代理服务器
NAT技术: NAT(Network Address Translation,网络地址转换)是将IP 数据包头中的IP 地址转换为另一个IP 地址的过程。在实际应用中,NAT 主要用于实现私有网络访问公共网络的功能。这种通过使用少量的公有IP 地址代表较多的私有IP 地址的方式,将有助于减缓可用IP 地址空间的枯竭。NAT工作流程: ①如下图这个 client 的 gateway 设定为 NAT原创 2017-06-12 23:40:36 · 294 阅读 · 0 评论 -
Linux网络基础——端口
端口: “端口”是英文port的意译,可以认为是设备与外界通讯交流的出口。端口可分为虚拟端口和物理端口,其中虚拟端口指计算机内部或交换机路由器内的端口,不可见。例如计算机中的80端口、21端口、23端口等。物理端口又称为接口,是可见端口,计算机背板的RJ45网口,交换机路由器集线器等RJ45端口。电话使用RJ11插口也属于物理端口的范畴。硬件端口: CPU通过接口寄存器或特定电路与外设进行数据传原创 2017-06-12 23:55:25 · 647 阅读 · 0 评论 -
Linux网络基础——TCP报文中URG和PSH比较
TCP报文标志位中URG与PSH URG(紧急位): 急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。T C P的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据,不进入接收缓冲就直接交给上层进程,余下的数据要进入接收缓冲的) PSH(急迫位): 在一个交互程序中,当客户发送一个命令给服务器时,转载 2017-06-19 23:34:28 · 307 阅读 · 0 评论 -
Linux任务定时服务——crond与crontab
Crond: Crond是linux系统中用来定期执行命令或指定程序任务的一种服务或者软件。(Centos5以后默认存在) 当优化开机自启动的时候,第一个就是crond。 Crond服务默认情况(每分钟),会检查系统中是否有需要执行的定时任务,如果有哦,就会根据事先定义好的规则来执行这个定时任务。 Crond服务就像个闹钟一样。Cron原创 2017-06-07 21:44:22 · 238 阅读 · 0 评论 -
Linux下的一种特殊进程——守护进程
守护进程:也称精灵进程(Daemon),是运行在后台的一种特殊进程。也是一种很有用的进程。因为Linux的大多数服务器就是用守护进程实现的(比如:Internet服务器inetd,Web服务器httpd),而且它可以完成许多系统任务(比如:作业规划进程crond)。 其特点是独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。 创建守护进程的步骤:原创 2017-06-07 19:55:51 · 292 阅读 · 0 评论 -
Linux下编写进度条的背景知识及代码实现
Linux下编写进度条的背景知识及代码实现 背景知识: 1.回车与换行 回车符,可不是\n,我们可以把\n看成两个动作的合体,分别是回车 和换行,都有自己对应的符号,这利用回车符一直在同一个位置输出造成动态的假象 2.原理: 因为Linux系统下的输出有缓存,如果及时刷新显示,就可以得到我们想看到的效果,这里必须调用:fflush(stdout); 解释一下,fflush(stdo原创 2017-02-19 23:34:51 · 263 阅读 · 0 评论 -
常见的进程调度算法
常见的进程调度算法 一、先来先服务于短作业优先 1.先来先服务调度算法 (FCFS)算法是一种最简单的调度算法,该算法即可用于作业调度, 也可用于进程调度。 2.短作业(进程)优先调度算法 SJ(P)F算法是指对短作业或进程优先调度的算法。它们可以分别用 于作业调度和进程调度 短作业优先(SJF)是指从后备队列中选择一个或若干个估计运行时间 最短的作业,将它们调入内存运原创 2017-02-19 23:36:09 · 746 阅读 · 0 评论 -
关于task_struct的描述
关于task_struct的描述 Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程, task_struct是Linux中的【进程控制块PCB结构】的具体数据结构 这个结构体包含了一个进程所需的所有信息。它定义在linux-2.6.38.8/include/linux/sched.h文件中。 下面对task_struct这个结构体 进行各个字段的详细介绍 1.原创 2017-02-19 23:38:47 · 171 阅读 · 0 评论 -
Linux下Vim配置
1.在工作目录~/下用ls -a查看是否有.vimrc文件,如果没有就建立touch.vimrc新建该文件,在目录下新建目录 .vim,并进入.vim目录,建立plugin、doc、syntax三个目录 命令: $ mkdir .vim $ cd .vim $ mkdir plugin doc syntax2.简单地为.vimrc文件写入内容转载 2017-02-19 23:42:41 · 392 阅读 · 0 评论 -
atexit()注册终止函数
注册终止函数(main执行结束后调用的函数) void atexit(void (*func)(void)) 一个进程可以登记多达32个函数,这些函数将由exit自动调用 验证atexit函数调用注册函数的顺序:#include <stdio.h>#include <stdlib.h>void fun1(){ printf("run fun1()\n");}void fun2()原创 2017-02-20 23:26:27 · 368 阅读 · 0 评论 -
Linux下s和t权限描述
s权限,是为了让一般使用者临时具有该文件所属主/组的执行权限。就比如/usr/bin/passwd在执行它的时候需要去修改/etc/passwd和/etc/shadow等文件,这些文件除了root外,其他用户都没有写权限,但是又为了能让普通用户修改自己的密码,只能时临时让他们具有root的权限。所以这个s权限就是用来完成这个特殊任务的。s权限只能应用在二进制的可执行文件上。 如果你不想让普通用户修原创 2017-02-20 23:37:21 · 736 阅读 · 0 评论 -
Linux下用gdb调试程序
Linux下用gdb调试程序 在执行test.c文件时添加调试信息。即:gcc -o test test.c -g 以下是进入gdb后输入的命令及其意图,只是些基本命令操作 l(list):显示代码。不会显示所有的代码,如果需要则继续输入l b 行号(函数名、文件名):在某行(函数,文件处)打断点。 info b:查看断点 d 断点编号:去掉该断点 断点打好久开始调试程序 r(run原创 2017-03-01 22:06:47 · 199 阅读 · 0 评论 -
简单的Makefile编写
Makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中。 makefile带来的好处就是——“自动化编原创 2017-03-08 22:08:34 · 483 阅读 · 0 评论 -
Linux下进程间通信方式——管道
管道(pipe):是⼀一种最基本的IPC机制,由pipe函数创建#include <unistd.h>int pipe(int filedes[2]);调用pipe函数时在内核中开辟一块缓冲区(称为管道)用于通信,它有一个读端一个写端,然后通过filedes参数传出给用户程序两个文件描符,filedes[0]指向管道的读端,filedes[1]指向管道的写端(很好记,就像0是标准输⼊入1是标准输出原创 2017-03-07 21:01:35 · 296 阅读 · 0 评论 -
Linux——死锁
什么是死锁 例如:现有资源A、B,进程C、D 描述如下: 资源A和资源B,都是不可剥夺资源, 现在进程C已经申请了资源A,进程D申请了资源B, 进程C接下来的操作需要用到资源B,而进程D恰好也在申请资源A, 进程C、D都得不到接下来的资源,那么就引发了死锁。 即如果一个进程集合里面(进程C和进 程D)的每个进程(进程C和进程D)都在等待只能由这个集合中的其他一个进程(对原创 2017-04-13 21:01:48 · 397 阅读 · 0 评论 -
设置自己的sleep函数
main函数调用mysleep函数,后者调⽤用sigaction注册了SIGALRM信号的处理函数handler。调用alarm(seconds)设定闹钟调用pause等待,内核切换到别的进程运行seconds秒之后,闹钟超时,内核发SIGALRM给这个进程从内核态返回这个进程的用户态之前处理未决信号,发现有SIGALRM信号,其处理函数是handler切换到用户态执行handler函数,原创 2017-04-27 00:33:18 · 507 阅读 · 0 评论 -
Linux——gdb调试多进程和多线程
调试命令: 查询正在调试的进程:info inferiors 切换调试的进程: inferior 添加新的调试进程: add-inferior [-copies n] [-exec executable] , 可以用file executable来分配给inferior可执行文件。 其他:remove-inferiors infno, detach inferior默认设置下,在调原创 2017-06-13 00:04:08 · 546 阅读 · 0 评论