标签: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)
运行在1号cpu上
指定pid为7969的进程运行在0和4号cpu:
(pgrep命令支持正则表达式,不是通配符。)
虽然为pidof为killall5的软链接,但功能不完全一样。
uptime:查看系统运行时间
free查看内存命令:
buffers写缓存,cached读缓存
vmstat:查看虚拟内存情况
si so bi bo (input output 相对于内存来讲)
pmap:报告进程的内存映射
/proc/进程编号/fd中存放的文件描述符:
hiq代表硬终端
siq代表软终端
kill:
0)0信号 killall -0 进程,发送0信号给进程,若进程存在,则语句执行成功。
1)SIGHUP 无须关闭进程而让其重读配置文件
2)SIGINT 终止正在运行的进程;相当于ctrl+c
3)SIGQUIT 相当于ctrl+\
9)SIGKILL 强制杀死正在运行的进程
15)SIGTERM 正常终止正在运行的进程
18)SIGCONT 继续运行
19)SIGSTOP 后台休眠
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命令:列出1到10,步长为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语句使用:
PS3是select的输入提示语:
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命令:
1、interact: ssh链接到主机上进行交互式执行命令,直至输入exit退出主机
2、expect eof : expect执行到该语句结束,非交互使用时该语句结束,scp命令
expect语法格式:
expect空格{
“匹配语句”空格{send空格“执行语句\n”空格}
}
expect eof
标签:psr 一段 $@ 关联 pass dma 跳过 需要 实现
原文地址:https://www.cnblogs.com/FightMG/p/11109286.html