本博目录:
继上篇Linux进阶篇—文件系统 后,来简单了解一下Linux简单的字符处理和进程管理。
1.1 管道的概念
在Linux中,管道是一个固定大小的缓冲区,该缓冲区的大小为4KB。管道是一种使用非常频繁的通信机制,我们可以使用管道符“|”连接进程,由管道连接的进程可以自动运行,管道可以把一个命令的输出内容当做下一个命令的输入内容,两个命令之间只需要使用管道符连接即可。
1.2 使用grep搜索文本
grep [-ivnc] '需要匹配的字符' 文件名
-v 反向匹配
-i 不区分大小写
-c 统计包含匹配的行数
-n 输出行号
我们建立一个文件swc.txt作为搜索文件,如下内容:
what is your name?
Myname is swc.
My First Name is song.
hello,my firends!
1.3 使用sort排序
sort [-ntkr] 文件名
-n 采取数字排序
-t 指定分隔符
-k 指定第几列
-r 反向排序
新建一个sort.txt,内容如下:
a.2
c.4
g.5
e.9
b.6
k.0
k.22
1.4 使用uniq删除重复内容
uniq命令只会对比相邻的行,如果有连续相同的若干行则删除重复内容,仅输出一行。一般和sort一起使用。
uniq [-ic]
-i 忽略大小写
-c 计算重复行数
新建文件uniq.txt,内容如下:
adcde
12345
abcde
12345
12345
abcde
1.5 cut 截取文本
cut -f 指定的列 -d '分隔符'
cut -c 指定列的字符
cut还可以打印指定的字符
1.6 使用tr做文本转换或者删除
1.7 使用paste做文本合并
paste的作用在于将文件按照行进行合并,中间使用tab隔开,也可指定分隔符。
1.8 使用split分割大文件
split 分割大文件,可以按照行数进行分割,也可以按照大小进行分割。按照行数分割后形成如图所示的许多小文件。
split -l 2 swc.txt small_file_ //按行分割
split -b 64m swc.txt small_file+* //按大小分割
2.1 什么是进程
在Linux操作系统系统中,进程是一个非常重要的概念。进程表示程序的一次执行过程,是当前操作系统运行的程序。唯一标示进程的是进程描述符(PID)
所有的进程可能存在3种状态:运行、阻塞、就绪。
进程之间存在互斥和同步的关系。
2.2查看进程:ps
ps 常用参数如下:
-A 列出所有的进程
-a 列出不和本终端有关的进程
-w 显示加宽可以显示较多的信息
-u 显示有效使用者相关的进程
aux 显示所有包含其他使用者的进程
图中参数说明:
# USER 进程以什么用户身份运行 # PID 进程描述符 具有唯一性 # %CPU 进程运行时所占的cpu百分比 # %MEM 进程运行时内存所占的百分比 # VSZ Virtual memory SiZe 虚拟内存使用大小 # RSS 占用的内存大小 # STAT 进程状态,常用的状态有: # S:休眠 # R:运行态 # D:不可中断 # T:暂停 # Z:僵尸进程 # W:没有足够的内存可分配 # s:session leader 所谓进程的领导者 # +:表示是前台进程 # l:多线程进程 # N:低优先级进程 # <:高优先级进程 # TTY 用来表示终端 显示为“?”的说明是与终端无关的进程 # START 进程开始时间 # TIME 进程运行时间 # COMMAND 执行进程的命令 如果命令被 "[]"包围,说明是内核线程
ps命令只能查询当前状态下进程瞬间的状态信息,如果要想及时的查看进程信息,就需要使用top命令了,top提供了实时的的系统状态监控。
2.3进程的终止 : kill/killall
一般来说,kill命令要和ps命令联合使用,典型用法使用ps查出进程的PID,然后使用kill将其终止。
kill [信号代码] 进程ID
kill后可以跟的信号代码一共有64种,使用个kill -l 可以查看。一般常用的有三个:HUP(1)、KILL(9)、TERM(15),分别代表重启、强行杀掉、正常结束
killall 是使用进程的名字直接停止进程。
killall httpd
2.4 查询进程打开的文件:lsof
lsof(list open files)是一个列出当前系统中所有文件的工具
lsof [options] filename
lsof filename 显示打开指定文件的所有进程
lsof -c string 显示command列中包含指定字符的进程所打开的文件
lsof -u username 显示所属于user进程打开的文件
lsof -g gid 显示归属于gid的进程情况
lsof +d /DIR/ 显示目录下被进程打开的文件
lsof +D /DIR/ 显示目录下被进程打开的文件
lsof -d FD 显示指定文件描述符的进程
lsof -n 不将IP转换为hostname,默认是不加-n参数
lsof -i 用以显示符合条件的进程情况
lsof -i[46] [protocol][@hostname|hostaddr][:service|port]
46 --> IPv4 or IPv6
protocol --> TCP or UDP
hostname --> Internet host name
hostaddr --> IPv4地址
service --> /etc/service中的 service name (可以不只一个)
port --> 端口号 (可以不只一个)
2.5进程优先级调整:nice/renice
nice 在进程启动的时候设置优先级。
# 常用参数:
# -n NICE 例如:nice -n 3 httpd
# 一般情况下,nice值是负值的设定一般有管理员来设定。普通用户只能设置nice为正值。
# 如果不指定 -n 参数,默认的nice值是10
renice 重新设置已启动进程的优先级。
# 常用选项是:
# -n NICE 重新设定nice的值
# -p PID 设定进程的PID