关于linux:Java-并发编程解析-关于Java领域中的线程机制我们应该知道的那些事

天穹之边,浩瀚之挚,眰恦之美; 悟心悟性,虎头蛇尾,惟善惟道! —— 朝槿《朝槿兮年说》 写在结尾 咱们都晓得,通过多年的倒退和有数Java开发者的不懈努力,Java曾经由一门单纯的计算机编程语言,逐步演变成一套弱小的以及仍在可继续倒退中的技术体系平台。 尽管,Java设计者们依据不同的技术规范,把Java划分为3种构造独立且又彼此依赖的技术体系,别离是Java SE,Java EE 以及Java ME,其中Java EE 在广泛应用在企业级开发畛域中。 除了包含Java API组件外,其衍生和裁减了Web组件,事务组件,分布式组件,EJB组件,音讯组件等,并且继续倒退到现在,其中,尽管有许多组件现如今不再实用,然而许多组件在咱们日常开发工作中,扮演着同样重要的角色和仍旧服务着咱们突飞猛进的业务需要。 综合Java EE的这些技术,咱们能够依据咱们的理论须要和满足咱们的业务需要的状况下,能够疾速构建出一个具备高性能,构造谨严且绝对稳固的利用平台,尽管当初云原生时代异军突起许多基于非Java的其余技术平台,然而在分布式时代,Java EE是用于构建SOA架构的首先平台,甚至基于SpringCloud构建微服务利用平台也离不开Java EE 的撑持。 集体感觉,Java的继续倒退须要感激Google,正是起初Google将Java作为Android操作系统的应用层编程语言,使得Java能够在PC时代和挪动互联网时代失去疾速倒退,能够用于手持设施,嵌入式设施,集体PC设施,高性能的集群服务器和大型机器平台。 当然,Java的倒退也不是一帆风顺的,也曾被许多开发者诟病和厌弃,然而就凭Java在行业里是否笼罩的场景来说,对于它的敌对性和包容性,这不禁让咱们心怀敬意。其中,除了Java有丰盛的内置API供咱们应用外,尤其Java对于并发编程的反对,也是咱们最难以释怀的,甚至是咱们作为Java开发者最头疼的问题所在。 尽管,并发编程这个技术畛域曾经倒退了半个世纪了,相干的实践和技术纷繁复杂。那有没有一种核心技术能够很不便地解决咱们的并发问题呢?明天,咱们就来一起走进Java畛域的并发编程的外围——Java线程机制。 根本概述 在Java中,对于Java语言层面的线程,咱们根本都不会太生疏,甚至耳熟能详。然而在此之前,咱们先来探讨一下,什么是管程技术?Java 语言在 1.5 之前,提供的惟一的并发原语就是管程,而且 1.5 之后提供的 SDK 并发包,也是以管程技术为根底的。除此之外,其中C/C++、C# 等高级语言也都反对管程。 对于管程管程(Monitor)是指定义了一个数据结构和能为并发过程所执行的一组操作,这组操作能同步过程和扭转管程中的数据。次要是指提供了一种机制,线程能够长期放弃互斥拜访,期待某些条件失去满足后,从新取得执行权复原它的互斥拜访。 所谓管程,指的是治理共享变量以及对共享变量的操作过程,让他们反对并发。翻译为 Java 畛域的语言,就是治理类的成员变量和成员办法,让这个类是线程平安的。 根本定义 首先,零碎中的各种硬件资源和软件资源均可用数据结构抽象地形容其资源个性,即用大量信息和对该资源所执行的操作来表征该资源,而疏忽它们的内部结构和实现细节。 其次,能够利用共享数据结构抽象地示意零碎中的共享资源,并且将对该共享数据结构施行的特定操作定义为一组过程。过程对共享资源的申请、开释和其它操作必须通过这组过程,间接地对共享数据结构实现操作。 而后,对于申请访问共享资源的诸多并发过程,能够依据资源的状况承受或阻塞,确保每次仅有一个过程进入管程,执行这组过程,应用共享资源,达到对共享资源所有拜访的对立治理,无效地实现过程互斥。 最初,代表共享资源的数据结构以及由对该共享数据结构施行操作的一组过程所组成的资源管理程序独特形成了一个操作系统的资源管理模块,咱们称之为管程,管程被申请和开释资源的过程所调用。 综上所述,管程(Monitor)是指定义了一个数据结构和能为并发过程所执行的一组操作,这组操作能同步过程和扭转管程中的数据。次要是指提供了一种机制,线程能够长期放弃互斥拜访,期待某些条件失去满足后,从新取得执行权复原它的互斥拜访。 根本组成 由上述的定义可知,管程由四局部组成: 管程的名称;部分于管程的共享数据结构阐明;对该数据结构进行操作的一组过程;对部分于管程的共享数据设置初始值的语句实际上,管程中蕴含了面向对象的思维,它将表征共享资源的数据结构及其对数据结构操作的一组过程,包含同步机制,都集中并封装在一个对象外部,暗藏了实现细节。 封装于管程外部的数据结构仅能被封装于管程外部的过程所拜访,任何管程外的过程都不能拜访它;反之,封装于管程外部的过程也仅能拜访管程内的数据结构。 所有过程要拜访临界资源时,都只能通过管程间接拜访,而管程每次只准许一个过程进入管程,执行管程内的过程,从而实现了过程互斥。 根本特点 管程是一种程序设计语言的构造成分,它和信号量有等同的表达能力,从语言的角度看,管程次要有以下特点: 模块化,即管程是一个根本程序单位,能够独自编译;抽象数据类型,指管程中不仅有数据,而且有对数据的操作;信息屏蔽,指管程中的数据结构只能被管程中的过程拜访,这些过程也是在管程外部定义的,供管程外的过程调用,而管程中的数据结构以及过程(函数)的具体实现内部不可见。根本模型 在管程的发展史上,先后呈现过三种不同的管程模型,别离是:Hasen 模型、Hoare 模型和 MESA 模型。其中,当初广泛应用的是 MESA 模型,并且 Java 管程的实现参考的也是 MESA 模型。 接下来,咱们就针对几种管程模型别离来简略的阐明一下,它们之间的区别。 假如有这样一个进程同步机制中的问题:如果过程P1因x条件处于阻塞状态,那么当过程P2执行了x.signal操作唤醒P1后,过程P1和P2此时同时处于管程中了,这是不被容许的,那么如何确定哪个执行哪个期待? 一般来说,咱们都会采纳如下两种形式来进行解决: 第一种形式:如果过程 P2进行期待,直至过程P1来到管程或者期待另一个条件第二种形式:如果过程 P1进行期待,直至过程P2来到管程或者期待另一个条件综上所述,三种不同的管程模型采取的形式如下: 1.Hasen 模型 ...

August 2, 2022 · 4 min · jiezi

关于linux:openKylin社区7月技术委员会会议顺利召开版本规划敲定

2022年7月30日,openKylin社区技术委员会会议顺利召开。本次会议采取线上线下相结合的形式进行,由openKylin社区技术委员会委员余杰主持,吴庆波主任、魏立峰副主任等全体成员加入。会上,各与会人员围绕社区SIG治理和openKylin技术布局等方面开展了重点探讨。 会议开始,主持人余杰就以后社区工作进展向大家进行了汇报,包含社区已有SIG运作状况、待审核SIG根本信息、openKylin 0.7版本遗留问题、openKylin 1.0版本公布打算等,随后各参会人员针对以后现状踊跃探讨,献言献策,并审核通过了社区局部新增SIG,议题详细情况如下: 1、社区新增SIG状况openKylin社区作为桌面操作系统根社区,激励翻新激发生机,反对同一技术方向创立多个SIG。经技术委员会整体委员表决,此次新增Ai-edgecloud(边缘智慧云)SIG、International-promotion(国内推广) SIG、SDK(开发者套件) SIG、KylinDDE(深度桌面环境) SIG、connectivity(互联互通)SIG、I18N(多语言) SIG等在内的21个SIG组。 2、openKylin 1.0版本公布打算基于以后openKylin 0.7版本存在的一些问题,社区将继续进行修复,并打算于8月底公布0.8 BUG修复版本。 3、高校倒退布局学生作为社区最有生机的群体之一,是社区后续的重点倒退指标。将来,openKylin社区将在全国高校设立高校站、继续发动高校开源开发大赛以及发展高校沙龙流动等,流传开源文化、造就开源人才。同时,目前openKylin发动了社区共建流动,咱们诚邀宽广企业、开发者、爱好者和高校学生等多方力量参加社区、携手共建,基于openKylin 0.7版本,帮助实现打包、适配和测试等工作,在openKylin操作系统建设历程中留下本人的脚印。更多详情,可查看:【一封来自openKylin社区的共建邀请函】

August 2, 2022 · 1 min · jiezi

关于linux:Linux系列之比较命令

前言Linux中有两个比拟命令,它们别离是comm和diff,在比拟文本文件的版本时通常很有用。本文介绍它们的区别和简略用法。 comm命令该命令对两个文本文件进行比拟,并显示每个文件独有的行和它们共有的行。 假如咱们有两个文件: 当咱们运行comm file1.txt file2.txt时,咱们会失去: 在我看来,comm的输入有些难看,但它是三列。请原谅我蹩脚的线条: 第一列蕴含第一个文件参数特有的行,第二列蕴含第二个文件参数特有的行,第三列蕴含两个文件共有的行。 咱们能够通过应用选项-n,来抉择暗藏指定的列,其中n能够是1、2或3。假如咱们只想输入两个文件共有的行,咱们能够应用comm -12 file1.txt file2.txt。 diff命令diff是一个更加简单的工具。它反对多种输入格局,并有能力一次解决大量的文本文件集。diff常常被用来创立diff文件(补丁),这些文件被path等程序用来将一个或多个文件的一个版本转换成另一个版本。让咱们在之前的两个文件上运行diff:diff file1.txt file2.txt 。 这是默认的输入款式。在该格局中,每组变动之前都有一个变动命令,以range operation range的模式形容将第一个文件转换为第二个文件所需的地位和变动类型。 首先来看: 1d0< a这通知咱们必须删除file1的第一行,也就是带a的那一行。 接下来看: 4a4> e这通知咱们,咱们必须在第一个文件里增加一行,在第四行的地位。而后通知咱们在哪一行增加> e 。 我晓得这是令人困惑的,坦白说,默认款式没有应用太多的上下文格局和对立格局,让咱们看看那些解释更多。让咱们来看看这些,并作进一步解释。 咱们能够通过增加-c选项来应用上下文格局: diff -c file1.txt file2.txt 在顶部咱们能够看到,两个文件的名称以及工夫戳,第一个文件应用星号标记,第二个文件应用破折号标记。diff将应用星号或破折号来让咱们晓得,它在整个列表的其余部分议论的是哪个文件。 接下来咱们会看到一行星号,这仅仅是为了格式化。 而后咱们失去一系列的变动,在第一组变动中,咱们能够看到: *** 1,4 ****这意味着第一个文件中的第1行到第4行。 而后能够看到: - a b c d这就是文件的内容。只不过在a后面有个-,这意味着咱们要删除它。 标记含意blank不须要任何扭转(-)须要删除行(+)须要增加行!须要扭转行在第一组变动中,咱们能够看到带有-a的行须要从第一个文件中删除。第二组变动为: --- 1,4 ---- b c d+ e---1,4----是第二个文件的范畴,+ e意味着咱们须要增加该行到第一个文件中,记住咱们的指标是让第一个文件匹配第二个文件。 咱们也能够应用对立格局,它与格局上下文相似,然而更简洁。它打消了上下文的反复行。diff -u file1.txt file2.txt 。

August 1, 2022 · 1 min · jiezi

关于linux:Linux系统编写shell脚本2

零碎版本:centos7 判断该软件是否启动如果启动就显示up没有启动就显示down #!/bin/bashread -p "请输出想查找的服务:" LLps -ef | grep $LL &> /dev/nullif [ $? -eq 0 ]then echo "$LL up"else echo "$LL down"fi

August 1, 2022 · 1 min · jiezi

关于linux:Linux系统编写shell脚本1

零碎版本:centos7 Shell脚本小测试判断以后零碎是否装置软件,让用户输出一个软件名,例子:http如果曾经装置了,则显示零碎已装置如果没装,就显示未装置 #!/bin/bashread -p "请输出你想查问的服务:" LLrpm -qa | grep $LL &> /dev/nullif [ $? -eq 0 ]then echo "$LL 已装置"else echo "$LL 未装置"fi

August 1, 2022 · 1 min · jiezi

关于linux:Linux系列之管理用户环境变量

前言环境变量管制你在Linux工作环境中的外观、行为和感觉。一共有两种类型的变量: 环境变量:这些是内置于零碎中的过程范畴的变量,管制着零碎的外观和行为。因为是过程范畴的,所以它们被任何子shell或过程所继承。shell变量:通常以小写字母列出,并且只在它们被设置的shell中无效。查看和批改环境变量应用env命令来查看所有的默认环境变量: 环境变量总是大写的,正如咱们所看到的SHELL,WINDOWID 以及 COLORTERM 。 为了查看所有的环境变量,包含shell变量、本地变量,以及shell函数:比如说任何用户定义的变量和命令别名,咱们能够应用set命令。我会把它和more一起应用,这样它看起来更容易治理 set | more 扭转变量值咱们能够通过提供变量名来更改变量,前面跟着相等符号以及新值: HISTSIZE=200 咱们扭转了变量HISTSIZE的值,但只在咱们特定的环境中失效。如果咱们想将此更改长久化,咱们能够应用export命令。export将会把你以后的环境中的新值,设置到任何新fork的子过程中,容许新过程继承导出的变量。 export HISTSIZE留神:进行任何更改之前,你兴许想要保留一份以后值的正本echo $VARIABLE> ~/valueOfVARIABLE.txt,或者你甚至可能想保留一份所有以后变量值正本set> ~/valueofALLon02252020.txt 。 你可能须要批改的另一个变量是PS1变量。它有一组占位符,用于显示你想在shell提示符中显示的信息: \u 以后用户的名字\h 主机名\w 当前工作目录的根本名称 PATH变量PATH变量管制shell在零碎中的何处查找命令。如果bash shell在你的PATH变量中的某个目录中没有找到该命令,将会返回command not found谬误。 让咱们来看看哪个目录存储着环境变量: echo $PATH 这是我的终端来搜查任意命令的所有目录。每个目录通过冒号(:)进行分隔。 如果说我有某些命令存在于/home/azureuser/gpstools目录下,我想将该目录增加到PATH中。咱们能够通过输出以下内容将一个目录增加到PATH变量中: PATH=$PATH:/directory/to/add这将会在原来的PATH根底上,加上/directory/to/add/目录。 请留神:不要执行PATH=/directory/to/add,那会替换所有原有的目录并增加新的目录,你想要的是追加,而不是替换。 创立用户自定义变量咱们能够通过以下语法来创立属于咱们本人的变量: MYVARIABLE="VALUE"如果你须要让它长久化,别忘了导出它:export MYVARIABLE。如果你想删除任何变量,应用unset命令:unset MYVARIABLE,该命令只是在删除任何货色之前进行仔细检查。

July 31, 2022 · 1 min · jiezi

关于linux:Linux系列之进程管理

前言过程是正在运行的程序,Linux零碎通常有数百个过程同时运行。本文就来介绍下Linux是如何进行过程治理的。 咱们能够看到: 查看过程(Viewing processes)查找过程(Finding processes)治理过程(Managing processes)过程的优先级(Prioritizing processes)杀死过程(Killing processes)在后盾运行过程(Running processes in the background)调度过程(Scheduling processes)查看过程psLinux内核在创立过程时,会按程序给每个过程调配一个惟一的过程ID(PID)。一般来说,在过程上执行任何操作,咱们必须指定PID,有时咱们能够应用名称。 ps命令是查看过程的次要工具。不应用任何选项来运行该命令,会列出以后登录用户所启动(调用)的过程,以及终端上正在运行的过程。 如果咱们增加了aux选项: a = 显示所有用户的过程u = 显示过程的用户/所有者x = 显示未连贯到终端的过程 过程依照它们被启动的程序进行展现,因而你会看到列表是依据PID进行排序的。 让咱们简略来看看上面几列的信息: USER:调用过程的用户。PID:过程的ID。%CPU:过程占用CPU的百分比。%MEM:过程占用内存的百分比。COMMAND:启动过程的命令。查找命令grep咱们能够应用grep命令来查找指定的过程,假如咱们想要查找所有名称中蕴含mfsconsole的过程。 ps aux | grep msfconsole top咱们能够应用top命令来动静地列举出,依照资源应用状况排序的过程,从最大的开始列举。默认状况下,该列表将每3秒刷新一次。 top 治理过程优先级内核对过程的优先级有最终决定权,然而咱们能够应用nice命令,来倡议应该晋升过程的优先级。nice命令的值范畴是从-20(最有可能失去优先权)到+19(最不可能失去优先权)。 较高的nice值转换为低优先级,较低的nice值转换为高优先级。 当一个过程启动后,所有的规范过程都以nice值0来进行启动。 咱们能够应用nice命令来设置一个过程启动时的nice值,咱们能够应用renice来调整一个运行中的过程的nice值。 当咱们应用nice命令启动一个过程但没有提供任何值时,默认的nice值是10。 nice命令要求你递增nice值,renice命令想要一个相对的nice值。 设置优先级咱们能够应用nice命令来调整一个程序的nice值。这容许咱们进步或升高内核提供给该过程的优先级,绝对于其余过程而言。 在右边,我执行watch -n1 free 来展现零碎内存应用状况的细节。在左边,我让top命令运行,你能够看到watch命令的PID是9717,nice的值为0。 让咱们继续执行watch命令,只不过这次是用nice命令。 nice -15 watch -n1 free 当初咱们能够看到watch的nice值为15。这里要牢记的几件事: 这个watch命令的PID与之前的watch命令不同。这是因为nice会启动一个新的过程,而不是更改一个现有的过程。nice命令前面的-15意味着15。如果咱们想要指定一个正数(高优先级),咱们能够应用双中划线- 。上面是执行sudo nice --10 watch -n1 free后的样子。是的,如果你要进步优先级,你必须应用sudo。任何人都能够升高优先级,但只有sudo能够进步优先级。 扭转优先级renice命令接管-20到19的绝对值,并接管过程的PID。 让咱们再次运行watch命令。 watch -n1 free让咱们来查看下nice值,既然咱们没有指定nice值,它应该为0。比起应用top,这里我将会应用ps和grep,用以简化输入。 咱们能够看到,第八列的值为0,该值为nice的值,PID的值位于第三列。让咱们应用renice试试: sudo renice -15 14318 ...

July 30, 2022 · 1 min · jiezi

关于linux:Java-并发编程解析-关于线程机制的那些事你究竟了解多少

天穹之边,浩瀚之挚,眰恦之美; 悟心悟性,虎头蛇尾,惟善惟道! —— 朝槿《朝槿兮年说》 写在结尾 家喻户晓,在计算机操作系统中,过程(Process)是一个很要害的概念,最实质的了解就是操作系统执行的一个应用程序(Application Program)。与每个过程相干的是地址空间(Address Space)。其中,形容的是从某个最小值的存储地位(通常是0)到最大值的存储地位的列表。在这个地址空间中,过程能够进行读写操作。地址空间中能够寄存可执行程序,以及程序须要的数据和栈针。与每个过程相干的资源汇合。通常包含寄存器(Registers),关上的文件清单,突发的零碎报警,无关的过程清单和其余执行程序的信息。其中,寄存器次要包含程序计数器(Program Counter)和堆栈指针(Stack Pointer)。从肯定水平上,咱们能够把过程当作包容运行一个程序所有信息的一个容器(Container)。 操作系统中能够应用过程来形容一个程序的执行过程,过程领有该程序的所有数据(包含一些I/O分配情况、内存分配情况等),也就是该程序的一个载体,所以过程有一个特点就是资源分配的单位,这一点非常重要。过程还有一个特点就是调度执行,交替执行以进步资源利用率。 操作系统治理过程(创立、切换过程、调配与回收等)开销是很大的,比方过程创立时还须要创立PCB,分配内存独立的内空间,建设映射表,创立资源,过程切换时还须要切换资源,如切换对应的内存映射表,过程退出时还须要开释资源。 由此不难得出一个论断,每一个过程都有一个地址空间(Address Space)和一个控制线程(Control Thead)。然而,操作系统有了过程为何要呈现线程呢?次要是因为,尽管过程任然是资源分配的单位,然而调度执行却交给了线程,因为线程是在过程的外部,线程间的切换不必切换资源,不必切换映射表,只须要简略的在过程外部切换一下PC指针和保留一些寄存器即可,这也就更轻量了(防止不了不同过程间的线程切换)。 根本概述 线程(Thread)既保留了并发执行的长处,也防止了过程切换的代价。假如当初有一个网络服务器,此时没有线程的概念,该服务器程序用到多个过程,如用一个过程监听客户端的申请,当客户端连贯上后就分派出(复制出一个子过程)一个过程给该用户(每个过程都有独立的资源),用于监听该用户发送的数据并解决(即多过程程序),此时构想一下,这多个过程切来切去,每次切换的时候都须要切换资源,是不是很消耗资源。 此时,引入了线程之后,网络服务器这个程序是一个过程,过程用于承载该程序的资源,首先用过程中的一个线程监听申请,每次连贯客户端都调配一个线程给用户(多线程程序),此时处理器只须要在这几个线程中切换即可,线程的切换不须要切换资源(过程时资源级的切换,线程是指令级的切换),那么多个线程只须要共享过程中的资源即可,其运行速度和执行效率也失去了晋升。 由此可见,操作系统引入线程后,调度和分派是在线程上实现的,然而某些流动会影响过程中的所有线程,因而这些流动必须在过程级对他们进行治理。如挂起操作会挂起所有线程,因为所有线程共享过程的用户地址空间。引入了线程最要害的体现在以下两个方面: 线程的创立、终止和调度更轻量线程间的通信不进过内核,不须要用户态->内核态的转换然而,同时也减少了程序的开发难度,如果开发者对于线程机制的把握和意识不够精确,也会陷入技术困惑。 线程模型所有线程共享过程的状态和资源,所以线程都驻留在同一块地址空间中,并可拜访雷同的数据。 对于有线程和无线程的区别,其中次要是体现在用户栈和内核栈两个要害: 用户栈用于保留用户过程的子程序间互相调用的参数、返回值以及局部变量等信息(保留一般办法的栈)内核栈是程序产生零碎调用时内核态调用办法时的栈;用户地址空间则是过程的程序和数据寄存的空间,线程是没有本人的用户地址空间的一般来说,用户栈和内核栈曾经在线程中独有,也证实了线程成为了任务调度的根本单位,这些线程都共享过程所持有的资源,线程管制块中寄存了寄存器的值、优先级、线程状态等信息。 在操作系统层面,线程也有“生老病死”,业余的说法叫有生命周期。尽管不同的开发语言对于操作系统线程进行了不同的封装,然而对于线程的生命周期这部分,基本上是相通的。每一个线程根本都有如下特色: 相似过程,线程也有执行状态(生命周期),因为线程也是一个执行过程线程的上下文,线程切换时也须要进行爱护现场执行栈,保留零碎调用时的一些参数和两头后果大量的,线程公有的局部变量的存储空间,不再领有大量的存储空间与过程内其余线程共享的内存和资源的拜访线程管制块TCB,寄存上下文切换的信息,同PCB能够看出,对于有生命周期的事物,要学好和把握它,思路非常简单,只有能搞懂生命周期中各个节点的状态转换机制即可。 线程分类 线程分为用户级线程(User-Level Thread,ULT)和内核级线程(Kernel-Level Thread,KLT),内核级线程又叫做轻量级过程(Light-Weight Process,LWP)。 用户级线程(User-Level Thread,ULT) 在纯ULT软件中,治理线程的所有工作都是应用程序实现,内核意识不到线程的存在,线程齐全是由线程库提供的,创立、销毁、调度线程、线程间传递音讯等,还包含保留上下文都是由它管控的,如果能够的话咱们本人也能够实现本人的线程库,只有正当的组织线程即可。 然而用户级线程所有的流动都产生在用户空间和一个过程中,零碎感知不到用户级线程的存在,所以零碎仍旧是以过程的形式调度。 当线程1产生零碎调用等阻塞了,此时零碎就会认为该过程阻塞了,操作系统会把CPU工夫片调配给其余过程,在此期间,依据线程库保护的数据结构来看,线程1任然处于运行状态,但在处理器执行的角度,线程2是不处于运行状态的,也分不到工夫片。 这也导致了用户级线程一旦阻塞,就会阻塞过程中的所有线程,使得其余线程也得不到运行。应用用户级线程(ULT)如下特点: 长处: 所有线程的治理都在一个过程的用户空间中,线程的切换不须要内核模式特权,不须要零碎调用,从而节俭了用户态到内核态转换的开销线程的调度更灵便,能够为每个不同的应用程序量身定制更适合的调度算法,因为这些调度算法都能够本人实现,不须要更改操作系统底层的调度程序ULT能够在任何操作系统下运行,即使是不反对线程的操作系统也能实现,线程库是供所有应用程序共享的一组利用级函数毛病: 在执行一个零碎调用时不仅仅是阻塞以后线程,还会阻塞过程中的所有线程ULT不能利用多解决技术,操作系统看不到线程,所以内核一次只能把一个过程调配给一个处理器,因而一个过程中的所有线程不可能并行执行,只可能并发执行,相当于一个过程内实现了多道程序设计 解决这两个问题的办法有: 把应用程序写出多过程程序,然而该办法打消了线程的次要长处套管技术:把产生阻塞的零碎调用转化为一个非阻塞的零碎调用综上所述,用户级线程(User-Level Thread,ULT)适宜计算密集型的,因为不须要IO操作 ,不会阻塞整个过程。 内核级线程(Kernel-Level Thread,KLT) 在KLT软件中,治理线程的所有工作均由内核实现,利用级没有线程治理代码,只有一个到内核线程的API。 内核为过程级过程内的所有线程保护上下文信息,调度由内核基于线程实现。 该办法克服了ULT的两个毛病。首先,内核能够把一个过程中的线程调配个多个处理器中;其次,过程中的某个线程阻塞了,内核还能够调度同一个过程中的其余线程。 毛病是:在把控制权从一个线程传送到另一个过程的线程时,须要切换到内核模式,开销较大。 综上所述,KLT并发性更好,适宜I/O操作较多的程序。 混合线程(Hybrid-Approach Thread,HAT) 有些操作系统提供了ULT和KLT的混合体:线程创立齐全在用户空间中实现,线程的调度和同步也在应用程序中进行,一个应用程序中的多个用户级线程会被映射到一些(小于等于用户级线数)内核级线程上,过程和线程的比为 N:M,N<=M,ULT中比值为1:N,KLT为1:1 同一个应用程序中的多个线程可在多个处理器上并行的运行,某个引起阻塞的零碎调用不会阻塞整个过程。 综上所述,内核级线程(KLT)和用户级线程(User-Level Thread,ULT)比照剖析如下: 线程生命周期 一个线程的生命周期基本上能够这个“五态模型”来形容,次要别离是:初始状态、可运行状态、运行状态、休眠状态和终止状态。其中: 初始状态,指的是线程曾经被创立,然而还不容许调配 CPU 执行。这个状态属于编程语言特有的,不过这里所谓的被创立,仅仅是在编程语言层面被创立,而在操作系统层面,真正的线程还没有创立。可运行状态,指的是线程能够调配 CPU 执行。在这种状态下,真正的操作系统线程曾经被胜利创立了,所以能够调配 CPU 执行。运行状态:当有闲暇的 CPU 时,操作系统会将其调配给一个处于可运行状态的线程,被调配到 CPU 的线程的状态就转换成了运行状态。休眠状态:运行状态的线程如果调用一个阻塞的 API(例如以阻塞形式读文件)或者期待某个事件(例如条件变量),那么线程的状态就会转换到休眠状态,同时开释 CPU 使用权,休眠状态的线程永远没有机会取得 CPU 使用权。当期待的事件呈现了,线程就会从休眠状态转换到可运行状态。终止状态:线程执行完或者出现异常就会进入终止状态,终止状态的线程不会切换到其余任何状态,进入终止状态也就意味着线程的生命周期完结。版权申明:本文为博主原创文章,遵循相干版权协定,如若转载或者分享请附上原文出处链接和链接起源。

July 30, 2022 · 1 min · jiezi

关于linux:消息中间件解析-如何正确理解软件应用系统中关于系统通信的那些事

天穹之边,浩瀚之挚,眰恦之美;悟心悟性,虎头蛇尾,惟善惟道! —— 朝槿《朝槿兮年说》 写在结尾 随着业务需要的倒退和用户数量的激增,对于互联网利用零碎或者服务应用程序则提出了新的挑战,也对从事零碎研发的开发者有了更高的要求。作为一名IT从业研发人员,咱们都晓得的事,良好的用户体验是咱们和利用零碎间疾速反馈,始终以来都是咱们考量一个零碎是否稳固和是否高效的设计指标,然而保障这个指标的要害之一,次要在于如何保证系统间的通信稳固和高效。从而映射出,如何正确理解软件应用零碎中对于零碎通信的那些事?是咱们必须理解和了解的一项要害工作,接下来,咱们就一起来总结和探讨一下。 根本概述 要想了解零碎服务间的交换,拿咱们人与人的交换来做类比是个不错的抉择。咱们都晓得,人与人之间的实现交换的根本元素次要有以下几个方面: 可能互相听懂和了解的交换语言(即单方要基于雷同的"协定"之下)必要的流传介质(切实的物理介质,空气纸张等都行)约定好的解决信息的形式(常见的一问一答 或是先记录后处理等表现形式)从而得悉,零碎服务间的交换的次要体现在以下几个方面: 雷同的通信原语:就像人类相互须要应用雷同的语言进行交换,计算机服务也必须应用相互能辨认的音讯格局进行交互。流传信息的介质:人类交换时往往须要某种介质流传信息,如空气、纸张甚至是眼神等。同样的,网络信息的传递也须要物理介质的帮忙,以及工作在其上的一系列相干协定。解决信息的形式:人类交换时能够是面对面间接问答模式的,也可能是邮件、短信等延时应答模式的,对应的是不同的业务场景,在计算机里进行通信解决形式。实现通信形式:依据不同的协定都能实现通信性能的形式,个别基于一种或者至多一种协定实现。组成因素实现零碎间通信次要的三个因素:通信格局,通信协议,通信模型。 依据人与人的交换的形成因素,形象成计算机系统服务中对应的概念(卓有成效的概念往往是简略且趋同的),零碎间通信次要思考以下三个方面:通信格局,通信协议,通信模型。具体详情如下: 通信格局(Communication Format): 次要是指实现通信的音讯格局(Message Format),是表白音讯内容等根本表现形式。罕用的音讯格局有xml,json,TLV等。通信协议(Communication Protocol): 次要是指实现通信的网络协议(Network Protocol)。常见的TCP/IP协定,UDP协定等。通信模型(Communication Model): 次要是指实现通信的网络模型(Network Model)。常见的模型次要有阻塞式通信模型,非阻塞式通信模型,同步通信模型,异步通信模型。接下来,咱们来具体解析这些组成因素: 对于音讯格局来说,是帮忙咱们辨认音讯和表白音讯内容的根本形式: XML:和语言无关,罕用于对系统环境进行形容,如常见的maven仓库配置,或者spring配置等。JSON:轻量级音讯格局,和语言无关。携带同样的信息,占用容量比XML小。Protocol Buffer:Google定义的音讯格局,只提供了java,c++和python语言的实现。TLV:比JSON更轻量级的数据格式,连JSON中的"{}"都没有了。它是通过字节的位运算来实现序列化和反序列化。对于网络协议来说,是帮忙咱们实现音讯传输和传递的表达方式: 数据在网络七层模型中传递的时候,在网络层是"数据包",在数据链路层被封装成"帧"(数字信号),在物理层则是"比特"(电信号)。不同的协定都能实现通信性能,最适宜本零碎的通信协议才是最好的。对于网络模型来说,次要是帮忙咱们了解和抉择适宜以后场景的利用框架: 在计算机网路层面来说,常见网络模型次要有OSI 参考模型和TCP/IP 模型两种。除此之外,还有Linux 网络I/O 模型和Java JDK中的I/O 模型网络协议 咱们用手机连贯上网的时候,会用到许多网络协议。从手机连贯 W i F i 开始, 应用的是 8 0 2 . 11 (即 W L A N ) 协定, 通过 W L A N 接入网络; 手机主动获取网络配置,应用的是 D H C P 协定,获取配置后手机能力失常通信。这时手机曾经连入局域网,能够拜访局域网内的设施和资源, 但还不能应用互联网利用,例如:微信、抖音等。想要拜访互联网,还须要在手机的上联网络设备上实现相干协定, 即在无线路由器上配置 N AT、 P P P O E 等性能, 再通过运营商提供的互联网线路把局域网接入到互联网中, 手机就能够上网玩微信、刷抖音了。常见的网络次要有: ...

July 29, 2022 · 4 min · jiezi

关于linux:Java-并发编程解析-每个Java-Developer都应该知道的关于并发编程的那点事

天穹之边,浩瀚之挚,眰恦之美; 悟心悟性,虎头蛇尾,惟善惟道! —— 朝槿《朝槿兮年说》 写在结尾 在这个互联网利用乱象丛生的时代,应答简单业务需要,如何开发和设计一个高效和稳固的应用程序,始终都是咱们备受瞩目的关注点 。作为一名Java Developer,从接触 Java 开发到当初,置信大家对于并发编程这个概念都不生疏,你对 Java并发编程最直观的印象是什么呢?是各个大厂面试宝典鼓吹的高频热词,还是在理论工作中,都有过理论工作场景必备高阶开发技术?对于并发编程的根底和准则都做到了然于胸了吗?接下来,咱们一起总结和思考一下。 并发编程三要素所谓并发编程是指在一台处理器上“同时”解决多个工作。并发是在同一实体上的多个事件。多个事件在同一时间距离产生。——百度百科对于时理论编程过程中,其实相当一大部分的工作都是能够通过程序编程来解决,只是对于某些非凡的和特定的问题,并发编程会让咱们对于应用程序的操作与管制能够变得非常不便甚至必要。很大水平上说,并发编程"具备可论证的确定性,然而实际上也具备不可确定性“,正是因为如此,并发编程令人最困惑的一个起因:应用并发时须要解决的问题有多个,而实现并发的形式也有多种,并且两者之间没有非常显著的映射关系。从并发编程帮忙咱们解决问题来说,次要是应用程序“运行速度”和“设计可管理性”两个方面。 从而咱们晓得,并发编程三要素次要是指原子性,可见性,有序性,其中: 原子性:最小粒度的划分,即一个不可被宰割的操作。Java 中的原子性指:一个或多个操作要么全副执行胜利,要么全副执行失败。有序性:程序执行的程序是依照代码的先后顺序执行的。cpu 有可能会对指令进行重排序。可见性:当多个线程拜访同一个共享变量时,如果其中一个线程对其进行了批改操作,其它线程能立刻获取到最新批改的值。综上所述,并发的实质自身是进步运行在单处理器上的程序的性能,实现并发最间接的形式是在操作系统级别应用过程,操作系统会主动隔离资源。然而对于像Java这样的会共享资源来说,在协调不同线程驱动的工作之间的资源应用,会使得某些资源无奈被多个工作拜访。因而,Java在程序编程的根底上,反对对线程的管制,而且只对操作系统通明。 “X”程根本概述在Java中,咱们都晓得应用程序(Application Program)的代码会被装载并且放入一个class外面,最初保留到一个拓展名为.java的文件中,而后通过命令工具和开发环境的编译,生成.class文件,最终托管给JVM虚拟机运行起来,从而实现咱们要的反馈后果。在这些操作过程中,咱们须要了解程序,过程,线程等几个要害概念,其中: ![](/img/bVc1nMw)程序(Program):指一组批示计算机或其余具备信息处理能力安装执行动作或做出判断的指令,通常用某种程序设计语言编写,运行于某种指标计算机体系结构上。过程(Process):计算机中的软件程序对于某数据汇合上的一次运行流动,是零碎进行资源分配和调度的根本单位,是操作系统构造的根底,是零碎分配资源和调度的根本单位,也就是说过程能够独自运行一段程序。线程(Thead):过程中的一个实体,是被零碎独立调度和分派的根本单位,是CPU调度和分派的最小根本单位,线程本人不领有操作系统资源,然而该线程可与同属过程的其余线程共享该过程所领有的全副资源。从肯定水平上来说,过程是程序的实体,而线程又是过程的实体,过程又是线程的容器。三者之间区别如下: 对于程序而言,程序并不能独自执行,是静止的,只有将程序加载到内存中,零碎为其分配资源后才可能执行。对于过程而言,程序对一个数据集的动静执行过程,一个过程蕴含一个或者更多的线程,一个线程同时只能被一个过程所领有,过程是分配资源的根本单位。过程领有独立的内存单元,而多个线程共享内存,从而进步了应用程序的运行效率。对于线程而言,线程是过程内的根本调度单位,线程的划分尺度小于过程,并发性更高,线程自身不领有系统资源,然而该线程可与同属进其余线程共享该过程所领有的全副资源。每一个独立的线程,都有一个程序运行的入口、程序执行序列和程序的进口。综上所述,每个应用程序都应用一块内存区域,这个内存区域能够称为一个过程,内存区域中是须要执行代码的,具体执行代码就是线程去执行的。 须要留神的是:过程只是负责开拓内存空间的,线程才是负责执行代码逻辑的执行单元。 除了线程和过程外,咱们更须要理解什么是管程,协程和纤程:1.管程(Monitors):提供了一种机制,线程能够长期放弃互斥拜访,期待某些条件失去满足后,从新取得执行权复原它的互斥拜访。2.纤程(Fiber):是Microsoft组织为了帮忙企业程序的更好移植到Windows零碎,而在操做零碎中减少的一个概念,由操作系统内核依据对应的调度算法进行管制,也是一种轻量级的线程。3.协程(Coroutines):一种基于线程之上,但又比线程更加轻量级的存在,这种由程序管理的轻量级线程也被称为用户空间线程,对于内核而言是不可见的。正如同过程中存在多条线程一样,线程中也能够存在多个协程。协程在运行时也有本人的寄存器、上下文和栈,协程的调度齐全由用户管制,协程调度切换时,会将寄存器上下文和栈保留到调配的公有内存区域中,在切回来的时候,复原先前保留的寄存器上下文和栈,间接操作栈则根本没有内核切换的开销,能够不加锁的拜访全局变量,所以上下文的切换十分快。 ⚠️[特地关注]: 1.纤程和协程的概念统一,都是线程的多对一模型,但有些中央会辨别开来,但从协程的实质概念上来谈:纤程、绿色线程、微线程这些概念都属于协程的范畴。2.纤程和协程的区别在于:纤程是OS级别的实现,而协程是语言级别的实现,纤程被OS内核管制,协程对于内核而言不可见。版权申明:本文为博主原创文章,遵循相干版权协定,如若转载或者分享请附上原文出处链接和链接起源。

July 28, 2022 · 1 min · jiezi

关于linux:什么是Linux

Linux,全称GNU/Linux,是一种收费应用和自在流传的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次公布,它次要受到Minix和Unix思维的启发,是一个基于POSIX的多用户、多任务、反对多线程和多CPU的操作系统。它能运行次要的Unix工具软件、应用程序和网络协议。它反对32位和64位硬件。Linux继承了Unix以网络为外围的设计思维,是一个性能稳固的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。Linux操作系统的诞生、倒退和成长过程始终依赖着五个重要支柱:Unix操作系统、MINIX操作系统、GNU打算、POSIX规范和Internet网络。20世纪80年代,计算机硬件的性能一直进步,PC的市场不断扩大,过后可供计算机选用的操作系统次要有Unix、DOS和iOS这几种。Unix价格昂贵,不能运行于PC;DOS显得简陋,且源代码被软件厂商严格窃密;MacOS是一种专门用于苹果计算机的操作系统。此时,计算机科学畛域迫切需要一个更加欠缺、弱小、便宜和齐全凋谢的操作系统。因为供教学应用的典型操作系统很少,因而过后在荷兰当传授的美国人AndrewS.Tanenbaum编写了一个操作系统,名为MINIX,为了向学生讲述操作系统外部工作原理。MINIX尽管很好,但只是一个用于教学目标的简略操作系统,而不是一个强有力的实用操作系统,然而最大的益处就是公开源代码。全世界学计算机的学生都通过钻研MINIX源代码来理解电脑里运行的MINIX操作系统,芬兰赫尔辛基大学大学二年级的学生Linus Torvalds就是其中一个,在排汇了MINIX精髓的根底上,Linus于1991年写出了属于本人的Linux操作系统,版本为Linux0.01,是Linux时代开始的标记。他利用Unix的外围,去除繁冗的外围程序,改写成实用于个别计算机的x86零碎,并放在网络上供大家下载,1994年推出残缺的外围Version1.0,至此,Linux逐步成为功能完善、稳固的操作系统,并被宽泛应用。 2021年6月,依据Linux 5.14刚刚进入合并队列的char-misc-next提交,Linux 5.14正式移除了RAW驱动。 2022年6月,基于 Ubuntu 22.04 的 Linux Lite 6.0 正式版公布,提供最新的浏览器,最新的办公套件,最新的定制软件,代号“Fluorite”。Linux,全称GNU/Linux,是一套收费应用和自在流传的类Unix操作系统,是一个基于POSIX的多用户、多任务、反对多线程和多CPU的操作系统。随同着互联网的倒退,Linux失去了来自全世界软件爱好者、组织、公司的反对。它除了在服务器方面放弃着强劲的发展势头以外,在个人电脑、嵌入式零碎上都有着长足的提高。使用者不仅能够直观地获取该操作系统的实现机制,而且能够依据本身的须要来批改欠缺Linux,使其最大化地适应用户的须要。 Linux不仅零碎性能稳固,而且是开源软件。其外围防火墙组件性能高效、配置简略,保障了零碎的平安。在很多企业网络中,为了谋求速度和平安,Linux不仅仅是被网络运维人员当作服务器应用,甚至当作网络防火墙,这是Linux的一大亮点。 Linux具备开放源码、没有版权、技术社区用户多等特点,开放源码使得用户能够自在裁剪,灵活性高,功能强大,成本低。尤其零碎中内嵌网络协议栈,通过适当的配置就可实现路由器的性能。这些特点使得Linux成为开发路由替换设施的现实开发平台。 

July 28, 2022 · 1 min · jiezi

关于linux:Linux系统常用命令

一、零碎信息Linux常用命令arch 显示机器的处理器架构uname -m 显示机器的处理器架构uname -r 显示正在应用的内核版本dmidecode -q 显示硬件零碎部件 - (SMBIOS / DMI)hdparm -i /dev/hda 列举一个磁盘的架构个性hdparm -tT /dev/sda 在磁盘上执行测试性读取操作cat /proc/cpuinfo 显示CPU info的信息cat /proc/interrupts 显示中断cat /proc/meminfo 校验内存应用cat /proc/swaps 显示哪些swap被应用cat /proc/version 显示内核的版本cat /proc/net/dev 显示网络适配器及统计cat /proc/mounts 显示已加载的文件系统lspci -tv 列举 PCI 设施lsusb -tv 显示 USB 设施date 显示零碎日期cal 2022 显示2022年的日历表date 061217002022.00 设置日期和工夫 - 月日时候年.秒clock -w 将工夫批改保留到 BIOS二、零碎的关机、重启Linux常用命令shutdown -h now 关闭系统init 0 关闭系统telinit 0 关闭系统shutdown -h hours:minutes & 按预约工夫关闭系统shutdown -c 勾销按预约工夫关闭系统shutdown -r now 重启reboot 重启logout 登记三、目录操作Linux常用命令1、目录切换 cd命令:cd 目录cd / 切换到根目录cd /usr 切换到根目录下的usr目录cd ../ 切换到上一级目录 或者 cd ..cd ~ 切换到home目录cd - 切换到上次访问的目录2、目录查看 ls [-al]命令:ls [-al]ls 查看当前目录下的所有目录和文件ls -a 查看当前目录下的所有目录和文件(包含暗藏的文件)ls -l 或 ll 列表查看当前目录下的所有目录和文件(列表查看,显示更多信息)ls /dir 查看指定目录下的所有目录和文件 如:ls /usr3、目录操作【增,删,改,查】创立目录【增】 mkdir命令:mkdir 目录mkdir aaa 在当前目录下创立一个名为aaa的目录mkdir /usr/aaa 在指定目录下创立一个名为aaa的目录删除目录或文件【删】rm命令:rm [-rf] 目录删除文件:rm 文件 删除当前目录下的文件rm -f 文件 删除当前目录的的文件(不询问)删除目录:rm -r aaa 递归删除当前目录下的aaa目录rm -rf aaa 递归删除当前目录下的aaa目录(不询问)全副删除:rm -rf * 将当前目录下的所有目录和文件全副删除rm -rf /* 【他杀命令!慎用!慎用!慎用!】将根目录下的所有文件全副删除留神:rm不仅能够删除目录,也能够删除其余文件或压缩包,为了不便大家的记忆,无论删除任何目录或文件,都间接应用 rm -rf 目录/文件/压缩包目录批改【改】mv 和 cp重命名目录命令:mv 当前目录 新目录例如:mv aaa bbb 将目录aaa改为bbb留神:mv的语法不仅能够对目录进行重命名而且也能够对各种文件,压缩包等进行 重命名的操作剪切目录命令:mv 目录名称 目录的新地位示例:将/usr/tmp目录下的aaa目录剪切到 /usr目录上面 mv /usr/tmp/aaa /usr留神:mv语法不仅能够对目录进行剪切操作,对文件和压缩包等都可执行剪切操作拷贝目录命令:cp -r 目录名称 目录拷贝的指标地位 -r代表递归示例:将/usr/tmp目录下的aaa目录复制到 /usr目录上面 cp /usr/tmp/aaa /usr留神:cp命令不仅能够拷贝目录还能够拷贝文件,压缩包等,拷贝文件和压缩包时不 用写-r递归搜寻目录【查】find命令:find 目录 参数 文件名称示例:find /usr/tmp -name 'a*' 查找/usr/tmp目录下的所有以a结尾的目录或文件四、文件操作Linux罕用命1、文件操作【增,删,改,查】新建文件【增】touch命令:touch 文件名示例:在当前目录创立一个名为aa.txt的文件 touch aa.txt删除文件 【删】 rm命令:rm -rf 文件名批改文件【改】 vi或vim【vi编辑器的3种模式】基本上vi能够分为三种状态,别离是命令模式(command mode)、插入模式(Insert mode)和底行模式(last line mode),各模式的性能辨别如下:1) 命令行模式command mode)管制屏幕光标的挪动,字符、字或行的删除,查找,挪动复制某区段及进入Insert mode下,或者到 last line mode。命令行模式下的常用命令:【1】管制光标挪动:↑,↓,j【2】删除以后行:dd【3】查找:/字符【4】进入编辑模式:i o a【5】进入底行模式:: ...

July 28, 2022 · 3 min · jiezi

关于linux:Linux安装Docker完整教程

背景最近接手了几个我的项目,发现我的项目的部署基本上都是基于Docker的,幸好在几年前曾经相熟的Docker的根本应用,没有抓瞎。这两年随着云原生的倒退,Docker在云原生中的作用使得它也蓬勃发展起来。 明天这篇文章就带大家一起实现一下在Linux操作系统下Docker的部署过程,珍藏起来,以备不时之需。当然,如果对Docker感兴趣的话,能够间接依据本文的步骤操作起来。终有一天你会享受到Docker的便当与魅力的。 Docker及零碎版本Docker从17.03版本之后分为CE(Community Edition: 社区版)和EE(Enterprise Edition: 企业版)。绝对于社区版本,企业版本强调安全性,但需付费应用。这里咱们应用社区版本即可。 Docker反对64位版本的CentOS 7和CentOS 8及更高版本,它要求Linux内核版本不低于3.10。 查看Linux版本的命令这里举荐两种:lsb_release -a或cat /etc/redhat-release。 lsb_release -a查看成果: [ ~]$ lsb_release -aLSB Version: :core-4.1-amd64:core-4.1-noarchDistributor ID: CentOSDescription: CentOS Linux release 7.6.1810 (Core)Release: 7.6.1810Codename: Corecat /etc/redhat-release查看版本成果: [~]$ cat /etc/redhat-releaseCentOS Linux release 7.6.1810 (Core)显然,以后Linux零碎为CentOS7。再查一下内核版本是否不低于3.10。 查看内核版本有三种形式: cat /proc/versionuname -auname -r三种模式都能够查看到内容版本,比方: [ ~]$ uname -r3.10.0-1160.45.1.el7.x86_64能够看到,以后Linux内核版本满足Docker的须要。 Docker的自动化装置Docker官网和国内daocloud都提供了一键装置的脚本,使得Docker的装置更加便捷。 官网的一键装置形式: curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun国内 daocloud一键装置命令: curl -sSL https://get.daocloud.io/docker | sh执行上述任一条命令,急躁期待即可实现Docker的装置。 Docker手动装置手动装置Docker分三步:卸载、设置仓库、装置。 卸载Docker(可选)第一步,卸载历史版本。这一步是可选的,如果之前装置过旧版本的Docker,能够应用如下命令进行卸载: yum remove docker \ docker-client \ docker-client-latest \ docker-common \ docker-latest \ docker-latest-logrotate \ docker-logrotate \ docker-selinux \ docker-engine-selinux \ docker-engine \ docker-ce设置源仓库第二步,设置仓库。新主机上首次装置Docker Engine-Community之前,须要设置Docker仓库。尔后可从仓库装置和更新Docker。 ...

July 28, 2022 · 2 min · jiezi

关于linux:最新版泛域名证书申请

最新版泛域名证书申请前言这几天证书过期了,从新申请了一下,批改了一下之前文档的问题。 泛域名泛域名证书又名通配符证书是SSL证书中的其中一种模式,个别会以通配符的模式(如:*.domain.com)来指定证书所要爱护的域名。 OV证书和DV证书都会有通配符的域名模式提供,而EV证书个别没有通配符的证书模式。 1.配置灵便不便 因为采纳了通配符的模式对域名进行配置,那么对于领有多个二级域名的网站是一件十分便当的事件。只有申请一张通配符证书,就能用于所有的二级域名网站中。而且如果当前须要持续减少二级域名,也不须要再去申请购买证书,只需持续应用原有的证书就能够,对于网站管理者来说的确是十分的不便。 2.性价比高 一般而言,通配符证书是会比单域名证书会贵上不少,然而如果按每个二级域名的证书价格摊分下来,那其实证书单价是及其的低。当然这要看你的二级域名数量总数有多少而定。但现在互联网时代,很多公司企业他们都会用户多个二级域名。对于这些企业而言,通配符证书无疑是一种高性价比的SSL证书。 装置所需环境root@cby:~# apt-get install socat -yroot@cby:~# curl  https://get.acme.sh | sh -s email=cby@chenby.cn  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0100   937    0   937    0     0    788      0 --:--:--  0:00:01 --:--:--   789  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current                                 Dload  Upload   Total   Spent    Left  Speed100  210k  100  210k    0     0   131k      0  0:00:01  0:00:01 --:--:--  131k[Fri 15 Apr 2022 11:54:09 AM CST] Installing from online archive.[Fri 15 Apr 2022 11:54:09 AM CST] Downloading https://github.com/acmesh-official/acme.sh/archive/master.tar.gz[Fri 15 Apr 2022 11:54:11 AM CST] Extracting master.tar.gz[Fri 15 Apr 2022 11:54:11 AM CST] Installing to /root/.acme.sh[Fri 15 Apr 2022 11:54:11 AM CST] Installed to /root/.acme.sh/acme.sh[Fri 15 Apr 2022 11:54:11 AM CST] Installing alias to '/root/.bashrc'[Fri 15 Apr 2022 11:54:11 AM CST] OK, Close and reopen your terminal to start using acme.sh[Fri 15 Apr 2022 11:54:11 AM CST] Installing cron job49 0 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null[Fri 15 Apr 2022 11:54:11 AM CST] Good, bash is found, so change the shebang to use bash as preferred.[Fri 15 Apr 2022 11:54:12 AM CST] OK[Fri 15 Apr 2022 11:54:12 AM CST] Install success!root@cby:~# 进入导入环境变量并提出申请root@cby:~# cd .acme.sh/root@cby:~/.acme.sh# export DP_Id="abcd"root@cby:~/.acme.sh# export DP_Key="xxxxxxxxxx"root@cby:~/.acme.sh# ./acme.sh --issue --dns dns_dp -d *.oiox.cn -d oiox.cn[Fri 15 Apr 2022 12:05:13 PM CST] Using CA: https://acme.zerossl.com/v2/DV90[Fri 15 Apr 2022 12:05:13 PM CST] Multi domain='DNS:*.oiox.cn,DNS:oiox.cn'[Fri 15 Apr 2022 12:05:13 PM CST] Getting domain auth token for each domain[Fri 15 Apr 2022 12:05:38 PM CST] Getting webroot for domain='*.oiox.cn'[Fri 15 Apr 2022 12:05:38 PM CST] Getting webroot for domain='oiox.cn'[Fri 15 Apr 2022 12:05:39 PM CST] Adding txt value: DDuc5hd3b1RIoa5BefBkA53EpEtbAY0Fk8jOVVJcL6E for domain:  _acme-challenge.oiox.cn[Fri 15 Apr 2022 12:05:39 PM CST] Adding record[Fri 15 Apr 2022 12:05:39 PM CST] The txt record is added: Success.[Fri 15 Apr 2022 12:05:40 PM CST] Adding txt value: 43GHnhiHjyxCxsdHSDRDP_A4YqP8dDjc_9YgnkFNk5I for domain:  _acme-challenge.oiox.cn[Fri 15 Apr 2022 12:05:40 PM CST] Adding record[Fri 15 Apr 2022 12:05:40 PM CST] The txt record is added: Success.[Fri 15 Apr 2022 12:05:40 PM CST] Let's check each DNS record now. Sleep 20 seconds first.[Fri 15 Apr 2022 12:06:01 PM CST] You can use '--dnssleep' to disable public dns checks.[Fri 15 Apr 2022 12:06:01 PM CST] See: https://github.com/acmesh-official/acme.sh/wiki/dnscheck[Fri 15 Apr 2022 12:06:02 PM CST] Checking oiox.cn for _acme-challenge.oiox.cn[Fri 15 Apr 2022 12:06:04 PM CST] Domain oiox.cn '_acme-challenge.oiox.cn' success.[Fri 15 Apr 2022 12:06:04 PM CST] Checking oiox.cn for _acme-challenge.oiox.cn[Fri 15 Apr 2022 12:06:05 PM CST] Domain oiox.cn '_acme-challenge.oiox.cn' success.[Fri 15 Apr 2022 12:06:05 PM CST] All success, let's return[Fri 15 Apr 2022 12:06:05 PM CST] Verifying: *.oiox.cn[Fri 15 Apr 2022 12:06:17 PM CST] Processing, The CA is processing your order, please just wait. (1/30)[Fri 15 Apr 2022 12:06:24 PM CST] Success[Fri 15 Apr 2022 12:06:24 PM CST] Verifying: oiox.cn[Fri 15 Apr 2022 12:06:31 PM CST] Processing, The CA is processing your order, please just wait. (1/30)[Fri 15 Apr 2022 12:06:34 PM CST] Success[Fri 15 Apr 2022 12:06:34 PM CST] Removing DNS records.[Fri 15 Apr 2022 12:06:34 PM CST] Removing txt: DDuc5hd3b1RIoa5BefBkA53EpEtbAY0Fk8jOVVJcL6E for domain: _acme-challenge.oiox.cn[Fri 15 Apr 2022 12:06:35 PM CST] Removed: Success[Fri 15 Apr 2022 12:06:35 PM CST] Removing txt: 43GHnhiHjyxCxsdHSDRDP_A4YqP8dDjc_9YgnkFNk5I for domain: _acme-challenge.oiox.cn[Fri 15 Apr 2022 12:06:36 PM CST] Removed: Success[Fri 15 Apr 2022 12:06:36 PM CST] Verify finished, start to sign.[Fri 15 Apr 2022 12:06:36 PM CST] Lets finalize the order.[Fri 15 Apr 2022 12:06:36 PM CST] Le_OrderFinalize='https://acme.zerossl.com/v2/DV90/order/G4Sy37Y-eHjHX1wLMAh5nA/finalize'[Fri 15 Apr 2022 12:06:44 PM CST] Order status is processing, lets sleep and retry.[Fri 15 Apr 2022 12:06:44 PM CST] Retry after: 15[Fri 15 Apr 2022 12:07:00 PM CST] Polling order status: https://acme.zerossl.com/v2/DV90/order/G4Sy37Y-eHjHX1wLMAh5nA[Fri 15 Apr 2022 12:07:03 PM CST] Downloading cert.[Fri 15 Apr 2022 12:07:03 PM CST] Le_LinkCert='https://acme.zerossl.com/v2/DV90/cert/r4l-4WevkiEwiZA3U340ig'[Fri 15 Apr 2022 12:07:10 PM CST] Cert success.-----BEGIN CERTIFICATE-----MIIGaDCCBFCgAwIBAgIRAPw9soTBNxRGIVE6ANgMifAwDQYJKoZIhvcNAQEMBQAwSzELMAkGA1UEBhMCQVQxEDAOBgNVBAoTB1plcm9TU0wxKjAoBgNVBAMTIVplcm9TU0wgUlNBIERvbWFpbiBTZWN1cmUgU2l0ZSBDQTAeFw0yMjA0MTUwMDAwMDBaFw0yMjA3MTQyMzU5NTlaMBQxEjAQBgNVBAMMCSoub2lveC5jbjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALj8qi39uAgrhdwzQ6zP+ADRZgO2qGAVN4Qmu/ultANIVXuM/B3lbD6RM+Msb1Df5FKXJoga+hBjBQI9iX+k4M3uf2isIeZBJix1dj2N6o2NpcbCXEyPclOFSWHuOuMgCXKofThz9Vlgb1sZsuBv7+6mF/qGEmX2nsjIYlPh/x7NqB1+WF+ouKPWOvWTg/O+NaJd/8EkIhtqwYRH19JtIMxZAnVcnk/vlUirHFdlK0C21mCn4SZpG/k0tfLkUAJ/dokWAYKiAV5kCr1cpS/mEKGWKbgR0+e436ZlAXR8pPJLHvV19U+D4+YrjvEGrxh0p3sQmVLAQiKvX8H/2e6/lJUCAwEAAaOCAnwwggJ4MB8GA1UdIwQYMBaAFMjZeGii2Rlo1T1y3l8KPty1hoamMB0GA1UdDgQWBBQNQ6TgWc9VXEb7JBebpnqg07n6lDAOBgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAdBgNVHSUEFjAUBggrBgEFBQcDAQYIKwYBBQUHAwIwSQYDVR0gBEIwQDA0BgsrBgEEAbIxAQICTjAlMCMGCCsGAQUFBwIBFhdodHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBAgEwgYgGCCsGAQUFBwEBBHwwejBLBggrBgEFBQcwAoY/aHR0cDovL3plcm9zc2wuY3J0LnNlY3RpZ28uY29tL1plcm9TU0xSU0FEb21haW5TZWN1cmVTaXRlQ0EuY3J0MCsGCCsGAQUFBzABhh9odHRwOi8vemVyb3NzbC5vY3NwLnNlY3RpZ28uY29tMIIBAgYKKwYBBAHWeQIEAgSB8wSB8ADuAHUARqVV63X6kSAwtaKJafTzfREsQXS+/Um4havy/HD+bUcAAAGAK2cJxgAABAMARjBEAiBqAyCsE36I+qUvZaEuWqNfXuLAgdaNl6Xi/XrtpEIQhAIgRxOZNoDnqjgxGxfuG4kaGvLzlJezgbzss49CK/pHg+MAdQBByMqx3yJGShDGoToJQodeTjGLGwPr60vHaPCQYpYG9gAAAYArZwmVAAAEAwBGMEQCIE4CJqmMWMJBpSMumrxsK4hBV2aVoG6zke9vqjvUD6mQAiBaCjPj2NJCULsSB39TVW9maHtX9oQ8Wl9vLAD4dKirkDAdBgNVHREEFjAUggkqLm9pb3guY26CB29pb3guY24wDQYJKoZIhvcNAQEMBQADggIBAGdRf30QaQQ764Qe7e/+qFX6gcQ2nee8w4jKTLgcXL0un5Fb9lJi/cJtdsMDxvYyrFEhYIl3XosP2Kzl0DAwxYV2QcN0g0EulOfU46v/rueWuLo/AwzSVdSwxPTLa+QI69cPgQk/skqRigv17zjdbRRVY7jm/+a9wGc8st0CNUtCgH4N03HcexIqbo7wquNUE19rvhFOTPMewID7P8NviitM76vSK3C7SNqnyeIAZ3ydOFamZ4ye68mEQCJ0LGaSlDme8tY3eA3vliziKeouv6itGbRSX2Ze8Twk/8PADC0sxIjPjrh47ngE+DNpEEDr6PH89hnvjEl3V0ZFV9dW1McAoq2QRW4LyXeSXasYPKQU1ncTjDsymquX5r7OJ1SCnXUCuEFohoGWkZTWUFQBy3C8XwuzAHzYxzsSPyKV19sJEUkSaFIEQH5dbMqGSnk60gE+bqDfRTZ2PL9WGp+by60HSbzo3ehnUoyRkggmoD+SX8AAJLPuxkHFB/L68CL7knwWXzYcBYfj0yv+0T5HPhOofHudFwv/h5loRN/1jeVwIblo9B+3KnNNDAxd5NTf1l80oZJgKqS6zoFJwKbE0X11Ved7m35ZEcj4UwrgSFLE7Y9+to66In2N/QpvFPFclE9Xfwdd03YAmxS/biIul2xrkzBfE9Q19NWLnTA2YU52-----END CERTIFICATE-----[Fri 15 Apr 2022 12:07:10 PM CST] Your cert is in: /root/.acme.sh/*.oiox.cn/*.oiox.cn.cer[Fri 15 Apr 2022 12:07:10 PM CST] Your cert key is in: /root/.acme.sh/*.oiox.cn/*.oiox.cn.key[Fri 15 Apr 2022 12:07:10 PM CST] The intermediate CA cert is in: /root/.acme.sh/*.oiox.cn/ca.cer[Fri 15 Apr 2022 12:07:10 PM CST] And the full chain certs is there: /root/.acme.sh/*.oiox.cn/fullchain.cer查看已申请进去证书root@cby:~/.acme.sh# cd \*.oiox.cnroot@cby:~/.acme.sh/*.oiox.cn# lltotal 44drwxr-xr-x 2 root root 4096 Jul 27 10:31 ./drwx------ 7 root root 4096 Jul 27 10:28 ../-rw-r--r-- 1 root root 4399 Jul 27 10:31 ca.cer-rw-r--r-- 1 root root 6684 Jul 27 10:31 fullchain.cer-rw-r--r-- 1 root root 2285 Jul 27 10:31 '*.oiox.cn.cer'-rw-r--r-- 1 root root 556 Jul 27 10:31 '*.oiox.cn.conf'-rw-r--r-- 1 root root 956 Jul 27 10:28 '*.oiox.cn.csr'-rw-r--r-- 1 root root 156 Jul 27 10:28 '*.oiox.cn.csr.conf'-rw------- 1 root root 1679 Jul 27 10:28 '*.oiox.cn.key'root@cby:~/.acme.sh/*.oiox.cn#Nginx部署证书示例:server {        listen 80;        listen [::]:80;        listen 443 ssl;        listen [::]:443;        ssl_certificate /ssl/cert.pem;        ssl_certificate_key /ssl/cert.key;        ssl_session_timeout  5m;        ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;        ssl_protocols TLSv1 TLSv1.1 TLSv1.2;        ssl_prefer_server_ciphers on;        server_name dns.oiox.cn;        root /var/www/dns;        index index.html;        location / {                try_files $uri $uri/ =404;        }}# 转化证书acme.sh --install-cert -d *.oiox.cn --key-file /ssl/cert.key --fullchain-file /ssl/cert.pem --reloadcmd "service nginx force-reload"[Wed 27 Jul 2022 10:34:41 AM CST] Installing key to: /ssl/cert.key[Wed 27 Jul 2022 10:34:41 AM CST] Installing full chain to: /ssl/cert.pem[Wed 27 Jul 2022 10:34:41 AM CST] Run reload cmd: service nginx force-reload[Wed 27 Jul 2022 10:34:41 AM CST] Reload success证书更新目前通过 acme.sh 生成的证书会在60天过期装置 acme.sh 时会主动创立一个 cronjob,每天定期检查所有证书,如果证书须要更新会自动更新证书。 ...

July 27, 2022 · 1 min · jiezi

关于linux:Linux创建文件的5种方式

1 touch 1.1 创立一个文件touch yyTest.ini 1.2 同时创立两个文件 touch test1.txt test2.txt 1.3 批量创立文件(如创立2000个文件) touch test{0001..2000}.txt 1.4 更改文件 yyTest.ini工夫为以后工夫(yyTest.ini已存在) touch yyTest.ini 2 vi和vim vi test.txt vim touch.txt 3 应用>、>> 3.1 >间接笼罩原文件,不会有任何提醒 3.2 >>追加在原文件开端,不会笼罩原文件的内容 3.3 间接用>创立空文件 test.ini3.4 ls 创立文件(将后果写入文件)ls > test.ini ls >> test.ini 3.5 grep 创立文件(将后果写入文件) ps -ef | grep java >test.ini ps -ef | grep java >>test.ini 3.6 echo 创立文件(将后果写入文件) echo $PATH > test.ini echo $PATH >> test.ini 4 应用cp创立文件 ...

July 26, 2022 · 1 min · jiezi

关于linux:linux-cat命令详解

cat命令: 1、cat linux.txt : 查看linux.txt内容。 2、cat -n linux.txt,查看linux.txt文件的内容,并且由1开始对所有输入行进行编号。(包含空白行) 3、cat -b linux.txt ,用法和 -n 差不多,然而不对空白行编号。 4、cat -s linux.txt,当遇到有间断两行或两行以上的空白行,就代换为一行的空白行。 5、cat -e linux.txt,在输入内容的每一行前面加一个$符号。(包含空白行) 6、cat linux1.txt linux2.txt,同时显示f1.txt和f2.txt文件内容,留神文件名之间以空格分隔,而不是逗号。 7、cat -n linux1.txt>linux2.txt,对linux1.txt文件中每一行加上行号后而后写入到linux2.txt中,会笼罩原来的内容,文件不存在则创立它。 8、cat -n linux1.txt>>linux2.txt,对f1.txt文件中每一行加上行号后而后追加到f2.txt中去,不会笼罩原来的内容,文件不存在则创立它。 tail命令: 1、tail -f filename 监督filename文件的尾部内容(默认10行,相当于减少参数 -n 10),刷新显示在屏幕上。退出,按下CTRL+C。参考链接:2 ways to append text to the end of file in Linux

July 26, 2022 · 1 min · jiezi

关于linux:Linux-中的大内存页hugepage是个什么

本文中咱们会具体介绍大内存页huge page,让你可能答复:Linux 中的“大内存页”是什么?在 RHEL6、RHEL7、Ubuntu 等 Linux 中,如何启用/禁用“大内存页”?如何查看“大内存页”的以后值?首先让咱们从“大内存页”的基础知识开始讲起。Linux 中的“大内存页”是个什么玩意?“大内存页”有助于 Linux 零碎进行虚拟内存治理。顾名思义,除了规范的 4KB 大小的页面外,它们还能帮忙治理内存中的微小的页面。应用“大内存页”,你最大能够定义 1GB 的页面大小。在系统启动期间,你能用“大内存页”为应用程序预留一部分内存。这部分内存,即被“大内存页”占用的这些存储器永远不会被替换出内存。它会始终保留其中,除非你批改了配置。这会极大地提高像 Oracle 数据库这样的须要海量内存的应用程序的性能。为什么应用“大内存页”?在虚拟内存治理中,内核保护一个将虚拟内存地址映射到物理地址的表,对于每个页面操作,内核都须要加载相干的映射。如果你的内存页很小,那么你须要加载的页就会很多,导致内核会加载更多的映射表。而这会升高性能。应用“大内存页”,意味着所须要的页变少了。从而大大减少由内核加载的映射表的数量。这进步了内核级别的性能最终有利于应用程序的性能。简而言之,通过启用“大内存页”,零碎具只须要解决较少的页面映射表,从而缩小拜访/保护它们的开销!如何配置“大内存页”?运行上面命令来查看以后“大内存页”的具体内容。root@kerneltalks # grep Huge /proc/meminfoAnonHugePages: 0 kBHugePages_Total: 0HugePages_Free: 0HugePages_Rsvd: 0HugePages_Surp: 0Hugepagesize: 2048 kB从下面输入能够看到,每个页的大小为 2MB(Hugepagesize),并且零碎中目前有 0 个“大内存页”(HugePages_Total)。这里“大内存页”的大小能够从 2MB 减少到 1GB。运行上面的脚本能够晓得零碎以后须要多少个微小页。该脚本取之于 Oracle。#!/bin/bash hugepages_settings.shLinux bash script to compute values for therecommended HugePages/HugeTLB configurationNote: This script does calculation for all shared memorysegments available when the script is run, no matter itis an Oracle RDBMS shared memory segment or not.Check for the kernel versionKERN=uname -r | awk -F. '{ printf("%d.%d\n",$1,$2); }' ...

July 26, 2022 · 2 min · jiezi

关于linux:Linux查看进程启动时间与运行时间

办法一grep过程名[root@iZ25p102vo3Z ~]# ps -eo pid,lstart,etime,cmd | grep nginx16968 Fri Mar 4 16:04:27 2016 41-21:14:04 nginx: master process /usr/sbin/nginx17826 Fri Mar 4 22:53:51 2016 41-14:24:40 nginx: worker process18312 Fri Apr 15 13:18:31 2016 00:00 grep --color=auto nginx1.2.3.4.办法二指定过程号ps -p PID -o lstart,etime 参考链接:3 Ways to check process running time in Linux

July 26, 2022 · 1 min · jiezi

关于linux:全面讲解Linux文件命令

本文解说了Linux文件命令,在 Linux/UNIX 操作系统中,所有事物都被当作文件来解决:硬件设施(包含键盘和终端)、目录、命令自身,当然还有文件。这个奇怪的常规实际上是 Linux/UNIX 的能力和灵活性的根底。 尽管 GUI 桌面(如 KDE 和 GNOME)可能帮忙用户利用 Linux 个性,而无需对于命令行接口的性能常识,但还是常常会须要更多的性能和灵活性。而且,根本相熟这些命令对于在 shell 脚本中正确地使某些性能自动化依然是必须的。 这篇文章是对于 Linux文件命令的一个“速成教程”,它是为那些刚接触这个操作系统或者只是须要补充这方面常识的用户提供的。它蕴含了对一些更有用的命令的一个扼要的概述以及对于它们的*大的利用的领导。上面蕴含的信息 — 联合一些试验 — 将使您可能容易地把握这些根本的命令。(留神:当波及到一个与 Oracle 集群文件系统 (OCFS) 联合的内核时,这些命令中的某些命令的行为可能会略微有所不同。在此状况下,Oracle 提供了一个 OCFS 工具集,该工具集能够为文件命令利用提供一个更好的抉择。) 留神,这里蕴含的所有示例都在 SUSE Linux 8.0 Professional 上进行了测试。尽管没有理由置信它们在其它的零碎上将不能工作,但如果呈现问题,您该当查看您的文档,以理解可能的变动。 背景概念 在深入研究标准之前,让咱们回顾一些基础知识。 文件和命令 在 Linux/UNIX 操作系统中,所有事物都被当作文件来解决:硬件设施(包含键盘和终端)、目录、命令自身,当然还有文件。这个奇怪的常规实际上是 Linux/UNIX 的能力和灵活性的根底。 大多数(简直是全副)的命令模式如下: 复制command [option] [source file(s)] [target file] 1.获取帮忙 最有用的命令之一是那些提供帮忙的命令(特地是对那些学习 Linux 的人而言)。Linux 中的两个重要的信息起源是联机参考手册,或 man 页面和 whatis 工具。您能够用 whatis 命令来拜访一个不相熟的命令的 man 页面。◆ whatis echo要理解对于这个命令的更多信息,能够应用:◆ manecho 如果您不晓得某个特殊任务所需的命令,您能够用 man -k (也称为 apropos)和一个主题来生成可能的命令。例如:◆ man -k files一个很有用但经常被忽视的命令能够提供对于应用 man 自身的信息:◆ man man您能够用 SPACEBAR 来浏览任意的 man 页面;UP ARROW 将向上翻滚文件。.要退出,则输出 q,!,或 CTRL-Z。 ...

July 26, 2022 · 1 min · jiezi

关于linux:Linux系统DHCP指定ip

零碎版本:centos7 批改配置文件首先查看一下mac地址重启一下服务而后到客户机上查看,是否获取到指定的ip地址

July 26, 2022 · 1 min · jiezi

关于linux:Linux系统打包解压参数

tar命令做打包操作当 tar 命令用于打包操作时,该命令的根本格局为: tar [选项] 源文件或目录 tar 打包命令罕用选项及含意 选项 含意 -c 将多个文件或目录进行打包。 -A 追加 tar 文件到归档文件。 -f 包名 指定包的文件名。包的扩展名是用来给管理员辨认格局的,所以肯定要正确指定扩展名; -v 显示打包文件过程; 须要留神的是,在应用 tar 命令指定选项时能够不在选项后面输出“-”。例如,应用“cvf”选项和 “-cvf”起到的作用一样。 tar命令做解打包操作当 tar 命令用于对 tar 包做解打包操作时,该命令的根本格局如下: tar [选项] 压缩包 tar 解打包罕用选项及含意 选项 含意 -x 对 tar 包做解打包操作。 -f 指定要解压的 tar 包的包名。 -t 只查看 tar 包中有哪些文件或目录,不对 tar 包做解打包操作。 -C 目录 指定解打包地位。 -v 显示解打包的具体过程。 其实解打包和打包相比,只是把打包选项 "-cvf" 更换为 "-xvf"。 zip命令打包操作zip [选项] 压缩包名 源文件或源目录列表 留神,zip 压缩命令须要手工指定压缩之后的压缩包名,留神写分明扩展名,以便解压缩时应用。该命令罕用的几个选项及各自的含意如表 1 所示。 zip 命令罕用选项及含意 ...

July 26, 2022 · 2 min · jiezi

关于linux:Linux系统模拟i结点耗尽

零碎版本:centos7 编写一个测试程序 运行程序 曾经无奈持续创立 修复i结点耗尽故障

July 26, 2022 · 1 min · jiezi

关于linux:Linux排查CPU使用率100

1.首先通过top命令或者htop查看工作负载信息。2.记录最高应用内存的PID。3.通过top -Hp PID值查看最高CPU线程号。4.通过jstack PID > log输入日志。5.通过vim或者其余剖析工具搜寻最高CPU线程16进制坐标,剖析问题。

July 25, 2022 · 1 min · jiezi

关于linux:Linux常用命令

Linux常用命令 ls:列出以后门路下的文件与文件夹 -l:列出文件的详细信息 -a:all,列出所有文件,包含暗藏文件pwd:显示以后所在门路 -P :显示理论物理门路,而非应用连贯(link)门路 -L :当目录为连贯门路时,显示连贯门路cd:切换目录 cd..:到上一目录 cd../..:到父目录的父目录 cd.:进入当前目录cp:复制 -i:若有同名文件,会询问是否笼罩(反之,就不会) -r:复制文件夹时连同子文件(夹)一起复制,如果是对文件夹进行操作,肯定要带上这个参数mv:挪动(剪切) -i:若笼罩则询问-f:笼罩已有文件时,不进行任何提醒-b:当文件存在时,笼罩前为其创立一个备份-u:当源文件比指标文件新,或者指标文件不存在时,才执行挪动此操作 mv -i Anyu/home /Yurm:移除、删除 -i:若笼罩则询问 -r:删除所有子文件(夹) rm -r Anyu //对文件夹操作肯定要带-rmkdir:创立文件夹 -m,对新创建的目录设置权限,在没有-m选项时,默认权限是755 -p, 能够是一个门路名称。此时若门路中的某些目录尚不存在,加上此选项后,零碎将主动建设好那些尚不存在的目录,即一次能够建设多个目录; -v, 每次创立新目录都显示信息rmdir:移除、删除文件夹 -p:删除指定目录后,若该目录的下层目录已变成空目录,则将其一并删除;chown:更改所有者 -c:成果相似“-v”参数,但仅回报更改的局部; -f:不显示错误信息; -h:只对符号连贯的文件作批改,而不更改其余任何相干文件; -R:递归解决,将指定目录下的所有文件及子目录一并处理; chown user -R Anyu //把文件夹所有者改成userchmod:更改文件的权限模式 文件模式:用户user、组group、其余用户other 文件权限:读read、写write、执行Execute u:user,权限为以后用户(这里是所有者) g:group,权限对象为所有者和组 o:other,权限对象为其余用户 r:read=4,读权限 w:write=2,写权限 e:execute=1,执行权限 +:u/g/o与r/w/e组合应用,退出 -:删除 =:设置 4:仅读 5:仅读+执行 6:仅读+写 7:读+写+执行 chmod 754 Anyu/ //以后用户(所有者)可读+写+执行,组group可读+执行,其余用户可读 chmod g+w Anyu/ //为组group增加写write权限find:查找 -name:依据文件名查找 *.后缀(查找目录下所有此后缀的文件) -mtime n:n为数字,示意找出N天前的当天被更改过的文件(0表明天) -mtime +n:查找在n天前(不包含n)被改过的文件 -mtime -n:查找在N天之内(包含n)被改过的文件 -size +/-:查找比XXsize大/小的文件touch:批改文件或者目录的工夫属性,包含拜访工夫和批改工夫,若文件不存在,零碎会建设一个新的文件 -a 只更改存取时间 -c 不建设任何文档 -d 应用指定的日期工夫,而非当初的工夫 -f 此参数将疏忽不予解决,仅负责解决BSD版本touch指令的兼容性问题 -m 只更改变动工夫 -r 把指定文档或目录的日期工夫,通通设成和参考文档或目录的日期工夫雷同 -t 应用指定的日期工夫,而非当初的工夫cat:命令用于连贯文件并打印到规范输出设备上。 -A 等价于"-vET"组合选项。 -b 只对非空行编号,从1开始编号,笼罩"-n"选项。 -e 等价于"-vE"组合选项。 -E 在每行的结尾显示'$'字符。 -n 对所有行编号,从1开始编号。 -s 压缩间断的空行到一行。 -t 等价于"-vT"组合选项。 -T 应用"^I"示意TAB(制表符)。 -u POSIX兼容性选项,无意义。 -v 应用"^"和"M-"符号显示控制字符,除了LFD(line feed,即换行符'\n')和TAB(制表符)。

July 25, 2022 · 1 min · jiezi

关于linux:Linux执行python项目找不到路径

shell终端进行两步操作即可: (1)export PYTHONPATH=我的项目门路(ps:如/data/project/test) (2)env | grep PYTHONPATH若有 PYTHONPATH=/data/project/test则阐明胜利。Linux查看以后门路命令: pwd

July 25, 2022 · 1 min · jiezi

关于linux:xshell-破解安装

阿里云网盘下载地址:https://www.aliyundrive.com/s/zs6z2ZDT5B4阿里云网盘提取码:40tv1,下载实现后,失去这样的文件2,XmanagerPowerSuite-7.0.0004r.exe点击装置,先别关上 3,关上Crack文件夹,将patch.exe复制到,XmanagerPowerSuite-7.0.0004r.exe的装置门路,如图:4,点击patch.exe运行5,点击Patch,抉择 XmanagerPowerSuite-7.0.0004r.exe的装置门路6,确认,提醒以后内容即可

July 25, 2022 · 1 min · jiezi

关于linux:Linux系统中模拟并修复GRUB引导故障

零碎版本:centos7删除配置文件重启重启之后,在开机加载界面按esc键间接回车进入bash环境从新构建sda磁盘从新构建grub菜单配置输出exit退出bash环境输出reboot重启

July 25, 2022 · 1 min · jiezi

关于linux:Linux忘记root密码

零碎版本:centos7进入急救模式首先得在开机的按esc键,就是↓的这个界面,很快,只须要按一次而后用方向键操作,回车代表确定而后期待到下一个界面间接回车就能够设置新的明码了,

July 25, 2022 · 1 min · jiezi

关于linux:Linux系统模拟MBR故障

零碎版本:centos7备份MBR扇区数据模仿MBR故障重启应用光盘疏导模式进入救济模式输出“1”确认再按回车进入sh-4.2#因MBR损坏,已无奈取得无效分区表挂载带有备份文件的分区复原备份数据而后重启验证后果

July 25, 2022 · 1 min · jiezi

关于linux:Linux下安装JDK

Linux下装置JDK云服务器环境:CentOS 7.9 工具:Xshell7 确认装没装JavaJava -version Yum装置JDK1、查看yum库中有哪些版本yum search java|grep jdk 2、抉择指定版本装置,yum源装置的是OpenJDKyum install java-1.8.0-openjdk* 3、装置实现后查看版本Java -version 本地装置JDK去JDK官网下载所需版本,下载实现后,将JDK安装包通过ftp上传到Linux零碎下 进入用户目录,创立文件夹down,用于保留上传的文件 通过xftp上传到目录中,上传实现后进行查看 将JDK解压到/usr/lib/jvm(Linux装置JDK默认的目录)目录中,没有的话创立tar -xvf jdk-8u161-linux-x64.tar.gz -C /usr/lib/jvm 进入目录查看是否有文件 配置环境变量(/etc/profile)在结尾或结尾处增加JAVA_HOME=/usr/lib/jvm/jdk1.8.0_161PATH=$JAVA_HOME/bin:$PATHCLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarexport JAVA_HOME PATH CLASSPATH 从新加载配置文件source /etc/profile! 检测装置的的JDKJava -version

July 22, 2022 · 1 min · jiezi

关于linux:投票活动进行中探讨问题从互联网大量收集学习资料再包装成产品售卖盈利是否属于侵权违法

写在开篇明天不聊某项技能的知识点,咱们聊点别的。那么,到底聊啥好呢?笔者想想... 有了,这两天笔者从一个微信公众号中发现一个十分顽劣的营销行为。事件大略背景是这样的:经营公众号的小明(化名)从互联网上大量收集和某项技能所有相干的学习材料,通过本人的二次包装(分类、整顿、制作学习路线),最初再变成一个”原创“的产品进行售卖盈利,用网友们的话说就是:割韭菜。那么这个事件引起了很多宽广盆友的骂街行为。于是乎,也引起了我的好奇和关注。说起来也搞笑,笔者看了很多对其骂街的评论。额。。。反正挺难堪的! 好了,事件的背景说完了,那么,通过沉思,细思极恐啊!这不是在法律的红线上跳舞吗?所以,笔者同时也十分关怀一个问题,那就是:从互联网大量收集学习材料再包装成产品售卖盈利是否属于侵权守法?这个问题我也不得而知,行!那咱们今晚就来聊聊这个话题吧! 笔者也征询过律师,其示意还得联合获利金额大小来定,律师示意,从某些维度来看,该行为还是偏差涉嫌侵权守法的。 当然了,这个问题还真不好解。我也不能断言,律师也不敢轻易断言。但这个问题肯定要给弄明确了才行啊!不然凌晨5点想到这个问题就开始睡不着觉了。所以笔者想到了一个方法,就是通过发动投票流动,让全互联网的盆友们通过投票来得出答案。所以呢,麻烦宽广盆友们扫描上面二维码参加投票,辛苦大家啦! 本文装载于:https://mp.weixin.qq.com/s/Cx...

July 21, 2022 · 1 min · jiezi

关于linux:Linux系统yum安装ftp服务器

1.yum装置ftp服务器2.启动服务和设置开机自启3.查看有没有ftp的端口4.下载客户端登录5.ftp拜访,我应用的是centos7

July 21, 2022 · 1 min · jiezi

关于linux:Linux系统设置禁ping

1.关上配置文件,减少最上面那行2.批改实现后执行sysctl -p使新配置失效3.测试ping,应用的版本是centos7

July 21, 2022 · 1 min · jiezi

关于linux:linux系统修改用户密码

零碎版本:centos7 1.切换到root用户下2.批改成须要的明码,而后再切换回root用户登录胜利的话,就阐明之前批改胜利了

July 21, 2022 · 1 min · jiezi

关于linux:Linux系统中修改端口并放行防火墙

1.关上并批改ssh配置文件2.增加防火墙例外,如果没有开启防火墙就跳过firewall-cmd --zone=public --add-port=49527/tcp --permanent而后重启防火墙和ssh服务3.查看端口是否激活4.尝试近程登录,我应用的是VPS服务器批改胜利

July 21, 2022 · 1 min · jiezi

关于linux:CentOS-8里的这个功能天翼云SFS弹性文件校准了

 CentOS(Community Enterprise Operating System)作为Linux发行版之一,是Red Hat Enterprise Linux(RHEL)按照凋谢源代码规定公布的源代码所编译而成。因为出自同样的源代码,有些要求高度稳定性的服务器以CentOS代替商业版的Red Hat Enterprise Linux应用。 最近应用CentOS 8的小伙伴可能会发现,CentOS 8的磁盘性能监控工具iostat与CentOS 7相比,精准性有所降落,天翼云弹性存储团队在实际过程中发现问题,并用SFS弹性文件晋升了iostat的监控精确性。 在Linux中最罕用的就是iostat。它可能监控零碎磁盘设施的负载,提供磁盘设施的IO合并次数,读写带宽、均匀IO大小,均匀队列长度,磁盘利用率等信息。util(utilization)即磁盘设施的利用率,代表了磁盘设施有百分之多少的工夫用于解决IO,如果util长期处于100%,阐明IO压力过大,磁盘已满负荷工作。同样都是满负荷工作的状况下,iostat中util的统计在CentOS 7与CentOS 8中,显示存在显著差别:CentOS 7:CentOS 8: 同一个环境,压力测试把磁盘压满的状况下,CentOS 7的util曾经显示100%了,CentOS 8的util可能还不到75%。 iostat中的util,代表过来的一段时间内,存储设备解决IO的工夫占总工夫的百分比。设施解决IO的工夫是由设施在内核中的io_ticks属性保护: io_ticks代表设施解决IO的总工夫,是一个一直累加的值。io_ticks不关怀队列中有多少个IO在排队,它只关怀设施有IO的工夫。即不思考IO有多少,只思考IO有没有。 如果工夫过来了1s,其中的500ms设施中有IO,io_ticks就会减少500,util就是依据这个算式计算出的:io_ticks/总ticks=500/1000=50%。 CentOS 7降级到CentOS 8,util显示呈现了如此大的差别,就是因为在io_ticks的算法上,进行了变动。 tips:对于机械盘,IO是串行的,util能精确的反映磁盘的忙碌水平。但对于SSD,因为IO能够并行处理,通过util就无奈间接示意磁盘忙碌水平,但还是有肯定参考价值。 原理剖析在CentOS 7中,在每次IO开始、合并、完结及查问时,都会调用part_round_stats_single判断以后是否有IO申请在被解决,若有IO申请则依据工夫戳与以后工夫差值累加io_ticks,绝对比拟精确: 这两头就须要用到一个重要的变量,磁盘的inflight。inflight示意以后设施中未实现的IO申请数量,在CentOS 7中是通过每次IO开始时加1,完结时减1来实现对inflight的保护。  而在最新内核中,因为多队列的利用,计算inflight时会遍历所有解决中的IO申请,判断是否在以后磁盘以统计inflight。  如果为了统计io_ticks,每次都去遍历所有IO,就会影响IO的效率。所以在CentOS 8中,计算io_ticks时摈弃了inflight值,通过每次IO时调用update_io_ticks,如果发现不在同一个jiffies就对io_ticks加1,并将以后工夫赋予stamp。 然而这个改良有一个很显著的问题,在存储较快时不会有问题(iops > 1000)。然而在存储较慢时,比方一个IO继续多个jiffies,当IO end的时候经验了多个jiffies,后果也只对io_ticks加1,会导致utils精度失落很多。  这个问题存在了近2年,才在2020年失去了修复,通过每次IO end的时候将stamp-jiffies的工夫退出io_tick,缩小误差:   但还是不能解决以下这种场景:如果第一个io还没有完结,通过了n个jiffies,第二个io进来了,它会将stamp设置为以后jiffies,这个时候,stamp比之前第一个IO记录的值就少了n,IO完结时的减少的io_ticks就会少n,同样失落了精确度。如下图所示:  因为内核没有在每次IO时计算inflight,也就无奈判断是否须要对io ticks加上jiffies,这个问题就遗留了下来,导致了iostat监控后果的不精确,目前来说开源社区也没有太好的解决方案。  天翼云的改良针对社区高版本内核对慢速设施util统计不准确的问题,天翼云SFS弹性文件设计了兼容老版本io_ticks统计办法的计划,实用于对于util精确度要求较高的场景,能够实时开启/敞开基于inflight的精准io_ticks统计,让用户在应用CentOS 8零碎的同时也能享受到CentOS 7的精准iostat监控程度。  sfs-tools定义了须要跟踪的内核函数及从内核函数中提取相干的时延等数据的办法,并实现了对数据的二次加工和展现,其架构设计如下:  sfs_tools能够作为独立的工具应用,也能够作为文件网关的一个个性对外提供各项监控数据。目前该工具已集成天翼云文件存储的监控告警平台。  除此之外,天翼云SFS弹性文件还在纠正了精准度的根底上进一步提供了自研的性能监控工具,通过对内核文件函数接口的跟踪,在不影响性能的状况下,提供基于函数及文件级别的iops,读写提早等监控数据,不便了更多开发者、用户对支流开源零碎的应用。 将来,天翼云将持续保持自主翻新,施展本身技术劣势,继续晋升创新能力与外围竞争力,为自主可控、牢靠高效的云计算基础架构添砖加瓦,为国家信息技术产业的倒退提供松软的技术保障。 

July 20, 2022 · 1 min · jiezi

关于linux:Linux系列之文件和目录权限

前言咱们晓得,root用户基本上能够在零碎中做任何事。其余用户有更多的限度,并且通常被收集到组中。你把有相似需要的用户放入一个被授予相干权限的组,每个成员都继承组的权限。 让咱们看一下: 查看权限(Checking permissions)更改权限(Changing permissions)默认权限(Default permissions)非凡权限(Special permissions)授予权限权限有三个级别,别离是: r:读取权限。w:写入权限。x:执行权限。当一个文件被创立时,通常创立它的用户是它的所有者,而领有组是用户以后的组。咱们能够通过应用chown命令,来将文件的所有权转移到不同的用户。 chown gps /tmp/file.txt这里,咱们把/tmp 目录下的file.txt的所有权授予用户gps。 咱们也能够转移文件的所有权从一个组到另一个组,应用chgrp命令来达到目标。 chgrp cloudadmins newIDS假如咱们有一个名为newIDS的应用程序,这里咱们把组的所有权交给newIDS的cloudadmins组。 查看权限ls -l 带有-l (long)开关的ls命令将显示目录的内容,包含权限在内。让咱们把这个问题再细分一下。 drwxr-xr-x 2 azureuser azureuser 4096 Feb 14 22:31 Videos第一个字符示意文件类型,例子当中是d,意味着它是一个目录。这个字符能够是: (-) 惯例文件。(d) 目录。(c) 特殊字符。(b) 非凡块。(p) fifo(命令管道)。(l) 符号链接。(s) 套接字。通常状况下,你会看到d、-、l 。在本文中咱们将重点关注-和d 。符号链接有点相似于文件链接。 而后咱们能够看到: rwxr-xr-x共有9个字符,头三个示意用户的权限;两头三个示意组的权限;前面三个示意其余用户的权限。 在该示例中,组用户领有rwx(读、写、执行)权限。组领有r-x(读、不可写、执行)权限,-示意没有授予相应的权限。其余用户领有r-x(读、不可写、执行)权限。2 azureuser azureuser 4096 Feb 14 22:31 Videos残余的列包含:链接的数量、用户、大小、创立日期以及名称。 如有须要,能够更改权限。 更改权限只有root用户或者文件的所有者才能够更改权限,咱们应用chmod命令来解决,并且咱们能够应用十进制符号或者UGO(User, Group, Other),让咱们先看看十进制符号。 应用十进制符号更改权限该表蕴含所有可能的权限组合及其八进制和二进制示意。 二进制八进制rwx0000---0011--x0102-w-0113-wx1004r--1015r-x1106rw-1117rwx如果咱们想示意所有者、组、其余用户的所有权限,咱们能够应用 777该示例中,每个数字都是7,示意所有者、组、其余用户的权限。在表格中,咱们发现八进制中的7对应rwx ,也就是所有的(读、写、执行)权限。那么应该如何应用chmod呢? chmod 777 sample.txt这会给予所有者所有权限、组所有权限、所有其余用户所有权限。 chmod 700 sample.txtchmod 774 sample.txtchmod 755 sample.txt第一行将会给予所有者所有权限、组没有权限、其余用户没有权限。第二行将会给予所有者所有权限、组所有权限、其余用户只读权限。第三即将会给予所有者所有权限、组读和执行的权限、其余用户读和执行的权限。 应用UGO更改权限用来更改权限的数字办法是最罕用的,但咱们仍能够应用符号办法:UGO(User, Group, Other)。 ...

July 19, 2022 · 1 min · jiezi

关于linux:linux-ssh-key

一:简洁的配置文件 [root@cisco ~]# vi /etc/ssh/sshd_config Port 22Protocol 2HostKey /etc/ssh/ssh_host_rsa_keyHostKey /etc/ssh/ssh_host_dsa_keyKeyRegenerationInterval 3600ServerKeyBits 768SyslogFacility AUTHLogLevel INFOLoginGraceTime 600PermitRootLogin yesPubkeyAuthentication yesAuthorizedKeysFile .ssh/authorized_keysRhostsAuthentication noIgnoreRhosts yesHostbasedAuthentication noPasswordAuthentication noPermitEmptyPasswords noChallengeResponseAuthent ication noMaxStartups 20Subsystem sftp /usr/libexec/openssh/sftp-server~ 二、应用公钥认证1、原理:首先由用户生成一对密钥,而后将公钥保留在SSH服务器用户的目录下.ssh子目录中的authorized_key文件里(/root/.ssh/authorized_key).私钥保留在本地计算机.当用户登陆时,服务器查看authorized_key文件的公钥是否与用户的私钥对应,如果相符则容许登入,否则回绝.因为私钥只有保留在用户的本地计算机中,因而入侵者就算失去用户口令,也不能登陆到服务器.2、启用公钥认证批改配置文件/etc/ssh/sshd_config将"PasswordAuthentication yes"批改为"PasswordAuthentication no"3、生成密钥[root@rain ~]# ssh-keygen -t rsaGenerating public/private rsa key pair.Enter file in which to save the key (/root/.ssh/id_rsa):Enter passphrase (empty for no passphrase):Enter same passphrase again:Your identification has been saved in /root/.ssh/id_rsa.Your public key has been saved in /root/.ssh/id_rsa.pub.The key fingerprint is:4d:dd:48:af:76:c2:ba:a8:bc:20:f3:28:1d:6a:28:53root@rain.fish.com4、将/root/.ssh/id_rsa.pub改名为/root/.ssh/authorized_keysmv /root/.ssh/id_rsa.pub /root/.ssh/authorized_keys5、将私钥id_rsa拷贝到客户机A:linux下能够拷贝到/root/.ssh/就能够间接应用了。 ...

July 19, 2022 · 1 min · jiezi

关于linux:Linux中history配置及使用技巧

前言在Linux中,咱们能够通过history来查看历史命令,用来确认在某个时刻应用了哪个命令。然而,history的默认的,只会输入命令的序号以及命令。这时咱们就须要对history进行一些配置,让它报告命令执行的具体工夫。上面就是对于history的配置办法以及其余操作。一、history显示具体的工夫1.关上变量配置文件vim /root/.bashrc或vim /etc/bashrc 或者 vim /etc/profile #这里能够批改所有用户2.配置history的变量在.bashrc中追加下列语句(意为让history显示工夫戳 ){还可在变量中退出$(whoami),即可显示应用命令的用户 }export HISTTIMEFORMAT="%Y-%m-%d "或export HISTTIMEFORMAT='%F %T '或 export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S  whoami "或 export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S  who am i | awk '{print $1,$5}' "3.让配置好的变量失效source .bashrc4.胜利后,输出history显示格局,如下或二、history设置历史命令记录数实际上history命令查看的历史命令记录条数是有数目限度的,咱们能够通过配置,让它保留咱们想要保留的操作命令的数量。1.关上变量配置文件vim /root/.bashrc2.设置历史命令记录数在.bashrc中追加下列语句(意为保留1000条记录)export HISTSIZE=1000    3.让配置好的变量失效source .bashrc三、指定不同终端执行的命令都存储在同一个文件中在Linux中能够开启多个终端,因而会产生不同终端的历史记录,如果要查看对应终端的历史命令,就必须进入对应的终端中,进行查看。咱们能够配置让不同终端执行的命令都存储在同一个文件中,咱们只有查看这个文件,就能晓得某个终端执行了某些命令。1.关上变量配置文件vim /root/.bashrc2.指定不同终端执行的命令都存储在同一个文件中在.bashrc中追加下列语句(意为将不同终端执行的命令都存储在/root/.commandline_warrior中)export HISTFILE=/root/.commandline_warrior 3.让配置好的变量失效source .bashrc四、疏忽反复命令同上,再次追加export HISTCONTROL=ignoredups  五、多个终端同时操作时,防止命令笼罩,采纳追加形式同上,再次追加shopt -s histappend  六、实时写入实际上history的历史命令是写入.bash_history 中的。 ~/.bash_history 记录的是前一次登陆所运行过的命令,而本次登陆所运行的命令都被缓存在内存中,当退出零碎后,本次的命令记忆才会记录到 .bash_history 中。同上,再次追加(意为实时的记录入文件)PROMPT_COMMAND=’history -a’  七、设置记录历史的文件的大小同上,再次追加export HISTFILESIZE=450  八、齐全革除命令执行操作的历史记录不倡议执行1.清理历史记录(只是清理了表层,可在.bash_history找到回)history -c2.清理记录历史的记录文件内容echo " " > .bash_history 3.如有配置不同终端执行的命令存储文件echo " " > 不同终端执行的命令存储文件 参考链接:6 tips to use history command in Linux

July 19, 2022 · 1 min · jiezi

关于linux:Linux文本处理命令echo

echo 在linux帮忙文档的形容是显示一行文本,相似于python和java等编程语言中的print语句,实际上它的作用不仅仅如此。能够应用man echo查看具体的参数阐明。 example1: 显示一行文本,任何特殊字符都不会被本义 [root@aliyun-hk1 linux-shell-test]# echo hello\nworldhellonworld[root@aliyun-hk1 linux-shell-test]# echo 'hello\nworld'hello\nworld[root@aliyun-hk1 linux-shell-test]# echo hello worldhello world[root@aliyun-hk1 linux-shell-test]#example2: 显示一行文本,不要输入开端的换行符 [root@aliyun-hk1 linux-shell-test]# echo -n hello worldhello world[root@aliyun-hk1 linux-shell-test]# echo hello worldhello worldexample3: 显示一行文本,启用反斜杠前面的转义字符 [root@aliyun-hk1 linux-shell-test]# echo -e 'hello\nworld'helloworld[root@aliyun-hk1 linux-shell-test]# echo -e 'hello\tworld'hello worldexample4: 显示一行文本,禁用反斜杠前面的转义字符,echo默认参数 [root@aliyun-hk1 linux-shell-test]# echo -E 'hello\nworld'hello\nworld[root@aliyun-hk1 linux-shell-test]# echo -E 'hello\tworld'hello\tworldexample5: echo与cat的差别比照,echo只用于输入文本,cat用于输入文件内容或者从规范输出中输入 [root@aliyun-hk1 linux-shell-test]# echo hellohello[root@aliyun-hk1 linux-shell-test]# cat hellocat: hello: No such file or directory[root@aliyun-hk1 linux-shell-test]# echo /etc/hostname/etc/hostname[root@aliyun-hk1 linux-shell-test]# cat /etc/hostnamealiyun-hk1[root@aliyun-hk1 linux-shell-test]# echo hello|cathello[root@aliyun-hk1 linux-shell-test]#examle6: echo在自动化构建中的作用,例如咱们能够将DB中返回的数据格式化成ansible须要的数据,通过with_lines 传入某个task并循环应用。在某些状况下,从网络、DB等形式获取的规范输入,能够通过echo联合awk和grep等实现后果的格式化或数据荡涤,而后用到后续的脚本中。 ...

July 19, 2022 · 1 min · jiezi

关于linux:Linux查看文件大小的几种方法超全

一、stat命令stat指令:文件/文件系统的详细信息显示。 stat命令次要用于显示文件或文件系统的详细信息,该命令的语法格局如下: -f 不显示文件自身的信息,显示文件所在文件系统的信息 -L 显示符号链接 -t 简洁模式,只显示摘要信息 stat ljl.txt 1 二、wc命令wc命令用来计算数字。利用wc指令咱们能够计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从规范输出设施读取数据。 wc -c filename 参数-c示意统计字符, 因为一个字符一个字节, 所以这样失去字节数 wc -c ljl.txt 1 三、du命令du命令也是查看应用空间的,然而与df命令不同的是Linux du命令是对文件和目录磁盘应用的空间的查看,还是和df命令有一些区别的。 du -b filepath 参数-b示意以字节计数 du -b ljl.txt1 或者du -h filepath 间接得出人好辨认的文件大小 du -h ljl.txt1 四、ls命令ls命令用来显示指标列表,在Linux中是使用率较高的命令。ls命令的输入信息能够进行黑白加亮显示,以分区不同类型的文件。 ls -l filepath 第五列为文件字节数 ls -l ljl.txt1 ls -h filepath h示意human, 加-h参数失去人好读的文件大小 ls -lh ljl.txt1 参考链接:5 commands to check file size in Linux

July 19, 2022 · 1 min · jiezi

关于linux:Linux-系统目录结构及路径

Linux 系统目录构造 /根目录,Unix 和 Linux 中,没有盘符。 一个硬盘,一个根.。/bin零碎的常用命令目录.。包含控制台命令, 零碎可执行文件, 零碎的外围二进制文件等/etc公布目录, 相当于 windows 零碎中的 windows 目录, 保留零碎中的所有核心内容.。要求管制权限高, 倡议不要轻易读写/usr用户目录, 相当于 windows 零碎中的 program files 目录.。罕用于装置零碎所有用户共用的软件,资源/rootroot 根用户的用户目录.。相当于 windows 零碎中的 C:/users/administrator 目录称为用户主目录/home保留其余用户主目录的目录。如: Linux零碎中有 r_lee 用户. 那么肯定有 /home/r_lee 目录存在, 代表用户的主目录/var零碎运行过程的数据目录门路 全门路 (绝对路径)从 filesystem(文件系统) 根目录开始寻找文件。写法: 以 / 结尾。例如找 usr 下 local 中内容,门路: /usr/local 相对路径从以后资源门路开始寻找,找到其余资源门路过程。写法:肯定不是以/结尾。找以后资源的子目录间接写子目录名称,如果向上跳一级文件夹写法 : …/非凡门路写法/ 示意磁盘根~ 示意/root ,root 文件夹的根目录参考链接:understanding absolute path in Linux

July 19, 2022 · 1 min · jiezi

关于linux:Linuxcentos挂载数据盘

fdisk lDisk /dev/vda: 42.9 GB, 42949672960 bytes, 83886080 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytesDisk label type: dosDisk identifier: 0x000a18d3 Device Boot Start End Blocks Id System/dev/vda1 2048 8194047 4096000 82 Linux swap / Solaris/dev/vda2 * 8194048 83886079 37846016 83 Linux Disk /dev/vdb: 214.7 GB, 214748364800 bytes, 419430400 sectorsUnits = sectors of 1 * 512 = 512 bytesSector size (logical/physical): 512 bytes / 512 bytesI/O size (minimum/optimal): 512 bytes / 512 bytes分区fdisk /dev/vdbWelcome to fdisk (util-linux 2.23.2). ...

July 19, 2022 · 2 min · jiezi

关于linux:Linux系列之添加和删除软件命令

前言在基于Debian的Linux发行版中,默认的软件管理器是Advanced Packaging Tool, 也就是apt。本文将简略介绍上面无关增加和删除软件的命令: apt-cache searchapt-get installapt-get removeapt-get purge apt-get updateapt-get upgrade/etc/apt/sources.listapt-cache search命令保留特定Linux发行版软件的服务器被称为软件库。你的零碎将搜寻的软件库存储在sources.list文件中。要查看一个软件包是否可供你下载: apt-cache search keyword让咱们应用snort关键字进行搜寻: apt-cache search snort 有几个选项被返回,这取决于咱们是否能确保抉择正确的选项进行装置。 apt-get install命令一旦咱们晓得咱们想要装置哪个包,咱们能够应用: apt-get install packagename来装置指定的包。让咱们依据之前的命令后果来装置snort。snort是灵便的网络入侵检测零碎包。 snort曾经装置在我的机器上,所以我没有被要求Y/n装置它,对你来说输入可能不同。 apt-get remove命令如果你须要删除一个包,能够应用: apt-get remove packagenameremove命令不会删除配置文件,为此咱们能够应用purge。 apt-get purge命令为了放弃货色模块化,许多Linux软件包被分解成许多不同的程序能够共享的软件单元。当你装置一个软件包时,你也装置了它运行所需的任何依赖或库,为了删除所有这些文件,咱们应用purge命令: apt-get purge packagename如果我想要删除snort包,以及它所有的依赖,我能够这样做: apt-get purge snort 我不想彻底删除,你懂意思就好。 apt-get update命令它用来搜寻零碎上的所有软件包,并查看它们是否有更新。如果有更新,则下载更新。 apt-get update 那么咱们如何装置这些更新呢? apt-get upgrade命令该命令将更新你零碎上apt所晓得的所有软件包。 apt-get upgrade 你会失去一个降级所需的硬盘空间的估计值。如果你想持续,请输出Y。 sources.list文件这个文件通知零碎从哪个仓库搜寻软件。我将应用VI来查看它。 vi /etc/apt/sources.list 当你下载软件包时,apt会在你的sources.list中顺次寻找,当它找到软件包时就会进行。 仓库有以下几类: main:蕴含反对的开源软件。universe:蕴含社区保护的开源软件。multiverse:蕴含受版权或其余法律问题限度的软件。restricted:蕴含专有设施驱动程序。backports:蕴含前期版本的软件。你能够通过编辑该文件来增加仓库。

July 18, 2022 · 1 min · jiezi

关于linux:创建Root权限虚拟环境

原文链接 Linux下创立Anaconda创立虚拟环境: conda create -n myrootLinux下激活环境: source activate myrootmyroot为用户名,能够本人定义 回到原来的环境: source deactivate myroot删除虚拟环境: conda remove -n myroot --allWindows下创立Anaconda创立虚拟环境: conda create -n myroot python=3.5myroot为本人定义的环境名称,对应的python3.5版本。 windows下激活环境: activate myroot回到原来的环境: deactivate myroot学习更多编程常识,请关注我的公众号: 代码的路

July 15, 2022 · 1 min · jiezi

关于linux:pip安装更换镜像

原文链接 应用pip来装置python包有时候装置起来会十分慢,因而须要换成国内的源来减速下载: 应用命令以Torch为例: pip install -i https://pypi.tuna.tsinghua.edu.cn/simple torch罕用的国内源清华大学:Simple Index 中国科学技术大学:Simple Index 阿里云:Simple Index 豆瓣 :Simple Index 华中理工大学:http://pypi.hustunique.com/ 山东理工大学:http://pypi.sdutlinux.org/ 若无奈连贯WARNING: The repository located at pypi.doubanio.com is not a trusted or secure host and is being ignored. If this repository is available via HTTPS we recommend you use HTTPS instead, otherwise you may silence this warning and allow it anyway with '--trusted-host pypi.doubanio.com'. ERROR: Could not find a version that satisfies the requirement opencv-python (from versions: none) ERROR: No matching distribution found for opencv-python能够将源中的http改为https ...

July 15, 2022 · 1 min · jiezi

关于linux:pip安装torch出现PackageNotFoundError报错解决办法

原文链接 虚拟环境装置若装置失败,可能权限不够,须要在根用户下装置。 进入根用户办法:https://mp.weixin.qq.com/s/RT... 装置torchpip install torch或者应用: conda install torch报错PackageNotFound错误信息: Fetching package metadata ........... PackageNotFoundError: Package missing in current linux-64 channels: - torch Close matches found; did you mean one of these? torch: pytorch, libtorch 能够应用上面的指令来查找咱们想要装置的torch包: anaconda search -t conda torch 如上图所示。 (1)在Linux下,咱们找到了一个可用的torch包,名为Reinier/pytorch 。 接着,咱们应用show指令来查看该包的详细情况: anaconda show Reinier/pytorch 依据提醒,咱们应用上面的指令install这个包: conda install --channel https://conda.anaconda.org/Reinier pytorch(2)window下,咱们找到了一个可用的torch包,名为mwcraig/boost-vpython 。 接着,咱们应用show指令来查看该包的详细情况: anaconda show mwcraig/boost-vpython 依据提醒,咱们应用上面的指令install这个包: conda install --channel https://conda.anaconda.org/mwcraig boost-vpython报错Requirement already satisfied错误信息: Requirement already satisfied: torch in /home/snowstorm/.conda/envs/snowstorm/lib/python3.6/site-packages (0.1)应加上更新参数: ...

July 15, 2022 · 1 min · jiezi

关于linux:Linux修改文件权限

原文链接 权限介绍咱们首先应用ls -l指令查看文件的权限信息(以/etc/fstab为例): ls -l /etc/fstab能够看到输入蕴含: rwx rw- r--权限示意共有9位,每3位为一组,别离示意拥有者、所属组的成员和其余成员。其中,r示意读(read)权限,w示意写(write)权限,x示意执行( execute )权限,-示意无权限。 所以这个输入rwx rw- r--示意:拥有者有读、写、执行三个权限;所属组的成员领有读、写权限;其余成员只有读权限。 批改文件Linux下对文件进行读写操作时,可能呈现如下报错: -bash: xxx: Permission denied所以咱们须要批改文件的权限。 批改文件权限文件的最高权限为9位都是1,即111 111 111,转为十进制即777。 首先切换到根用户,进入根用户 查看文件权限: ls -l赋予文件可操作的最高权限(以/etc/fstab为例): sudo chmod 777 /etc/fstab若无奈赋予权限若呈现报错: chmod: changing permissions of 'fstab': Operation not permitted是因为咱们执行的chmod命令,其底层实现是chattr命令。 执行 lsattr 查看文件属性: sudo lsattr /etc/fstab输入为: ----i--------e-- /etc/fstab阐明文件有i属性和e属性,无奈批改。 去除文件i属性: sudo chattr -i /etc/fstab去除文件e属性: sudo chattr -e /etc/fstab而后执行 lsattr查看,发现输入为: ---------------- /etc/fstab此时能够批改权限了: sudo chmod 777 /etc/fstab而后批改文件即可。 复原文件权限复原文件权限: sudo chmod 440 /etc/fstab增加文件i属性: sudo chattr +i /etc/fstab增加文件e属性: ...

July 15, 2022 · 1 min · jiezi

关于linux:Linux-程序被Killed查看原因

原文链接 查看信息输出以下程序: dmesg | egrep -i -B100 'killed process'能够输入最近killed的信息。 设定kill优先度齐全关掉oom(不倡议)sysctl vm.overcommit_memory=2echo “vm.overcommit_memory=2” >> /etc/sysctl.conf呈现 Out of memory之后重启sysctl vm.panic_on_oom=1sysctl kernel.panic=Xecho “vm.panic_on_oom=1” >> /etc/sysctl.confecho “kernel.panic=X” >> /etc/sysctl.conf优先思考kill这个过程sudo echo 10>/proc/[PID]/oom_adj尽量不去kill这个过程sudo echo -15>/proc/[PID]/oom_adj不会kill这个过程sudo echo -17>/proc/[PID]/oom_adjoom_adj的值在-16 到 +15之间,值越高被kill的优先度越高。当该值为-17时,零碎将不会杀死指定pid的过程,而-16~15则会使得过程的/proc/[pid]/oom_adj值呈指数模式递增: $$K\times 2^{^{n}}$$ 即它们被杀掉的可能性呈指数递增。针对init(过程号为1)这个过程,无论该值设为多少都不会被杀。 若回绝拜访命令改为: bash -c "echo '10' | tee /proc/[PID]/oom_adj"bash -c "echo '-15' | tee /proc/[PID]/oom_adj"bash -c "echo '-17' | tee /proc/[PID]/oom_adj"学习更多编程常识,请关注我的公众号: 代码的路

July 15, 2022 · 1 min · jiezi

关于linux:Linux-中间件安装与常用命令指南

尽管从实践上来说,我应该先讲命令,后讲具体的中间件环境,然而从我集体的角度来体验,先实际,之后弄懂相干命令的意思就有一种豁然开朗的感觉,所以本文将依照上文的程序进行行文。大家可能留神到了,上图的命令中并没有根底命令,我认为根底命令扫一眼就行,没必要非凡记忆,我罕用的根底命令如下: top:查看零碎过程状况。 cd:切换目录。 vim:批改文件。 mkdir:创立文件夹。 或者是我场景无限,本人玩服务器的话根底命令除了这四个以外别的根本没用过,所以我倡议大家也没必要在这方面破费太多工夫,尤其是前端同学。最初,本文的 Linux 环境版本为:Ubuntn 20 LTS,强烈建议大家应用 Ubuntn(的确比拟好用),并且心愿大家养成点赞后看的好习惯。注:文本装置中间件都将以官网源进行装置,回绝应用包管理器的源,和官网放弃对立。Nginx原来我始终是用源码编译的形式进行装置 Nginx,当初感觉应用包管理器进行装置 + systemctl 治理更不便一些。进入正题,应用官网源进行装置大抵能够分为四步: 装置依赖。 生成 / 导入 key。 设置 Nginx 源。 装置。 装置依赖sudo apt install curl gnupg2 ca-certificates lsb-release ubuntu-keyring 生成keycurl https://nginx.org/keys/nginx_... | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null设置 Nginx 源echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \http://nginx.org/packages/ubuntu lsb_release -cs nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list更新 && 装置sudo apt updatesudo apt install nginx复制代码装置实现后咱们能够应用 systemctl start nginx 命令启动 Nginx,Nginx 一般来说咱们只须要理解两局部就够了:配置文件和常用命令。Nginx 的配置文件在:/etc/nginx/nginx.cnf,三个常用命令如下: Nginx -s reload:重载配置文件。 ...

July 14, 2022 · 4 min · jiezi

关于linux:网友来稿何为正则一正则天下一文带你看尽精华

写在开篇不晓得你们有没有过这样的经验:咱们去某些网站注册帐号,当你在设置明码的时候,网站会提醒你明码的长度范畴,以及对应的规定限度,当初假如咱们不晓得正则表达式,作为程序员,该如何去实现这样一个明码验证呢?对于正则表达式始终都是个让很多咱们都感觉很郁闷的一个货色,感觉发明正则表达式的那个家伙几乎就是个奇葩,什么是正则表达式?正则表达式就是为了解决大量的文本|字符串而定义的一套规定和办法通过定义的这些特殊符号的辅助,系统管理员就能够疾速过滤,替换或输入须要的字符 串。Linux正则表达式个别以行为单位解决。正则表达式是一种形容一组字符串的模式,相似数字表达式,通过各种操作符组成更小 的表达式为什么应用正则表达式呢? linux运维工作,大量过滤日志工作。 简略,高效。 正则表达式高级工具;三剑客都反对(grep,sed,awk)注意事项 正则表达式利用十分宽泛,存在于各种语言中,php perl grep sed awk 反对。ls * 通配符但当初学的是Linux中的正则表达式,最常利用正则表达式的命令是 grep(egrep),sed,awk。正则表达式和通配符有本质区别: 正则表达式用来找:【文件】内容,文本,字符串。个别只有三剑客反对,通配符用来找:文件名,一般命令都反对正则表达式应用注意事项1、linux正则表达式以行为单位解决字符串2、便于区别过滤出来的字符串,肯定配合grep/egrep命令学习。正则表达式的分类POSIX标准将正则表达式的分为了两种 根本正则表达式(BRE,basic regular expression)高级性能:扩大正则表达式(ERE,extended regular expression)BRE和ERE的区别仅仅是元字符的不同: BRE(根底正则表达式)只抵赖的元字符有^$.[]*其余字符识别为一般字符:()ERE (扩大正则表达式)则增加了(){}?+|等只有在用反斜杠“\”进行本义的状况下,字符(){}才会在BRE被当作元字符解决,而ERE 中,任何元符号后面加上反斜杠反而会使其被当作一般字符来解决。怎么玩辨别通配符和正则表达式不须要思考的判断办法:在三剑客awk,sed,grep,egrep都是正则,其余都是通配符区别通配符和正则表达式最简略的办法:(1)文件目录名===>通配符(2)文件内容(字符串,文本【文件】内容)===>正则表达式通配符和正则表达式都有“*”,“?”,“[]”,然而通配符的这些符号都能本身代表任意 字符,而正则表达式的这些符号只能代表这些符号后面的字符根本正则表达式字符形容^^word搜寻以word结尾的内容$word$搜寻以word结尾的内容^$示意空行,不是空格.代表且只能代表任意一个字符(不匹配空行)\转义字符,让有非凡含意的字符脱掉马甲,现出原形,如.只示意小数点*反复之前的字符或文本0个或多个,之前的文本或字符间断0次或屡次.*任意多个字符^.*以任意多个字符串结尾,.*尽可能多,有多少算多少,贪心性括号表达式 abc[.,/]匹配字符汇合内的任意一个字符a或b或c:[a-z]匹配所有小写字母;示意一个整 体,内藏有限可能;[abc]找a或b或c能够写成[a-c]1匹配不蕴含^后的任意字符a或b或c,是对[abc]的取反,且与^含意不同a{n,m}反复后面a字符n到m次(如果用egrep或sed -r可去掉斜线)a{n,}反复后面a字符至多n次,如果用egrep或sed -r可去掉斜线a{n}反复后面a字符n次,如果用egrep或sed -r可去掉斜线扩大正则表达式ERE特殊字符形容+反复前一个字符一次或一次以上,前一个字符间断一个或多个,把间断的文本/ 字符取出?反复后面一个字符0次或1次(.是有且只有1个)()分组过滤被括起来的货色示意一个整体(一个字符),后向援用正则小结根底正则:BRE^$.*.*[abc]1扩大正则:ERE+?(){}a{n,m}a{n,}a{n}转义字符\:将字符的意思扭转(不反对正则符号的,转变字符含意为正则,反对正则的转变 为一般字符含意)根本正则和扩大正则区别根底正则BRE扩大正则ERE??++{}{}( \ )()所谓根底正则实际上就是得须要转义字符配合表白的正则,而扩大正则就是让命令扩大 它的权限让他间接就意识正则表白符号(egrep,sed -r,awk间接反对)留神 grep默认不反对正则,因而正则表达式的符号对于grep来说就等同于一般字符含 义,因而,想让grep间接解决正则符号必须通过转义字符{}来解决。grep -E 强制让grep间接意识正则符号,不须要再进行本义egrep 等效grep -E 天生就能意识正则符号咱们平时备份能够通过cp 文件名{,.bak}的模式进行,防止再打一次文件名 sed -r :让sed反对正则补充阐明正则表达式形容示例[:alnum:][a-zA-Z0-9]匹配任意一个字母或数字字符[[:alnum:]]+[:alpha:]匹配任意一个字母字符(包含大小写字母)[[:alpha:]]{4}[:blank:]空格与制表符(横向纵向)[[:blank:]]*[:digit:]匹配任意一个数字字符[[:digit:]]?[:lower:]匹配小写字母[[:lower:]]{5,}[:upper:]匹配大写字母([[:upper:]]+)?[:punct:]匹配标点符号[[:punct:]][:space:]匹配一个包含换行符,回车等在内的所有空白符[[:space:]]+[:graph:]匹配任何一个能够看得见的且能够打印的字符[[:graph:]][:xdigit:]任何一个十六进制数[[:xdigit:]]+[:cntrl:]任何一个控制字符(ASCII字符集中的前32个字符)[[:cntrl:]][:print:]任何一个能够打印的字符[[:print:]]### 元字符 正则表达式形容示例\b单词边界\bcool\b匹配cool,不匹配coolant\B非单词边界cool\B匹配coolant不匹配cool\d单个数字字符b\db匹配b2b,不匹配bcb\D单个非数字字符b\Db匹配bcb不匹配b2b\w单个单词字符(字母,数字与_)\w匹配1或a,不匹配&\W单个非单词字符\W匹配&,不匹配1或a\n换行符\n匹配一个新行\s单个空白字符x\sx匹配xx,不匹配xx\S单个非空白字符x\S\x匹配xkx,不匹配xx\r回车\r匹配回车\t横向制表符\t匹配一个横向制表符\v垂直制表符\v匹配一个垂直制表符\f换页符\f匹配一个换页符写在最初学会正则表达式还是有必要的,配合grep,egrep,sed -r,awk更为弱小,至多当前你的共事写进去后,不会在脑子里呈现 "这是写的啥玩意儿啊?怎么我看不懂呢" 的想法或者共事不会正则表达式就能够牛逼的说,让我来。本篇转载于:https://mp.weixin.qq.com/s/pG... abc ↩

July 13, 2022 · 1 min · jiezi

关于linux:Linux-inode详解

最近在架设spnfs过程中发现。在client上创立文件,文件名以及目录关系都能够在MDS上体现进去。文件内容则存储在DS上。但DS上的文件名却都是由数字组成的。命名形式为:inode.xxxx. 对于inode,Sam刚开始认为是kernel的node概念。起初查了一下,发现如同有误差。于是学习之。 在Linux下,应用mkfs.ext3 时,有不少选项和inode无关。如: [-i bytes-per-inode] [-I inode-size] [-N number-of-inodes] 那inode是做什么用的呢?inode记录档案(文件或目录)的属性、及该档案搁置在哪一个Block之内的信息。 每个档案都会占用到至多一个 inode。而当咱们Linux零碎要找到这个档案时,他会先去搜查inode table找到这个档案的属性及数据搁置的地区,而后再到数据库去找到数据寄存的Block进而将数据取出。 一个 partition格式化为一个filesystem之后,他肯定会有inode table与data area两个区块,一个用来记录档案的信息与该档案搁置的block区块,一个用来记录档案的内容。 Linux 在读取数据的时候,是先查问 inode table 以失去数据是放在那个 Block 外面,而后再去该 Block 外面读取真正的数据内容。block 是咱们在格式化硬盘的时候规定进去的一个值,这个 block 是由 2 的 n 次方个sector(扇区,大小为512byte) 所集结而成的,假如 block 布局为 4KBytes,则因为一个 inode 与一个block 最多均只纪录一个档案,所以如果一个档案有 0.1 K bytes 。然而,因为你的 block为 4K bytes 。你就会有 3.9 Kbytes 的空间“节约掉”!所以,当你在格式化硬盘的时候,请千万留神到您的零碎的应用范畴。 1、 当 block 越小 ( 最小为 0.5K ) 、inodes 越多,可利用空间越多,然而大档案写入效率较差:适宜档案数量多然而 档案容量小的零碎,例如 BBS 或者新闻群组 news 这方面的服务之零碎; 2、 当 block 越大 ( 最大可到 16 * 0.5K 以上 ) 、 inodes 数越少,大档案写入效率较佳,但节约的空间较多:适宜档案容量大的零碎。 ...

July 12, 2022 · 1 min · jiezi

关于linux:Linux-free-命令

在Linux/Unix 零碎上,free是一个很受系统管理员欢送的命令,它是一个功能强大的工具,他能以一种易读的形式把内存应用状况展现进去 free 展现了零碎中闲暇和曾经应用了的物理内存、替换内存以及内核的缓冲区和页面缓存,所有展现的信息都是从 /proc/meminfo 文件解析进去的 语法free命令的语法如下 free [options] 输入列阐明当只输出free 命令不带任何选项时,输入的内存和替换内存大小是以 KB(kbytes)为单位的,具体的输入如下所示(在旧版的Linux零碎中,显示可能略有不同): [root@ecs-centos-7 ~]# free              total        used        free      shared  buff/cache   availableMem:        1881544      325980     1307868        8712      247696     1406892Swap:             0           0           0total ...

July 12, 2022 · 6 min · jiezi

关于linux:LINUX-IP命令详解

ip 是个命令, ip 命令的性能很多!基本上它整合了 ifconfig 与 route 这两个命令,不过ip 的性能更弱小! 如果您有趣味的话,请自行 vi /sbin/ifup 就晓得整个 ifup 就是利用 ip 这个命令来实现的。上面介绍一下应用办法 [root@linux ~]# ip [option] [动作] [命令] 参数: option :设定的参数,次要有:      -s :显示出该设施的统计数据(statistics),例如总承受封包数等;   动作:就是是能够针对哪些网络参数进行动作,包含有:        link :对于设施 (device) 的相干设定,包含 MTU, MAC 地址等等        addr/address :对于额定的 IP 设定,例如多 IP 的实现等等;        route :与路由无关的相干设定    由下面的语法咱们能够晓得, ip 除了能够设定一些根本的网络参数之外,还可能进行额定的 IP 设定, 包含多 IP 的实现,真是太完满了!上面咱们就分三个局部 (link, addr, route) 来介绍这个 ip 命令。 ...

July 12, 2022 · 5 min · jiezi

关于linux:Linux-hostname命令详解

1、查看本机的hostname hostname2、批改本机的hostname hostname newname运行后立刻失效(重新启动shell),然而在零碎重启后会失落所做的批改,如果要永恒更改零碎的hostname,就要批改相干的配置置文件。 RedHat的hostname,就批改/etc/sysconfig/network文件,将外面的HOSTNAME这一行批改成HOSTNAME=NEWNAME,其中NEWNAME就是你要设置的hostname。Debian发行版的hostname的配置文件是/etc/hostname。修该配置文件后,重启零碎就会读取配置文件设置新的hostname。 hostname与/etc/hosts的关系很多人人一提到更改hostname首先就想到批改/etc/hosts文件,认为hostname的配置文件就是/etc/hosts。其实不是的。hosts文件的作用相当如DNS,提供IP地址到hostname的对应。晚期的互联网计算机少,单机hosts文件里足够寄存所有联网计算机。不过随着互联网的倒退,这就远远不够了。于是就呈现了分布式的DNS零碎。由DNS服务器来提供相似的IP地址到域名的对应。具体能够man hosts。Linux零碎在向DNS服务器收回域名解析申请之前会查问/etc/hosts文件,如果外面有相应的记录,就会应用hosts外面的记录。 在Linux中和hostname相干的有几个: 零碎中有HOSTNAME环境变量, 用命令echo $HOSTNAME会把hostname (主机名)显示进去还有一个hostname命令: 它有几个性能:a) 查问主机名: i. hostname //显示主机名短格局,比方localhost; ii. hostname -f //显示主机名的长格局,带域名,比方:localhost.localdomain iii. hostname –d //显示域名,比方localdomain iv>. hostname –I //显示主机名对应的IP地址 iv. hostname –a //显示主机别名(alias),和hostname的输入后果一样, 比方localhost v. hostname –s //显示主机名的短格局,也就是从右边第一逗点后面局部,比方 localhost.localdomain逗点后面就是localhostb) 设置主机名: 用命令设置的主机名是临时的,零碎重新启动后,设置的主机名就会遗失。 i. hostname newname //设置主机名为newname永恒批改hostname用hostname批改的hostname是临时的,如果想永恒的批改hostname, 则必须批改相应的配置文件。man hostname里有这么一句话,”The host name is usually set once at system startup in /etc/rc.d/rc.inet1 or /etc/init.d/boot (normally by reading the contents of a file which contains the host name, e.g. /etc/hostname).”. CentOS中没有这句话举例说的hostname文件,而是由/etc/rc.d/rc.sysinit这个脚本负责设置零碎的hostname,它读取/etc /sysconfig/network这个文本文件,RedHat的hostname就是在这个文件里设置。 ...

July 12, 2022 · 1 min · jiezi

关于linux:Linux-ssh配置详解

一、ssh详解 1、什么是ssh 简略来说,ssh是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机,应用ssh协定登录另一台近程计算机,咱们就能够认为,这种登录是平安的,即便被中途截获,明码也不会泄露。 须要指出的是,ssh只有一种协定,存在多种实现,既有商业实现,也有开源实现。 2、根本用法 (1)应用某个用户(例如user)登录近程主机host 命令:ssh user@host (2)如果本地用户名和近程用户名统一,则登录时能够省略用户名 命令:ssh host (3)ssh的默认端口是22,也就是说,你的登录申请会送进近程主机的22端口。应用-p参数,能够批改这个端口 命令:ssh –p 端口号 user@host 3、中间人攻打 SSH之所以可能保障平安,起因在于它采纳了公钥加密。整个过程如下: (1)近程主机收到用户的登录申请,把本人的公钥发给用户。 (2)用户应用这个公钥,将登录明码加密后,发送回来。 (3)近程主机用本人的私钥,解密登录明码,如果明码正确,就批准用户登录。 这个过程自身是平安的,然而施行的时候存在一个危险:如果有人截获了登录申请,而后假冒近程主机,将伪造的公钥发给用户,那么用户很难分别真伪。因为不像https协定,SSH协定的公钥是没有证书核心(CA)公证的,也就是说,都是本人签发的。能够构想,如果攻击者插在用户与近程主机之间(比方在公共的wifi区域),用伪造的公钥,获取用户的登录明码。再用这个明码登录近程主机,那么SSH的平安机制就依然如故了。这种危险就是驰名的"中间人攻打"。 4、ssh的平安验证 SSH有本人的一套验证形式,能够拦截大部分的攻打,当然如果有人想通过撞库来尝试明码的话,就只有设置防火墙或者做其它的安全措施了。 从客户端来看,SSH提供两种级别的平安验证。 (1)第一种级别(基于口令的平安验证) 只有你晓得本人帐号和口令,就能够登录到近程主机。所有传输的数据都会被加密,然而不能保障你正在连接的服务器就是你想连贯的服务器。可能会有别的服务器在假冒真正的服务器,也就是受到“中间人”这种形式的攻打。 (2)第二种级别(基于密匙的平安验证) 须要依附密匙,也就是你必须为本人创立一对密匙,并把专用密匙放在须要拜访的服务器上。如果你要连贯到SSH服务器上,客户端软件就会向服务器发出请求,申请用你的密匙进行平安验证。服务器收到申请之后,先在该服务器上你的主目录下寻找你的专用密匙,而后把它和你发送过去的专用密匙进行比拟。如果两个密匙统一,服务器就用专用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就能够用你的私人密匙解密再把它发送给服务器。 用这种形式,你必须晓得本人密匙的口令。然而,与第一种级别相比,第二种级别不须要在网络上传送口令。第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。然而整个登录的过程可能须要10秒。 5、口令登录 (1)如果是第一次登录对方主机,零碎会呈现如下图的提醒 这段话的意思是,无奈确认host主机的真实性,只晓得它的公钥指纹,问你还想持续连贯吗? 所谓"公钥指纹",是指公钥长度较长(这里采纳RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是20:42:b3:d6:79:dc:79:ec:26:1a:54:8c:72:b7:a7:e3,再进行比拟,就容易多了。 很天然的一个问题就是,用户怎么晓得近程主机的公钥指纹应该是多少?答复是没有好方法,近程主机必须在本人的网站上贴出公钥指纹,以便用户自行核查。 (2)假如通过危险掂量后,用户决定承受这个近程主机的公钥 (3)、零碎会呈现一句提醒,示意192.168.10.13主机曾经失去认可 (4)、输出明码(如果明码正确,就能够登录了) 阐明: 当近程主机的公钥被承受当前,它就会被保留在文件$HOME/.ssh/known_hosts之中。下次再连贯这台主机,零碎就会认出它的公钥曾经保留在本地了,从而跳过正告局部,间接提醒输出明码。 每个SSH用户都有本人的known_hosts文件,此外零碎也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保留一些对所有用户都可信赖的近程主机的公钥。 6、公钥登录 应用明码登录,每次都必须输出明码,十分麻烦。好在SSH还提供了公钥登录,能够省去输出明码的步骤。 所谓"公钥登录",原理很简略,就是用户将本人的公钥贮存在近程主机上。登录的时候,近程主机会向用户发送一段随机字符串,用户用本人的私钥加密后,再发回来。近程主机用当时贮存的公钥进行解密,如果胜利,就证实用户是可信的,间接容许登录shell,不再要求明码。 (1)这种办法要求用户必须提供本人的公钥。如果没有现成的,能够间接用ssh-keygen生成一个,如下图所示 阐明: 运行下面的命令当前,零碎会呈现一系列提醒,能够一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果放心私钥的平安,这里能够设置一个。 运行完结当前,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。id_rsa.pub是公钥,id_rsa是私钥。 (2)这时再输出上面的命令,将公钥传送到近程主机host下面 命令:ssh-copy-id 192.168.10.12 阐明: 第一次是须要输出明码的,但之后ssh就不须要输明码了。 如果ssh-copy-id不行的话,就关上近程主机的/etc/ssh/sshd_config这个文件,查看上面几行后面"#"正文是否取掉。 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys 而后,重启近程主机的ssh服务。 7、authorized_keys文件 近程主机将用户的公钥,保留在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只有把它追加在authorized_keys文件的开端就行了。 (1)这里不应用下面的ssh-copy-id命令,改用上面的命令,解释公钥的保留过程: ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub ...

July 12, 2022 · 3 min · jiezi

关于linux:Linux-ssh配置详解

一、ssh详解 1、什么是ssh 简略来说,ssh是一种网络协议,用于计算机之间的加密登录。 如果一个用户从本地计算机,应用ssh协定登录另一台近程计算机,咱们就能够认为,这种登录是平安的,即便被中途截获,明码也不会泄露。 须要指出的是,ssh只有一种协定,存在多种实现,既有商业实现,也有开源实现。 2、根本用法 (1)应用某个用户(例如user)登录近程主机host 命令:ssh user@host (2)如果本地用户名和近程用户名统一,则登录时能够省略用户名 命令:ssh host (3)ssh的默认端口是22,也就是说,你的登录申请会送进近程主机的22端口。应用-p参数,能够批改这个端口 命令:ssh –p 端口号 user@host 3、中间人攻打 SSH之所以可能保障平安,起因在于它采纳了公钥加密。整个过程如下: (1)近程主机收到用户的登录申请,把本人的公钥发给用户。 (2)用户应用这个公钥,将登录明码加密后,发送回来。 (3)近程主机用本人的私钥,解密登录明码,如果明码正确,就批准用户登录。 这个过程自身是平安的,然而施行的时候存在一个危险:如果有人截获了登录申请,而后假冒近程主机,将伪造的公钥发给用户,那么用户很难分别真伪。因为不像https协定,SSH协定的公钥是没有证书核心(CA)公证的,也就是说,都是本人签发的。能够构想,如果攻击者插在用户与近程主机之间(比方在公共的wifi区域),用伪造的公钥,获取用户的登录明码。再用这个明码登录近程主机,那么SSH的平安机制就依然如故了。这种危险就是驰名的"中间人攻打"。 4、ssh的平安验证 SSH有本人的一套验证形式,能够拦截大部分的攻打,当然如果有人想通过撞库来尝试明码的话,就只有设置防火墙或者做其它的安全措施了。 从客户端来看,SSH提供两种级别的平安验证。 (1)第一种级别(基于口令的平安验证) 只有你晓得本人帐号和口令,就能够登录到近程主机。所有传输的数据都会被加密,然而不能保障你正在连接的服务器就是你想连贯的服务器。可能会有别的服务器在假冒真正的服务器,也就是受到“中间人”这种形式的攻打。 (2)第二种级别(基于密匙的平安验证) 须要依附密匙,也就是你必须为本人创立一对密匙,并把专用密匙放在须要拜访的服务器上。如果你要连贯到SSH服务器上,客户端软件就会向服务器发出请求,申请用你的密匙进行平安验证。服务器收到申请之后,先在该服务器上你的主目录下寻找你的专用密匙,而后把它和你发送过去的专用密匙进行比拟。如果两个密匙统一,服务器就用专用密匙加密“质询”(challenge)并把它发送给客户端软件。客户端软件收到“质询”之后就能够用你的私人密匙解密再把它发送给服务器。 用这种形式,你必须晓得本人密匙的口令。然而,与第一种级别相比,第二种级别不须要在网络上传送口令。第二种级别不仅加密所有传送的数据,而且“中间人”这种攻击方式也是不可能的(因为他没有你的私人密匙)。然而整个登录的过程可能须要10秒。 5、口令登录 (1)如果是第一次登录对方主机,零碎会呈现如下图的提醒 这段话的意思是,无奈确认host主机的真实性,只晓得它的公钥指纹,问你还想持续连贯吗? 所谓"公钥指纹",是指公钥长度较长(这里采纳RSA算法,长达1024位),很难比对,所以对其进行MD5计算,将它变成一个128位的指纹。上例中是20:42:b3:d6:79:dc:79:ec:26:1a:54:8c:72:b7:a7:e3,再进行比拟,就容易多了。 很天然的一个问题就是,用户怎么晓得近程主机的公钥指纹应该是多少?答复是没有好方法,近程主机必须在本人的网站上贴出公钥指纹,以便用户自行核查。 (2)假如通过危险掂量后,用户决定承受这个近程主机的公钥 (3)、零碎会呈现一句提醒,示意192.168.10.13主机曾经失去认可 (4)、输出明码(如果明码正确,就能够登录了) 阐明: 当近程主机的公钥被承受当前,它就会被保留在文件$HOME/.ssh/known_hosts之中。下次再连贯这台主机,零碎就会认出它的公钥曾经保留在本地了,从而跳过正告局部,间接提醒输出明码。 每个SSH用户都有本人的known_hosts文件,此外零碎也有一个这样的文件,通常是/etc/ssh/ssh_known_hosts,保留一些对所有用户都可信赖的近程主机的公钥。 6、公钥登录 应用明码登录,每次都必须输出明码,十分麻烦。好在SSH还提供了公钥登录,能够省去输出明码的步骤。 所谓"公钥登录",原理很简略,就是用户将本人的公钥贮存在近程主机上。登录的时候,近程主机会向用户发送一段随机字符串,用户用本人的私钥加密后,再发回来。近程主机用当时贮存的公钥进行解密,如果胜利,就证实用户是可信的,间接容许登录shell,不再要求明码。 (1)这种办法要求用户必须提供本人的公钥。如果没有现成的,能够间接用ssh-keygen生成一个,如下图所示 阐明: 运行下面的命令当前,零碎会呈现一系列提醒,能够一路回车。其中有一个问题是,要不要对私钥设置口令(passphrase),如果放心私钥的平安,这里能够设置一个。 运行完结当前,在$HOME/.ssh/目录下,会新生成两个文件:id_rsa.pub和id_rsa。id_rsa.pub是公钥,id_rsa是私钥。 (2)这时再输出上面的命令,将公钥传送到近程主机host下面 命令:ssh-copy-id 192.168.10.12 阐明: 第一次是须要输出明码的,但之后ssh就不须要输明码了。 如果ssh-copy-id不行的话,就关上近程主机的/etc/ssh/sshd_config这个文件,查看上面几行后面"#"正文是否取掉。 RSAAuthentication yes PubkeyAuthentication yes AuthorizedKeysFile .ssh/authorized_keys 而后,重启近程主机的ssh服务。 7、authorized_keys文件 近程主机将用户的公钥,保留在登录后的用户主目录的$HOME/.ssh/authorized_keys文件中。公钥就是一段字符串,只有把它追加在authorized_keys文件的开端就行了。 (1)这里不应用下面的ssh-copy-id命令,改用上面的命令,解释公钥的保留过程: ssh user@host 'mkdir -p .ssh && cat >> .ssh/authorized_keys' < ~/.ssh/id_rsa.pub ...

July 12, 2022 · 3 min · jiezi

关于linux:故障分析-系统崩溃分析小妙招

前言家喻户晓,Linux零碎可能会因为异样指令、拜访有效内存地址、死锁(soft lockup)等起因解体。而零碎解体后,咱们能够通过kdump将过后的内存信息dump下来并生成一个转储文件vmcore,同时,crash工具能够帮忙咱们剖析vmcore文件并找到问题所在。 本文将简略介绍crash工具的装置和常用命令,并通过举例解说如何应用crash工具定位内核问题。 什么是crash工具crash工具是Redhat提供的开源工具,次要用来离线剖析Linux内核转存文件,它整合了gdb工具,能够查看堆栈,dmesg日志,内核数据结构,反汇编等等,性能非常弱小。 装置crash工具 # 装置crash工具yum install crash# 装置debuginfo包debuginfo-install kernel    # 运行crash工具crash /usr/lib/debug/lib/modules/<kernel>/vmlinux /var/crash/<timestamp>/vmcorecrash工具常用命令 CPU寄存器与函数栈帧构造在应用crash工具剖析vmcore文件之前,咱们还须要简略理解下CPU中的寄存器以及函数栈帧的构造,因为定位问题时咱们常常须要查看某个变量或参数的值,而这些线索往往就存在于寄存器或函数栈中,只有分明了它们的作用和构造能力精确找到对应的寄存地位。除此之外还须要理解一些简略的汇编指令,大家可自行查问。 x86-64寄存器作用 %rax : 存储函数返回值%rsp : 栈指针寄存器,指向栈顶%rdi, %rsi, %rdx, %rcx, %r8, %r9 : 函数参数,顺次对应param1, param2....%rbx, %rbp, %r12~%r15 : 数据存储,遵循被调用者应用准则%r10, %r11 : 数据存储,遵循调用者应用准则被调用者应用准则: 在函数调用时,调用者不用保留这些寄存器的值而间接进行子函数调用,进入子函数后,子函数在笼罩这些寄存器前,须要保留这些寄存器的值,即这些寄存器的值是由被调用者来保留和复原的。  调用者应用准则: 在进行子函数调用前,就须要由调用者提前爱护好这些寄存器的值,保留办法通常是把寄存器的值压入堆栈中,调用者保留实现后,在子函数中就能够随便笼罩这些寄存器的值了。 函数栈帧构造 函数调用栈从高地址向下往低地址增长,其中rsp和rbp别离指向栈顶和栈底。在进行函数调用时,会将参数赋值到对应寄存器中,同时将父函数的rbp地址压栈,而后rsp赋值给rbp,随后再顺次将其余信息压栈保留,这样咱们就能够通过bt -F命令再联合汇编指令,就能够晓得被压入栈中的信息了。 举个栗子尝试剖析上面这个vmcore文件,咱们先用crash工具关上vmcore文件,接着应用log或者bt命令查看最初的堆栈及寄存器信息。从第一行“unable to handle kernel paging request”,咱们能够确定这是一个因为拜访了非法地址引发crash的问题,接下来就须要定位这个非法地址是从哪里来的。 crash> log... BUG: unable to handle kernel paging request at 0000000000019600[2221616.682227] IP: [<ffffffff810fdfa0>] native_queued_spin_lock_slowpath+0x110/0x200[2221616.682565] PGD 0 [2221616.682816] Oops: 0002 [#1] SMP [2221616.683060] Modules linked in: binfmt_misc nfsv3 rpcsec_gss_krb5 nfsv4 dns_resolver nfs fscache ipt_MASQUERADE nf_nat_masquerade_ipv4 xt_addrtype iptable_filter xt_nat iptable_nat nf_conntrack_ipv4 nf_defrag_ipv4 nf_nat_ipv4 nf_nat nf_conntrack bonding emcpdm(POE) emcpgpx(POE) emcpmpx(POE) emcp(POE) vfat fat iTCO_wdt iTCO_vendor_support mxm_wmi dcdbas sb_edac edac_core intel_powerclamp coretemp intel_rapl iosf_mbi kvm_intel kvm irqbypass crc32_pclmul ghash_clmulni_intel aesni_intel lrw gf128mul glue_helper ablk_helper cryptd pcspkr cdc_ether usbnet mii mei_me mei lpc_ich acpi_power_meter sg shpchp wmi ipmi_si ipmi_devintf ipmi_msghandler nfsd auth_rpcgss nfs_acl lockd grace sunrpc ip_tables xfs libcrc32c sd_mod mgag200 i2c_algo_bit drm_kms_helper lpfc syscopyarea sysfillrect sysimgblt fb_sys_fops[2221616.685213] ttm drm crc32c_intel ahci i40e libahci crc_t10dif crct10dif_generic libata crct10dif_pclmul scsi_transport_fc megaraid_sas i2c_core scsi_tgt ptp pps_core crct10dif_common dm_mirror dm_region_hash dm_log dm_mod last unloaded: emcpioc CPU: 39 PID: 101271 Comm: systemd-cgtop Tainted: P OE ------------ 3.10.0-693.21.1.el7.x86_64 #1[2221616.687011] Hardware name: Dell Inc. PowerEdge R630/02C2CP, BIOS 2.7.1 001/22/2018[2221616.687509] task: ffff88158c812f70 ti: ffff88a4b502c000 task.ti: ffff88a4b502c000[2221616.687982] RIP: 0010:[<ffffffff810fdfa0>] [<ffffffff810fdfa0>] native_queued_spin_lock_slowpath+0x110/0x200[2221616.688519] RSP: 0018:ffff88a4b502fdc8 EFLAGS: 00010006[2221616.689011] RAX: 0000000000001fd4 RBX: ffffffff81abb3a0 RCX: 0000000001390000[2221616.689520] RDX: 0000000000019600 RSI: 00000000fea18bd0 RDI: ffff88b68e104f98[2221616.690044] RBP: ffff88a4b502fdc8 R08: ffff88befe2d9600 R09: 0000000000000000[2221616.690618] R10: ffff8801bfc07300 R11: 0000000000000246 R12: 0000000000000000[2221616.691175] R13: ffff88748b81be00 R14: ffffffff81318e90 R15: ffff88bed0d860c0[2221616.691743] FS: 00007efd99b72740(0000) GS:ffff88befe2c0000(0000) knlGS:0000000000000000[2221616.692299] CS: 0010 DS: 0000 ES: 0000 CR0: 0000000080050033[2221616.692870] CR2: 0000000000019600 CR3: 0000009284026000 CR4: 00000000003607e0[2221616.693498] DR0: 0000000000000000 DR1: 0000000000000000 DR2: 0000000000000000[2221616.694113] DR3: 0000000000000000 DR6: 00000000fffe0ff0 DR7: 0000000000000400[2221616.694719] Call Trace:[2221616.695352] [<ffffffff816a8ff4>] queued_spin_lock_slowpath+0xb/0xf[2221616.695956] [<ffffffff816b6758>] _raw_spin_lock_irq+0x28/0x30[2221616.696615] [<ffffffff81319654>] blkcg_print_blkgs+0x74/0xe0[2221616.697260] [<ffffffff8131f286>] cfqg_print_rwstat+0x36/0x40[2221616.697899] [<ffffffff8110cfd6>] cgroup_seqfile_show+0x76/0x80[2221616.698527] [<ffffffff8122ac87>] ? seq_buf_alloc+0x17/0x40[2221616.699185] [<ffffffff8122b1b0>] seq_read+0x110/0x3e0[2221616.699849] [<ffffffff812054ef>] vfs_read+0x9f/0x170[2221616.700539] [<ffffffff812063bf>] SyS_read+0x7f/0xe0[2221616.701184] [<ffffffff816c0715>] system_call_fastpath+0x1c/0x21[2221616.701834] Code: 87 47 02 c1 e0 10 45 31 c9 85 c0 74 44 48 89 c2 c1 e8 13 48 c1 ea 0d 48 98 83 e2 30 48 81 c2 00 96 01 00 48 03 14 c5 a0 10 b2 81 <4c> 89 02 41 8b 40 08 85 c0 75 0f 0f 1f 44 00 00 f3 90 41 8b 40 [2221616.703308] RIP [<ffffffff810fdfa0>] native_queued_spin_lock_slowpath+0x110/0x200[2221616.704014] RSP <ffff88a4b502fdc8>[2221616.704702] CR2: 0000000000019600通常咱们会先反汇编RIP寄存器中的指令,因为这是在零碎解体时执行的指令,是在执行mov指令时出的问题。 ...

July 8, 2022 · 3 min · jiezi

关于linux:Linux透明大页机制在云上大规模集群实践介绍

作者 | 第二天太阳、凯文神父 导读:本文摸索和钻研Linux内存通明大页相干技术,优化内存调配,晋升服务性能,节俭机器老本。通过设计残缺的通明大页机制,实现在云上大规模机器集群疾速推广应用,获得CPU性能和时延优化10%+显著双收益。本文总结通明大页技术架构机制实践经验,介绍如何在保障服务稳定性前提下,获得多场景性能收益,心愿感兴趣的读者能有所启发。 全文8456字,预计浏览工夫22分钟。 01 背景随着业务和计算机硬件技术一直倒退,呈现越来越大的内存机器(>=700G),满足简单计算解决需要,同时Linux内核的同步继续迭代降级,操作系统能够反对古代硬件架构的大页面容量性能,以适应越来越大的零碎内存。 在云上大规模机器集群中,传统内存页面管理机制存在肯定的性能问题,以典型举荐零碎服务为例,一方面单次申请产生的两头数据规模较大,另一方面程序广泛应用了本地词典&缓存等技术,这使响应单次申请所须要波及的内存访存范畴显著增大。通过perf统计线上局部典型程序的dtlb\_load\_misses.walk\_active和dtlb\_store\_misses.walk\_active的占比,也观测到页表缓存命中率有余的体现,均匀观测大多程序有5%-10%的时钟周期存在未命中导致陷入Page Walk的景象。 目前在机器硬件大内存和零碎内核技术都具备状况下,通明大页(Transparent Huge Page)内存治理利用成为可能。通过增大页面大小,预期能够显著解决页表缓存命中有余的景象,进而广泛晋升程序性能,然而因为存在若干缺点,次要集中在内存用量显著上涨,频繁回收重整带来额定开销减少以及不可控的随机卡顿。基于这些因素,目前业界对通明大页机制的个别认知均偏负向,排查问题追到通明大页,尚无确切论断阐明对服务影响状况,这也是利用通明大页技术一道难题。 02 大页内存技术演进内存作为计算机上十分重要的一种资源,程序加载运行、CPU指令和数据获取等都依赖内存应用,因而内存拜访性能是影响计算机性能的一个很重要的因素。古代Linux零碎上内存的调配次要过程如下,见图1: 1、应用程序通过调用内存调配函数(malloc, free, realloc, calloc),零碎调用brk或者mmap进行内存调配,申请虚拟内存地址空间。 2、虚拟内存至物理内存映射处理过程,通过申请MMU调配单元,依据虚拟地址计算出该地址所属的页面,再依据页面映射表的起始地址计算出该页面映射表(PageTable)项所在的物理地址,依据物理地址在高速缓存的TLB中寻找该表项的内容,如果该表项不在TLB中,就从内存将其内容装载到TLB中。 其中: 虚拟内存(_Virtual Memory_):古代操作系统广泛应用的一种技术,每个过程有用独立的逻辑地址空间,内存被分为大小相等的多个块,称为页(Page).每个页都是一段间断的地址,对应物理内存上的一块称为页框,通常页和页框大小相等。 MMU(_Memory-Management Unit_):内存治理单元,负责管理虚拟地址到物理地址的内存映射,实现各个用户过程都领有本人的独立的地址空间,提供硬件机制的内存拜访权限查看,爱护每个过程所用的内存不会被其余的过程所毁坏。 PageTable: 虚拟内存至物理内存页面映射关系存储单元。 TLB(_Translation Lookaside Buffer_):高速虚构地址映射缓存, 次要为了晋升MMU地址映射解决效率,加了缓存机制,如果存在即可间接取出映射地址供应用。 ____△____图 1 Linux内存分配机制(虚构+物理映射) 2.1 规范大页(HugePage) 规范大页Huge pages 通过晋升单位页面的大小,代替传统的 4KB 内存页面,以适应越来越大的零碎内存,让操作系统能够反对古代硬件架构的大页面容量性能,升高MMU治理开销,晋升内存解决性能。次要有两种格局大小:2MB 和1GB ,2MB块大小适宜GB 大小的内存, 1GB 页块大小适宜用于 TB 级别的内存;2MB 是默认的页大小。 长处: 无需替换:不存在页面因为内存空间有余而换入换出的问题。加重 TLB Cache 的压力:雷同的内存大小,治理的虚拟地址数量变少,升高了 CPU Cache 可缓存的地址映射压力。升高 Page Table 负载:内存页的数量会缩小,从而须要更少的Page table,节约了页表所占用的内存数量。打消Page table查找负载::因为页面不须要替换,所以不须要页表查找。进步内存的整体性能:页面变大后,解决的页面较少,因而能够显著防止拜访页表时可能呈现的瓶颈。毛病: 须要正当设置,防止内存节约:在操作系统启动期间被动态分配并被保留,共享内存不会被置换,在应用HugePage的内存不能被其余的过程应用,所以要正当设置该值,防止造成内存节约。动态设置无奈自适应:如果减少HugePage或增加物理内存或者是以后服务器减少了新的实例发生变化,须要从新设置所需的HugePage大小。应用形式: 1)规范大页查看机器开启状况 能够通过以下命令查看大页开启状况 grep Huge /proc/meminfoHugePages_Total: 0HugePages_Free: 0HugePages_Rsvd: 0HugePages_Surp: 0Hugepagesize: 2048 kB2)大页设置 ...

July 7, 2022 · 2 min · jiezi

关于linux:Linux系列之文本操作命令

前言Linux 有八个罕用的文本操作命令:cat、head、tail、nl、grep、sed、more、less。本文介绍它们的区别和简略用法。 cat命令显示文本的最根本命令。 cat filecat /usr/share/metasploit-framework/data/wordlists/passwd.lst cat命令不是最不便的命令,但却非常快捷。 head命令该命令将显示文件的前10行(默认状况下)。 head filename如果你想显示指定的行数,请在head命令后应用-来指定。 head -20 passwd.lst tail命令该命令与head命令相同,将显示文件的最初10行(默认状况下)。 tail filename如果你想显示指定的行数,请在tail命令后应用-来指定。 tail -20 passwd.lst nl命令显示带有行号的文件。 nl file如果你用管道输入到它,它使参考变得更容易。 head -35 passwd.lst | nl grep命令可能是应用最宽泛的文本处理命令。对于这个命令,有好几本书。 cat file | grep keyword它能够让你过滤显示文件的内容。 cat passwd.list | grep output 联合后面的命令,让咱们查看passwd.lst第20至50行中所有含有23的字词。 head -50 passwd.lst | tail -30 | grep 23 | nlhead -50 passwd.lst 示意咱们想要显示前50行。tail -30 示意想要从head命令失去的前50行里的最初30行,也就是20-50行。grep 23 将只显示蕴含23的行。nl将显示行数。 sed命令这个命令能够让你搜寻呈现的单词或测试模式,而后对它执行一些操作。相似于Windows中的查找和替换。sed中的命令以单个字母结尾。 s是替换命令: echo "gwyn" | sed 's/gwyn/gps' 让咱们应用sed在snort.conf文件中找到mysl的所有实例,并将其替换为MySQL,并将该文件保留为当前目录中的snorttest.conf 。 sed s/searchterm/replacementterm/occurence这里的g代表全局,意味着替换产生的所有实例。 sed s/mysql/MySQL/g /etc/snort/snort.conf > snorttest.conf ...

July 6, 2022 · 1 min · jiezi

关于linux:技术分享-Linux-环境下针对进程维度的监控实现

作者:莫善 某互联网公司高级 DBA。 本文起源:原创投稿 *爱可生开源社区出品,原创内容未经受权不得随便应用,转载请分割小编并注明起源。 一、背景介绍运维工作中可能会遇到这么一个痛点,因线上机器根本都是单机多实例,有时候会呈现因为某个实例而影响了整个机器的性能。因短少过程级别的监控,预先想剖析是哪个实例跑满了系统资源往往比拟艰难。为了解决这一痛点,迫切希望实现过程级别的监控。 过程级别的资源监控,包含然而不限于CPU,内存,磁盘IO,网络流量。二、后期筹备经理解,有一个 process_exporter 能够实现过程监控,然而在理论调研及测试发现,该工具有些有余: process_exporter https://github.com/ncabatoff/...监控的对象必须事后配置咱们线上单台机器可能部署有20个实例,要么是将20个实例的配置放在一个 process_export ,要么是单个实例一个 process_export ,不论哪种形式部署 process_export 可能都有些麻烦,另外新加一个想监控的对象也须要从新保护一下 process_exporter 。 我心愿是增加待监控机器后能主动发现所有沉闷的过程。不能监控过程的网络状况测试 process_exporter 发现只有 io、内存、cpu等应用状况,没找到网络监控的指标。 咱们线上机器很多还是千兆网卡,监控网络应用状况的需要更大。额定的需要咱们的环境可能会有一些长期过程(不是常驻过程)。 三、需要实现1、监控采集最开始的思路很简略,就想着应用一些零碎工具间接读后果进行解析。然而领导感觉读取它们的采集后果可能略微重了一点,可能效率不高,达不到小粒度采集,所以想让我钻研一下间接抓取【/proc/pid/】上面运行态的数据,这种形式效率应该是最高的。然而在理论测试过程中发现,想要通过【/proc/pid/】来实现过程监控的计划真是困难重重,以至于起初临时放弃该计划了,不过还是想简略聊一下这个的测试历程。 [root process-exporter]# ls /proc/1attr auxv clear_refs comm cpuset environ fd gid_map limits map_files mem mounts net numa_maps oom_score pagemap personality root schedstat setgroups stack statm syscall timers wchanautogroup cgroup cmdline coredump_filter cwd exe fdinfo io loginuid maps mountinfo mountstats ns oom_adj oom_score_adj patch_state projid_map sched sessionid smaps stat status task uid_map[root process-exporter]# 这个连贯比拟具体的介绍了【/proc/pid】上面的文件/目录 https://github.com/NanXiao/gn...(1)CPU状态抓取 ...

July 6, 2022 · 7 min · jiezi

关于linux:linux删除s3的文件夹如何使用s3cmd命令上传下载文件

s3cmd命令是能够操作AWS S3的十分弱小的工具,不仅能够下载和上传文件,还有创立目录等性能。 s3cmd的应用场景是十分丰盛的,比方把本地的日志文件备份到S3时,就能够应用s3cmd和cron的组合,进行定期的备份。 比方日志文件的保留期间是365地利,应用s3cmd从S3删除指定的目录等等。 在这里介绍一下利用s3cmd命令上传/下载文件的办法。 上传文件 上传指定的目录 把/mnt/aws/backup目录上传到s3上。 awsok.com是bucket名称,aws/folder能够当成s3上的目录名。 –r也能够写成–recursive(递归),是指定backup目录下的包含子目录的所有文件的意思。 s3cmd put --r /mnt/aws/backup s3://awsok.com/aws/folder上传指定的文件 把本地的index.html文件上传到s3的aws/folder目录下。 s3cmd put --r /mnt/aws/backup/index.html s3://awsok.com/aws/folder上传文件时默认是非公开的,可明确的指定非公开选项–acl-private。 公开时应用–acl-public选项。 下载文件 下载指定的目录 把folder目录下的所有文件下载到本地的/tmp目录下。 s3cmd get -r s3://awsok.com/aws/folder /tmp下载指定的文件 把folder目录下的index.html文件下载到本地的/tmp目录下。 s3cmd get s3://awsok.com/aws/folder/index.html /tmp删除文件 删除指定的目录 从s3上删除folder目录。 s3cmd del -r s3://awsok.com/aws/folder删除指定的文件 从s3的aws/folder目录下的index.html文件。 s3cmd del s3://awsok.com/aws/folder/index.html参考链接:3 Ways to List all the files in an AWS S3 bucket

July 5, 2022 · 1 min · jiezi

关于linux:LINUX系统如何修改时间

咱们个别应用“date -s”命令来批改Linux零碎工夫。 比方将零碎工夫设定成1996年6月10日的命令: date -s 06/10/96将零碎工夫设定成下午1点12分0秒的命令: date -s 13:12:00留神,这里说的是零碎工夫,是linux由操作系统保护的。 在系统启动时,Linux操作系统将工夫从CMOS中读到零碎工夫变量中,当前批改工夫通过批改零碎工夫实现。为了放弃零碎工夫与CMOS工夫的一致性, Linux每隔一段时间会将零碎工夫写入CMOS。因为该同步是每隔一段时间(大概是11分钟)进行的,在咱们执行date -s后,如果马上重起机器,批改工夫就有可能没有被写入CMOS,这就是问题的起因。如果要确保批改失效能够执行如下命令。 hwclock -w这个命令强制把零碎工夫写入CMOS 因为Linux时钟和Windows时钟从概念的分类、应用到设置都有很大的不同,所以,搞清楚Linux时钟的工作形式与设置操作,不仅对于Linux初学者有着重大意义,而且对于应用Linux服务器的用户来说尤为重要。 1、Linux时钟的分类 Windows 时钟大家可能非常相熟了,Linux时钟在概念上相似Windows时钟显示以后零碎工夫,但在时钟分类和设置上却和Windows天壤之别。和 Windows不同的是,Linux将时钟分为零碎时钟(System Clock)和硬件时钟(Real Time Clock,简称RTC)两种。零碎工夫是指以后Linux Kernel中的时钟,而硬件时钟则是主板上由电池供电的那个主板硬件时钟,这个时钟能够在BIOS的“Standard BIOS Feture”项中进行设置。 既然Linux有两个时钟零碎,那么大家所应用的Linux默认应用哪种时钟零碎呢?会不回呈现两种零碎时钟抵触的状况呢?这些疑难和放心不无道理。首先,Linux并没有默认哪个时钟零碎。当Linux启动时,硬件时钟会去读取零碎时钟的设置,而后零碎时钟就会独立于硬件运作。 从Linux启动过程来看,零碎时钟和硬件时钟不会发生冲突,但Linux中的所有命令 (包含函数)都是采纳的零碎时钟设置。不仅如此,零碎时钟和硬件时钟还能够采纳异步形式,见图1所示,即零碎工夫和硬件工夫能够不同。这样做的益处对于普通用户意义不大,但对于Linux网络管理员却有很大的用途。例如,要将一个很大的网络中(逾越若干时区)的服务器同步,如果位于美国纽约的Linux服务器和北京的Linux服务器,其中一台服务器毋庸扭转硬件时钟而只需长期设置一个零碎工夫,如要将北京服务器上的工夫设置为纽约工夫,两台服务器实现文件的同步后,再与原来的时钟同步一下即可。这样零碎和硬件时钟就提供了更为灵便的操作。 2、设置Linux的时钟 在 Linux中,用于时钟查看和设置的命令次要有date、hwclock和clock。其中,clock和hwclock用法相近,只不过clock命令除了反对x86硬件体系外,还反对Alpha硬件体系。因为目前绝大多数用户应用x86硬件体系,所以能够视这两个命令为一个命令来学习。 1.在虚构终端中应用date命令来查看和设置零碎工夫 查看零碎时钟的操作: # date 设置零碎时钟的操作: # date 111309272017.30 date mmddhhmmyyyy.ss 通用的设置格局: # date 月日时候年.秒 2.应用hwclock或clock命令查看和设置硬件时钟 查看硬件时钟的操作: # hwclock --show 或 # clock --show 2017年11月13日 星期一 09时54分44秒 -0.672850 seconds ...

July 5, 2022 · 1 min · jiezi

关于linux:Linux-NTP服务详解

明天持续给大家介绍Linux运维相干内容,本文次要内容是NTP服务。 一、NTP服务简介NTP服务,即用来同步零碎工夫的服务,尽管服务器外部会通过晶振主动计算工夫,然而在零碎长时间运行下,服务器外部工夫与理论工夫总会有轻微的偏差,长时间的积攒会导致这种偏差越来越大。在内网架构中,有些业务对工夫的要求比拟严苛,这就要求咱们内网设施中的工夫保持一致,而这一点就能够应用NTP服务实现。 二、NTP服务应用(一)NTP+cron定时工作NTP服务能够采纳YUM的形式进行装置,命令如下: yum install -y ntpdate1在装置实现后,执行命令: ntpdate [IP或域名]1即可手动进行工夫同步。在内网架构中,如果设施比拟多,则能够应用内置的NTP服务器,如果设施比拟少,则能够抉择互联网上的NTP服务。罕用的NTP服务有阿里云的NTP服务,域名如下:ntp1.aliyun.com应用命令如下: ntpdate ntp1.aliyun.com1执行后果如下: 当执行上述命令的时候,咱们是强制性的将零碎工夫更改为阿里云的NTP服务器的工夫,然而随着零碎的运行,零碎工夫又会逐渐的产生偏移,因而,咱们能够采取cron定时工作的形式,将上述命令写成定时工作脚本,使其定期执行。 (二)应用NTPD服务尽管应用ntp+cron定时工作的形式能够定期同步工夫,然而当应用NTP服务时,会造成工夫的跳跃,对于一些蕴含timer、sleep命令的服务会造成影响。为避免这种状况的产生,咱们能够应用NTPD服务,NTPD服务能够在修改工夫的同时,修改CPU的工夫。通用的思路是,在开机的时候,应用ntp强制同步工夫,在其余时候应用ntpd服务同步工夫。 三、NTP服务同步硬件工夫依照上述形式应用NTP服务同步工夫时,只会同步零碎工夫,如果想要让NTP同时同步硬件工夫,能够批改NTP服务的配置文件/etc/sysconfig/ntpdate文件,该文件原有内容如下所示: 将上图中SYNC_HWCLOCK局部,红线局部的no改为yes,批改实现后如下所示: 这样,当批改实现后再次进行NTP服务时,就能够在同步零碎工夫的同时顺便同步硬件工夫了。参考链接:2 ways to check NTP server in Linux

July 5, 2022 · 1 min · jiezi

关于linux:linux怎么取消文件隐藏命令Linux基础命令显示隐藏的文件

零碎中一些文件,和Windows中的系统文件一样,这些文件个别是不显示进去的,那么咱们能够应用-a参数来显示暗藏的文件。如下所示: [root@Linux ~]# ls -a . .chewing .gconfd install.log .redhat .. .cshrc .gnome install.log.syslog .scim anaconda-ks.cf 零碎中一些文件,和Windows中的系统文件一样,这些文件个别是不显示进去的,那么咱们能够应用“-a”参数来显示暗藏的文件。如下所示: [root@Linux ~]# ls -a . .chewing .gconfd install.log .redhat .. .cshrc .gnome install.log.syslog .scim anaconda-ks.cfg Desktop .gnome2 .lesshst .tcshrc .bash_history .dmrc .gnome2_private .metacity .thumbnails .bash_logout .eggcups .gstreamer-0.10 .mozilla .Trash .bash_profile .esd_auth .gtkrc-1.2-gnome2 .nautilus .bashrc .gconf .ICEauthority .recently-used.xbel 看看这样显示的文件就比拟多了。能够发现,暗藏文件是以“.”结尾的文件。这些文件个别都有非凡的作用,如果显示进去,有可能被用户不小心删除。 咱们能够联合下面的两个参数来显示目录下的文件,如下所示: [root@Linux ~]# ls -al 总计 212 drwxr-x--- 18 root root 4096 03-19 05:30 . ...

July 5, 2022 · 2 min · jiezi

关于linux:Linux-查看及修改时区

查看工夫及时区查看以后工夫 date1查看时区 cat /etc/timezone1批改时区1.批改或设置Linux服务器时区 tzselect1RedHat Linux/CentOS timeconfig1Debian dpkg-reconfigure tzdata12.设置环境变量 echo "export TZ='Asia/Shanghai'" >> /etc/profilesource /etc/profile123.创立软链接 ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime1应用timedatectl命令 timedatectl set-timezone Asia/Shanghai1硬件工夫查看硬件工夫hwclock --show1或 clock --show1设置硬件工夫hwclock --set --date="19/03/12 21:55"1或 clock --set --date="19/03/12 21:55"1同步零碎及硬件时钟hc代表硬件工夫,sys代表零碎工夫,systohc示意以零碎工夫为基准,同步至硬件工夫 hwclock --systohc1或 clock --systohc参考链接:2 Ways to check timezone in Linux

July 5, 2022 · 1 min · jiezi

关于linux:Linux系列之查找命令

前言Linux 有四个罕用的查找命令:locate、whereis、which 和 find。本文介绍它们的区别和简略用法。 locate命令这个命令将查看你的整个文件系统,并找到该关键词的每一次呈现。所以你能够设想到,后果可能是令人难以承受的。 locate keywordlocate应用的数据库通常每天更新一次,所以如果你在搜寻最近创立的货色,它可能不会在你的搜寻中返回。你能够应用 updatedb命令手动更新locate命令的数据库。 locate aircrack-ng whereis命令在Linux中,可执行文件被称为二进制文件,如果你想定位一个二进制文件,whereis比locate更加无效。 whereis binary这个命令将返回二进制文件的地位,以及它的源代码和手册页,如果有的话。 whereis aircrack-ng which命令Linux中的PATH变量寄存着操作系统寻找你在命令行中执行的命令的目录。 which binarywhich命令在你的PATH中找到一个二进制文件。如果它在以后PATH中没有找到该二进制文件,它就什么也不返回。 which aircrack-ng 这些目录通常包含/usr/bin,但也可能包含/usr/sbin和其余一些目录。 find命令最弱小的搜寻命令是find命令。你能够用它在任何指定的目录中搜寻,并应用各种参数。 根本语法是: find directory options expression假如我有一个名为test.txt的文件,我须要找到它然而不确定具体位于哪个目录下。我能够执行上面的命令,从文件系统的顶部/开始搜寻。 find / -type f -name test.txt具体含意为: /示意从文件系统的顶部开始搜寻。-type 是你要寻找的货色的类型。f示意文件,b示意块状非凡设施文件,c示意字符非凡设施文件,d示意目录,l示意符号链接。-name是你要寻找的货色的名字,后果将齐全匹配。 搜寻每一个目录,并从顶部开始查找,须要破费肯定的工夫。咱们能够通过指定目录来加快速度。假如我晓得该文件位于home目录下: time find /home -type f -name test.txt这里我应用了time命令,因而能够看到每个命令破费了多少工夫。 find命令只显示准确的名称匹配。如果file.txt有不同的扩展名,它将不会被返回。我创立了另外一个文件text.conf ,当初如果我只用test.txt作为名称进行搜寻,我不再失去test.conf文件的返回。 咱们能够通过应用通配符(wildcards)来解决这一限度。它们能够让咱们匹配多个字符,并有几种不同的模式。 假如咱们有一个蕴含cat、hat、what和bat文件的目录: * 匹配多个字符。*at 将会匹配:cat、hat、what、和 bat。? 匹配单个字符。?at 将会匹配:cat、hat、bat,但不匹配what。[] 匹配呈现在方括号内的字符。[c, b]将会匹配cat和bat。find /home -type f -name test.* find反对大量的测试,甚至是操作符。比方说咱们想找到权限不是0600的所有文件和不是0700的所有目录。 find ~ \( -type f -not -perm 0600 \) -or \( -type d -not perm 0700 \)这个命令的意思是:找到权限不是0600的所有文件或权限不是0700的所有目录。 ...

July 4, 2022 · 1 min · jiezi

关于linux:Linuxtop命令-–-实时显示系统运行状态

语法格局: top [参数]罕用参数: 参数释义-d <秒>扭转显示的更新速度-c切换显示模式-s平安模式,不容许交互式指令-i不显示任何闲置或僵死的行程-n设定显示的总次数,实现后将会主动退出-b批处理模式,不进行交互式显示[root@VM-24-4-centos ~]# toptop - 14:22:52 up 123 days, 23:58, 1 user, load average: 0.02, 0.06, 0.08Tasks: 106 total, 1 running, 104 sleeping, 0 stopped, 1 zombie%Cpu(s): 2.8 us, 2.0 sy, 0.0 ni, 95.0 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 3880172 total, 711620 free, 2004244 used, 1164308 buff/cacheKiB Swap: 0 total, 0 free, 0 used. 1607256 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 11375 clickho+ 20 0 7306500 565992 267236 S 7.3 14.6 6:03.20 clickhouse-serv 23326 root 20 0 999664 58372 12812 S 1.3 1.5 255:01.36 YDService 2408 mysql 20 0 1836864 631304 1768 S 0.3 16.3 296:22.75 mysqld 9526 root 20 0 3698216 431040 0 S 0.3 11.1 98:58.84 java 20865 root 20 0 164900 9028 1536 S 0.3 0.2 24:50.25 barad_agent 20866 root 20 0 1204560 15384 2008 S 0.3 0.4 166:04.63 barad_agent 1 root 20 0 51928 3668 2164 S 0.0 0.1 25:38.11 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:06.11 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0.0 0.0 4:43.22 ksoftirqd/0………………省略局部输入信息………………[root@VM-24-4-centos ~]# top -ctop - 14:28:48 up 124 days, 4 min, 1 user, load average: 0.12, 0.09, 0.08Tasks: 107 total, 1 running, 104 sleeping, 0 stopped, 2 zombie%Cpu(s): 0.7 us, 0.8 sy, 0.0 ni, 98.5 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 3880172 total, 652504 free, 2012784 used, 1214884 buff/cacheKiB Swap: 0 total, 0 free, 0 used. 1598216 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 11375 clickho+ 20 0 7306500 573016 267236 S 1.3 14.8 6:19.54 /usr/bin/clickhouse-server --config=/etc/clickhouse-server/config.xml --pid-file=/run/clickhouse-server/clickhouse-server.pid 23326 root 20 0 999664 58632 12812 S 1.0 1.5 255:05.63 /usr/local/qcloud/YunJing/YDEyes/YDService 2408 mysql 20 0 1836864 631304 1768 S 0.3 16.3 296:23.51 /www/server/mysql/bin/mysqld --basedir=/www/server/mysql --datadir=/www/server/data --plugin-dir=/www/server/mysql/lib/plugin --user=mysql --log-error=VM-24-4-centos.err --open-files-limit=65535 --p+ 9526 root 20 0 3698216 431040 0 S 0.3 11.1 98:59.43 java -jar ruoyi-admin.jar --server.port=18081 27989 redis 20 0 165148 2532 1200 S 0.3 0.1 98:45.40 /www/server/redis/src/redis-server 0.0.0.0:6379 1 root 20 0 51928 3668 2164 S 0.0 0.1 25:38.16 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 2 root 20 0 0 0 0 S 0.0 0.0 0:06.11 [kthreadd] 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kworker/0:0H] 6 root 20 0 0 0 0 S 0.0 0.0 4:43.23 [ksoftirqd/0] 7 root rt 0 0 0 0 S 0.0 0.0 1:49.86 [migration/0] 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 [rcu_bh] 9 root 20 0 0 0 0 S 0.0 0.0 119:34.73 [rcu_sched] 10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 [lru-add-drain] 11 root rt 0 0 0 0 S 0.0 0.0 0:44.28 [watchdog/0] 12 root rt 0 0 0 0 S 0.0 0.0 0:40.17 [watchdog/1] 13 root rt 0 0 0 0 S 0.0 0.0 1:45.98 [migration/1] ………………省略局部输入信息………………[root@VM-24-4-centos ~]# top -btop - 14:30:55 up 124 days, 6 min, 1 user, load average: 0.21, 0.15, 0.11Tasks: 106 total, 1 running, 104 sleeping, 0 stopped, 1 zombie%Cpu(s): 3.1 us, 3.1 sy, 0.0 ni, 90.6 id, 0.0 wa, 0.0 hi, 3.1 si, 0.0 stKiB Mem : 3880172 total, 640160 free, 2008788 used, 1231224 buff/cacheKiB Swap: 0 total, 0 free, 0 used. 1602056 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 2408 mysql 20 0 1836864 631304 1768 S 6.7 16.3 296:23.78 mysqld 3312 root 20 0 0 0 0 S 6.7 0.0 1:03.21 kworker/u4:2 1 root 20 0 51928 3668 2164 S 0.0 0.1 25:38.18 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:06.11 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0.0 0.0 4:43.24 ksoftirqd/0 7 root rt 0 0 0 0 S 0.0 0.0 1:49.86 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh 9 root 20 0 0 0 0 S 0.0 0.0 119:34.83 rcu_sched ………………省略局部输入信息………………top - 14:30:58 up 124 days, 6 min, 1 user, load average: 0.19, 0.15, 0.11Tasks: 106 total, 2 running, 103 sleeping, 0 stopped, 1 zombie%Cpu(s): 0.8 us, 1.0 sy, 0.0 ni, 98.0 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 3880172 total, 727748 free, 1920604 used, 1231820 buff/cacheKiB Swap: 0 total, 0 free, 0 used. 1690160 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND11375 clickho+ 20 0 7306500 482712 267236 S 3.0 12.4 6:25.50 clickhouse-serv23326 root 20 0 999664 57756 12820 S 1.3 1.5 255:07.04 YDService20866 root 20 0 1204560 15384 2008 S 0.7 0.4 166:06.87 barad_agent 9 root 20 0 0 0 0 S 0.3 0.0 119:34.84 rcu_sched 1 root 20 0 51928 3668 2164 S 0.0 0.1 25:38.18 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:06.11 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H 6 root 20 0 0 0 0 S 0.0 0.0 4:43.24 ksoftirqd/0 7 root rt 0 0 0 0 S 0.0 0.0 1:49.86 migration/0 8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh………………省略局部输入信息………………top - 14:31:01 up 124 days, 7 min, 1 user, load average: 0.19, 0.15, 0.11Tasks: 106 total, 2 running, 103 sleeping, 0 stopped, 1 zombie%Cpu(s): 3.0 us, 2.5 sy, 0.0 ni, 94.1 id, 0.3 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 3880172 total, 631760 free, 2015972 used, 1232440 buff/cacheKiB Swap: 0 total, 0 free, 0 used. 1594708 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND11375 clickho+ 20 0 7306500 577352 267236 S 10.0 14.9 6:25.80 clickhouse-serv23326 root 20 0 999664 57756 12820 S 1.0 1.5 255:07.07 YDService20866 root 20 0 1204560 15384 2008 S 0.7 0.4 166:06.89 barad_agent 2408 mysql 20 0 1836864 631304 1768 S 0.3 16.3 296:23.79 mysqld 9526 root 20 0 3698216 431040 0 S 0.3 11.1 98:59.61 java20865 root 20 0 164900 9028 1536 S 0.3 0.2 24:50.56 barad_agent26568 root 20 0 3510360 115652 0 S 0.3 3.0 29:36.64 java27989 redis 20 0 165148 2532 1200 S 0.3 0.1 98:45.51 redis-server 1 root 20 0 51928 3668 2164 S 0.0 0.1 25:38.18 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:06.11 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H ………………省略局部输入信息………………top - 14:31:04 up 124 days, 7 min, 1 user, load average: 0.18, 0.15, 0.11Tasks: 106 total, 2 running, 103 sleeping, 0 stopped, 1 zombie%Cpu(s): 0.8 us, 1.3 sy, 0.0 ni, 97.7 id, 0.2 wa, 0.0 hi, 0.0 si, 0.0 stKiB Mem : 3880172 total, 741248 free, 1906472 used, 1232452 buff/cacheKiB Swap: 0 total, 0 free, 0 used. 1704228 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND11375 clickho+ 20 0 7306500 467060 267236 S 1.0 12.0 6:25.83 clickhouse-serv23326 root 20 0 999664 57756 12820 S 1.0 1.5 255:07.10 YDService20866 root 20 0 1204560 15384 2008 S 0.7 0.4 166:06.91 barad_agent 9 root 20 0 0 0 0 S 0.3 0.0 119:34.85 rcu_sched 2408 mysql 20 0 1836864 631304 1768 S 0.3 16.3 296:23.80 mysqld 9526 root 20 0 3698216 431040 0 S 0.3 11.1 98:59.62 java27989 redis 20 0 165148 2532 1200 S 0.3 0.1 98:45.52 redis-server 1 root 20 0 51928 3668 2164 S 0.0 0.1 25:38.18 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:06.11 kthreadd 4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H ………………省略局部输入信息………………

July 3, 2022 · 6 min · jiezi

关于linux:Git常用操作

git config --global user.name "Your Name"git config --global user.email "email@example.com"示意你这台机器上所有的Git仓库都会应用这个配置mkdir learngitcd learngitpwd把这个目录变成Git能够治理的仓库git init编写一个readme.txt文件echo "Git is a version control system." > readme.txt把文件增加到仓库git add readme.txt把文件提交到仓库-m 前面输出的是本次提交的阐明因commit能够一次提交很多文件,所以你能够屡次add不同的文件git commit -m "wrote a readme file"批改内容echo "Git is a distributed version control system." > readme.txtgit status命令能够让咱们时刻把握仓库以后的状态git status查看批改内容git diff readme.txt git add readme.txtgit commit -m "add distributed"git log命令显示从最近到最远的提交日志git loggit log --pretty=oneline回退上一个版本git reset --hard HEAD^指定回到未来的某个版本git reset --hard 76db14查看你的每一次命令git reflog抛弃工作区的批改git checkout -- readme.txt把暂存区的批改撤销掉git reset HEAD readme.txtecho "test" > test.txtgit add test.txtgit commit -m "add test.txt"git rm test.txtgit commit -m "remove test.txt"把误删的文件复原到最新版本git checkout -- test.txt邮箱要与近程仓库创建者邮箱统一生成公钥私钥,公钥放近程仓库ssh-keygen -t rsa -C "xxx@qq.com"咱们能够删除已有的 近程库git remote rm origingit remote add origin git@gitee.com:xxx/learngit.gitgit push -u origin mastergit clone git@gitee.com:kaworu12/gitskills.git创立dev分支git checkout -b dev查看分支git branchecho "test" > readme.txtgit add readme.txt git commit -m "branch test"git checkout mastergit merge devgit branch -d dev创立并切换到新的dev分支git switch -c dev间接切换到已有的master分支git switch mastergit remote rm origingit remote add origin git@gitee.com:xxx/vue-todo.gitgit clone git@gitee.com:xxx/vue-todo.gitgit push -u origin master

July 3, 2022 · 1 min · jiezi

关于linux:linux命令测网速

罕用的测试工具有fast、speedtest、iPerf。 fast是Netflix 提供的一项服务,这不仅能够通过命令行来应用,而且能够间接Web端应用。 iPerf是一个网络性能测试工具,它能够测试TCP和UDP带宽品质,能够测试最大的TCP带宽等 speedtest-cli是一个用Python编写的轻量级Linux命令行工具,在Python2.4至3.6版本下均可运行。它基于speedtest.net的基础架构来测量网络的上/上行速率。 speedtest比较简单。 应用git命令下载测速工具 git clone https://github.com/sivel/spee... 进入到speedtest-cli目录 cd speedtest-cli/ ll 运行测速工具 ./speedtest.py 上行、上行 有100Mbit/s 是算 比拟失常 有些云服务器能达到2000Mbit/s 达到现实状态参考链接:3 ways to check network speed in Linux

July 2, 2022 · 1 min · jiezi

关于linux:Linux操作系统下etchosts文件配置方法

摘要:Linux 的/etc/hosts是配置ip地址和其对应主机名的文件,这里能够记录本机的或其余主机的ip及其对应主机名。不同的linux版本,这个配置文件也可能不同... 标签:hosts文件 动态路由表 Linux 配置 1、对于/etc/host,主机名和IP配置文件 Hosts - The static table lookup for host name(主机名查问动态表) hosts文件是Linux零碎中一个负责IP地址与域名疾速解析的文件,以ASCII格局保留在“/etc”目录下,文件名为“hosts”(不同的linux版本,这个配置文件也可能不同。比方Debian的对应文件是/etc/hostname)。hosts文件蕴含了IP地址和主机名之间的映射,还包含主机名的别名。在没有域名服务器的状况下,零碎上的所有网络程序都通过查问该文件来解析对应于某个主机名的IP地址,否则就须要应用DNS服务程序来解决。通常能够将罕用的域名和IP地址映射退出到hosts文件中,实现疾速不便的拜访。 2、配置文件 这个文件能够配置主机ip及对应的主机名,对于服务器类型的linux零碎其作用还是不可疏忽的。在局域网或是INTERNET上,每台主机都有一个IP地址,它辨别开每台主机,并能够依据ip进行通信。但IP地址不不便记忆,所以又有了域名。在一个局域网中,每台机器都有一个主机名,用于辨别主机,便于互相拜访。 Linux主机名的相干配置文件就是/etc/hosts;这个文件通知本主机哪些域名对应那些ip,那些主机名对应哪些ip: 比方文件中有这样的定义 192.168.1.100 linumu100 test100假如192.168.1.100是一台网站服务器,在网页中输出http://linumu100或http://test100就会关上192.168.1.100的网页。 通常状况下这个文件首先记录了本机的ip和主机名: 127.0.0.1 localhost.localdomain localhost 3、配置文件格式阐明 个别/etc/hosts 的内容个别有如下相似内容: 127.0.0.1 localhost.localdomain localhost 192.168.1.100 linmu100.com linmu100 192.168.1.120 ftpserver ftp120 个别状况下hosts文件的每行为一个主机,每行由三部份组成,每个部份由空格隔开。其中#号结尾的行做阐明,不被零碎解释。 hosts文件的格局如下: IP地址 主机名/域名 第一部份:网络IP地址; 第二部份:主机名或域名; 第三部份:主机名别名; 当然每行也能够是两部份,即主机IP地址和主机名;比方 192.168.1.100 linmu100。 这里能够略微解释一下主机名(hostname)和域名(Domain)的区别:主机名通常在局域网内应用,通过hosts文件,主机名就被解析到对应ip;域名通常在internet上应用,但如果本机不想应用internet上的域名解析,这时就能够更改hosts文件,退出本人的域名解析。 4、 /hosts文件能够帮忙解决哪些问题 4.1 近程登录linux主机过慢问题 有时客户端想近程登录一台linux主机,但每次登录输出明码后都会等很长一段时间才会进入,这是因为linux主机在返回信息时须要解析ip,如果在linux主机的hosts文件当时退出客户端的ip地址,这时再从客户端近程登录linux就会变很快。 注:这里所说的近程登录不仅仅是ssh,还可能是mysql近程登录,或是文件共享的查问等。 4.2 双机互连 当两台主机只是双机互连时,这时两台主机都须要设置本人的ip,同时在对方的hosts文件里退出本人的ip和主机名。 5、主机名批改工具hostname; 其实主机名的批改也有专用工具,就是hostname hostname - show or set the system’s host name ...

July 2, 2022 · 1 min · jiezi

关于linux:Linux的用户和用户组管理

Linux零碎是一个多用户多任务的分时操作系统,任何一个要应用系统资源的用户,都必须首先向系统管理员申请一个账号,而后以这个账号的身份进入零碎。用户的账号一方面能够帮忙系统管理员对应用零碎的用户进行跟踪,并管制他们对系统资源的拜访;另一方面也能够帮忙用户组织文件,并为用户提供安全性爱护。每个用户账号都领有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就可能进入零碎和本人的主目录。 实现用户账号的治理,要实现的工作次要有如下几个方面: · 用户账号的增加、删除与批改。 · 用户口令的治理。 · 用户组的治理。 一、Linux零碎用户账号的治理 用户账号的管理工作次要波及到用户账号的增加、批改和删除。 增加用户账号就是在零碎中创立一个新账号,而后为新账号调配用户号、用户组、主目录和登录Shell等资源。刚增加的账号是被锁定的,无奈应用。 1、增加新的用户账号应用useradd命令,其语法如下: 代码:useradd 选项 用户名 其中各选项含意如下: 代码: -c comment 指定一段正文性形容。 -d 目录 指定用户主目录,如果此目录不存在,则同时应用-m选项,能够创立主目录。 -g 用户组 指定用户所属的用户组。 -G 用户组,用户组 指定用户所属的附加组。 -s Shell文件 指定用户的登录Shell。 -u 用户号 指定用户的用户号,如果同时有-o选项,则能够重复使用其余用户的标识号。 用户名 指定新账号的登录名。 2、例子阐明 例1: 代码: useradd –d /usr/sam -m sam 此命令创立了一个用户sam, 其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。 例2: 代码: useradd -s /bin/sh -g group –G adm,root gem 此命令新建了一个用户gem,该用户的登录Shell是/bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。 这里可能新建组:#groupadd group及groupadd adm 减少用户账号就是在/etc/passwd文件中为新用户减少一条记录,同时更新其余系统文件如/etc/shadow, /etc/group等。 ...

July 2, 2022 · 3 min · jiezi

关于linux:Linux的用户和用户组管理

Linux零碎是一个多用户多任务的分时操作系统,任何一个要应用系统资源的用户,都必须首先向系统管理员申请一个账号,而后以这个账号的身份进入零碎。用户的账号一方面能够帮忙系统管理员对应用零碎的用户进行跟踪,并管制他们对系统资源的拜访;另一方面也能够帮忙用户组织文件,并为用户提供安全性爱护。每个用户账号都领有一个惟一的用户名和各自的口令。用户在登录时键入正确的用户名和口令后,就可能进入零碎和本人的主目录。 实现用户账号的治理,要实现的工作次要有如下几个方面: · 用户账号的增加、删除与批改。 · 用户口令的治理。 · 用户组的治理。 一、Linux零碎用户账号的治理 用户账号的管理工作次要波及到用户账号的增加、批改和删除。 增加用户账号就是在零碎中创立一个新账号,而后为新账号调配用户号、用户组、主目录和登录Shell等资源。刚增加的账号是被锁定的,无奈应用。 1、增加新的用户账号应用useradd命令,其语法如下: 代码:useradd 选项 用户名 其中各选项含意如下: 代码: -c comment 指定一段正文性形容。 -d 目录 指定用户主目录,如果此目录不存在,则同时应用-m选项,能够创立主目录。 -g 用户组 指定用户所属的用户组。 -G 用户组,用户组 指定用户所属的附加组。 -s Shell文件 指定用户的登录Shell。 -u 用户号 指定用户的用户号,如果同时有-o选项,则能够重复使用其余用户的标识号。 用户名 指定新账号的登录名。 2、例子阐明 例1: 代码: useradd –d /usr/sam -m sam 此命令创立了一个用户sam, 其中-d和-m选项用来为登录名sam产生一个主目录/usr/sam(/usr为默认的用户主目录所在的父目录)。 例2: 代码: useradd -s /bin/sh -g group –G adm,root gem 此命令新建了一个用户gem,该用户的登录Shell是/bin/sh,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。 这里可能新建组:#groupadd group及groupadd adm 减少用户账号就是在/etc/passwd文件中为新用户减少一条记录,同时更新其余系统文件如/etc/shadow, /etc/group等。 ...

July 2, 2022 · 3 min · jiezi

关于linux:麒麟操作系统-kylinos-从入门到精通-研发环境-第二十一篇-CC语言开发环境搭建

0.根底环境类别:笔记本型号:中国长城 NF14C硬件平台:飞腾处理器(ArmV8 指令集)零碎:河汉麒麟操作系统 V10 SP1(2203) 关键词:信创,麒麟零碎,linux,c++,c,内核飞腾,arm 1.需要背景C/C++在面向底层和高性能计算是,具备无可替代的性能劣势与对硬件全面管制的能力。因而,尽管当初GO语言和Java语言大行其道,但C和C++的研发依然不可少,特地是如人工智能算法包等。 2.根底筹备工作2.1 JDK装置JDK装置是因为Clion、Eclipse应用,关上终端输出 sudo apt-get install openjdk-11-jdk -y2.2 C++编译依赖装置sudo apt-get install llvm gcc g++ cmake git vim -y3.应用clion进行C++/C语言开发(集体首选,习惯了jetbrains系列)关上https://www.jetbrains.com.cn/...,依据本人的须要下载对应Clion的版本二进制版本,https://download.jetbrains.co...14g9b34_gaMTA0NTY4MjM1Ny4xNjU2MjUyODcw_ga_9J976DJZ68*MTY1NjI1Mjg2OS4xLjAuMTY1NjI1Mjg4OC4w解压到相应的文件夹,文件夹门路不能有中文。 https://jetbra.in/s ja-jetbrains 激活工具配套激活码地址(仅供学习钻研,应用请购买官网正版),下面下载最新的工具和激活码。激活能够参考:https://segmentfault.com/a/11...工具下载,如同有时候工具所在网站打不通,能够应用的我NAS地址http://gofile.me/4i7bC/TppnI17yM HLLIQN9GJ8-eyJsaWNlbnNlSWQiOiJITExJUU45R0o4IiwibGljZW5zZWVOYW1lIjoiZnV6emVzIGFsbHkiLCJhc3NpZ25lZU5hbWUiOiIiLCJhc3NpZ25lZUVtYWlsIjoiIiwibGljZW5zZVJlc3RyaWN0aW9uIjoiIiwiY2hlY2tDb25jdXJyZW50VXNlIjpmYWxzZSwicHJvZHVjdHMiOlt7ImNvZGUiOiJQU0kiLCJmYWxsYmFja0RhdGUiOiIyMDIzLTA3LTAxIiwicGFpZFVwVG8iOiIyMDIzLTA3LTAxIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IkNMIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wNy0wMSIsInBhaWRVcFRvIjoiMjAyMy0wNy0wMSIsImV4dGVuZGVkIjpmYWxzZX0seyJjb2RlIjoiUENXTVAiLCJmYWxsYmFja0RhdGUiOiIyMDIzLTA3LTAxIiwicGFpZFVwVG8iOiIyMDIzLTA3LTAxIiwiZXh0ZW5kZWQiOnRydWV9LHsiY29kZSI6IlBTVyIsImZhbGxiYWNrRGF0ZSI6IjIwMjMtMDctMDEiLCJwYWlkVXBUbyI6IjIwMjMtMDctMDEiLCJleHRlbmRlZCI6dHJ1ZX0seyJjb2RlIjoiUFdTIiwiZmFsbGJhY2tEYXRlIjoiMjAyMy0wNy0wMSIsInBhaWRVcFRvIjoiMjAyMy0wNy0wMSIsImV4dGVuZGVkIjp0cnVlfV0sIm1ldGFkYXRhIjoiMDEyMDIyMDcwMVBTQU4wMDAwMDUiLCJoYXNoIjoiVFJJQUw6MTY2NTMxNDYzNCIsImdyYWNlUGVyaW9kRGF5cyI6NywiYXV0b1Byb2xvbmdhdGVkIjpmYWxzZSwiaXNBdXRvUHJvbG9uZ2F0ZWQiOmZhbHNlfQ==-GOMmWoD11vf1Sa7ovZ+XCjjxy7howrbbKgLZ5ja7tKZqRAOFkS3cOcqbXotA+8eGAK6iMyaG1Eb9O7Yt+Ncz+HmZPkorbcAmbg3FK89tM1xlpJ/R6MsSYmkx4+pRyrdYb+ZdPWo78f9L/LmR9fwHk3AKYt9y8aNmCSzLMqEXy89yUYyPP1fydRSV++fXin8Y4N2jmg+hLZPSj90s4F6cc2lPvxgV7UwDpD5IEe8e5o7iWbW/9UhcsEvGsY18uLN1uCr/fDdJpNFpjGysSyokfqfyEd6uZxGp9PeC75GF2v6RcQ35HwXFt21wqVxP+fS8oiNnpHjXy+lUF2qK8F081A==-MIIETDCCAjSgAwIBAgIBDTANBgkqhkiG9w0BAQsFADAYMRYwFAYDVQQDDA1KZXRQcm9maWxlIENBMB4XDTIwMTAxOTA5MDU1M1oXDTIyMTAyMTA5MDU1M1owHzEdMBsGA1UEAwwUcHJvZDJ5LWZyb20tMjAyMDEwMTkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCUlaUFc1wf+CfY9wzFWEL2euKQ5nswqb57V8QZG7d7RoR6rwYUIXseTOAFq210oMEe++LCjzKDuqwDfsyhgDNTgZBPAaC4vUU2oy+XR+Fq8nBixWIsH668HeOnRK6RRhsr0rJzRB95aZ3EAPzBuQ2qPaNGm17pAX0Rd6MPRgjp75IWwI9eA6aMEdPQEVN7uyOtM5zSsjoj79Lbu1fjShOnQZuJcsV8tqnayeFkNzv2LTOlofU/Tbx502Ro073gGjoeRzNvrynAP03pL486P3KCAyiNPhDs2z8/COMrxRlZW5mfzo0xsK0dQGNH3UoG/9RVwHG4eS8LFpMTR9oetHZBAgMBAAGjgZkwgZYwCQYDVR0TBAIwADAdBgNVHQ4EFgQUJNoRIpb1hUHAk0foMSNM9MCEAv8wSAYDVR0jBEEwP4AUo562SGdCEjZBvW3gubSgUouX8bOhHKQaMBgxFjAUBgNVBAMMDUpldFByb2ZpbGUgQ0GCCQDSbLGDsoN54TATBgNVHSUEDDAKBggrBgEFBQcDATALBgNVHQ8EBAMCBaAwDQYJKoZIhvcNAQELBQADggIBABqRoNGxAQct9dQUFK8xqhiZaYPd30TlmCmSAaGJ0eBpvkVeqA2jGYhAQRqFiAlFC63JKvWvRZO1iRuWCEfUMkdqQ9VQPXziE/BlsOIgrL6RlJfuFcEZ8TK3syIfIGQZNCxYhLLUuet2HE6LJYPQ5c0jH4kDooRpcVZ4rBxNwddpctUO2te9UU5/FjhioZQsPvd92qOTsV+8Cyl2fvNhNKD1Uu9ff5AkVIQn4JU23ozdB/R5oUlebwaTE6WZNBs+TA/qPj+5/we9NH71WRB0hqUoLI2AKKyiPw++FtN4Su1vsdDlrAzDj9ILjpjJKA1ImuVcG329/WTYIKysZ1CWK3zATg9BeCUPAV1pQy8ToXOq+RSYen6winZ2OO93eyHv2Iw5kbn1dqfBw1BuTE29V2FJKicJSu8iEOpfoafwJISXmz1wnnWL3V/0NxTulfWsXugOoLfv0ZIBP1xH9kmf22jjQ2JiHhQZP7ZDsreRrOeIQ/c4yR8IQvMLfC0WKQqrHu5ZzXTH4NO3CwGWSlTY74kE91zXB5mwWAx1jig+UXYc2w4RkVhy0//lOmVya/PEepuuTTI4+UJwC7qbVlh5zfhj8oTNUXgN0AOc+Q0/WFPl1aw5VV/VrO8FCoB15lFVlpKaQ1Yh+DVU8ke+rt9Th0BCHXe0uZOEmH0nOnH/0onD应用ja-jetbrains工具下的vmoptions内容替换现有的vmoptions64内容,并增加-javaagent行,指定ja-netfilter.jar所在位置 -Xms128m-Xmx1024m-XX:ReservedCodeCacheSize=512m-XX:+IgnoreUnrecognizedVMOptions-XX:+UseG1GC-XX:SoftRefLRUPolicyMSPerMB=50-XX:CICompilerCount=2-XX:+HeapDumpOnOutOfMemoryError-XX:-OmitStackTraceInFastThrow-ea-Dsun.io.useCanonCaches=false-Djdk.http.auth.tunneling.disabledSchemes=""-Djdk.attach.allowAttachSelf=true-Djdk.module.illegalAccess.silent=true-Dkotlinx.coroutines.debug=off-XX:ErrorFile=$USER_HOME/java_error_in_idea_%p.log-XX:HeapDumpPath=$USER_HOME/java_error_in_idea.hprof--add-opens=java.base/jdk.internal.org.objectweb.asm=ALL-UNNAMED--add-opens=java.base/jdk.internal.org.objectweb.asm.tree=ALL-UNNAMED-javaagent:/home/long/clion-2022.1.3/jetbra/ja-netfilter.jar=jetbrains再应用在网站上获取的最新激活码激活 激活胜利,退出 4.应用eclipse进行c++/C语言开发eclipse能够通过利用市场下载(也能够通过官方网站下载aarch版本的installer,在外面间接抉择)启动后,点帮忙菜单进入插件市场搜寻C++集成环境插件CDT,点装置(或通过官网间接下载最新插件https://www.eclipse.org/cdt/d...)装置结束后重启失效。 5.应用Qt Creator进行C++/C语言开发qt creator能够通过利用市场下载安装利用市场下装置qmake(要进入全副能力看到)关上后的成果 此外还须要装置qt sdkhttps://download.qt.io/archiv...https://download.qt.io/archiv...解压到自定义文件夹关上qt creator,点工具|选项菜单 我的qmake地位如下(cmake不必配置,已自动检测到)kits配置好 6.实例6.1 Eclipse关上eclipse,点击新建工程,找到C++,如下图。 6.2 Clion及配置自带的cmake不能在arm 飞腾下工作,须要在setting中配置toolchains.配置后成果如下保留,IDE会重建工程索引,请急躁期待.编译运行成果如下 6.3 qt creator(不完满,很久没有搞QT了,欢送QT开发人员评论补充)新建我的项目 麒麟零碎专栏:https://segmentfault.com/blog...文章发表在SegmentFault分割邮箱:1179611323@qq.com群:662512340发行日志:20220702 首发

July 2, 2022 · 1 min · jiezi

关于linux:Linux常用操作-配置

罕用操作pwd print working dir 显示当初所处的目录ls list 不带参数就显示当前目录下的所有文件 程序能够加参数 -l 显示详细信息 -h 人性化显示文件尺寸 -a 显示所有文件, 以 . 结尾的文件是暗藏文件 还能够带一个目录当参数,这样就会显示这个目录上面两个是等价的ls -l -hls -lhcd cd Desktop 扭转当前目录 . 代表当前目录 .. 代表下级目录 cd 不带参数就回到默认的家目录 每个用户都有一个家目录,默认在 /home/用户名 root 用户的家目录是 /rootcp 复制出一个文件,用法如下 cp a.txt b.txt 复制 a.txt 并把新文件取名为 b.txt 复制目录要加上 -r 参数 (递归) cp -r a bmkdir 创立一个目录 -p 能够一次性创立多层目录 mkdir -p a/b/crmdir 只能用来删除一个空目录rm 这个命令间接删除货色,很危险,个别不要用 删除文件或者目录 -f 强制删除 -r 用来删除目录mv 挪动文件或者文件夹 也能够用来改名 mv a.txt b.txt 挪动则加上门路 mv b.txt ../ mv b.txt ../a.txt 能够用 mv xx /tmp 的形式来将文件放入长期文件夹 误删能够取出 (/tmp是操作系统提供的长期文件夹,重启会删除外面的所有文件)cat 显示文件内容nl 显示内容并附带行号more less head tail more 能够分屏分批看文件内容 less 能够前后退看文件 head 能够显示文件的前 10 行 tail 能够显示文件的后 10 行 head 和 tail 有一个 -n 参数 head -n 20 atouch touch a 如果 a 存在就更新批改工夫 如果 a 不存在就创立文件目录散布权限操作sudo 用管理员帐户执行程序 比方安装程序或者批改一些系统配置都须要管理员权限su switch user, 切换用户 su tao su tao文件权限 文件类型 用户 用户组 文件大小 批改日期 文件名-rw-rw-r-- 1 tao tao 10 11/09 20:28 b.guadrwxrwxr-x 2 tao tao 4096 11/09 20:28 tmp文件类型 是否可读 是否可写 是否可执行d r w x- r w x三组 rwx 分表代表 所属用户|同组用户|其余用户rwx 能够用数字示意为 421于是乎r-- 就是 4rw- 就是 6rwx 就是 7r-x 就是 5chown 扭转文件的用户 chown tao c.tao chown tao:tao c.taochmod 扭转文件权限 chmod 666 root.tao chmod +x root.tao chmod -x tmp信息查找file 显示文件的类型(不是百分之百精确)uname 显示操作系统的名字或者其余信息 uname -r uname -awhich which pwd 显示 pwd 的具体门路whereis whereis ls 显示更全面的信息whoamifind . -name "" 查找文件~ 家目录快捷方式> 笼罩式重定向>> 追加重定向| 管道`` 获取命令执行的后果 `pwd`& 后盾执行 python3 server.py & 能够用 fg 命令把一个在后盾的程序拉到前台来 能够用 Ctrl-z 来把一个前台的程序放到后盾去挂起history 查看历史命令grep 查找这两个个别配合应用 history | grep touchps 查看过程, 个别用上面的用法 ps axps ax | grep python 查看带 python 字符串的过程kill 和 killall 杀过程 用 ps ax 找到过程id (pid) kill [pid] kill -9 [pid] kill -15 [pid] killall 是用过程名字来杀过程后盾前台fgjobs快捷键C-z 挂起到后盾C-c 中断程序reboot 重启shutdown 关机 能够用参数指定工夫halt 关机====# ssh-key 的概念和应用## 1. 生成 ssh id_rsa.pubssh-keygen# 2. 普通用户把 public key 增加到~/.ssh/authorised_keys## root用户把 public key 增加到 /root/.ssh/authorised_keyscat id_dsa.pub >> ~/.ssh/authorized_keys# 3. 重启 sshservice ssh restart软件装置apt-get install 软件名比方上面apt-get install python3# 装置防火墙apt-get install ufwufw allow 22ufw allow 80ufw allow 443ufw allow 3000ufw allow 8089ufw default deny incomingufw default allow outgoingufw status verboseufw enable

July 1, 2022 · 2 min · jiezi

关于linux:Linux-Debian-Chrome-总是显示完整网址

原文地址: Linux Debian Chrome 总是显示残缺网址 欢送拜访我的博客: http://blog.duhbb.com/ 右键地址栏, 而后勾选 总是显示残缺网址.

June 30, 2022 · 1 min · jiezi

关于linux:Linux文件权限

一、Linux文件权限     每个Linux文件具备四种拜访权限:可读(r)、可写(w)、可执行(x)和无权限(-)。     利用ls -l命令能够看到某个文件或目录的权限,它以显示数据的第一个字段为     准。第一个字段由10个字符组成,如下:         -rwxr-xr-x     第一位示意文件类型,-示意文件,d示意目录     2-4位示意文件所有者的权限,u权限     5-7位示意文件所有者所属组成员的权限,g权限     8-10位示意所有者所属组之外的用户的权限,o权限       2-10位的权限总和有时称为a权限     以上例子中,示意这是一个文件(非目录),文件所有者具备读、写和执行的权限,     所有者所属组成员和所属组之外的用户具备读和执行的权限而没有写的权限。     二、文件权限批改----chmod     1. 用数字表示法批改权限     所谓数字表示法,是指将r、w和x别离用4、2、1来代表,没有授予权限的则为0,     而后把权限相加,如下  原始权限  转换为数字  数字表示法  rwxrwxr-x  (421)(421)(401)  775  rwxr-xr-x  (421)(401)(401)  755     批改权限的例子:将文件test的权限批改为所有者和组成员具备读写的权限,其余     人只有读权限          chmod 664 test     2. 用文本表示法批改权限     文本表示法用4个字母示意不同的用户:     u:所有者     g:组成员 ...

June 29, 2022 · 1 min · jiezi

关于linux:linux工作中常用之必备基础命令

linux必备根底命令1、clear命令性能阐明:清屏。举 例:clear ; ctrl + l 2、who命令性能阐明:以后在本地零碎上的所有用户的信息举 例:whoami ; who 3、uptime命令性能阐明:查问零碎信息举 例:load average: 0.00, 0.01, 0.05 1分钟的负载,5分钟的负载,15分钟的负载 4、w命令性能阐明:查问零碎信息举 例:w 5、free命令性能阐明:查看零碎内存举 例:free -h ; free -m 6、wc命令性能阐明:统计行。举 例:wc -l 123.txt 7、grep命令性能阐明:查找文件里符合条件的字符串。举 例:grep ‘119.4.253.206’ 123.txt | wc -l-n:输入行数 grep -n ‘80.82.70.187’ 123.txt-w:准确匹配 grep -w ‘113.66.107.198’ 123.txt-i:疏忽大小写 grep -i ‘IP:113.66.107.198’ 123.txt-v:反向抉择 grep -v ‘113.66.107.198’ 123.txt 8、 find命令性能阐明:查问文件。举 例:find / -name -type f 123.txt 9、uniq命令性能阐明:对排序好的内容进行统计举 例:uniq -c 123.txt | sort -n 10、sort命令性能阐明:对内容进行排序举 例:uniq -c 123.txt | sort -n ...

June 29, 2022 · 1 min · jiezi

关于linux:Linux系统中ls命令用法详解

linux零碎中ls命令的用法 ls命令是linux下最罕用的命令。ls命令就是list的缩写,缺省下ls用来打印出当前目录的清单,如果ls指定其余目录,那么就会显示指定目录里的文件及文件夹清单。 通过ls 命令不仅能够查看linux文件夹蕴含的文件,而且能够查看文件权限(包含目录、文件夹、文件权限),查看目录信息等等,ls 命令在日常的linux操作中用的很多,在此给大家介绍一下ls 命令的应用办法。 一、ls命令应用介绍 ls命令格局:ls [选项] [目录名]. ls命令性能:列出目标目录中所有的子目录和文件。 ls 命令的参数选项阐明: -a, –all 列出目录下的所有文件,包含以 . 结尾的隐含文件。 -A, –almost-all 列出除了 . 及 以外的任何我的项目 –author 印出每个文件的作者 -b, –escape 把文件名中不可输入的字符用反斜杠加字符编号的模式列出。 –block-size=大小 块以指定<大小>的字节为单位 -B, –ignore-backups 不列出任何以 ~ 字符完结的我的项目 -c 输入文件的 ctime (文件状态最初更改的工夫),并依据 ctime 排序。 -C 每栏由上至下列出我的项目 –color[=WHEN] 管制是否应用色调分辨文件。WHEN 能够是'never'、'always'或'auto'其中之一 -d, –directory 将目录象文件一样显示,而不是显示其下的文件。 -D, –dired 产生适宜 Emacs 的 dired 模式应用的后果 ...

June 29, 2022 · 2 min · jiezi

关于linux:运维工程师必须知道的-11-个-Linux-网络命令

1.ifconfigifconfig:接口配置器。 该命令用于显示路由和网络接口,还用于初始化接口、为其配置 IP 地址以及启用或禁用它。 语法 : 复制ifconfig1.运维工程师必须晓得的 11 个 Linux 网络命令 2.traceroutetraceroute用于对网络进行故障排除,检测提早并确定达到指定指标的门路。 提供名称并标识门路上的每个设施。沿着通往目的地的路线确定网络提早的起源并报告它。语法 : 复制traceroute <destination>1.“ 留神:如果您的零碎中没有装置 traceroute 服务,您能够应用以下命令装置它: ” 复制sudo apt-get install inetutils-traceroute1.运维工程师必须晓得的 11 个 Linux 网络命令 命令: 复制traceroute www.wljslmz.cn1.上述命令的输入将蕴含以下信息:指定的主机名、数据包的大小、所需的最大跳数、IP 地址。 “ 留神:为防止反向 DNS 查找,请在命令语法中增加 -n。 ” 命令: 复制traceroute -n www.wljslmz.cn1.输入批示网络提早,输入中显示的星号示意达到该主机时存在潜在问题,它们批示与网络通信期间的数据包失落。 traceroute 命令个别发送 UDP 报文,它也能够发送 TCP 或 ICMP 数据包。 要专门发送 ICMP,请应用这个,命令: 复制traceroute -I www.wljslmz.cn1.要发送 TCP 的变体,请应用它命令: 复制traceroute -T www.wljslmz.cn1.3.tracepathtracepath相似于 traceroute 命令。 它用于检测网络提早,然而,它不须要 root 权限,并且默认装置在 Ubuntu 中。 它跟踪到指定目的地的路由并辨认其中的每一跳。如果您的网络较弱,它会辨认出网络较弱的点。 语法: 复制tracepath <destination>1.例子: ...

June 29, 2022 · 2 min · jiezi

关于linux:Linux下修改时间

批改linux的工夫能够应用date指令date命令的性能是显示和设置零碎日期和工夫。输出date 查看目前零碎工夫。批改工夫须要 date -性能字符 批改内容命令中各选项的含意别离为:-d datestr, --date datestr 显示由datestr形容的日期-s datestr, --set datestr 设置datestr 形容的日期-u, --universal 显示或设置通用工夫工夫域%H 小时(00..23)%I 小时(01..12)%k 小时(0..23)%l 小时(1..12)%M 分(00..59)%p 显示出AM或PM%r 工夫(hh:mm:ss AM或PM),12小时%s 从1970年1月1日00:00:00到目前经验的秒数%S 秒(00..59)%T 工夫(24小时制)(hh:mm:ss)%X 显示工夫的格局(%H:%M:%S)%Z 时区 日期域%a 星期几的简称( Sun..Sat)%A 星期几的全称( Sunday..Saturday)%b 月的简称(Jan..Dec)%B 月的全称(January..December)%c 日期和工夫( Mon Nov 8 14:12:46 CST 1999)%d 一个月的第几天(01..31)%D 日期(mm/dd/yy)%h 和%b选项雷同%j 一年的第几天(001..366)%m 月(01..12)%w 一个星期的第几天(0代表星期天)%W 一年的第几个星期(00..53,星期一为第一天)%x 显示日期的格局(mm/dd/yy)%y 年的最初两个数字( 1999则是99)%Y 年(例如:1970,1996等)须要特地阐明的是,只有超级用户能力用date命令设置工夫,个别用户只能用date命令显示工夫。例1:用指定的格局显示工夫。$ date '+This date now is =>%x ,time is now =>%X ,thank you !'This date now is =>11/12/99 ,time is now =>17:53:01,thank you !例2:用预约的格局显示以后的工夫。 ...

June 29, 2022 · 1 min · jiezi

关于linux:Linux命令集

1、vim /etc/hosts 查看hosts文件2、ls -al 列出所有文件具体的权限和属性,蕴含暗藏文件3、groups 查看以后用户所属组4、groups 用户 查看用户所属组5、chmod -R 777 ./ 以后文件下的所有子文件 权限递归设置成7776、chgrp 用户组名 文件名 批改文件所属用户组7、chgrp -R 用户组名 目录名 递归目录内的所有文件,批改它们的所属用户组

June 28, 2022 · 1 min · jiezi

关于linux:Linux-创建CA证书

有两台机器一个负责颁发(157)一个负责申请(105)整体思路1.搭建CA2.发送申请3.颁发证书选项阐明:-new:生成新证书签订申请-x509:专用于CA生成自签证书-key:生成申请时用到的私钥文件-days n:证书的有效期限-out /PATH/TO/SOMECERTFILE: 证书的保留门路 查看证书中的信息:openssl x509 -in /PATH/FROM/CERT_FILE -noout -text|issuer|subject|serial|dates 第一步157创立rsa密钥在/etc/pki/CA/private(umask 077;openssl genrsa -out cakey.pem 4096)创立自签证书 在/etc/pki/CA/openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365必填选项国家,省会和公司名157创立两个文件touch /etc/pki/CA/index.txtecho 0F >/etc/pki/CA/serial 第二步105创立私钥 在/apps上面(umask 077;openssl genrsa -out app.key 1024)生成证书申请文件openssl req -new -key app.key -out app.csr必填选项国家,省会和公司名 其余的也须要填写,以防前面报错发送ca申请到157scp app.csr root@192.168.41.157:/root/ 第三步157签订证书openssl ca -in /root/app.csr -out /etc/pki/CA/app.crt -days 100 第四步能够sz app.csr 和sz cacert.pem 发送到win桌面上,导入证书受信赖的颁发机构先倒入cacert.pem–>app.csr (能够把cacert.pem 改为cancert.csr) 第五步撤消证书 参考链接:https://sslhow.com/check-root...

June 28, 2022 · 1 min · jiezi

关于linux:麒麟操作系统-kylinos-从入门到精通-系统设置-第十九篇-v10sp1从2107在线升级至2203的版本

0.根底环境类别:笔记本型号:中国长城 NF14C硬件平台:飞腾处理器(ArmV8 指令集)零碎:河汉麒麟操作系统 V10 SP1(2203) 关键词:信创,麒麟零碎,linux,V10sp1,2107,2203,飞腾,arm 1.降级筹备sudo apt-get update -ysudo apt-get dist-upgrade -y2.降级配置sudo gedit /etc/apt/sources.list.d/v10sp12203.list在编辑器中退出 deb http://archive.kylinos.cn/kylin/KYLIN-ALL 10.1-2203-updates main restricted universe multiverse保留后 3.降级在命令行窗口中 sudo apt-get update -ysudo apt-get dist-upgrade -y4.重启sudo reboot麒麟零碎专栏:https://segmentfault.com/blog...文章发表在SegmentFault分割邮箱:1179611323@qq.com群:662512340发行日志:20220627 首发

June 27, 2022 · 1 min · jiezi

关于linux:Linux-网络性能的-15-个优化建议

倡议1:尽量减少不必要的网络 IO我要给出的第一个倡议就是不必要用网络 IO 的尽量不必。 是的,网络在古代的互联网世界里承载了很重要的角色。用户通过网络申请线上服务、服务器通过网络读取数据库中数据,通过网络构建能力无比弱小分布式系统。网络很好,能升高模块的开发难度,也能用它搭建出更弱小的零碎。然而这不是你滥用它的理由! 起因是即便是本机网络 IO 开销依然是很大的。先说发送一个网络包,首先得从用户态切换到内核态,破费一次零碎调用的开销。进入到内核当前,又得通过简短的协定栈,这会破费不少的 CPU 周期,最初进入环回设施的“驱动程序”。接收端呢,软中断破费不少的 CPU 周期又得通过接管协定栈的解决,最初唤醒或者告诉用户过程来解决。当服务端解决完当前,还得把后果再发过来。又得来这么一遍,最初你的过程能力收到后果。你说麻烦不麻烦。另外还有个问题就是多个过程合作来实现一项工作就必然会引入更多的过程上下文切换开销,这些开销从开发视角来看,做的其实都是无用功。 下面咱们还剖析的只是本机网络 IO,如果是跨机器的还得会有单方网卡的 DMA 拷贝过程,以及两端之间的网络 RTT 耗时提早。所以,网络虽好,但也不能随便滥用! 倡议2:尽量合并网络申请在可能的状况下,尽可能地把屡次的网络申请合并到一次,这样既节约了双端的 CPU 开销,也能升高屡次 RTT 导致的耗时。 咱们举个实际中的例子可能更好了解。如果有一个 redis,外面存了每一个 App 的信息(利用名、包名、版本、截图等等)。你当初须要依据用户装置利用列表来查询数据库中有哪些利用比用户的版本更新,如果有则揭示用户更新。 那么最好不要写出如下的代码: <?php for(装置列表 as 包名){ redis->get(包名) ...}下面这段代码性能上实现上没问题,问题在于性能。据咱们统计古代用户均匀装置 App 的数量在 60 个左右。那这段代码在运行的时候,每当用户来申请一次,你的服务器就须要和 redis 进行 60 次网络申请。总耗时起码是 60 个 RTT 起。更好的办法是应该应用 redis 中提供的批量获取命令,如 hmget、pipeline等,通过一次网络 IO 就获取到所有想要的数据,如图。 倡议3:调用者与被调用机器尽可能部署的近一些在后面的章节中咱们看到在握手一切正常的状况下, TCP 握手的工夫根本取决于两台机器之间的 RTT 耗时。尽管咱们没方法彻底去掉这个耗时,然而咱们却有方法把 RTT 升高,那就是把客户端和服务器放得足够的近一些。尽量把每个机房外部的数据申请都在本地机房解决,缩小跨地网络传输。 举例,如果你的服务是部署在北京机房的,你调用的 mysql、redis最好都位于北京机房外部。尽量不要跨过千里万里跑到广东机房去申请数据,即便你有专线,耗时也会大大增加!在机房外部的服务器之间的 RTT 提早大略只有零点几毫秒,同地区的不同机房之间大概是 1 ms 多一些。但如果从北京跨到广东的话,提早将是 30 - 40 ms 左右,几十倍的上涨! ...

June 27, 2022 · 2 min · jiezi

关于linux:故障分析看Linux如何判断系统死机

前言在零碎的日常运维中,最令人头疼的莫过于各种应用程序或者操作系统hung住不响应的问题。对于处在用户态的程序相对来说还比拟容易排查,而一旦程序hung在内核态或者操作系统自身hung住,kill信号甚至硬件中断都无奈响应,此时咱们能做的就只有重启了。然而重启并不能解决基本问题,更麻烦的是这种状况下咱们简直拿不到任何有用的信息,后续起因的剖析和排查更是寸步难行。好在Linux内核早已提供了一系列的机制来帮忙咱们剖析此类问题。上面咱们就来看下如何配置应用这些机制以及它们的实现原理。 不可中断睡眠■概念   第一种比拟常见的景象是:过程长时间处于D(不可中断睡眠)状态。依赖于它的过程也会因为期待它而阻塞。那么什么是D状态呢?顾名思义:首先它是一种睡眠状态,也就意味着处于此状态的过程不会耗费CPU。其次睡眠的起因是因为期待某些资源(比方锁或者磁盘IO),这也是咱们看到十分多D状态的过程都处在解决IO操作的起因。最初一点就是它不能被中断,这个要区别于“硬件中断”的中断,是指不心愿在其获取到资源或者超时前被终止。因而他不会被信号唤醒,也就不会响应kill -9这类信号。这也是它跟S(可中断睡眠)状态的区别。 过程进入D状态产生在内核代码或者底层驱动代码中,典型的场景是与硬件进行通信。通常状况下咱们能够通过top命令察看到过程疾速的的进入退出D状态,但当硬件故障或者驱动bug呈现时就会导致过程长时间处于D状态无奈退出,依赖或期待它的其余过程都被阻塞卡死。 处于D状态的过程 ■机制 内核通常会创立一个khungtaskd的守护过程,它会周期性的查看所有过程的状态和上下文切换,进而判断是否有过程长时间处于D状态。咱们能够通过配置如下内核参数来管制检测的超时工夫、告警打印,以及是否触发panic,以帮忙问题的后续剖析。 # 超时工夫kernel.hung_task_timeout_secs = 120# 告警打印的次数kernel.hung_task_warnings = 10# 是否触发零碎panickernel.hung_task_panic = 0# 检测的最大过程数,零碎中过程数超过此值时会疏忽超出的局部kernel.hung_task_check_count = 4194304过程处于D状态的超时打印 ■实现     khungtaskd对应的代码在hung_task.c中,次要实现逻辑: 每隔一段时间(hung_task_timeout_secs定义的超时工夫),查看零碎中所有过程针对处于D状态的过程,记录并查看它的上下文切换次数,如果和上次记录的上下文切换次数雷同,则阐明此过程在超时工夫内始终处于D状态。依据配置抉择打印告警并触发零碎panicstatic int __init hung_task_init(void){    ... ...    watchdog_task = kthread_run(watchdog, NULL, "khungtaskd");    //创立khungtaskd过程  ... ...}static int watchdog(void *dummy){  ... ...    for ( ; ; ) {        while (schedule_timeout_interruptible(timeout_jiffies(timeout)))    //休眠一段时间            timeout = sysctl_hung_task_timeout_secs;        ... ...        check_hung_uninterruptible_tasks(timeout);    //开始查看过程    }}static void check_hung_task(struct task_struct *t, unsigned long timeout){    unsigned long switch_count = t->nvcsw + t->nivcsw;    //计算上下文切换次数    ... ...    if (switch_count != t->last_switch_count) {        //和上次切换次数进行比拟        t->last_switch_count = switch_count;        return;    }    ... ...    printk(KERN_ERR "INFO: task %s:%d blocked for more than "        //打印告警                "%ld seconds.\n", t->comm, t->pid, timeout);    printk(KERN_ERR ""echo 0 > /proc/sys/kernel/hung_task_timeout_secs""                " disables this message.\n");  ... ...    if (sysctl_hung_task_panic) {        trigger_all_cpu_backtrace();        panic("hung_task: blocked tasks");    //触发零碎panic    }}软锁和硬锁■概念 ...

June 27, 2022 · 2 min · jiezi

关于linux:一个由硬链接引发的问题

一个由硬链接引发的问题问题背景最近对于 Fastjson 的破绽又被爆进去了,作为修理工(哦不,业余的软件工程师),又到了咱们表演的时候了。 咱们有很多服务是用的老版本的有破绽的jar包,为了解决这个破绽问题,咱们决定来个移花接木,应用新版本的jar包间接把老版本的有破绽的jar版本间接笼罩掉。哎哎哎,要想程序搞得好,三十六计不可少。 问题景象既然计划确定了,那就开始干,具体思路如下: 从环境上找出老版本的jar包,而后备份到一个备份门路下,这里备份是为了反对回退的性能。而后把新版本的jar包拷贝到老版本jar包的门路下。重启所有的微服务是jar包失效。代码的逻辑如下图所示: for 老版本的jar包 in 所有老版本的jar包; do 备份老版本的jar包 将新版本的jar包拷贝笼罩老版本的jar包done整体思路很简略,然而问题就出在这个备份下面。在理论的测试过程中,发现备份的目录下,jar包的版本大多数都变成新版本的jar包了,而不是老版本的jar包,如下图所示,在 /tmp/home/testuser 下的 fastjson-1.2.70.jar 这个包的 Hash 值实际上和 fastjson-1.2.83.jar 这个包的 Hash 值一样。 最开始始终认为是本人代码逻辑写的有问题,于是一遍一遍的查看。我先把新版本的jar包笼罩老版本的 jar 包这个逻辑去掉,而后计算备份门路下所有的 Hash 值,发现都是老版本的 jar 包,是没有问题的。 然而一旦我把笼罩老版本的 jar 包逻辑加上去,这个备份的 jar 包版本就变了,我反反复复搞了好几次后果都是一样的,真是让我百思不得其解。困扰程序员的两大难题之一在我脑海中产生了,它为啥就跑不起来呢? 既然看不出来,那就只能应用程序员的必杀器了,Debug 一把。我把每次循环执行笼罩操作后,备份目录的下的 jar 的 Hash 值都算了一下,后果发现在执行第二次循环的时候,备份目录的下的 jar 文件就曾经变成了新版本的jar包文件了。 察看到这个景象之后,我就开始思考为啥会呈现这种状况呢?第二个循环的逻辑明明和第一次的逻辑是一样的,为啥后果就变了呢? 当天搞了很久也没有找到起因是啥,脑壳都给我搞昏了。没方法,今天接着搞。第二天早上来,因为通过了一早晨的回血,思路又清晰起来了,感觉本人又行了。 这个时候我想起来,之前有人如同给我说过,咱们的jar包是做的硬链接的。这个让我想到了一个经典的面试题:Linux 的软链接和硬链接的区别是啥?区别是啥来着?嗯嗯……,想不起来了,书到用时方恨少啊,默默的流下了没有常识的泪水。 网上找了一些文章来看,又从电脑屏幕下把压着的《鸟哥的 Linux 私房菜》取出来温习一下。 而后登录到环境上,看了一下环境上老版本的 jar 包,发现的确是做的硬链接。为了演示这个状况,我在我本人的环境上复现了一下这种状况,如下图所示: 软链接和硬链接的区别能够参考网上的材料和书籍,我在这里就不细讲了。针对我以后遇到的这个问题,能够打个不失当的比喻:硬链接就如同你照镜子一样,你做了什么样的扭转,镜子外面的你也会做同样的扭转。如上图所示,当咱们扭转 /home/testuser 目录下的 fastjson-1.2.70.jar 这个文件的内容时,/home/admin 目录下的 fastjson-1.2.70.jar 文件的内容会变得和它一样。 ...

June 26, 2022 · 1 min · jiezi

关于linux:PS-Linux系统命令

PS,是Linux系统命令之一,是在Linux中是查看过程的命令。 罕用组合命令ps -ef 查问全副的过程,并显示全副的列;ps -aux 查看所有的过程,包含其余用户的程序 语法格局ps [参数] 罕用参数 参数释义a显示现行终端机下的所有程序,包含其余用户的程序-A显示所有程序c显示每个程序真正的指令名称,而不蕴含门路-C <指令名称>指定执行指令的名称,并列出该指令的程序的情况-d显示所有程序,但不包含阶段作业管理员的程序e列出程序时,显示每个程序所应用的环境变量-f显示UID,PPIP,C与STIME栏位f用ASCII字符显示树状构造,表白程序间的互相关系g显示现行终端机下的所有程序,包含所属组的程序-G <群组识别码>列出属于该群组的程序的情况h不显示题目列-H显示树状构造,示意程序间的互相关系-j采纳工作管制的格局显示程序情况-l采纳具体的格局来显示程序情况L列出栏位的相干信息-m显示所有的执行绪n以数字来示意USER和WCHAN栏位-N显示所有的程序,除了执行ps指令终端机下的程序之外-p <程序识别码>指定程序识别码,并列出该程序的情况r只列出现行终端机正在执行中的程序-s <阶段作业>列出附属该阶段作业的程序的情况s采纳程序信号的格局显示程序情况S列出程序时,包含已中断的子程序材料-t <终端机编号>列出属于该终端机的程序的情况-T显示现行终端机下的所有程序u以用户为主的格局来显示程序情况-U <用户识别码>列出属于该用户的程序的情况U <用户名称>列出属于该用户的程序的情况v采纳虚拟内存的格局显示程序情况-V或V显示版本信息-w或w采纳宽敞的格局来显示程序情况x显示所有程序,不以终端机来辨别X采纳新式的Linux i386登陆格局显示程序情况-y配合选项”-l”应用时,不显示F(flag)栏位,并以RSS栏位取代ADDR栏位--cols <每列字符数>设置每列的最大字符数--headers反复显示题目列--help在线帮忙--info显示排错信息--lines <显示列数>设置显示画面的列数[root@VM-24-4-centos ~]# ps -efUID PID PPID C STIME TTY TIME CMDroot 1 0 0 Mar01 ? 00:23:52 /usr/lib/systemd/systemd --switched-root --system --deserialize 22root 2 0 0 Mar01 ? 00:00:05 [kthreadd]root 4 2 0 Mar01 ? 00:00:00 [kworker/0:0H]root 6 2 0 Mar01 ? 00:04:23 [ksoftirqd/0]root 7 2 0 Mar01 ? 00:01:46 [migration/0]root 8 2 0 Mar01 ? 00:00:00 [rcu_bh][root@VM-24-4-centos ~]# ps auxUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.0 51928 3600 ? Ss Mar01 23:53 /usr/lib/systemd/systemd --switched-root --system --deserialize 22root 2 0.0 0.0 0 0 ? S Mar01 0:05 [kthreadd]root 4 0.0 0.0 0 0 ? S< Mar01 0:00 [kworker/0:0H]root 6 0.0 0.0 0 0 ? S Mar01 4:23 [ksoftirqd/0]root 7 0.0 0.0 0 0 ? S Mar01 1:46 [migration/0]root 8 0.0 0.0 0 0 ? S Mar01 0:00 [rcu_bh]root 9 0.0 0.0 0 0 ? S Mar01 112:22 [rcu_sched]root 10 0.0 0.0 0 0 ? S< Mar01 0:00 [lru-add-drain]root 11 0.0 0.0 0 0 ? S Mar01 0:41 [watchdog/0]root 12 0.0 0.0 0 0 ? S Mar01 0:37 [watchdog/1]root 13 0.0 0.0 0 0 ? S Mar01 1:42 [migration/1]援用 https://www.linuxcool.com/pshttps://baike.baidu.com/item/...

June 25, 2022 · 1 min · jiezi

关于linux:纯c实现tcp协议

既然要用c语言实现tcp协定,咱们就先看看什么是tcp协定,再去操作实际。 tcp协定的介绍:传输控制协议(TCP,Transmission Control Protocol)是一种面向连贯的、牢靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。TCP旨在适应反对多网络应用的分层协定层次结构。 连贯到不同但互连的计算机通信网络的主计算机中的成对过程之间依附TCP提供牢靠的通信服务。TCP假如它能够从较低级别的协定取得简略的,可能不牢靠的数据报服务。 原则上,TCP应该可能在从硬线连贯到分组替换或电路替换网络的各种通信零碎之上操作。 (以上介绍援用自百度百科)https://baike.baidu.com/item/...明确了tcp,咱们就要思考咱们应该做些什么读完了下面的内容,应该脑子里还是很懵,我这里找了一张更为清晰的图片概括 也就是说,咱们把图片里的内容用代码表述进去,所有就搞定。我先把残缺代码写进去,再对其中的难点进行介绍 #include <stdio.h>#include <arpa/inet.h>//inet_addr() sockaddr_in#include <string.h>//bzero()#include <sys/socket.h>//socket#include <unistd.h>#include <stdlib.h>//exit()#define BUFFER_SIZE 1024int main() { char listen_addr_str[] = "0.0.0.0"; size_t listen_addr = inet_addr(listen_addr_str); int port = 8080; int server_socket, client_socket; struct sockaddr_in server_addr, client_addr; socklen_t addr_size; char buffer[BUFFER_SIZE];//缓冲区大小 int str_length; server_socket = socket(PF_INET, SOCK_STREAM, 0);//创立套接字 bzero(&server_addr, sizeof(server_addr));//初始化 server_addr.sin_family = INADDR_ANY; server_addr.sin_port = htons(port); server_addr.sin_addr.s_addr = listen_addr; if (bind(server_socket, (struct sockaddr *) &server_addr, sizeof(server_addr)) == -1) { printf("绑定失败\n"); exit(1); } if (listen(server_socket, 5) == -1) { printf("监听失败\n"); exit(1); } printf("创立tcp服务器胜利\n"); addr_size = sizeof(client_addr); client_socket = accept(server_socket, (struct sockaddr *) &client_addr, &addr_size); printf("%d 连贯胜利\n", client_socket); char msg[] = "祝贺你连贯胜利"; write(client_socket, msg, sizeof(msg)); while (1) { str_length = read(client_socket, buffer, BUFFER_SIZE); if (str_length == 0) //读取数据结束敞开套接字 { close(client_socket); printf("连贯曾经敞开: %d \n", client_socket); break; } else { printf("客户端发送数据:%s",buffer); write(client_socket, buffer, str_length);//发送数据 } } return 0;}好了,最简略的tcp就实现结束了。 ...

June 25, 2022 · 1 min · jiezi

关于linux:麒麟操作系统-kylinos-从入门到精通-办公环境-第十八篇-金融理财基金股票使用

0.根底环境类别:笔记本型号:中国长城 NF14C硬件平台:飞腾处理器(ArmV8 指令集)零碎:河汉麒麟操作系统 V10 SP1(2203) 关键词:信创,麒麟零碎,linux,西方财产,同花顺,基金股票,炒股,飞腾,arm 1.需要背景随着PKS信创电脑越来越欠缺,性能越来弱小,能力也笼罩更多的范畴。明天,咱们站在一位金融财务的关注者视线,为大家提供炒股、基金、期货方面的应用教训和分享。 2.同花顺https://www.10jqka.com.cn/ 2.1 同花顺网页 2.2 同花顺客户(arm linux版本)http://activity.10jqka.com.cn...点击下载河汉麒麟桌面零碎arm版本,这一点要为同花顺点赞,对信创和自主的反对。 3.西方财产https://www.eastmoney.com/ 3.1 西方财产网页 3.2 客户端经在网页上寻找,西方财产没有原生客户端 ,因而这里选用安卓挪动客户端代替。https://marketing.dfcfs.com/v...能够扫码下载,也能够通过上面的链接间接下载https://www.wandoujia.com/app... 去掉复选框,而后点击一般下载 APK的间接链接https://ip90562858.out.azhima... 4.方证证券https://www.foundersc.com/方证证卷与西方财产相似,一是利用网页,二是利用安卓APK利用。 最初,为同花顺点赞,有为国家的自主可控做奉献,出了原生版本。 麒麟零碎专栏:https://segmentfault.com/blog...文章发表在SegmentFault分割邮箱:1179611323@qq.com群:662512340发行日志:20220624 首发

June 24, 2022 · 1 min · jiezi

关于linux:三种方法检查ssl证书

之前,有一个域名应用了网上收费的 ssl 证书,而后想在该证书过期后更换为 Let's encrypt 的收费证书,便想查问下该域名 ssl 证书还剩多少天过期。 查问证书到期工夫的办法还是很简略的,以下应用 sslforfree.com 这个域名进行测试,上面简略的记录一下步骤。 办法一:间接浏览器上查看该办法的前提是你的域名曾经指向了 web 服务器,在浏览器上能够失常拜访。 首先应用浏览器拜访你的站点域名,而后单击地址栏下面的锁图标进行查看. 办法二:在服务端应用 Openssl 工具进行查看因为我服务端是搭建在 Centos 上,所以用 xshell 或者 putty 工具登录后,进入证书目录,应用 openssl 命令进行查看: cd /usr/ssl/cert openssl x509 -in signed.crt -noout -dates 下面改成你本人证书的所在目录,证书名称也改成你本人服务端上证书的名称。 办法三:应用 php 代码办法进行查看如果你有多个可拜访的域名,那么应用代码的办法进行查看就会容易很多,省得一个一个手动查看。上面贴上代码: /** 获取证书有效期 */public function getValidity(){ $domain = "sslforfree.com";$context = stream_context_create(array("ssl" => array("capture_peer_cert_chain" => true)));$socket = stream_socket_client("ssl://$domain:443", $errno, $errstr, 30, STREAM_CLIENT_CONNECT, $context);$context = stream_context_get_params($socket);foreach ($context["options"]["ssl"]["peer_certificate_chain"] as $value) { //应用openssl扩大解析证书,这里应用x509证书验证函数 $cerInfo = openssl_x509_parse($value); if(strpos($cerInfo['name'],$domain)) { echo "start:".date("Y-m-d",$cerInfo['validFrom_time_t'])."<br/>"; echo "end:".date("Y-m-d",$cerInfo['validTo_time_t']); }}}输入内容: ...

June 24, 2022 · 1 min · jiezi

关于linux:关于皕杰报表部署到linux可能出现的字体问题

当报表部署到linux时,呈现了字体问题,可能的起因有:1.Linux零碎短少字体 2.Linux零碎短少字符集 3.jdk未胜利加载字体 配置中文字体fc-list          查看字体列表yum  -y  install  fontconfig           装置字体库装置实现后,在/usr/share目录就能够看到fonts和fontconfig目录了(之前是没有的) 3.首先在/usr/share/fonts目录下新建一个目录chinese:将所需的字体上传至/usr/share/fonts/chinese目录下 4.批改chinese目录的权限:  chmod -R 755 /usr/share/fonts/chinese 5.装置ttmkfdir来搜寻目录中所有的字体信息,并汇总生成fonts.scale文件,输出命令: yum -y install ttmkfdir 而后执行ttmkfdir命令即可:  ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir 6.批改字体配置文件了,首先通过编辑器关上配置文件:  vim /etc/fonts/fonts.conf 能够看到一个Font list,即字体列表,在这里须要把咱们增加的中文字体地位加进去:7.不必重启,刷新内存中的字体缓存使配置对系统失效:  fc-cache     增加中文字符集Locale      而后查看零碎以后字符集 yum -y groupinstall chinese-support         下载字符集 vim /etc/sysconfig/i18n        将字符集配置到零碎变量中 将变量LANG的值设置为:“zh_CN.UTF-8”。 即:LANG=zh_CN.UTF-8 编辑保留之后,留神要从新载入此文件。从新载入命令:. /etc/profile应用命令echo $LANG 能够看到输入:zh_CN.UTF-8,证实设置胜利。 另外应用locale命令也能够看到,字符集曾经胜利设置: 给JDK增加字体进入 JDK 的目录,如果没有fonts目录,自行创立echo $JAVA_HOME cd $JAVA_HOME/jre/lib/fonts 创立目录mkdir fallback cd fallback 将所须要的中文字体拷贝过去失效mkfontscale mkfontdir 如果运行mkfontscale命令时终端提醒mkfontscale: command not found,则须要首先装置这个命令 使mkfontscale和mkfontdir命令失常运行 yum install mkfontscale 使fc-cache命令失常运行。如果提醒 fc-cache: command not found yum install fontconfig ...

June 24, 2022 · 1 min · jiezi

关于linux:麒麟操作系统-kylinos-从入门到精通-办公环境-第十七篇-C-Net-6开发环境搭建

0.根底环境类别:笔记本型号:中国长城 NF14C硬件平台:飞腾处理器(ArmV8 指令集)零碎:河汉麒麟操作系统 V10(SP1)关键词:信创,麒麟零碎,linux,.net,.netcore,c#,microsoft,飞腾,arm 1.需要背景c#是一门十分优良的语言,不少工控与医疗信息化行业软件。此外,其ef框架也是十分人性化,有低代码的基因。C#编码的过程洁净,写起来十分难受。本篇心愿可能给读者在构建C#的研发环境提供一点有价值的教训分享。 2.Snap装置装置snap服务 sudo apt-get install snapd -y 确认snap service snapd status更新snap至最新版 sudo snap refresh 注:尝试后,放弃应用snap装置dotnet core,起因与理由见第三局部 3. 装置dotnet(.net) SDK参考https://docs.microsoft.com/zh...https://docs.microsoft.com/zh...官网特地提醒:仅在 x64 体系结构上反对包管理器装置。 对于 ARM 等其余体系结构,必须通过其余一些形式装置 .NET,例如,通过 Snap 和安装程序脚本进行装置,或通过手动提取二进制文件进行装置。集体实际论断:1.Snap装置后,仅能装置edge通道,最多到5.0,且无奈失常创立我的项目(花了不少试验工夫).2.脚本装置,找不到命令(也能够通过参数指令目录,花了不少试验工夫)最初,所有的形式都尝试过当前,决定应用二进制装置,间接用二进制包配置变量。 3.1先装置DEB依赖如果之前未列出发行版,并且该版本基于 debian,则可能须要以下依赖项: libc6libgcc1libgssapi-krb5-2libicu67libssl1.1libstdc++6zlib1gsudo apt-get install libc6 libgcc1 libgssapi-krb5-2 libicu66 libssl1.1 libstdc++6 zlib1g #v10 sp1的仓库外面没有libicu67wget http://ftp.de.debian.org/debian/pool/main/i/icu/libicu67_67.1-7_arm64.deb # 独自下载sudo dpkg -i libicu67_67.1-7_arm64.deb 对于应用 System.Drawing.Common 程序集的 .NET 利用,还须要以下依赖项: libgdiplus(版本 6.0.1 或更高版本)sudo apt-get install libgdiplus -y # v10 sp1我装的时候是6.0.4的版本下载arm64 SDK二进制包https://dotnet.microsoft.com/... 下载arm64 asp.netcore 运行时二制包https://dotnet.microsoft.com/...将两个压缩包解压到想解压的地位,我集体是在主目录创立了dotnet/dotnet6的目录在/etc/profile后追加两行 ...

June 23, 2022 · 1 min · jiezi

关于linux:在FreeBSD中安装MySQL数据库

MySQL 是一个开源的关系型数据库MySQL能够在 Linux、Unix 和Windows零碎中运行,它可用于多种应用程序。环境FreeBSD 13-RELEASE 批改pkg源须要先创立/usr/local/etc/pkg/repos目录,而后创立FreeBSD.conf配置文件,并将默认源敞开,而后增加国内软件源。 root@freebsd:~ # mkdir -p /usr/local/etc/pkg/reposroot@freebsd:~ # vi /usr/local/etc/pkg/repos/FreeBSD.conf FreeBSD: { enabled: no }ustc: { url: "pkg+http://mirrors.ustc.edu.cn/fr...${ABI}/quarterly", mirror_type: "srv", signature_type: "fingerprints", fingerprints: "/usr/share/keys/pkg", enabled: yes}如何在FreeBSD 13中装置MySQL数据库如何在FreeBSD 13中装置MySQL数据库更新pkg源: root@freebsd:~ # pkg update -fUpdating ustc repository catalogue...Fetching meta.txz: 100% 916 B 0.9kB/s 00:01 Fetching packagesite.txz: 100% 6 MiB 6.5MB/s 00:01 Processing entries: 100%ustc repository update completed. 30371 packages processed.All repositories are up to date.如何在FreeBSD 13中装置MySQL数据库如何在FreeBSD 13中装置MySQL数据库 ...

June 23, 2022 · 2 min · jiezi

关于linux:linux-三个文件时间atimectimemtime

外围了解目录实质就是文件,目录的内容就是记录了文件名和inodefcntl.lockf 对文件上锁相当如批改文件内容,也就是mtimestat 查看文件属性总结品种文件了解atime读取文件内容的工夫mtime文件内容的批改-> ctime的批改ctime文件属性的批改

June 23, 2022 · 1 min · jiezi

关于linux:运维简记

一、shellvar11、变量 var1=hello echo "${var1}_xyz" declare -i var3 //-i指定整型,-a指定数组,-f指定函数名,-r指定只读变量 unset var1 //革除变量 //反引号和$()获取外面的Linux命令的执行后果2、数组 (1)第一种数组定义: arr1=(a1 a2 11) echo "数组arr1的长度:${#arr1[@]}" //#示意长度。@和*示意数组的全副元素。 echo "数组arr1的第二个元素的长度: ${#arr1[1]}"(2)第二种数组定义 arr2[0]=abc arr2[1]=aa echo "arr2数组内容:${arr2[@]}"(3)数组遍历 办法一:end_length=${#arr1[@]}end_index=expr $end_length-1\for i in `seq 0 $end_index`do pos `expr $i + 1` echo `${arr1[$1]}`done办法二:for ele in '${arr2[@]}'do echo '${ele}'done3、函数 参数个数:$# 记录上一个命令执行胜利或失败的后果 xyz_with_params(){ for i in `seq 1 $#` do echo '第$i个地位参数:$1' shift done}4、计算 整数运算 expr 1 + 2 //两头要有空格 let "a += 10" let "a++" 浮点数运算,应用bc echo "scale=2;1.2*1.2+0.8" | bc ...

June 23, 2022 · 1 min · jiezi

关于linux:Linus-TorvaldsRust-For-Linux-或将被合并到-Linux-520-内核中

刚刚举办的 LINUX 基金会-开源峰会上,Linus Torvalds 在议论“LINUX 内核中存在 Rust 的可能性”议题时示意:预计很快(甚至可能在下一个版本 Linux 5.20 中)就会在内核中合并 Rust 基础设施。 只管目前,还没有任何针对 Linux 的 Rust 申请被发送进来或合并,但曾经看到了 Linux 内核在根底施行方面对 Rust 的初步反对,比方一些根本的示例驱动程序等等。 始终以来,Rust for Linux 的停顿都备受开发者关注。 还记得去年 Linux 诞生 30 周年之际,Linus Torvalds 在回复 Tag 1 征询公司开创合伙人兼 CEO Jeremy Andrews 的电子邮件中对《An Interview With Linus Torvalds: Linux and Git - Part 1》问题时提到的“咱们不会用 Rust 取代 C 语言开发内核”。 当然,Linus Torvalds 过后也示意,Rust 可能会被用来开发一些驱动程序(兴许是整个驱动子系统,兴许是文件系统),因而 Rust 不是“取代 C 语言”,而是“在一些有意义的中央扩大 Linux 内核的 C 代码”。 直到去年12 月份,Linux 内核/ Rust on Linux 的次要开发者 Miguel Ojeda 向 Linux Kernel 邮件列表提交的新补丁 (v2)中,指出将为 Linux 内核减少对 Rust 作为第二语言的反对。 ...

June 22, 2022 · 1 min · jiezi

关于linux:今天SysAK-是如何实现业务抖动监控及诊断手把手带你体验Anolis-OS|第2526期

「龙蜥大讲堂」第 25-26 期来啦!观看直播的同时参加互动还有龙蜥精美周边等你来拿,还请提前扫码进群。今天 SIG 双周会直播将持续邀请大咖在线分享,来自龙蜥社区运维SIG 核心成员分享《Linux 利用运行抖动的背地》、龙蜥社区资深开发者、贡献者分享《 开源奉献入门:龙蜥一刻,体验 Anolis OS》,快来扫码入群,预约前排小板凳观看直播吧! Linux 利用运行抖动的背地直播工夫:2022 年 06 月 22 日 (明天)15:00-16:00 直播内容:抖动是影响业务性能的一大类问题,通过深刻了解 Linux 利用运行过程的抖动起因,来帮助零碎及利用进行优化。同时介绍怎么 SysAK 工具对问题进行监控和诊断。 听众受害:理解利用运行过程中的抖动起因,及常见诊断办法。 适宜人群:Linux 内核开发者、零碎运维工程师。 讲师介绍:龙蜥社区运维 SIG 核心成员:SysAK 我的项目 Maintainer。多年操作系统开发教训,对 OS 各个模块及应用领域都有涉猎,近年来次要从事操作系统的稳定性工作。 开源奉献入门:龙蜥一刻,体验 Anolis OS直播工夫:2022 年 06 月 23 日 (周四)16:00-17:00 直播内容:带龙蜥社区初学者理解 Anolis OS 装置部署,理解社区基础设施包含 ABS、T-One等。 听众受害:如何用龙蜥实验室体验 Anolis OS,以及如何在本地装置体验 Anolis OS? 适宜人群:小白用户及其社区基础设施。 讲师介绍:龙蜥社区资深开发者、贡献者。 如何观看直播? 钉钉扫描下方海报二维码入群即可观看直播。 小龙舒适揭示:本期龙蜥大讲堂直播回放将在直播完结后一周内上线至龙蜥官网(首页-动静-视频),往期龙蜥大讲堂视频回放已上线至龙蜥官网,欢送观看,有任何疑难欢送随时征询龙蜥助手—小龙(微信:openanolis_assis)。 —— 完 ——

June 22, 2022 · 1 min · jiezi

关于linux:皕杰报表关于预览时文字变成方块

在linux零碎部署皕杰报表后,预览字体会变成小方块。 可能的起因有: 1.Linux零碎短少字体 2.Linux零碎短少字符集 3.jdk未胜利加载字体 解决办法一:拷贝中文字体:1) 在启动java的时候退出如下参数,参数值为jdk的装置门路-Dsun.java2d.fontpath=……/j2se/jre/lib/fonts2) 操作系统装置残缺的中文安装包,而后把操作系统的中文字体文件拷贝到……/j2se/jre/lib/fonts目录下3) 关上……/j2se/jre/lib目录下的font.properties文件,把新增加的字体文件的对照信息 加进该文件即可4) 重起web服务器 解决办法二:装置中文包1) 操作系统装置残缺的中文安装包2) 卸载jdk,重新安装,让jdk读取新的中文字体文件 解决办法三:如果操作系统没有装置中文语言包,又不想装置,则:1、从Windows操作系统拷贝报表所用到的字体文件到相应的操作系统字体目录Windows操作系统的字体目录个别为Windows\fontsAIX操作系统的字体目录个别为/usr/lpp/x11/lib/fonts2、批改操作系统的字体设置字体设置文件个别为fonts.dirFonts.dir的第一行个别是通知Xwindows一共有多少行字体信息Fonts.dir的第二行开始起始正式的字体设置信息字体设置示例:simsun.ttc –jdk-simsun-Medium-r-Normal--0-0-0-0-P-O-gb2312.1980-03、重新启动操作系统4、而后再装置解决办法一来解决jdk的字体问题

June 22, 2022 · 1 min · jiezi

关于linux:linux下的计时器

近来有读者或者会蛊惑,在linux下开发时往往会遇到一些场景,例如:如何让程序运行特定的工夫而后退出?如何在循环肯定的工夫后主动执行某段程序,例如在判断到小孩关上游戏,运行5分钟后主动执行退出脚本?这就波及到中断和计时器的常识了。 通常在linux中咱们能够应用以下两种计时器函数来实现代码 alarm函数所需头文件 #include<unistd.h>原型:unsigned int alarm(unsigned int seconds)alarm函数给发送一个SIGALRM中断,由signal函数捕获而后解决。以下是配合signal函数 #include <stdio.h>#include <stdlib.h>#include <unistd.h>#include <signal.h>int flag = 0;int main(void){ /*lambda 表达式简略定义一个中断处理函数 */ auto bb = [](int sig) -> void{printf("alarm!\n"); flag=1; return; }; signal(SIGALRM, bb); //注册捕捉信号的函数,即 交由bb解决 alarm(1); while (1) { if (flag == 1) { printf("hhh\n"); return 0; } } return 0;}【参考:https://linuxhint.com/sigalar...】下面这个例子中是说,期待2秒当前主动完结循环,这一性能的实现。然而alarm函数一个过程只能有一个定(计)时器,这对于多线程和异步程序来说特地不敌对,同时应用会有抵触和平安问题。在bb函数里减少alarm(k)能够实现反复发送的性能。然而每一个alarm收回的SIGALRM中断调用的都是bb函数,在不同的线程里是不会做辨别的。而且只能以秒为单位,局限比拟大。 setitimer()setitimer()为Linux的API,并非C语言的Standard Library,setitimer()有两个性能,一是指定一段时间后,才执行某个function,二是每间格一段时间就执行某个function,以下程序demo如何应用setitimer()。定义: #include <sys/time.h> int setitimer( int which, const struct itimerval *value, struct itimerval *ovalue );ITIMER_REAL:以零碎实在的工夫来计算,它送出SIGALRM信号。ITIMER_VIRTUAL:以该过程在用户态下破费的工夫来计算,它送出SIGVTALRM信号。ITIMER_PROF:以该过程在用户态下和内核态下所费的工夫来计算,它送出SIGPROF信号。 上面是实例 #include <sys/time.h>#include <signal.h>#include <stdio.h>int main(void){ auto bb = [](int signum) -> void{printf("alarm!\n"); return;}; signal(SIGALRM, bb); struct itimerval new_one, old_one; /******* 通过new_one 设置 **********/ /* tv_sec + tv_usec* 1/1e6 = 反复的间隔时间 it_interval 为0时候则始终延时*/ new_one.it_interval.tv_sec = 0; new_one.it_interval.tv_usec = 3e5; // 取值 < 1e6 /* 同理,初始执行工夫*/ new_one.it_value.tv_sec = 1; new_one.it_value.tv_usec = 0; // 取值 < 1e6 setitimer(ITIMER_REAL, &new_one, &old_one); // old_one 不必赋值 for(;;); printf("1122\n"); return 0;}后记:有其余实现形式吗,有没有什么注意事项?底层原理是什么?当前有机会持续开掘。 ...

June 22, 2022 · 1 min · jiezi