1.脚本高级命令,进程优先级命令,进程管理工具,任务相关命令

发布时间 2023-05-21 18:34:39作者: 碧雪殇情

一.总结脚本高级命令trap, install, mktemp, expect, 进程优先级命令:nice, renice, 进程管理工具: ps, pstree, prtstat, pgrep, pidof, uptime,mpstat,top,htop, free, pmap, vmstat, iostat, iotop, iftop, nload, nethogs, iptraf-ng, dstat, glances, cockpit, kill, job, 任务相关的命令: at, crontab, 命令,选项,示例。

1.trap 命令可以捕捉信号,修改信号原来的功能实现自定义功能

运行格式

trap命令的参数分为两部分,前一部分是接收到指定信号时将要采取的行动,后一部分是要处理的信号名。

trap command signal

Trap `触发指令`信号

#忽略信号的操作

Trap `` 信号

#恢复信号的操作

Trap `-` 信号

#列出自定义信号操作

Trap -p

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

2.Install 安装复制文件

install 功能相当于cp,chmod,chown,chgrp,mkdir 等相关工具的集合。

Install [OPTION] [-T] SOURCE DEST 单个文件

Install [OPTION] SOURCE... DIRECORY

Install [OPTION] -t DIRECORY SOURCE

Install [OPTION] -d DIRECORY... #创建空目录

root@Centos7 ~]# install -m 700 mo -g zhi srcfile desfile

[root@Centos7 ~]# install -m 770 -d /testdir/installdir

install -m 600 -o mo -g bin anacnda-ks.cfg /nmt/a.cfg

install -m 600 -o mo -g bin anaconda-ks.cfg /mnt/a.cfg

3.mktemp 创建临时文件

mktemp命令用户创建并显示临时文件,可避免冲突。

语法:

mktemp [-qu][文件名参数]

参数:

-q  执行时若发生错误,不会显示任何信息。

-u  暂存文件会在mktemp结束前先行删除。

-d 创建临时目录

-p 指明临时文件存放的目录

[文件名参数]  文件名参数必须是以"自订名称.XXXXXX"的格式。

[root@Centos7 ~]# mktemp

/tmp/tmp.ldCJ7rSQTj

[root@Centos7 ~]# mktemp /temp/testXXX

4.expect 交互式转化批处理工具

expect是建立在tcl基础上的一个自动化交互套件, 在一些需要交互输入指令的场景下, 可通过脚本设置自动进行交互通信. 其交互流程是:

spawn启动指定进程 -> expect获取指定关键字 -> send想指定进程发送指定指令 -> 执行完成, 退出.

由于expect是基于tcl的, 所以需要确保系统中安装了tcl:

expect的常用命令

命 令 说 明

spawn 启动新的交互进程, 后面跟命令或者指定程序

expect 从进程中接收信息, 如果匹配成功, 就执行expect后的动作

send 向进程发送字符串

send exp_send 用于发送指定的字符串信息

exp_continue 在expect中多次匹配就需要用到

send_user 用来打印输出 相当于shell中的echo

interact 允许用户交互

exit 退出expect脚本

eof expect 执行结束, 退出

set 定义变量

puts 输出变量

set timeout 设置超时时间

二.进程优先级命令

1.nlce命令以更改过的优先序来执行程序,如果未指定程序,则会印出目前的排程优先序,内定的 adjustment 为 10,范围为 -20(最高优先序)到19(最低优先序)

语法

nice [-n adjustment] [-adjustment] [--adjustment=adjustment] [--help] [--version] [command [arg...]]

参数说明:

-n adjustment, -adjustment, --adjustment=adjustment 皆为将该原有优先序的增加 adjustment

--help 显示帮助信息

root@Centos7 ~]# vim & //后台运行

[1] 3058

[root@Centos7 ~]# nice vim & //设置默认优先级

[2] 3059

[1]+ 已停止 vim

[root@Centos7 ~]# nice -n 19 vim & //设置优先级为19

[3] 3068

  1. + 已停止 nice vim

显示进程

2.renice命令

Linux 命令大全 Linux 命令大全

Linux renice命令用于重新指定一个或多个行程(Process)的优先序(一个或多个将根据参数而定)。

注意:每一个行程(Process)都有一个唯一的(unique)id。

语法

renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]

参数说明:

-p pid 重新指定行程的 id 为 pid 的行程的优先序

-g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序

-u user 重新指定行程拥有者为 user 的行程的优先序

实例

将行程 id 为 987 及 32 的行程与行程拥有者为 daemon 及 root 的优先序号码加 1

renice +1 987 -u daemon root -p 32

  1. 进程管理工具

1.ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。

语法 ps [options] [--help]

参数:

ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义

-A 列出所有的进程

-w 显示加宽可以显示较多的资讯

-au 显示较详细的资讯

-aux 显示所有包含其他使用者的进程

au(x) 输出格式 :

查看进程详细信息:

查看进程的父子关系

按CPU利用率倒序排序

2.Pstree可以显示进程的父子关系,以树状结构显示

格式

Pstree [option] [PID] [user]

选项

-p 显示PID

-T 不显示线程thread,默认显示线程

-u 显示用户切换

-H 高亮显示指定进程及其前辈进程

pstree 1

Pstree mo

pstree -T

3.prtstat 查看进程信息

可以显示进程信息。来自于psmic包

格式

Prtstat [options] PID ...

选项

-r raw格式显示

prtstat -r 1856

  1. pgrep根据用户给出的信息在当前运行进程中查找并列出符合条件的进程

选项

-o:仅显示找到的最小(起始)进程号;

-n:仅显示找到的最大(结束)进程号;

-l:显示进程名称;

-P:指定父进程号;

-g:指定进程组;

-t:指定开启进程的终端;

-u:指定进程的有效用户ID。

-a: 显示完整格式的进程名

  1. pidof 查找正在运行进程的进程号

选项

-s:仅返回一个进程号;

-c:仅显示具有相同“root”目录的进程;

-x:显示由脚本开启的进程;

-o:指定不显示的进程ID。

  1. uptime

/proc/uptime 包括两个值,单位s

系统启动时长

空闲进程的总时长(按总的CPU合数计算)

当前时间

系统已启动时间

当前在线用户

系统平均负载(1,5,15分钟的平均负载,一般不会超过1,超过5时建议报警)

系统平均负载:指在特定时间间隔内运行队列中的平均进程数,通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题。

  1. mpstat 显示CPU相关统计

  1. top和htop 查看进程实时状态

top 提供动态的实时进程状态

有许多内置命令

帮助:h 或 ?,按q或esc退出帮助

排序:p 以占据的cpu百分比,%cpu

M 占据内存百分比,%MEN

T:累积占据CPU时长,TIME

首部信息显示:

uptime信息:l

tasks及cpu信息:t

cpu分别显示:1

memory内存信息:m

退出命令:q

修改刷新时间间隔:s

终止指定进程:k

保存文件:w

top命令栏位信息简介

us: 用户空间

Sy:内核空间

ni:调整nice时间

wa:等待IO时间

hi:硬中断

si:软中断

st:虚拟机偷走的时间

top选项

-d :指定刷新时间间隔

-b:全部显示所有进程

-n:刷新多少次后退出

-H:线程模式

htop命令是增强版的top命令,来自于epel源,比top功能更强

选项

-d:指定延时时间

-u:username:仅显示指定用户的进程

-s:以指定字段进行排序

子命令

s:跟踪选定进程的系统调用。

l:显示选定进程打开的文件。

a:将选定的进程绑定至某指定的cpu核心

t:显示进程数。

  1. free内存空间

选项

-b:以字节为单位

-m:以MB为单位

-g:以GB为单位

-h:以人类易读格式显示

-o:不显示-/+buffers/cache行

-t:显示RAM+swap的总和

-s: n刷新间隔时间为n

-c: n 刷新n次后退出。

  1. Pmap 进程对应的内存映射

格式pmap [option] PID [...]

选项 -x 显示详细格式信息

  1. vmstat 虚拟内存信息

显示项说明

Procs:

r:可运行进程的个数,和核心数有关

b:处于不可中断睡眠态的进程个数

memory:

Swpd:交换内存的使用量

free:空闲物理内存 总量

buffer:用于buffer的内存总量

cache:用于cache的内存总量

swap:

si:从磁盘交换至内存的数据速率(kb/s)

so:从内存交换至磁盘的数据速率(kb/s)

io:

bi:从块设备读入数据到系统的速率(kb/s)

bo:保存数据至块设备的速率。

system:

in:中断速率,包括时钟

cs:进程切换速率

cpu:

us:用户CPU时间

sy:系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。

id:空闲 CPU时间

wa:Wa过高时,说明io等待比较严重,这可能是由于磁盘大量随机访问造成的,也有可能是磁盘的带宽出现瓶颈。

st:被虚拟机所盗用的 CPU 百分比。

  1. iostat 统计CPU和设备IO信息

Iostat可以提供更丰富的IO性能状态数据。

选项:

-c :只显示CPU行

-d :显示设备(磁盘)使用状态

-k :以千字节为单位显示输出

-t :在输出中包括时间戳

-x :在输出中包括扩展的磁盘指标。

  1. iotop 磁盘监视

Iotop命令是一个用来监视磁盘I/O使用状况的top类工具iotop具有与top类似的界面。

Iotop输出

第一行:Read和Write速率总计。

第二行:实际的Read和Write速率总计。

第三行:线程ID,优先级,用户,磁盘读速率,磁盘写速率,swap交换百分比,IO等待所占百分比。

Iotop常用参数:

交互按键:

  1. iftop显示网络使用情况。

Iftop -ni eth0

  1. nload 查看网络实时吞吐量

  1. nethogs 查看进程网络带宽的使用情况

用来按进程或程序实时统计网络带宽使用率。

  1. iptraf-ng 网络监视工具

  1. dstat 系统资源统计

安装dstat包即可,可以用于替代vmstat,iostat功能。

选项

  1. glances综合监控工具

此工具可以通过EPEL源安装

选项

20.losf 查看进程打开文件

查看当前系统文件的工具

选项

列出当前所有打开的文件

查看当前哪个进程在使用此文件

查看由登录用户启动的而非系统启动的进程

[root@Centos7 ~]# lsof /dev/pst/1

[root@Centos7 ~]# lsof tty

指定进程号,可以查看改进程号打开的文件

查看指定的程序打开的文件

查看指定用户打开的文件

使用lsof恢复正在使用中文件误删除的文件

  1. cockpit 是Centos8支持的新特新,是有cockpit提供Ubuntu和Centos7也支持此工具,是一个基于Web界面的应用,提供对系统图形化管理。

在浏览器输入地址,打开页面使用系统用户名和密码进行登录

  1. Kill 可以用来向进程发送控制信号,以实现对进程管理,每个信号对应一个数字。

显示当前系统可用信号

kill -l

trap -l

常用信号

  1. linux的作业控制

前台作业:通过终端启动,且启动后一直占据终端。

后台作业:可以通过终端启动,但启动后即转入后台运行(释放终端)

让作业运行于后台:

运行中的作业:Ctrl+z

尚未启动的作业:COMMAND&

后台作业虽然被送往后台运行,但其依赖与终端相关;退出终端,将关闭作业。

nohup COMMAND &>dev/null &

Jobs 查看当前终端所有作业

并行运行

利用后台执行,实现并行功能,即同时运行多个进程,提高效率。

三.计划任务

通过计划任务,可以让系统自动的按时间或周期性的执行任务

  1. at 一次性任务

选项

  1. cron 周期性任务计划

分钟,小时,日,月,星期

Crontab -l 查看当前用户的任务

Crontab -e 对当前用户的任务进行编辑修改或增加

11月每天6-12点之间