Linux 进程概念
Linux 进程概念
概念的理解进程与程序概念的理解首先程序与进程是什么?程序与进程又有什么区别?
程序(procedure):不太精确地说,程序就是执行一系列有逻辑、有顺序结构的指令,帮我们达成某个结果。就如我们去餐馆,给服务员说我要牛肉盖浇饭,她执行了做牛肉盖浇饭这么一个程序,最后我们得到了这么一盘牛肉盖浇饭。它需要去执行,不然它就像一本武功秘籍,放在那里等人翻看。
进程(process):进程是程序在一个数据集合上的一次执行过程,在早期的UNIX、Linux 2.4及更早的版本中,它是系统进行资源分配和调度的独立基本单位。同上一个例子,就如我们去了餐馆,给服务员说我要牛肉盖浇饭,她执行了做牛肉盖浇饭这么一个程序,而里面做饭的是一个进程,做牛肉汤汁的是一个进程,把牛肉汤汁与饭混合在一起的是一个进程,把饭端上桌的是一个进程。它就像是我们在看武功秘籍这么一个过程,然后一个篇章一个篇章地去练。
简单来说,程序是为了完成某种任务而设计的软件,比如 vim 是程序。什么是进程呢?进程就是运行中的程序。
程序只是一些列指令的集合,是一个静止的实体,而进程不同,进程有以下的特性:
动态 ...
Linux 下软件安装
Linux 下软件安装
小贴士
注意:如果你在安装一个软件之后,无法立即使用Tab键补全这可命令,你可以尝试先执行 source ~/.zshrc,然后你就可以使用补全操作。
aptapt 包管理工具介绍
APT是Advance Packaging Tool(高级包装工具)的缩写,是Debian及其派生发行版的软件包管理器,APT可以自动下载,配置,安装二进制或者源代码格式的软件包,因此简化了Unix系统上管理软件的过程。APT最早被设计成dpkg的前端,用来处理deb格式的软件包。现在经过APT-RPM组织修改,APT已经可以安装在支持RPM的系统管理RPM包。这个包管理器包含以 apt- 开头的的多个工具,如 apt-get apt-cache apt-cdrom 等,在Debian系列的发行版中使用。
apt-getapt-get 是用于处理 apt 包的公用程序集,我们可以用它来在线安装、卸载和升级软件包等,下面列出一些apt-get包含的常用的一些工具:
工具
说明
install
其后加上软件包名,用于安装一个软件包
update
从软件源镜像服务器上下 ...
Linux 挑战:数据提取
Linux 挑战:数据提取
介绍小明在做数据分析的时候需要提取文件中关于数字的部分,同时还要提取用户的邮箱部分,但是有的行不是数组也不是邮箱,现在需要你在data2这个文件中帮助他用正则表达式匹配出数字部分和邮箱部分。在这里下载
1wget http://labfile.oss.aliyuncs.com/courses/1/data2
将下载的data2保存在/home/shiyanlou/data2
目标
在文件data中匹配数字开头的行,结果写入/home/shiyanlou/num文件
在文件data中匹配出正确格式的邮箱,结果写入一个名为/home/shiyanlou/mail的文件
提示
邮箱的格式
注意符号.的处理
来源2016年tapfun校招面试题
答案12$ cat data2 | grep -v '[[:lower:]]' > /home/shiyanlou/num $ cat data2 | grep '.*@.*\.com' > ...
Linux 正则表达式基础
Linux 正则表达式基础
基本语法:一个正则表达式通常被称为一个模式(pattern),为用来描述或者匹配一系列符合某个句法规则的字符串。
选择|竖直分隔符表示选择,例如”boy|girl”可以匹配”boy”或者”girl”
数量限定数量限定除了我们举例用的*,还有+加号,?问号,如果在一个模式中不加数量限定符则表示出现一次且仅出现一次:
+表示前面的字符必须出现至少一次(1次或多次),例如,”goo+gle”,可以匹配”gooogle”,”goooogle”等;
?表示前面的字符最多出现一次(0次或1次),例如,”colou?r”,可以匹配”color”或者”colour”;
*星号代表前面的字符可以不出现,也可以出现一次或者多次(0次、或1次、或多次),例如,“0*42”可以匹配42、042、0042、00042等。
范围和优先级()圆括号可以用来定义模式字符串的范围和优先级,这可以简单的理解为是否将括号内的模式串作为一个整体。例如,”gr(a|e)y”等价于”gray|grey”,(这里体现了优先级,竖直分隔符用于选择a或者e而不是gra和ey),”(grand)?fath ...
Linux 挑战:历史命令
Linux 挑战:历史命令
介绍在linux中,对于文本的处理和分析是极为重要的,现在有一个文件叫做data1,同学们可以在这里下载,
1wget http://labfile.oss.aliyuncs.com/courses/1/data1
里面记录是一些命令的记录,现在需要你从里面找出出现频率次数前3的命令并保存在 /home/shiyanlou/result。
目标
处理文本data
将结果写入result
结果包含次数和命令,如“100 ls”
提示
cut截取(-c 8- 明白含义吗)
uniq -dc去重
sort 的参数选择-k1 -n -r
答案类似于
1cat data|....|....|.... > /home/shiyanlou/result
来源2016年百度校招面试题
答案1cut data1 -c 8- | sort -k 1 | uniq -dc | sort -k 1 -n -r | head -3 > /home/shiyanlo ...
Linux 数据流重定向
Linux 数据流重定向
数据流重定向简单的重定向
文件描述符
设备文件
说明
0
/dev/stdin
标准输入
1
/dev/stdout
标准输出
2
/dev/stderr
标准错误
文件描述符:文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于 UNIX、Linux 这样的操作系统。
默认使用终端的标准输入作为命令的输入和标准输出作为命令的输出
12$ cat # (按Ctrl+C退出)
将cat的连续输出(heredoc方式)重定向到一个文件
1234567891011$ mkdir Documents$ cat > Documents/test.c <<EOF#include <stdio.h>int main(){ printf("hello wor ...
Linux 简单的文本处理
Linux 简单的文本处理
文本处理命令tr 命令12# 用来删除一段文本信息中的某些文字。或者将其进行转换。$ tr [option]...SET1 [SET2]
常用选项:
选项
说明
-d
删除和set1匹配的字符,注意不是全词匹配也不是按字符顺序匹配
-s
去除set1指定的在输入文本中连续并重复的字符
常用操作:
1234567# 删除 "hello shiyanlou" 中所有的'o','l','h'$ echo 'hello shiyanlou' | tr -d 'olh'# 将"hello" 中的ll,去重为一个l$ echo 'hello' | tr -s 'l'# 将输入文本,全部转换为大写或小写输出$ cat /etc/passwd | tr '[:lower:]' '[:upper:]'# 上面的'[:lower:]' ...
Linux 命令执行顺序控制与管道
Linux 命令执行顺序控制与管道
命令执行顺序的控制顺序执行多条命令1$ sudo apt-get update;sudo apt-get install some-tool;some-tool
有选择的执行命令&&使用which来查找是否安装某个命令,如果找到就执行该命令,否则什么也不做
1$ which cowsay>/dev/null && cowsay -f head-in ohch~
上面的&&就是用来实现选择性执行的,它表示如果前面的命令执行结果(不是表示终端输出的内容,而是表示命令执行状态的结果)返回0则执行后面的,否则不执行,你可以从$?环境变量获取上一次命令的返回结果
1$ echo $?
||||表示与&&相反的控制效果,当上一条命令执行结果为≠0($?≠0)时则执行它后面的命令
1$ which cowsay>/dev/null || echo "cowsay has not been install, please run 's ...
Linux 任务计划crontab
Linux 任务计划crontab
crontab 简介这里我们看一看crontab 的格式
12345678# Example of job definition:# .---------------- minute (0 - 59)# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)# | | | .------- month (1 - 12) OR jan,feb,mar,apr ...# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat# | | | | |# * * * * * user-name command to be executed
crontab 准备crontab 在本实验环境中需要做一些特殊的准备,首先我们会启动 rsyslog,以便我们可以通过日志中的信息来了解我们的任务是否真正的被执行了(在本实验环境中需要手动 ...
Linux 下的帮助命令
Linux 下的帮助命令
内建命令与外部命令
内建命令实际上是 shell 程序的一部分,其中包含的是一些比较简单的 Linux 系统命令,这些命令是写在bash源码的builtins里面的,并由 shell 程序识别并在 shell 程序内部完成运行,通常在 Linux 系统加载运行时 shell 就被加载并驻留在系统内存中。而且解析内部命令 shell 不需要创建子进程,因此其执行速度比外部命令快。比如:history、cd、exit 等等。
外部命令是 Linux 系统中的实用程序部分,因为实用程序的功能通常都比较强大,所以其包含的程序量也会很大,在系统加载时并不随系统一起被加载到内存中,而是在需要时才将其调用内存。虽然其不包含在 shell 中,但是其命令执行过程是由 shell 程序控制的。外部命令是在 Bash 之外额外安装的,通常放在/bin,/usr/bin,/sbin,/usr/sbin等等。比如:ls、vi等。
1234567891011$ type exit$ type service#得到这样的结果说明是内建命令,正如上文所说内建命令都是在 bash 源码中的 ...