Linux
文章平均质量分 71
编程鸟
编程使我快乐,编程使我富裕,编程使我幸福!我爱编程!
展开
-
Linux 的du和df命令
1 du命令1.1 概念du的英文名为disk usage,含义为显示磁盘空间的使用情况,用于查看当前目录的总大小。1.2 选项(1)-s:对每个Names参数只给出占用的数据块总数。(2)-a:递归地显示指定目录中各文件及子目录中各文件占用的数据块数。若既不指定-s,也不指定-a,则只显示Names中的每一个目录及其中的各自目录所占的磁盘块数。(3)-b:以字节为单位列出磁盘空间使用情况。(4)-c:最后再加上一个总计(系统默认设置)。(5)-l:计算所有的文件大小,对硬链接文件,则计算多原创 2021-10-14 10:08:58 · 1215 阅读 · 0 评论 -
Linux的netstat命令
netstat是一个用来查看网络状态的重要工具。(1)语法:netstat [选项](2)功能:查看网络状态。(3)常用选项:1)n:拒绝显示别名,能显示数字的全部转化成数字。2)l:仅列出有listen(监听)的服务状态。3)p:显示建立相关链接的程序名。4)t(tcp):仅显示tcp相关选项。5)u(udp):仅显示udp相关选项。6)a(all):显示所有选项,默认不显示listen相关的信息。【例】...原创 2021-10-04 21:35:46 · 137 阅读 · 0 评论 -
Linux下ps参数详解
1.1 ps的概念Linux命令ps:(Process Status的缩写),该命令常常用来列出系统中当前运行的进程。ps是显示瞬间进程状态,并不动态连续。如果想对进程进行实时监控应该用top命令。2.1 常见参数(1)-a:显示所有终端机下执行的进程,除了阶段作业领导者之外。显示现行终端机下的所有进程,包括其他用户的进程。(2)-A:显示所有进程。(3)-c:显示CLS和PRI栏位。列出进程时,显示每个进程真正的指令名称,而不包含路径,参数或常驻服务的标示。(4)-C:<指令名称>原创 2021-09-18 21:32:59 · 4762 阅读 · 0 评论 -
Linux 读写锁
一、读写锁的概念在编写多线程的时候,有一种情况是十分常见的。那就是,有些公共数据修改的机会比较少。相比较改写,它们读的机会反而高得多。通常而言,在读的过程中,往往伴随着查找的操作,中间耗时比较长。给这种代码段加锁,会极大地降低程序的效率。那么有没有一种方法,可以专门处理这种多读少写的情况呢?那就是读写锁。读写锁的本质是一种自旋锁。注意:写独占,读共享,写锁优先级高。二、读写锁接口1、初始化int pthread_rwlock_init(pthread_rwlock_t *restrict rwl原创 2021-09-17 10:54:32 · 1291 阅读 · 0 评论 -
POSIX信号量
POSIX信号量和System V信号量作用相同,都是用于同步操作,达到无冲突的访问共享资源,但是POSIX可以用于线程间同步。该类函数存放在semaphore.h头文件中。1、初始化信号量int sem_init(sem_t *sem, int pshared, unsigned int value);参数:(1)pshared:0表示线程间共享,非零表示进程间共享。(2)value:信号量初始值。2、销毁信号量int sem_destroy(sem_t *sem);3、等待信号量(原创 2021-09-16 23:21:12 · 160 阅读 · 0 评论 -
对死锁的基本认识
1、死锁的含义死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用将无法推进下去。2、产生死锁的原因(1)系统资源不足;(2)进程运行的推进顺序不合适;(3)资源分配不当等。总之:如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有线的资源而陷入死锁。其次,进程运行的推进顺序与速度不同,也可能产生死锁。3、产生死锁的四个必要条件(1)互斥条件:一个资源每次只能被一个进程使用。(2)占有且等待:一个进程因请求资源而阻原创 2021-07-05 09:23:07 · 212 阅读 · 0 评论 -
进程间关系
1.1 进程组每个进程除了有一个进程ID之外,还属于一个进程组。进程组是一个或多个进程的集合。通常,它们与同一作业相关,可以接收来自同一终端的各种信号。每个进程组有一个唯一的进程组ID。每个进程组都有一个组长进程。组长进程的标识是进程组ID等于进程ID。组长进程可以创建一个进程组,创建该组中的进程,然后终止。只要在某个进程组一个进程存在,则该进程组就存在,这与其组长进程是否终止无关。实例如下:释:(1)&:表示将进程组放在后台执行。(2)父进程PPID:11954。(3)进程PID:12原创 2021-06-11 15:32:38 · 341 阅读 · 2 评论 -
Linux 守护进程
1.1 认识守护进程守护进程也称为精灵进程(daemon),是运行在后台的一种特殊进程。它独立于控制终端并且周期性的执行某种任务或等待某些发生的事件。守护进程是一种很有用的进程。Linux的大多数服务器就是用守护进程实现的。比如:ftp服务器,ssh服务器,web服务器httpd等。同时,守护进程完成许多系统任务。比如,作业规划进程crond等。Linux系统启动时会启动很多系统服务进程,这些系统服务进程没有控制终端,不能直接和用户交互。其他进程都是在用户登录或运行程序时创建,在运行结束或用户注销时终止原创 2021-06-10 17:56:42 · 6386 阅读 · 0 评论 -
数据流重定向
一、含义 数据流重定向就是将某个命令执行后应该要出现在屏幕上的数据传输到其他的文件或设备去 。如下图所示: 二、使用 1、标准输入(stdin):通过键盘或文件输入,代码为0,使用“<”或“<<”。 【例1】利用cat命令来创建一个文件 【例2】用“cat >”创建一个新的文件,并以stdin替换键盘的输入 【例3】用“<<”表示结束输入 2、标准输出(stdout):指命令执行所回传原创 2018-01-27 10:47:21 · 1515 阅读 · 0 评论 -
进程间通信之管道
一、 进程间通信介绍 1、进程通信的目的 (1)数据传输:一个进程需要将它的数据发送给另一个进程。 (2)资源共享:多个进程之间共享同样的资源。 (3)通知事件:一个进程需要向另一个或一组进程发送信息,通知它(它们)发生了某种事件(如进程终止时要通知父进程)。 (4)进程控制:有些进程需要完全控制另一个进程的执行(如Debug进程),此时控制进程希望能够拦截另一个进程的所有陷入和异常,并能原创 2018-01-25 08:42:07 · 1471 阅读 · 0 评论 -
Linux的进程环境
一、命令行参数 当执行一个程序时,调用exec的进程可将命令行参数传递给该新程序。注意:通常echo(1)程序不回显第0个程序。 【例】将所有命令行参数回显到标准输出 注:ISO和POSIX.1都要求argv[argc]是一个空指针。这就使得我们可以将参数处理循环改写为:for(i = 0; argv[i] != NULL; i++)。其中,argc是命令行参数的数目,argv是指向参数的各个原创 2017-11-26 11:03:32 · 1541 阅读 · 0 评论 -
Linux环境变量
1、环境变量的概念 1.1 环境变量的含义 环境变量一般是指操作系统中指定操作系统运行环境的一些参数。它相当于一个指针,想要查看变量的值,需要加上“$”。 1.2 环境变量的分类 1.2.1 按作用的范围分 在Linux中的变量,可以分为环境变量和本地变量: 1)环境变量:相当于全局变量,存在于所有的Shell中,具有继承性; 2)本地变量:相当于局部变量只存在当前Shell中,本地...原创 2018-07-02 23:50:46 · 20116 阅读 · 3 评论 -
进程替换
1、替换原理: 用fork创建子进程后执行的是和父进程相同的程序,也有可能执行不同的代码分支,子进程往往要调用一种exec函数以执行另一个程序。当进程调用一种exec函数时,该进程的用户空间代码和数据完全被新进程替换,从新程序的启动例程(main函数)开始执行。记住:调用exec并不创建新进程,所以调用exec前后该进程的id并为改变。exec只是用磁盘上的一个新程序替换了当前进程的正文段、数据段原创 2017-11-23 18:43:33 · 2423 阅读 · 1 评论 -
线程的等待与分离
一、线程等待 1、为什么需要线程等待? 因为已经退出的线程,其空间没有被释放,仍然在进程的地址空间内。创建新的线程不会复用刚才退出线程的地址空间。2、线程等待函数–pthread_join (1)功能:等待线程结束 (2)原型:int pthread_join(pthread_t pthread, void **value_ptr); (3)参数: 1)thread:线程ID; 2)V原创 2018-03-06 19:33:22 · 1789 阅读 · 0 评论 -
线程中的互斥量
一、互斥量——mutex 1、为什么需要互斥量? 1)大部分情况,线程使用的数据都是局部变量,变量的地址空间在线程栈空间内,这种情况变量归属单个线程,其他线程无法获得变量。 2)但有的时候,很多变量都需要在线程间共享,这样的变量称为共享变量,可以通过数据的共享,完成线程间的交互。 3)多个线程并发的操作共享变量,会带来一些问题! 【例】存在共享变量问题的售票系统代码#include<std原创 2018-03-07 11:15:53 · 3121 阅读 · 1 评论 -
线程中的条件变量
当一个线程互斥的访问某个变量时,它可能发现在其他线程改变状态之前,它什么也做不了。例如,一个线程访问队列时,发现队列为空,它只能等待,直到其它线程将一个节点添加到队列中,这种情况就需要用到条件变量。一、条件变量函数 (1)初始化 int pthread_cond_init(pthread_cond_t *restrict cond, const pthread_condatrr_t *restr原创 2018-03-07 20:39:49 · 2672 阅读 · 0 评论 -
线程的创建和终止
一、线程的概念: 1、什么是线程 (1)在一个程序里的一个执行路线就叫做线程(thread)。更准确的定义是:线程是“一个进程内部的控制序列”。 (2)一切进程都有一个执行线程。2、进程和线程 (1)进程是资源竞争的基本单位。 (2)线程是程序执行的最小单位。 (3)线程共享进程的数据,但也拥有自己的一部分数据:线程ID、一组寄存器、栈、errno、信号屏蔽字、调度优先级。3、一进程的多原创 2018-03-06 15:01:28 · 1705 阅读 · 0 评论 -
静态库和动态库
一、静态库 1、静态库的命名 静态库的命名方式是“libxxx.a”,其中“xxx”为库名,库名前加“lib”,后缀用“.a”。2、工作过程 在编译过程中,静态库的所有数据都被载进目标文件里。程序运行的时候就不再需要静态库了。3、优点 编译后的执行程序不需要外部函数库支持。4、缺点 (1)静态函数库编译成的文件占用的内存比较大。 (2)当静态库改变时,程序必须重新编译。...原创 2018-07-04 14:45:11 · 1342 阅读 · 0 评论 -
POSIX信号量
1、概念 POSIX信号量与SYSTEM信号量的作用相同,都是同步操作,达到无冲突地访问共享资源。但是不同的是,POSIX信号量可以用于线程间同步。其实,POSIX信号量是具有等待队列的计数器,它的相关函数存放在“semaphore.h”文件中。2、初始化信号量 (1)函数原型:int sem_init(sem_t *sem, int pshared, unsigned int value...原创 2018-07-27 10:38:58 · 749 阅读 · 0 评论 -
Linux下的文件操作命令
一、修改文件时间或创建新文件——touch 1、命令格式 touch [参数选项] 文件名 【例】新建一个空的文件并查看时间 2、命令参数 1)-a 或–time=atime或–time=access或–time=use:仅更改访问时间。 2)-c 或–no-create :仅修改文件时间,不创建任何文档 3)-m 或–time=mtime或–time=modify :只更改变原创 2017-08-07 00:19:42 · 3138 阅读 · 0 评论 -
Linux的进程控制
一、进程创建 1、初识fork()函数 在Linux中,fork函数是非常重要的函数,它从已存在的进程中创建一个新进程。这样,新进程为子进程,原进程为父进程。 (1)调用fork函数的格式,如下:#include <unistd.h>#include <sys/types.h>pid_t fork(void);返回值:子进程返回0;父进程返回子进程的PID;出错返回-1。 (2)调用fo原创 2017-11-22 12:48:39 · 1680 阅读 · 0 评论 -
sed工具
一、概念 1、含义: sed意为流编辑器,在shell脚本和Makefile中作为过滤器使用非常普遍,也就是把前一个程序的输出引入sed的输入,经过一系列编辑命令转换为另一种格式输出。因为sed和vi都源于早期UNIX的ed工具,所以很多sed命令和vi的末行命令是相同的。2、工作方式: Sed是一种线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着原创 2017-11-06 11:31:04 · 2065 阅读 · 0 评论 -
Shell脚本的符号
1、概念: Shell是一门非编译型的解释型语言。交互式是指指令一条一条的执行,而批处理是指把所有指令一次性执行完。2、执行方式: (1)./file.sh (2)/bin/bash 3、Shell变量 (1)环境变量:环境变量可以从父进程传给子进程。 (2)本地变量:只存在于当前shell进程,用set命令可以显示当前shell定义的所有变量。环境变量是所有进程都有的变量,而本地变量是原创 2017-10-28 20:44:53 · 3137 阅读 · 0 评论 -
Linux下的文件查找指令
1、which命令 which命令是根据PATH这个环境变量所规范的路径去查询“执行文件”的文件名,并返回第一个搜索结果。也就是说,使用which命令,就可以看到系统命令在PATH中是否存在,以及执行的到底是哪一个位置的命令。 命令格式:which 可执行文件名称 【例】用root与一般账号查询ifconfig这各命令的完整文件 释:因为which是根据用户所设置的PATH变量内的目录原创 2017-09-11 13:09:02 · 2302 阅读 · 0 评论 -
硬连接与软连接
1、文件的存储概述 文件一般存储在硬盘上,硬盘的最小存储单位叫做”扇区”(sector),每个扇区存储大小为512B。当操作系统读取硬盘的时候,为了提高速度,不是一个扇区一个扇区地读取,而是一次连续读取几个扇区,也就是一次读取一个”块”(block)。这种由多个扇区组成的”块”是文件存取的最小单位,一般常见的块的大小是4k。 文件内容存储在”块”上,而文件的基本信息则存储在inode索引结点原创 2017-09-08 14:11:36 · 2516 阅读 · 0 评论 -
权限粘滞位
1、权限粘滞位的含义 权限粘滞位是目录的可执行权限。 目录的可执行权限表示你是否可以在这个目录下执行命令。如果目录没有x权限,就无法对目录执行任何命令,甚至无法cd进入目录,即使你对目录有r权限也不行 。目录的rw权限表示的是你可以对目录里面的文件进行读写,因此对于任何访问者而言,只要他对一个目录有w权限,那么他就能删除这个目录里面的文件。这样的的话,文件的权限就成摆设,只要对一个目录原创 2017-09-24 09:45:03 · 3165 阅读 · 0 评论 -
初识Linux操作系统
1、计算机: 接受用户的指令和数据,经过中央处理器的数据与逻辑单元运算处理后,以产生或存储成有用的信息。 广义上讲:我们周边有好多宽泛概念上的计算机,如加减乘除计算机,手机,GPS,ATM等等。2、计算机五大单元: (1)输入单元:包括键盘,鼠标,扫描仪,手写板等。 (2)中央处理器(CPU):含有算术逻辑,控制,记忆等单元。 (3)输出单元:显示器,打印机。3、冯诺依曼体系结构:原创 2017-08-05 00:31:19 · 3313 阅读 · 0 评论 -
vi和vim编辑器
一、为何要学vim? 因为很多Linux命令默认使用vi作为数据编辑的窗口,并且其编辑速度快,能主动辨别语法的正确性,方便程序设计。二、vi/vim的区别 它们都是多模式编辑器,不同的是vim是vi的升级版本。vim不仅兼容了所有vi的命令,而且还有一些新的特性在里面。三、vi的基本模式 vi基本上共分为三种模式,分别是一般模式、插入模式和命令行模式。 (1)一般模式: 以vi打开原创 2017-08-16 20:20:26 · 2685 阅读 · 0 评论 -
Linux 常用指令1
1、查看文件与目录 命令:ls [参数] 目录名称 -a :列出目录下所有的文件,包括以”.”开头的隐藏文件。 【例】 图中“. ”表示当前目录,“..”表示上级目录-l:列出文件的详细信息 【例】 ls -l可以简写成ll-s:在l文件名后输出该文件的大小 【例】 [hongji@localhost ~]$ ls -s total 48 4 26 4 Desk原创 2017-08-04 00:02:49 · 3055 阅读 · 0 评论 -
Linux下的find指令
一、概述: 因为Linux下面一切皆文件,经常需要搜索某些文件来编写,所以对于linux来说find是一条很重要的命令。linux下面的find指令用于在目录结构中搜索文件,并执行指定的操作。它提供了相当多的查找条件,功能很强大。在不指定查找目录的情况下,find会在对整个系统进行遍历。即使系统中含有网络文件系统,find命令在该文件系统中同样有效。 在运行一个非常消耗资源的find命令时,很多人原创 2017-08-10 08:32:58 · 57182 阅读 · 0 评论 -
Shell脚本的条件测试
1、判断命令:test/[命令 test和[可以测试一个条件是否成立,。如果测试结果为真,则该命令的输出状态为0;如果测试结果为假,则该命令的输出状态为1(这与C语言的逻辑关系正好相反)。命令test和[的参数形式是相同的,参数之间要用空格隔开,只不过test命令不需要]参数。 【例】比较两个数 2、命令测试 1)[ -d DIR ]:如果DIR存在并且是一个目录则为真。 2)[ -f F原创 2017-10-30 11:29:06 · 2523 阅读 · 0 评论 -
shell脚本的正则表达式
一、概念: 正则表达式是通过一些特殊字符的排序,用以删除、查找、替换一行或者多行文字字符串的程序。二、特殊字符: 1、字符类 注意:任意字符“.”与重复字符“*” 1).(小数点):代表一定有一个任意字符的意思。 2)*(星号):代表重复前一个0到无穷多次的意思,为组合形态。 【例】 释:“g*”代表的是具有空字符或一个g以上的字符。2、数量限定符 注意: 1)正则表达式的特殊原创 2017-11-08 11:13:06 · 48839 阅读 · 3 评论 -
进程的基本概念
一、背景 1、操作系统(Operator System)的概念: 任何计算机都包含一个基本的程序集合,称为操作系统(简称OS)。笼统的理解,操作系统包括: 1)内核,其含有内核管理、进程管理、驱动管理和文件管理。 2)其他程序,例如:函数库、shell程序等等。2、设计OS的目的: 1)与硬件交互,管理所有的软硬件资源; 2)为用户程序(应用程序)提供一个良好的执行环境。3、定位 管理原创 2017-11-14 21:14:52 · 3920 阅读 · 0 评论 -
进程的优先级
一、基本概念: 1、含义: CPU分配资源的先后顺序,就是指进程的优先权。2、作用: 优先权高的进程有优先执行权,在配置进程优先权对多任务环境的Linux很有用,并且还可以把重要的进程运行到指定的CPU上,把不重要的进程安排到某个CPU,能大大提高系统的性能。二、查看系统进程: 可以用静态的ps或者是动态的top,还能以pstree来查看程序树之间的关系。1、ps:将某个时间点的进程运行情况原创 2017-11-19 17:44:45 · 2764 阅读 · 0 评论 -
Linux的进程状态
一、两状态进程模型 在任何时刻,一个进程要么正在执行,要么没有执行,因而可以构成最简单的模型。一个进程可以处于以下两种状态之一:运行态或未运行态。在任何一种情况下,分配器都会从队列中选择一个进程来执行。其过程如图所示: 两状态进程模型图二、进程的创建和终止 1、进程创建的原因: (1)新的批处理作业; (2)交互登录; (3)操作系原创 2017-11-17 10:23:17 · 1858 阅读 · 0 评论 -
grep指令
1、功能: 在文件中搜索字符串,并将该行打印出来。2、说明: grep在数据中查找一个字符串时,是以整行为单位来进行数据的选取的。3、语法: grep [选项] [–color=auto] ‘查找字符串’ filename4、常用选项: (1)-a:将binary文件以text文件的方式查找数据。 (2)-c:计算找到‘查找字符串’的次数。 (3)-i:忽略大小写的不同,所以大小写视为相原创 2017-11-04 14:01:06 · 2812 阅读 · 0 评论 -
shell 脚本的基本语法
1、for/do/done Shell脚本的for循环结构类似于某些编程语言的foreach循环。 (1)for的固定循环,它的语法是:for var in con1 con2 con3 ...do 程序段done说明:这个var的变量内容在循环工作时:1)第一次循环时:var的变量内容在循环工作时: 1)第一次循环时:var的内容是con1; 2)第二次循环时:var的内容原创 2017-11-03 10:50:02 · 5232 阅读 · 0 评论 -
sort指令
1、sort的定义: sort将文件的每一行作为一个单位相互比较,比较原则是从首字符向后依次按ASCII码进行比较,最后将它们按升序输出。 【例】 2、选项 (1)-u:在输出行中排序并去除重复行。 【例】 (2)-r:逆序排序。 说明:sort默认的排序方式是升序的,如果想改成降序,就需要加个-r。 【例】 (3)-o:将排序结果写入文件中。 说明:由于sort默认是把结原创 2017-11-10 21:45:06 · 11197 阅读 · 0 评论 -
uniq指令 & wc指令
一、uniq的使用 1、定义: 这个命令用于读取输入文件,并比较相邻的行。在正常情况下,第二个及以后更多个重复行将被删去,行比较是根据所用字符集的排序序列进行的。该命令加工后的结果写到输出文件中,而输入文件和输出文件必须不同。如果输入文件用“-”表示,则从标准输入读取。2、选项: (1)-c:显示输出连续重复行的次数,并将重复的行删除掉只显示一行。 【例1】 【例2】使用last将账原创 2017-11-10 11:32:18 · 2215 阅读 · 0 评论 -
cut指令
一、定义 正如其名,cut的工作就是“剪”,具体的说就是在文件中负责剪切数据用的。cut以行为单位处理数据,而不是整篇信息分析,这种机制和sed一样。二、作用 将同一行里面的数据进行分解,最常使用在分析一些数据或文字数据的时候。三、剪切依据 cut命令主要接受三个定位方法: 1、字节,用选项-b表示。 命令格式:cut -c 字节范围 【例】 注:一个汉字占3个byte。2、字符(原创 2017-11-08 13:38:17 · 3769 阅读 · 0 评论