11 良许Linux

尚未进行身份认证

我要认证

公众号:良许Linux

等级
TA的排名 1w+

Linux安装软件时90%的人会遇到这个报错,如何解决?

提示 Could not get lock /var/lib/dpkg/lock 报错?有些小伙伴在使用 apt 包管理器更新或安装软件时,可能会遇到过诸如以下的错误提示:E: Could not get lock /var/lib/dpkg/lock-frontend - open (11: Resource temporarily unavailable)E: Unable to acquire the dpkg frontend lock (/var/lib/dpkg/lock-frontend

2020-10-19 19:41:11

Linux系统编程—信号捕捉

前面我们学习了信号产生的几种方式,而对于信号的处理有如下几种方式:默认处理方式;忽略;捕捉。信号的捕捉,说白了就是抓到一个信号后,执行我们指定的函数,或者执行我们指定的动作。下面详细介绍两个信号捕捉操作参数:signal和sigaction。##signal函数函数原型:sighandler_t signal(int signum, sighandler_t handler);其中,sighandler定义是这样的:typedef void (*sighandler_t)(int);函

2020-10-17 18:44:42

Linux系统编程 —线程同步概念

##同步概念同步,指对在一个系统中所发生的事件之间进行协调,在时间上出现一致性与统一化的现象。但是,对于不同行业,对于同步的理解略有不同。比如:设备同步,是指在两个设备之间规定一个共同的时间参考;数据库同步,是指让两个或多个数据库内容保持一致,或者按需要部分保持一致;文件同步,是指让两个或多个文件夹里的文件保持一致,等等。但是,在软件编程或者通信行业中所说的同步与生活中大家印象中的同步概念略有差异。“同”字应是指协同、协助、互相配合。主旨在协同步调,按预定的先后次序运行。注意,这里是指按照预定次序执行

2020-10-16 20:03:12

超好用的UnixLinux 命令技巧 大神为你详细解读

1、删除一个大文件我在生产服务器上有一个很大的200GB的日志文件需要删除。我的rm和ls命令已经崩溃,我担心这是由于巨大的磁盘IO造成的,要删除这个大文件,输入:> /path/to/file.log # 或使用如下格式 : > /path/to/file.log # 然后删除它 rm /path/to/file.log 2、如何记录终端输出?试试使用script命令行工具来为你的终端输出创建输出记录。script my.terminal.sessio 输入命令:ls da

2020-10-15 21:23:04

在Linux命令行内的大小写转换

在编辑文本时大小写常常是需要注意的地方,大小写的转换是很枯燥而繁琐的工作,所幸,Linux 提供了很多能让这份工作变得容易的命令。接下来让我们看看都有哪些完成大小写转换的命令。tr 命令tr (translate) 是能运用在命令行或者脚本上的最简单的大小写转换命令之一。例如如果你想要让一串字符串全部是大写字母,你可以用如下所示的命令完成这个内容:$ echo hello alvin | tr [:lower:] [:upper:]HELLO ALVIN以下为该命令应用在脚本上的例子,写入文件dep

2020-10-14 19:00:39

来,你们想要的打卡功能

前言​ 你的世界多数情况下充满了混沌和单调,你的身体虽然不胖但并不会让你感觉到那么有力量;你的过往乏善可陈,充斥着很多伤心与 自我否定,你过往的未来也没有惊喜在场。你想要一场新生,想要一次脱胎换骨,没有行动,一切都是空想,依旧忍受痛苦与弱小。一点一滴的积累,才能感受飞轮转起来时的酣畅淋漓,才会有气势如虹的力量 ,一点一滴的积累就是需要一个打卡的功能。打卡在生活中还是应用挺多的,比如上班打卡,健身打卡,学习打卡...等等实际上打卡功能开发是挺容易的,让我们来一起实现它吧,让我们自己用着自己开

2020-10-13 20:47:49

tmpwatch命令清除旧文件

我们知道系统里面常常会有一些忘记删除的长时间不用而且确实没有用处的文件,如果不去处理,这些无用的文件会越来越多,浪费许多系统资源。在不知道文件名的情况下,很难去检查某一目录下到底是哪些文件长时间没有被访问,同时删除这些文件。我们今天就介绍一款非常实用的工具来完成这一工作————tmpwatchtmpwatch 是什么tmpwatch 能够循环地删除指定目录下指定时间内没有被访问的文件,这一命令常常用于清理临时文件目录,比如 /tmp 或者 /var/tmp 这类目录。它只清除指定目录下的空目录、普通文

2020-10-12 19:19:21

Linux基础入门 vim常用命令详解

介绍vim是一个文本编辑程序没有菜单,只有命令,且命令繁多命令行模式下相关命令移动光标​ h: ← 左移​ l: → 右移​ j: ↓ 下移​ k: ↑ 上移​ gg: 光标移动文件开头​ G: 光标移动到文件末尾​ 0: 光标移动到行首​ $: 光标移动到行尾​ 123G:跳转到第123行删除字符​ x: 删除光标后一个字符,相当于 De

2020-10-11 16:43:17

Linux系统编程—管道

▋**1. 管道的概念**管道,又名「无名管理」,或「匿名管道」,管道是一种非常基本,也是使用非常频繁的IPC方式。1.1 管道本质管道的本质也是一种文件,不过是伪文件,实际上是一块内核缓冲区,大小4K;管道创建以后会产生两个文件描述符,一个是读端,另一个是写端;管道里的数据只能从写端被写入,从读端被读出;1.2 管道原理管道是内核的一块缓冲区,更具体一些,是一个环形队列。数据从队列的一端写入数据,另一端读出,如下图示:1.3 管道的优点简单1.4 管道的缺点只能单向通信,如果

2020-10-10 19:17:01

Linux系统编程—有名管道

▋**1. 管道的概念**管道,又名「无名管理」,或「匿名管道」,管道是一种非常基本,也是使用非常频繁的IPC方式。1.1 管道本质管道的本质也是一种文件,不过是伪文件,实际上是一块内核缓冲区,大小4K;管道创建以后会产生两个文件描述符,一个是读端,另一个是写端;管道里的数据只能从写端被写入,从读端被读出;1.2 管道原理管道是内核的一块缓冲区,更具体一些,是一个环形队列。数据从队列的一端写入数据,另一端读出,如下图示:1.3 管道的优点简单1.4 管道的缺点只能单向通信,如果

2020-10-09 21:27:09

Linux系统编程 —共享内存之mmap

共享内存概念共享内存是通信效率最高的IPC方式,因为进程可以直接读写内存,而无需进行数据的拷备。但是它没有自带同步机制,需要配合信号量等方式来进行同步。共享内存被创建以后,同一块物理内存被映射到了多个进程地址空间,当有一个进程修改了共享内存的数据,其余的进程均可看见所修改的内容,反之亦然。mmap函数函数原型:void *mmap(void *adrr, size_t length, int prot, int flags, int fd, off_t offset);返回值:成功:返回创建

2020-10-08 19:37:53

Linux系统编程—信号集操作函数

先来回顾一下未决信号集是怎么回事。信号从产生到抵达目的地,叫作信号递达。而信号从产生到递达的中间状态,叫作信号的未决状态。产生未决状态的原因有可能是信号受到阻塞了,也就是信号屏蔽字(或称阻塞信号集,mask)对应位被置1。阻塞信号集和未决信号集均是由内核维护的,整个过程如下图示:我们有时需要屏蔽某个信号,就需要去修改阻塞信号集。那么,我们该如何修改阻塞信号集?系统提供的一个方法是,我们先创建一个跟阻塞信号集一样的集合,再利用它去修改阻塞信号集。系统提供了一系列的信号集设定函数。这些函数如下所示:s

2020-10-07 11:53:44

Linux系统编程 —时序竞态

##时序竞态什么是时序竞态?将同一个程序执行两次,正常情况下,前后两次执行得到的结果应该是一样的。但由于系统资源竞争的原因,前后两次执行的结果有可能得到不一样的结果,这个现象就是时序竞态。##pause函数函数原型:int pause(void);函数作用:进程调用pause函数时,会造成进程主动挂起(处于阻塞状态,并主动放弃CPU),并且等待信号将其唤醒。返回值:我们知道,信号的处理方式有三种:1. 默认动作;2. 忽略处理;3. 捕捉。进程收到一个信号后,会先处理响应信号,再唤醒paus

2020-10-05 17:04:04

Linux系统编程 —线程属性

在之前的章节中,我们在调用pthread_create函数创建线程时,第二个参数(即线程属性)都是设为NULL,即使用默认属性。一般情况下,使用默认属性已经可以解决我们开发过程中的大多数问题。但是,有时项目中我们对线程会有些特殊的要求,比如修改线程栈的大小,直接调用线程的库函数无法满足需求,在这种情况下我们可以直接对线程属性进行设置。类型pthread_attr_t是一个结构体,主要包括如下属性:作用域(scope)、栈尺寸(stack size)、栈地址(stack address)、优先级(prio

2020-10-03 14:00:15

git 一个可以提高开发效率的命令:cherry-pick

各位码农朋友们一定有碰到过这样的情况:在develop分支上辛辛苦苦撸了一通代码后开发出功能模块A,B,C,这时老板过来说,年青人,我们现在先上线功能模块A,B。你一定心里一万只草泥马奔腾而过,但为了混口饭吃必须得按老板的意思办事啊。怎么办?一个办法就是,重新建一个分支,然后再把功能模块C回退,留下功能模块A,B。这种做法不是不行,但是有更好的办法,那就是git所提供的cherry-pick功能。cherry-pick类似于一个定制化的merge,它可以把其它分支上的commit一个个摘下来,合并到当前

2020-09-29 20:17:30

Linux系统编程 —互斥量mutex

##互斥量mutex前文提到,系统中如果存在资源共享,线程间存在竞争,并且没有合理的同步机制的话,会出现数据混乱的现象。为了实现同步机制,Linux中提供了多种方式,其中一种方式为互斥锁mutex(也称之为互斥量)。互斥量的具体实现方式为:每个线程在对共享资源操作前都尝试先加锁,成功加锁后才可以对共享资源进行读写操作,操作结束后解锁。互斥量不是为了消除竞争,实际上,资源还是共享的,线程间也还是竞争的,只不过通过这种“锁”机制就将共享资源的访问变成互斥操作,也就是说一个线程操作这个资源时,其它线程无法操

2020-09-27 21:05:32

Linux系统编程 —读写锁rwlock

读写锁是另一种实现线程间同步的方式。与互斥量类似,但读写锁将操作分为读、写两种方式,可以多个线程同时占用读模式的读写锁,这样使得读写锁具有更高的并行性。读写锁的特性为:写独占,读共享;写锁优先级高。对于读写锁,掌握了这12个字就足矣了。Linux环境下,读写锁具有以下三种状态:读模式下加锁状态 (读锁)写模式下加锁状态 (写锁)不加锁状态虽然读写锁有读锁、写锁、不加锁三种状态,但其实它只有一把锁,而非三把。前文提到,读写锁的特性为:写独占,读共享;写锁优先级高。具体来讲:读写锁是“写模

2020-09-26 17:48:41

Linux系统编程—条件变量

条件变量是用来等待线程而不是上锁的,条件变量通常和互斥锁一起使用。条件变量之所以要和互斥锁一起使用,主要是因为互斥锁的一个明显的特点就是它只有两种状态:锁定和非锁定,而条件变量可以通过允许线程阻塞和等待另一个线程发送信号来弥补互斥锁的不足,所以互斥锁和条件变量通常一起使用。当条件满足的时候,线程通常解锁并等待该条件发生变化,一旦另一个线程修改了环境变量,就会通知相应的环境变量唤醒一个或者多个被这个条件变量阻塞的线程。这些被唤醒的线程将重新上锁,并测试条件是否满足。一般来说条件变量被用于线程间的同步;当条件

2020-09-25 20:08:26

Linux系统编程—信号量

大家知道,互斥锁可以用于线程间同步,但是,每次只能有一个线程抢到互斥锁,这样限制了程序的并发行。如果我们希望允许多个线程同时访问同一个资源,那么使用互斥锁是没有办法实现的,只能互斥锁会将整个共享资源锁住,只允许一个线程访问。这种现象,使得线程依次轮流运行,也就是线程从并行执行变成了串行执行,这样与直接使用单进程无异。于是,Linux系统提出了信号量的概念。这是一种相对比较折中的处理方式,它既能保证线程间同步,数据不混乱,又能提高线程的并发性。注意,这里提到的信号量,与我们所学的信号没有一点关系,就比如J

2020-09-23 19:34:49

Linux系统编程—进程间同步

我们知道,线程间同步有多种方式,比如:信号量、互斥量、读写锁,等等。那进程间如何实现同步呢?本文介绍两种方式:互斥量和文件锁。##互斥量mutex我们已经知道了互斥量可以用于在线程间同步,但实际上,互斥量也可以用于进程间的同步。为了达到这一目的,可以在pthread_mutex_init初始化之前,修改其属性为进程间共享。mutex的属性修改函数主要有以下几个:主要应用函数:pthread_mutexattr_t mattr 类型: 用于定义互斥量的属性pthread_mutexattr_i

2020-09-21 22:12:03

查看更多

勋章 我的勋章
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv3
    勤写标兵Lv3
    授予每个自然周发布7篇到8篇原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 原力探索
    原力探索
    参与《原力计划【第二季】——打卡挑战》的文章入选【每日精选】的博主将会获得此勋章。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。