进程及数组相关命令简介

脚本高级命令

信号捕捉trap

trap ‘指令’ 信号     自定义触发信号
trap -l             列出所有信号 
trap -p             列出自定义信号
trap ‘’ 信号         忽略信号操作
trap ‘-’ 信号        恢复原有信号
trap finish EXIT    退出脚本或异常退出时先执行完函数finish再退出

安装复制加权限install

-m 默认权限755,可更改
-o 改所有者
-g 改所属组
-d 创建目录,相当于mkdir

install /etc/hosts /data/hosts   复制默认加权限755
install -m 600 -o wei -g bin /etc/hosts /data/hosts
install -d /data/etc

小机器人,减少交互行为expect

- spawn            所需监控的进程,如scp
- expect           进程中所需监控的字符
- send             需要提交的字符
- interact         交互转换,常用于远程登录
- exp_continue     多次匹配
- set              定义变量

#取随机字符:mkpasswd       
mkpasswd -l 15 -d 3 -C 5      长度15,数字3,大写字母3

#举例:远程复制文件免交互
[@rocky2 ~]#vim expect1
#!/usr/bin/expect
spawn scp /etc/redhat-release 10.0.0.7:/data
expect {
		"yes/no" { send "yes\n";exp_continue }
		"password" { send "111111" }
}
expect eof

#执行
[@rocky2 ~]#chmod +x expect1
[@rocky2 ~]#./expect1

进程优先级命令

优先级范围描述
0-99实时进程
100-139非实时进程

进程优先级:

系统优先级:数字越小,优先级越高

0-139(CentOS 4,5),各有140个运行队列和过期队列
0-98,99(CentOS 6)

实时优先级: 99-0 值最大优先级最高

nice值:-20到19,对应系统优先级100-139或99

#调整优先级
nice -n -5 ping 10.0.0.7     执行前改优先级
renice -n -10 24183          -20到19范围=100~139,进程编号,执行完之后改
#优先级高不一定快

进程管理工具

查看线程ps、pstree、pidof

pstree -p               {花括号表示多线程}
ps axo pid,cmd,ni       进程编号,进程名称,优先级
ps aux                  查看进程详细
ps auxf                 查看进程父子关系

pidof xxx               查看进程编号
ll /proc/901/exe        查看二进制程序,901是进程编号,也是磁盘文件
cat /proc/901/status    查看线程数,Threads:线程数    进程查看process 
tail

#查看未知进程所在路径
ps aux                  找进程编号
ll /proc/1111/exe       可通过连接文件exe找到路径
ps aux |grep java       查找相关程序


#也可一步搞定,有可能列出多个,有时可搭配-x
ll /proc/`pidof pickup`/exe  
ll /proc/$(pidof pickup)/exe

uptime,w

uptime    当前机器时间,up机器开了多久, 几个用户在登录, (`load  1分钟,5分钟,15分钟内负载情况,建议不超5`[14:30:29 root@rocky2  ~]#uptime
 14:43:43 up  1:09,  1 user,  load average: 0.04, 0.05, 0.01
 
[14:30:29 root@rocky2  ~]#w
 14:43:43 up  1:09,  1 user,  load average: 0.04, 0.05, 0.01
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
root     pts/0    10.0.0.1         13:52    0.00s  0.02s  0.00s w

和性能相关的四个核心组件

cpu、内存、磁盘、网络

查看cpu

mpstat         可查看CPU使用情况,需下载sysstat包
mpstat 1       每一秒观察一次cpu使用情况

top

#实时显示进程运行情况(不退出)
[14:30:29 root@rocky2  ~]#top
top - 14:53:10 up  1:19,  1 user,  load average: 0.01, 0.04, 0.00
Tasks: 150 total,   2 running, 148 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.0 us,  0.0 sy,  0.0 ni, 99.8 id,  0.0 wa,  0.0 hi,  0.2 si,  0.0 st
MiB Mem :   1945.3 total,   1570.1 free,    175.7 used,    199.5 buff/cache
MiB Swap:   2048.0 total,   2048.0 free,      0.0 used.   1613.6 avail Mem 

#运行时
M        按内存百分比排序
P        cpu百分比排序
T        cpu运行总时长
l/t      更改显示情况
1        查看单个cpu

#可用选项
-d     刷新时间间隔,默认三秒 
-b     显示所有进程
-n     刷新多少次后退出
-H     查看线程信息
-p     指定进程编号
top -H -p 767

#高级别top,htop
yum -y install htop

在这里插入图片描述

内存 free vmstat iostat iotop

[14:30:29 root@rocky2  ~]#free -h
#             总内存     使用了的内存     剩余                缓冲/缓存         可使用
              total        used        free      shared  buff/cache   available
Mem:          1.9Gi       185Mi       1.4Gi       8.0Mi       360Mi       1.6Gi
Swap:         2.0Gi          0B       2.0Gi

[14:30:29 root@rocky2  ~]#echo 3 > /proc/sys/vm/drop_caches     释放缓冲(测试中用)一般不建议释放

pmsp 111     可查看进程所使用内存情况
vmstat       查看虚拟内存,以内存为参照物
iostat       CPU的io信息
iotop        磁盘的io信息,需装iotop
io           访问情况i/o

网络 iftop nload nethogs iptraf-ng dstat

#查看网络访问量,yum -y install iftop nload nethogs iptraf-ng dstat
iftop      
iftop -n    显示具体远程主机ip

nload      
nethogs     可显示哪个程序占用带宽
iptraf-ng   监控网络的综合工具

ethtool eth0   查看总网络带宽
dstat          可替代vnstat和iostat的工具
[16:11:11 root@rocky2  ~]#dstat
You did not select any stats, using -cdngy by default.
----total-usage---- -dsk/total- -net/total- ---paging-- ---system--
usr sys idl wai stl| read  writ| recv  send|  in   out | int   csw 
  1   0 100   0   0|   0     0 |  59B  609B|   0     0 | 116   175 
用户空间 内核空间 空闲 等待 被盗取| 磁盘io | 网络io | swap交换分区| 软中断  进程间切换

lsof 所有程序所打开的文件

lsof -i :22       检查22端口是哪个程序所打开

#查看已删除文件被谁正在打开
lsof | grep delete

#可恢复已经删除的被打开文件
ll /proc/886/fd/6               查找正在打开文件的程序886文件所在路径6
cat /proc/886/fd/6 > /data/a    写入所需恢复文件路径  

cockpit

#可视化图形管理工具,需先安装,可当xshell用
yum -y install cockpit                          下载
systemctl enable --now cockit.socket            启动     
10.0.0.8:9090                                   远程浏览器访问端口  
kill信号
#常用信号
-1 不重启服务重新加载配置文件
-2 ctrl+c
-3 ctrl+\
-9 强制终止进程,可能导致数据丢失
-15 正常终止进程

-0  错误检查,echo $?判断进程状态
-18 继续运行
-19 后台休眠

killall ping    直接关闭所有ping进程
killall -0 master &> /dev/null || systemctl restart postfix    检查进程master如不健康自动重启

查看后台进程;jobs

计划任务

单次计划任务at

#计划任务中标准输出会发邮件,记得关闭

#单次计划任务at
at 14:07或者now+5min     指定时间或者几分钟或执行,02:00 2016-09-20
at> touch /data/at.log
ctrl+d   退出

-l或atr  可查询计划任务
/var/spool/at/     数据存放位置,重启不会丢失,已存于磁盘中,执行后会自动删除
-d 可删除计划任务文件at -l
systemctl status atd   检查at计划任务服务

周期性计划任务crond

#周期性计划任务,记得指定PATH变量
systemctl status crond     依赖于该服务

#系统周期性计划任务
格式存放于/etc/crontab
执行文件存放于/etc/cron.d/

#用户创建周期性计划任务crontab
-e 创建     ubuntu中需定义变量EDITOR=vim,默认使用的nano
-l 查看
-r 删除,全删
-u 指定用户执行

#时间格式,并且关系要写进需脚本里进行判断,*是每的意思,最小单位分钟
* * * * * echo aa >> /data/a.log
#分钟 小时 天 月 星期
*/10 2 1,10,20 * 0,6 /data/a.sh     每月的1号,10号,20号或者星期六,星期日的2点的每十分钟
1 2 1,10,20 * 0,6 /data/a.sh     每月的1号,10号,20号或者星期六,星期日的2点的第一分钟

#如需用到秒可用sleep

数组应用

使用前先声明数组

declare -f                 显示已定义函数值
declare -F                 仅显示函数名
declare -a ARRAY_NAME      普通数组声明用法
declare -A ARRAY_NAME      关联数组声明用法
二者不支持转换
unset xxx    删除数组

赋值举例

#普通数组赋值
weekdays[0]="Sunday"
weekdays[4]="Thursday"
num=({0..10})
title=("ceo" "coo" "cto")   中间空格隔开

#关联数组赋值
declare -A n75
n75[xxx]=xxx

declare -a         列出所有数组
${title[0]}        列出特定数组值,*和@显示该数组的全部值
${#title[*]}       列出数组里的个数,可作为新元素的下标,索引title[${#title[*]}]

数组简单应用

#查找var变量字符串,从左到右到第一次出现word,就删除word前面的所有字符
${var#*word}
#删除以word开头的部分
${var#word}
#保留最后一个word后面的内容,其余全删除
${var##*word}
${var##word}

#从右到左找到第一个word,删除word后面的字符
${var%word*}
${var%word}
#保留最后一个word前面的字符,其余删除
${var%%word*}
${var%%word}

#单个查找替换
${nginx_url/nginx/centos}
#多个查找替换
${nginx_url//nginx/centos}
#以该字符为行首
${nginx_url/#nginx/centos}
#以该字符为行尾
${nginx_url/%nginx/centos}

#删除
${var/word}
其余同上

#直接取文件名
[@rocky2 ~]#nginx_url=http://nginx.org/download/nginx-1.20.2.tar.gz
[@rocky2 ~]#echo ${nginx_url##*/}
[@rocky2 ~]#nginx-1.20.2.tar.gz

高级变量赋值

在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值