码迷,mamicode.com
首页 > 其他好文 > 详细

知识点小结~7

时间:2019-06-30 14:04:53      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:psr   一段   $@   关联   pass   dma   跳过   需要   实现   

进程:

进程,线程由操作系统控制;协程(具体某一函数)由程序员操控。

curl访问网站

 技术图片

 signal:ctrl +c 结束程序  就是信号

RPC:进程在执行过程中,有一段是在远程主机上执行后再返回主机。

目前计算机工作状态:涉及到io时,计算机发送指令到DMA

 技术图片

ps   u(进程的有效用户,而非进程发起用户)

u-u userlist 指定有效的用户ID或名称

u-U userlist 指定真正的用户ID或名称

prioty  权限时sysgem权限的倒置。

指定优先级为10 的进程     --10   :优先级为-10

 技术图片

修改nice优先级:

 技术图片

调整优先级:

 技术图片

 taskset  查看绑定cpu psr进程使用的cpu编号;其中mask  3  (二进制为11

 技术图片

 运行在1cpu

 技术图片

技术图片

 指定pid7969的进程运行在04cpu

 技术图片

技术图片

 pgrep命令支持正则表达式,不是通配符。)

 虽然为pidofkillall5的软链接,但功能不完全一样。

 技术图片

uptime:查看系统运行时间

 技术图片

 free查看内存命令:

buffers写缓存,cached读缓存

 技术图片

 vmstat:查看虚拟内存情况

si   so  bi  bo    (input   output  相对于内存来讲)

 技术图片

pmap:报告进程的内存映射

 技术图片

 /proc/进程编号/fd中存放的文件描述符:

 技术图片

技术图片

 hiq代表硬终端

siq代表软终端

kill

00信号 killall -0 进程,发送0信号给进程,若进程存在,则语句执行成功。

1)SIGHUP   无须关闭进程而让其重读配置文件

2SIGINT  终止正在运行的进程;相当于ctrl+c

 技术图片

 3SIGQUIT 相当于ctrl+\

 技术图片

 9)SIGKILL 强制杀死正在运行的进程

 技术图片

 15SIGTERM 正常终止正在运行的进程

 技术图片

 18SIGCONT 继续运行

19SIGSTOP 后台休眠

killall 发送0信号,检测服务运行情况

 技术图片

 指定信号的方法 :

(1) 信号的数字标识:1, 2, 9

(2) 信号完整名称:SIGHUP

(3) 信号的简写名称:HUP

 

进程后端运行方法:

在脚本中写代码使命令后台执行的编写格式为:

{

命令

}&

使用(命令)&达不到后台运行缩短时间的效果,貌似时间会比不加()&更长

screen ; COMMAND

nohup COMMAND &> /dev/null &   后台执行

并行执行:

 技术图片

技术图片

  技术图片

技术图片

  技术图片

以上四图表示了并行后执行效率明显提升。

wait命令等待后台结束命令才后退出(期间不能执行其他操作):

 技术图片

 计划任务:

crontab

系统计划任务放在/etc/crontab文件中,用户创建的计划任务使用crontab -e命令创建,生成的计划任务文件在/var/spool/cron里面。

计划任务要避免标准输出,(标准输出以邮件方式发送)否则将导致会收到大量邮件。

计划任务放在/var/spool/cron

邮件存放位置  /var/spool/mail/

计划任务执行结果存放在/var/log/cron

 at  计划任务:

计划任务存放在/var/spool/at中

使用at命令交互式设置计划任务后按ctrl+d 后设置成功。

vim /etc/at.deny   将用户名加入到文件中后,禁止指定用户使用at命令进行一次性任务。

 crontab 计划任务文件格式

 技术图片

 crontab -e 创建计划任务中  执行命令需要写可执行程序路径    例如  /bin/grep

广播命令wall

 技术图片

 run-parts  批量执行脚本:(按照ls脚本的显示顺序执行)

其中的可执行程序需要写路径

 技术图片

 通过sleep命令实现1分钟内的执行命令,usleep以微秒为单位。

查看计划任务

 技术图片

技术图片

 脚本:

shift:依次向后切换参数的同时,shift命令以后的命令还会执行。

执行完shift命令后就已经切换到下一个参数。

 技术图片

技术图片

 NAME 不需要加$符,为变量名。

 技术图片

for循环:

 技术图片

技术图片

 seq命令:列出110,步长为3

 技术图片

 for循环引用命令

 技术图片

通配符,不用加双引号,否则符合条件的匹配条目将作为一个整体输出

 技术图片

 $* $@:没加双引号时没有区别,在加上双引号后”$*“ 将全部参数作为一个整体,“$@”将每个参数独立。

 随机口令生成命令:

cat /dev/urandom|base64|head -c 8(生成速度较快)

cat /dev/random|base 64 |head -c 8

 技术图片

 更改口令:echo    口令 | passwd --stdin  用户名  &> /dev/null

 技术图片

 for循环

文件读入(for循环中调用命令):

 技术图片

 循环判断条件使用sed命令:

 技术图片

 while循环:

while : ;等价于while true;

 技术图片

 while 命令读入多个参数:

 技术图片

技术图片

技术图片

 while命令文本读入变量数据:

 技术图片

 select语句:一般配合case语句使用:

 技术图片

 PS3select的输入提示语:

 技术图片

 PS2是文件重定向输入的提示符重定向输入的提示符:

 技术图片

 shell中带参函数的使用,函数与其他脚本不在同一文本内时,需使用source先导入到该脚本内。

 技术图片

 /etc/init.d/functions  文件中存放大量函数

 技术图片

 函数内部变量不会影响外部同名变量

 技术图片

 local局部变量只能在函数体内使用。

 技术图片

 汉诺塔:

 技术图片

 if语句中[]的使用:  其中必须为判断语句,若判断条件为一条语句的执行情况时可直接写,不可写在[]内  !!![]内必须为判断语句。

zzxm37用户是存在的:

技术图片

 上图最后两条命令判断正确。

 技术图片

 下图执行结果正确:

 技术图片

技术图片

 []中不能为单独的一条语句,否则执行结果错误

下图执行结果错误!!

 技术图片

 lastb显示最后登录用户列表

 递归:

$()  ``(反向单引号)都是用来做命令替换的。命令替换与变量替换差不多,都是用来重组命令行的,先完成引号里的命令行,然后将其结果替换出来,再重组成新的命令行。

$[]$(expr )的区别

$[]会完成内部的算数运算,$(expr )只是单纯的将内部语句组合返回值命令使用echo,函数嵌套在语句中执行需要被解释需使用$()或者``(反向单引号)

echo num:将num返回调用echo的程序。

 技术图片

 trap

utrap ‘触发指令信号

进程收到系统发出的指定信号后,将执行自定义指令,而不会执行原操作

utrap ‘‘ 信号

忽略信号的操作,即当给进程发送该信号时忽略该信号,程序正常执行

utrap ‘-‘ 信号

恢复原信号的操作,即当给进程发送该信号时,执行信号的原有操作

utrap -p

列出自定义信号操作

utrap finish EXIT

当脚本退出时,执行finish函数

 技术图片

 数组:

普通数值索引数组(declare -a 数组名 )  声明可省略

关联数组 declare -A  数组名) 声明必须有!

${a[x]}为数组a[x]的值

 技术图片

 ${a[*]}   ${a[@]}:显示数组a的全部成员;${#a[@]}  ${#a[*]}  :数组a的成员总数

 技术图片

 普通数组和字符串数组的区别(类似于指针)

 技术图片

 交互式为数组赋值

 技术图片

 通配符定义数组的使用:

 技术图片

技术图片

 关联数组:

 技术图片

 使用关联数组处理磁盘空间问题:

 技术图片

 字符串切片:

${#变量}:为变量字符串长度;${变量:起始位置:切片长度}

u${#var}:返回字符串变量var的长度

u${var:offset}:返回字符串变量var中从第offset个字符后(不包括第offset个字符)的字符开始,到最后的部分,offset的取值在0 ${#var}-1 之间(bash4.2后,允许为负值)

u${var:offset:number}:返回字符串变量var中从第offset个字符后(不包括第offset个字符)的字符开始,长度为number的部分

u${var:空格-length}:取字符串的最右侧几个字符

注意:冒号后必须有一空白字符

u${var:offset:-length}:从最左侧跳过offset字符,一直向右取到距离最右侧lengh个字符之前的内容

u${var:空格-length:-offset}:先从最右侧向左取到length个字符开始,再向右取到距离最右侧offset个字符之间的内容

注意:-length前空格

 

字符串处理:

基于模式取子串

${var#*word}:其中word可以是指定的任意字符

功能:自左而右,查找var变量所存储的字符串中,第一次出现的word, 删除字符串开头至第一次出现word

符串(含)之间的所有字符

${var##*word}:同上,贪婪模式,不同的是,删除的是字符串开头至最后一次由word指定的字符之间的所

有内容

${var%word*}:其中word可以是指定的任意字符

功能:自右而左,查找var变量所存储的字符串中,第一次出现的word, 删除字符串最后一个字符向左至第一

次出现word字符串(含)之间的所有字符

file="/var/log/messages"

${file%/*}: /var/log

${var%%word*}:同上,只不过删除字符串最右侧的字符向左至最后一次出现word字符之间的所有字符

查找替换

${var/pattern/substr}:查找var所表示的字符串中,第一次被pattern所匹配到的字符串,以substr替换之

${var//pattern/substr}: 查找var所表示的字符串中,所有能被pattern所匹配到的字符串,以substr替换之

${var/#pattern/substr}:查找var所表示的字符串中,行首被pattern所匹配到的字符串,以substr替换之

${var/%pattern/substr}:查找var所表示的字符串中,行尾被pattern所匹配到的字符串,以substr替换之

查找并删除

${var/pattern}:删除var表示的字符串中第一次被pattern匹配到的字符串

${var//pattern}:删除var表示的字符串中所有被pattern匹配到的字符串

${var/#pattern}:删除var表示的字符串中所有以pattern为行首匹配到的字符串

${var/%pattern}:删除var所表示的字符串中所有以pattern为行尾所匹配到的字符串

字符大小写转换

${var^^}:把var中的所有小写字母转换为大写

${var,,}:把var中的所有大写字母转换为小写

使用变量来定义变量,类似于二级指针(eval

 技术图片

 数组字符串切片:

 技术图片

 install命令

mktemp创建临时文件

注意:在单独使用expect命令时  头文件要使用#/usr/bin/expect

bash shell脚本中使用 expect  (语法要求需要expect顶头写)

expect中相关命令

spawn 启动新的进程

send 用于向进程发送字符串

expect 从进程接收字符串

interact 允许用户交互

exp_continue 匹配多个字符串在执行动作后加此命令

interact   交互式执行命令

bash脚本中使用expect命令:

在输入expect<<EOF后的脚本语句都要遵从expect语法格式

 技术图片

 expect脚本中使用expect命令:

 技术图片

 1interact:   ssh链接到主机上进行交互式执行命令,直至输入exit退出主机

2expect eof expect执行到该语句结束,非交互使用时该语句结束,scp命令

expect语法格式:

expect空格{

匹配语句空格{send空格执行语句\n”空格}

}

expect eof

 

知识点小结~7

标签:psr   一段   $@   关联   pass   dma   跳过   需要   实现   

原文地址:https://www.cnblogs.com/FightMG/p/11109286.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!