Summary of knowledge points to 7

process:

Processes, threads, by the operating system; coroutines (a specific function) controlled by the programmer.

curl visit

 

 signal: ctrl + c end of the program is the signal

RPC: the process in the implementation process, some are executed on the remote host and then returned to the host.

Computer current operating state: relates to io , the computer sends an instruction to the DMA

 

ps u ( valid user process, not the process initiated by the user )

uu userlist specify a valid user ID or name

uU userlist Specifies the real user ID or name

prioty   when permission sysgem inverted rights.

Designated priority 10 processes      --10    : priority -10

 

Modify nice priority:

 

Adjust the priority:

 

 taskset   view binding cpu ; PSR process used cpu number; which mask 3   (Binary is 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

 

Guess you like

Origin www.cnblogs.com/FightMG/p/11109286.html