进程 运行中程序的一个副本,是资源分配的单位
线程 :一个进程包含多个线程,是程序执行的最小单位
程序内存分配
程序----->虚拟地址----操作系统------>物理地址-----内存
进程状态 运行 就绪 睡眠 停止 僵死
进程优先级
系统优先级:0-139, 数字越小,优先级越高,各有140个运行队列和过期队列
实时优先级: 99-0 值最大优先级最高
nice值:-20到19,对应系统优先级100-139或
pstree -n 显示进程树
ps aux 显示所有进程的信息
mpstat 显示cpu利用率
top 显示进程的实时状态
free -h 显示内存利用率
iotop 监视磁盘IO
iftop 显示网络带宽使用情况
lsof 查看进程打开的文件
cockpit web界面监控,提供图形化管理
kill 发送控制信号
-1 无需关闭进程而重新读配置文件
-2 终止正在运行的进程 相当于ctrl + c
-9 强制杀死正在运行的进程,可能会导致数据丢失,慎用!!!
-15 默认信号 终止正在运行的进程
-18 继续运行
-19 后台休眠
作业管理
linux的作业控制
前台作业:通过终端启动,且启动后一直占据终端
后台作业,通过终端启动,启动后即转入后台运行,释放终端
让作业运行在后台 1 COMMAND& 2运行中的作业 输入ctrl+z
fg bg kill -18 kill-19 可以转换
并行运行:
利用后台运行,可以实现并行运行,同事运行多个进程,提高效率
(f1.sh&);(f2.sh&);(f3.sh&) 或者f1.sh&f2.sh&f3.sh&
一次性任务
at [option] time
周期性任务
cron中不能有% 必须使用需转义\%
crontab -e 格式参考 cat /etc/crontab 分 小时 天 月 星期
首行添加变量PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 或者写在脚本中
grep:
-v 取反
-i 忽略大小写
-o 显示匹配的字符串
-n显示匹配的行号
-E 使用扩展正则表达式 =egrep
sed
sed [option]... 'script;script;...' [inputfile...]
常用option
-n 不自动打印
-e 多点编辑
-r 使用扩展正则表达式
-i.bak 编辑源文件并备份 -ir支持 -i -r 支持
script格式:'地址命令'
地址格式:
1不给地址,对全文进行处理
2 单地址 2表示第二行 $表示最后一行 /patterm/ 表示匹配到的每一行
3地址范围 #,# 3,6表示第三行到第六行 /pattern1/,/pattern/
4 步进 ~ 1~2 奇数行 2~2表示偶数行
命令p 打印当前模式空间内容,追加到默认输出之后
Ip 忽略大小写输出
d 删除模式空间匹配的行,并立即启用下一轮循环
a [\]text 在指定行后面追加文本,支持使用\n实现多行追加
i [\]text 在行前面插入文本
c [\]text 替换行为单行或多行文本
w file 保存模式匹配的行至指定文件
r file 读取指定文件的文本至模式空间中匹配到的行后
= 为模式空间中的行打印行号
! 模式空间中匹配行取反处理
q 结束或退出sed
查找替代
s/pattern/string/修饰符 查找替换,支持使用其它分隔符,可以是其它形式:s@@@,s###替换修饰符:
g 行内全局替换
p 显示替换成功的行
w /PATH/FILE 将替换成功的行保存至文件中
I,i 忽略大小写
awk
awk [options] 'program' var=value file…
[options] -F 以什么为分隔符 默认是以空格为分隔符
pattern{action statements;..} pattern:决定动作语句何时触发及触发事件,比如:BEGIN,END,正则表达式等{ print}常见print
print item1, item2, ...
awk 变量 FS:输入字段分隔符,默认为空白字符,功能相当于 -F
NF:字段数量
NR:记录的编号
动作print
%s:显示字符串
%d, %i:显示十进制整数
%f:显示为浮点数
%e, %E:显示科学计数法数值
%c:显示字符的ASCII码
%g, %G:以科学计数法或浮点形式显示数值
%u:无符号整数
%%:显示%自身
#[.#] 第一个数字控制显示的宽度;第二个#表示小数点后精度,如:%3.1f
- 左对齐(默认右对齐) 如:%-15s
+ 显示数值的正负符号 如:%+d
操作符
==, !=, >, >=, <, <=
与:&&,并且关系
或:||,或者关系
非:!,取反
模式PATTERN
如果未指定:空模式,匹配每一行
relational expression: 关系表达式,结果为“真”才会被处理
真:结果为非0值,非空字符串
假:结果为空字符串或0值
line ranges:行范围
不支持直接用行号,但可以使用变量NR间接指定行号
/pat1/,/pat2/ 不支持直接给出数字格式
BEGIN/END模式
BEGIN{}:仅在开始处理文件中的文本之前执行一次
END{}:仅在文本处理完成之后执行一次
条件判断if-else
if(condition){statement;…}[else statement]
if(condition1){statement1}else if(condition2){statement2}else if(condition3)
{statement3}...... else {statementN}
条件判断Switch
switch(expression) {case VALUE1 or /REGEXP/: statement1; case VALUE2 or /REGEXP2/: statement2; ...; default: statementn}
循环while
while (condition) {statement;…}
循环for
for(expr1;expr2;expr3) {statement;…}
for(variable assignment;condition;iteration process) {for-body}
for(var in array) {for-body}