Linux命令行-shell进程
在上一篇博客中,已经介绍了些许系统管理员和程序员用到的一些高级bash指令,那么这篇我们将介绍shell进程的技巧。
shell类型一般来说,系统启动什么样的shell进程取决于个人的ID设置,在/etc/passwd文件中我们可以看到ID的记录,只要登录,默认的虚拟shell程序就会运行。
在现在使用的ubuntu版本上,默认的系统shell和默认的交互shell并不一致,默认的交互shell是/bin/bash,但是作为系统的默认shell却是/bin/sh被设置成dash shell。
Tip:对bash shell脚本来说,这两种不同的shell(默认的交互shell和默认的系统shell)会造成问题。
我们可以直接采用/bin/dash的指令进入dash shell程序,$提示符是dash的标志,若是需要退出,我们只需要键入exit指令即可。
在下一节将探究shell程序和新启动的shell程序之间的关系。
shell的父子关系了解关系之前,需要知道什么是父shell,一般来说用于登录控制器终端 ...
机器学习-BERT-Bilstm-CRF命名实体识别
这篇博客用来记录导师项目中碰到的问题以及解决方法!
这周在结束了模型的训练和项目结构的初步理解,问题渐渐转到了获取数据集和对于新的数据集的训练和三元组的提取,下面是项目的结构:
此次的项目主要是为了实现橡胶挤塑机的故障预警和故障溯源,我的想法是希望通过机器运行过程中产生的日志中的文本信息进行命名实体抽取,在形成三元组之后存入图数据库(neo4j)之中,在工业机器出现该故障之后,可以及时查询到整个完整的故障链路和可能出现的分支情况,也能够对新出现的故障进行及时的增删改查。
那么第一步对于非结构化的文本和半结构化的文本的处理就显得较为重要。
这周汇报时,针对matlab生成日志问题,导师解答了疑惑,其实需要我自己写txt文件的判断语句,通过生成的数据是否产生偏差可以读取出故障,那么针对这个问题,首先分为两步,首先,提取出的三元组应当是故障——>问题的结构,但是对于此次的文本来说,一个故障的出现可能是2个或者2个以上的变量同时影响而得到的,不过这对于标注来说并不是什么大问题,我采用一个标注软件就能解决:
如上图所示,这是一个模糊控制的简单例子中的四条规则,我们将其提炼总结之后可以得 ...
C语言浅学-运算符、表达式和语句
上一篇博客我们结束了对格式化字符串的输入输出的介绍和学习,这一篇博客我们将学习如何来处理数据,处理方式:算数运算、比较值的大小、修改变量、各种逻辑的组合关系等。
Tip:此篇中我们还学习循环这个编程中最强大的特性。
循环为什么我们需要使用循环,因为若是完成单一的工作,编写程序的工作量远不如人完成的快速有效率,计算机需要帮助我们完成的就是重复计算的工作,C中有相当多的方法可以去做重复计算,这里先简单的介绍一种——while循环。
如下所示,在有或没有循环两种情况下的代码的效率:
无循环,只能输出单个的结果。
加入while循环,可以输出多个结果。
从这里我们可以得出结论,在进行重复运算时,计算机相较于人有显著的优势。
while循环的原理:
当程序第一次到达循环时,会检查圆括号中的条件是否为真,在上述例子中条件表达式:shoe < 18.5。初始鞋码为3.0,条件为真,程序将进入循环执行,将尺码转化为英寸,进行打印结果,在最后给shoe增加1.0,返回while入口检查条件,while下两个花括号括起来的称为块。返回入口时会再次进行判断,直至循环结束。
基本运算符在C中使用运 ...
Linux命令行-系统管理命令
在上一篇博客中我们总结了处理文件和目录的指令学习,接下来我们来对Linux的系统管理命令展开学习,这也是我们在开始脚本编程之前需要学习的,如何通过命令行的命令来探查系统内部信息。
监测程序在Linux系统中最复杂的任务就是跟踪已经在运行的程序,如何探查?
探查进程当程序在Linux系统运行时,我们称之为进程(process)。
命令:ps
功能:输出运行在系统上的所有程序的许多信息。
缺点:稳健而带来的就是复杂性,参数过多(详见man ps),只能显示特定时间点的信息。
默认情况下:
例子解析:输出显示了程序的进程ID(process ID,PID),运行的终端(TTY),进程已使用的CPU时间。
Tip:ps 命令叫人头疼的地方在于它曾经有两个版本。每个版本都有自己的命令行参数集,这些参数控制着输出什么信息以及如何显示。最近,Linux开发人员已经将这两种ps命令格式合并到了单个ps命令中。
Linux系统主要支持3种类型的命令行参数:
1.Unix风格的参数,前面加破折线
一般来说,我们并不需要记住所有的参数,常用的是ps -ef ;ps -l 这两个命令。
2.BSD风格 ...
C语言浅学-字符串的格式化输入输出
在总结完数据类型之后,我们就开始对printf()和scanf()中都有的格式化字符串进行学习和探讨。
字符串简介字符串是一个或多个字符的序列,一般使用双引号将内容括起来,正如单引号对于字符一样。
1"Zing went the strings of my heart!"
char类型数组和null字符在C语言中没有专门用于储存字符串的变量类型,一般被储存在char类型的数组中,每个单元储存一个字符。
上述数组的末尾的字符\0,这是空字符(null字符),C语言用它标记字符串的结束,空字符不是数字0,它是非打印字符,其ASCII码值是0。C的字符串一定是以空字符结束,也就是说数组的容量至少要比存储字符串的字符数多一。
数组:一行连续的多个储存单元,同类型数据元素的有序序列。
1char name[40];
char是声明变量的数据类型,name是数组的名字,方括号表明这是一个数组,40则是说明该数组的数量。
字符串的使用转换说明:%s
我们不需要把空字符放到字符串结尾,scanf()在读取输入时就已经完成这项工作了,编译器也会在末尾加上空字符。
Tip:sca ...
故障修复-虚拟机USB口不识别U盘
前因:在学习Linux系统管理命令时想尝试一下用 mount 命令将U盘挂载到虚拟机中,然而将U盘插入电脑后,虚拟机并无任何反应,开始百度查找原因,基本可以确定是VMware USB Arbitration Service 服务未开启的问题。
找到疑似原因,就开始尝试修复,首先win + r 键,输入service.msc,回车进入服务,找到上述的USB服务并开启服务,在这里我们遇到了第一个问题:
接着在百度上查找原因,大部分说的是AMD主板这类的问题,尝试过后发现效果并不是很理想,本着除根需除净的原则,还是选择将VM虚拟机卸载重装。
在尝试过程中有个使用exe文件重装修复的方法,尝试之后会出现以下的问题:
这也是博主尝试的最后一种方法,实在修不动,选择重装大法了。(当然重装之后还是使用修复的方法对USB接口服务进行修复)
Tip:VMx86驱动程序的版本不匹配,基本就是以前安装过的VM虚拟机卸载的不干净导致脚本文件产生冲突。
重装VM虚拟机的过程中,又出现了一个问题:无法安装服务,请确保您有足够的权限安装系统文件。
这个问题解决详情可见无法安装服务“VMware Authori ...
C语言浅学-数据类型总结
在上一篇博客中我们详细介绍了C语言中的基础数据类型和相关转换说明的原理剖析,那么这一篇博客对数据类型的具体使用作简单介绍和总结。
使用数据类型我们在编写程序的时候,应当注意合理选择所需的变量及其类型,通常来说,使用int或者float类型来选择数字,char类型表示字符。
Tip:使用变量之前必须先声明,且选择有意义的变量名,若是需要初始化变量,应当与类型匹配。
声明(初始化)方式:
12int apple = 3; /*正确*/int bananas = 4.0; /*不好的方式*/
若是我们使用一个类型的数值初始化给不同类型的变量的时候,编译器会首先把值转换成与变量匹配的类型,会导致数据错误以及丢失。
例如:
12int cost = 12.99; /*用double类型值初始化整型变量*/float pi = 3.1415926536; /*用double类型的值初始化单精度浮点型*/
上述程序cost的值是12,第二个声明会损失一些精度,因为在C语言中只能保证单精度浮点型前6位的精度,一般来说编译器会对这样的初始化产生警报。
参数和陷阱对于printf()函数的使用主要是需 ...
Linux命令行-文件与目录列表2
接上篇博客,这篇我们开始讲述Linux命令行中关于文件目录的最后一小点内容–目录。
目录处理在Linux之中,有许多的命令对文件和目录都有效,而有些只对目录有效,那么首先我们来说说怎么创建一个新的目录:
创建目录命令:mkdir - make directories
实例:
我们可以使用 ls命令来查看,可以注意到新目录列表是以d开头,这表示New_dir1是一个目录而不是一个文件。
单一的 mkdir命令只能创建一个一个目录,若是我们想要创建多个目录或者子目录,就需要在命令后加入-p的参数。如果我们在创建目录出现错误或者建错地方,我们又应该如何去删除呢
删除目录命令:rmdir - remove directories
实例:
上图可以看到我在一个目录下又创建了一个目录,我想要删除,延续了rm命令的 -i习惯,但是在 rmdir命令中并没有 -i选项来询问是否要删除目录。
Tips:在默认的情况下,rmdir命令只能删除空目录,若是目录下含有文件等,rmdir命令是无法执行的。
虽然rmdir命令只能删除空目录,但是不代表删除目录会有很大的麻烦,我们还可以在非空目录上使 ...
C语言浅学-数据类型
数据类型简介在上一篇博客中,已经结束了对于C语言最基本的了解,这篇我们来对关键字中的最为重要且最多的数据类型关键字,他们包括:int、short、long、unsigned、char、float、double、_ Bool、_ Complex、_ Imaginary。
每一个程序都离不开数据,我们把数字,字母和文字输入进电脑,希望电脑通过这些数据完成某些任务,我们要学会怎么读取数据以及如何操控数据。
C语言提供两大系列的数据类型:整数类型and浮点数类型。
Tip:以上关键字大都可以分为这两个类型 。
上述程序的功能是将体重转换为白金价值,其中,我们一改往日的变量定义,在本例中使用了浮点型的float变量,用于处理更大范围的数据,float类型可以储存带小数的数字。
变量与常量数据在一个程序运行过程中没有发生变化的,称之为常量(constant),那么在程序运行过程中可能会被改变或者被赋值的,则称之为变量(variable)。
在上述程序中,weight就是一个变量,14.5833是一个常量。
数据类型关键字当然不仅是变量与常量不同,不同的数据类型之间也有差异,一些数据类型表示数字, ...
Linux命令行-文件与目录列表
文件与目录-ls命令上篇我们已经知道了如何遍历系统和验证当前的工作目录,接下来就可以开始探索各种目录中的文件了。
要想知道目录中有那些文件,可以使用列表命令(ls)。
ls命令最基本的形式会显示当前目录下的文件和目录,如下图所示:
ls命令带上-F参数的ls命令轻松区分文件和目录。使用-F参数可以得到如下输出:
基本的ls命令在某种意义上有点容易让人误解。它显示了当前目录下的文件和目录,但并没有将全部都显示出来。Linux经常采用隐藏文件来保存配置信息。在Linux上,隐藏文件通常是文件名以点号开始的文件。要把隐藏文件和普通文件及目录一起显示出来,就得用到-a参数。
ls命令中的-R参数是ls命令可用的另一个参数,叫作递归选项。它列出了当前目录下包含的子目录中的文件。如果目录很多,这个输出就会很长。如下图所示:
Tip:输入参数时可以不用像图片中一样,ls -F -R,可以进行合并 ls -FR。
在基本的输出列表中,ls命令并未输出太多每个文件的相关信息。要显示附加信息,另一个常用的参数是-l。-l参数会产生长列表格式的输出,包含了目录中每个文件的更多相关信息。
在这些相关信 ...