Linux常用命令及基础工具总结
脚本高级命令trap, install, mktemp, expect
信号捕捉trap
trap 命令可以捕捉信号,修改信号原来的功能,实现自定义功能
install
install 功能相当于cp,chmod,chown,chgrp ,mkdir 等相关工具的集合
install -d 122相当于创建了122的文件夹
相关选项
-m MODE,默认755
-o OWNER
-g GROUP
-d DIRNAME 目录
mktemp
mktemp 命令用于创建并显示临时文件,可避免冲突
实现文件回收站
DIR=mktemp -d /tmp/trash-$(date +%F_%H-%M-%S)XXXXXX
mv $* $DIR
echo $* is move to $DIR
expect
expect 是由Don Libes基于 Tcl( Tool Command Language )语言开发的,主要应用于自动化交互式操作的场景,借助 expect 处理交互的命令,可以将交互过程如:ssh登录,ftp登录等写在一个脚本上,使之自动化完成。尤其适用于需要对多台服务器执行相同操作的环境中,可以大大提高系统管理人员的工作效率(相当于机器人,可以观察进程,如果需要交互,则可自动完成交互)非交互把服务器3.10的文件传给3.133
#!/usr/bin/expect
spawn scp /root/aa.txt 192.168.3.133:/data
expect {
“yes/no” { send “yes\n” }
“password” { send “202212\n” }
}
expect eof
进程管理工具: ps, pstree, uptime,kill
进程树 pstree
pstree 可以用来显示进程的父子关系,以树形结构显示
-p 显示PID
-T 不显示线程thread,默认显示线程
-u 显示用户切换
-H pid 高亮显示指定进程及其前辈进程
进程信息 ps
ps 即 process state,可以进程当前状态的快照,默认显示当前终端中的进程,Linux系统各进程的相关
信息均保存在/proc/PID目录下的各文件中
a 选项包括所有终端中的进程
x 选项包括不链接终端的进程
u 选项显示进程所有者的信息
f 选项显示进程树,相当于 --forest
k|–sort 属性 对属性排序,属性前加 - 表示倒序
o 属性… 选项显示定制的信息 pid、cmd、%cpu、%mem
L 显示支持的属性列表
#查看进程的父子关系
负载查询 uptime
/proc/uptime 包括两个值,单位 s系统启动时长空闲进程的总时长(按总的CPU核数计算)
uptime 和 w 显示以下内容
当前时间
系统已启动的时间
当前上线人数
系统平均负载(1、5、15分钟的平均负载,一般不会超过1,超过5时建议警报)
系统平均负载: 指在特定时间间隔内运行队列中的平均进程数,通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题
信号发送 kill
内部命令,可用来向进程发送控制信号,以实现对进程管理,每个信号对应一个数字,信号名称以
SIG开头(可省略),不区分大小写
- SIGHUP 无须关闭进程而让其重读配置文件
- SIGINT 中止正在运行的进程;相当于Ctrl+c
- SIGQUIT 相当于ctrl+\
- SIGKILL 强制杀死正在运行的进程,可能会导致数据丢失,慎用!
- SIGTERM 终止正在运行的进程,默认信号
- SIGCONT 继续运行
- SIGSTOP 后台休眠
总结索引数组和关联数组,字符串处理,高级变量使用及示例
索引数组
数组:存储多个元素的连续的内存空间,相当于多个变量的集合
数组名和索引
索引的编号从0开始,属于数值索引
索引可支持使用自定义的格式,而不仅是数值格式,即为关联索引,bash 4.0版本之后开始支持
bash的数组支持稀疏格式(索引不连续)
数组赋值
students=(wang li zhou)
引用数组
echo ${students[2]}
关联数组
注意:关联数组必须先声明再调用
数组声明 declare -A fruit
字符串处理
基于模式取子串
高级变量使用及示例
高级变量用法-有类型变量
Shell变量一般是无类型的,但是bash Shell提供了declare和typeset两个命令用于指定变量的类型,两个命令是等价的
语法: declare [+/-][rxi][变量名称=设置值] 或 declare -f
选项:
-r 声明或显示只读变量
-i 将变量定义为整型数
-a 将变量定义为数组
-A 将变量定义为关联数组
-f 显示已定义的所有函数名及其内容
-F 仅显示已定义的所有函数名
-x 声明或显示环境变量和函数,相当于export
-l 声明变量为小写字母 declare -l var=UPPER
-u 声明变量为大写字母 declare -u var=lower
-n make NAME a reference to the variable named by its value
变量间接引用
eval命令
eval命令将会首先扫描命令行进行所有的置换,然后再执行该命令。该命令适用于那些一次扫描无法实现其功能的变量,该命令对变量进行两次扫描
间接变量引用
如果第一个变量的值是第二个变量的名字,从第一个变量引用第二个变量的值就称为间接变量引用
variable1的值是variable2,而variable2又是变量名,variable2的值为value,间接变量引用是指通过
variable1获得变量值value的行为
求10个随机数的最大值与最小值
Linux declare 命令:declare 为 shell 指令,在第一种语法中可用来声明变量并设置变量的属性([rix]即为变量的属性),在第二种语法中可用来显示 shell 函数。若不加上任何参数,则会显示全部的 shell 变量与函数(与执行 set 指令的效果相同)。
语法: declare [+/-][rxi][变量名称=设置值] 或 declare -f
参数说明:
+/- "-“可用来指定变量的属性,”+"则是取消变量所设的属性。
-f 仅显示函数。
r 将变量设置为只读。
x 指定的变量会成为环境变量,可供shell以外的程序来使用。
i [设置值]可以是数值,字符串或运算式。
R A N D O M 变量存储着