![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
shell学习笔记
Shell学习笔记及示例讲解,根据此专栏能很快上手shell的常规操作。
WEL测试
WEL,资深软件测试工程师,具有7年以上的软件测试项目经验,长期扎根于一线测试工作,主导并成功完成了多个大型软件测试项目,对于软件测试的各个环节和流程有着全面而深入的了解。 WEL精通软件测试的多个领域,包括系统测试、接口测试、性能测试、自动化测试等,并且在容器化技术和数据测试等前沿方向也有着深入的研究和实践。
展开
-
Linux:两种非交互修改用户密码的两种方式
背景说明在制作docker镜像时,会经常涉及添加用户并给用户设置密码的操作。这样的场景在使用Dockerfile时,不能使用交互方式进行镜像制作,这时候就需要使用非交互的方式添加用户并修改用户密码。使用方法方法一:passwd --stdin使用方法:echo password | passwd --stdin usernamepassword:用户密码username:用户名示例:echo 123456| passwd --stdin test方法二:passwd --stdin原创 2020-11-09 14:08:28 · 6634 阅读 · 0 评论 -
Linux: 脚本中添加set -e/u、set +e/u作用及作用域证明
下面图片中的:我看脚本中set +e、set -e、set +u、set -u是蒙圈的,这些表示什么意思呢?在redhat系统执行:man set可以看到set 的说明。set -e: 表示该命令之后,当出现命令行返回值为非0的情况时,脚本直接退出,后续命令不在执行。set -u: 表示该命令之后,当命令使用到未定义过的变量时,脚本直接退出,后续命令不在执行。样例验证说明正确及作用域set +/-e样例:hello.sh内容如下:#! /bin/bashset +esshExec=$(w原创 2020-11-06 16:05:46 · 3146 阅读 · 0 评论 -
LINUX性能优化-内存篇
WEL测试:这是什么?我想看看,看了会不会中毒呀?有点害怕主要涉及以下章节:基础篇:Linux内存是怎么工作的?基础篇:怎么理解内存中的Buffer和Cache?案例篇:如何利用系统缓存优化程序的运行效率?案例篇:内存泄漏了,我该如何定位和处理?案例篇:为什么系统的Swap变高了套路篇:如何“快准狠”找到系统内存的问题?关于这些章节的详细讲解与介绍可以通过网址下载:Linux性能优化-内存篇...原创 2020-08-29 14:21:11 · 533 阅读 · 0 评论 -
【Linux】iowait使用率高与僵尸进程多分析方法
WEL测试:这是什么?我想看看,看了会不会中毒呀?有点害怕iowaite升高分析流程:0、使用dstat观察 CPU 和 I/O 的使用情况,每当 iowait 升高(wai)时,磁盘的读请求(read)都会很大。1、使用top 查看系统性能指标,发现iowait%数值异常,查看状态为D的进程2、通过pidstat -d -p pid 观察当前进程的KB_rb、kb_wr指标情况,如果对应进程这两个指标为0,可以换成当前命令:pidstat -d 1 10 观测当前系统所有进程,找到进行磁盘读写.原创 2020-08-10 13:45:13 · 691 阅读 · 0 评论 -
【Linux】如何统计出所有进程的物理内存使用量呢?
WEL测试:这是什么?我想看看,看了会不会中毒呀?有点害怕要避免重复计算多个进程同时占用的内存,像是页缓存、共享内存这类。如果把 ps、top 得到的数据直接相加,就会出现重复计算的问题。这里,推荐从 /proc/< pid >/smaps 统计出所有进程的物理内存使用量。需要通过man proc了解/proc/< pid >smaps 文件中各个指标含义。这里是把proc//smaps中的Pss相加,因为Pss是私有内存+共享内存按比例属于自己计算的那一部分,通过Pss不.原创 2020-08-08 10:44:01 · 748 阅读 · 0 评论 -
【Linux】负载分析三剑客:uptime、mpstat、pistat
WEL测试:这是什么?我想看看,看了会不会中毒呀?有点害怕sysstat 包含了常用的 Linux 性能工具,用来监控和分析系统的性能。 本次使用的mpstat 和 pidstat就包含在该包内。uptime:负责监控负载趋势监控系统负载情况。详细的使用说明可以通过命令:man uptime、man watch了解。使用示例:$ watch -d uptime每十秒输出一下:while true;uptime;sleep 10; donempstat:负责处理器监控分析mpstat 是一原创 2020-07-30 11:17:42 · 461 阅读 · 0 评论 -
【LINUX】(平均负载)load average含义及计算指标获取
平均负载是指单位时间内,系统处于可运行状态和不可中断状态的平均进程数。可运行状态ps命令进程状态为: R 状态(Running 或 Runnable)的进程。不可中断状态ps命令进程状态为: D 状态(Uninterruptible Sleep,也称为 Disk Sleep)的进程。平均负载指的是平均的活跃进程数,那么最理想的,就是每个 CPU (是逻辑核数,即core个数)上都刚好运行着一个进程。获取系统的逻辑核数cat /proc/cpuinfo原创 2020-07-30 09:18:58 · 1606 阅读 · 1 评论 -
LINUX expect实例讲解
expect定义及使用场景expect是一个免费的编程工具,用来实现自动的交互任务。在实际工作中,在linux运行linux命令、脚本或程序时,这些输入有时会需要人工手进行,而利用expect,可以根据程序的提示,模拟标注输入提供给程序,从而实现自动化交互。expect安装配置好对应的yum源之后,执行命令:yum install -y expect安装成功之后,可以在命令行执行命令检验原创 2020-06-19 10:57:29 · 535 阅读 · 1 评论 -
Linux目录和文件级别的权限管理
字段含义简述Linux提供目录和文件级别的权限管理。每个文件和目录都有一个owner(所有者)和一个group(用户组)。一个文件或目录可以对owner、所属group中的用户和其他所有用户开放不同的权限。对于一个文件,“r”代表读权限,“w”代表写权限。对于一个目录,“r”代表查看目录下内容的权限,“w”代表在目录中创建或删除新的文件或目录的权限,“x”代表访问该目录的子目录的权限。...原创 2020-02-12 17:55:54 · 2550 阅读 · 0 评论 -
批量kill掉带有某些标识的进程的shell命令
微信公众号:WELTest分享一个常用命令,批量杀掉一批进程,这里以tomcat为例:ps -ef | grep tomcat | awk '{print $2}' | xargs kill -9命令解析:ps -ef | grep tomcat :查找带有tomcat的进程。ps -ef | grep tomcat | awk '{print $2}':获取带有to...原创 2022-02-12 19:01:47 · 464 阅读 · 0 评论 -
第6章创建函数-----------(在.bashrc文件中定义函数、在命令行创建函数、在命令行中使用函数)
6.6在命令行中使用函数 脚本函数可以用于创建比较复杂的操作。脚本函数不仅可以用作shell脚本命令,也可以用作命令行界面的命令。一旦在shell中定义了函数,可以从系统的任意目录使用这个函数。不必担心PATH环境变量是否包含函数文件所在目录。关键是能使shell识别出这个函数。这有两种方法。6.6.1在命令行创建函数 shell在键盘输入命令时解释命令原创 2016-12-23 11:27:58 · 4572 阅读 · 0 评论 -
第5章 脚本控制------------------------(处理信号、常用信号、捕获信号、移除捕获)
第5章 脚本控制 到目前为止,运行脚本的唯一方法是以实时模式直接从命令行界面运行。这不是在Linux系统中运行脚本的唯一方式。还有许多可用的其他选项可以在Linux系统上运行shell脚本。本章将研究用于运行代码的各种不同方式。另外,有时脚本会遇到循环终止问题,需要找出如何在不关闭Linux系统的情况下停止这段脚本。本章将控制shell脚本在系统中的运行方式以及运行时间的不同方原创 2016-12-15 15:13:39 · 4000 阅读 · 0 评论 -
shell的ps命令参数列表解释说明
Usage: ps [options]Basic options: -A, -e all processes -a all with tty, except session leaders a all with tty, including other users -d原创 2016-12-15 11:57:18 · 2501 阅读 · 0 评论 -
第6章创建函数-----------(函数递归、 创建库、source命令)
6.5 函数递归与创建库6.5.1函数递归 自给(self-containment)是局部函数变量的一个特性。自给函数除了脚本通过命令行传递的变量,不使用函数之外的任何资源。 递归调用函数是指函数调用自身进行求解。通常,递归函数有基值,函数最终递推到达该值。许多高级数学算法使用递归将复杂等式的递归层次反复降低,直到到达基值指定的层次。递归算法的一个经典示原创 2016-12-21 13:55:59 · 544 阅读 · 0 评论 -
第6章创建函数-----------(向函数传递数组、从函数返回数组)
6.4数组变量与函数6.4.1向函数传递数组 向脚本函数传递数组变量。如果试图将数组变量作为单个参数传递,是无法正常工作的。操作实例如下: #!/bin/bash#数组当作单个参数传递是无法工作的function testit { echo "The parameters are:$@" thisarray=$1 echo "Th原创 2016-12-21 12:03:50 · 5276 阅读 · 0 评论 -
第5章 脚本控制------------------------(at命令、mail命令、batch命令、cron表格、anacron表格)
5.5 定时运行脚本 在处理脚本时,总会遇到需要在给定时间运行脚本。Linux系统提供3中方式在预定时间运行脚本:at命令、batch命令、cron表格。每种方法使用不同的技术调度运行脚本的时间和频率。5.5.1使用at命令调度作业 at命令允许指定Linux系统运行脚本的时间。at命令将作业提交到一个队列,并指示shell在何时运行该作业。另一个命令原创 2016-12-16 17:13:15 · 759 阅读 · 0 评论 -
date命令全英帮助文档(man date)
DATE(1) User Commands DATE(1)NAME date - pri转载 2016-12-16 15:56:06 · 3180 阅读 · 0 评论 -
at命令全英帮助文档(man at)
AT(1) General Commands Manual AT(1)NAME at, batch,转载 2016-12-16 15:02:06 · 725 阅读 · 0 评论 -
第5章 脚本控制------------------------(nice与renice命令、进程优先级控制)
5.4 nice与renice命令 在多任务操作系统中,内核负责为系统中运行的每个进程分配CPU时间。实际上,CPU中一次只能运行一个进程,因此内核轮流向每个进程分配CPU时间。 默认情况下,从shell启动的所有进程在Linux系统上的调度优先级都相同。调度优先级是内核相对其他进程分配个某一个进程的CPU时间量。 调度优先级是一个整数原创 2016-12-16 11:37:40 · 1611 阅读 · 0 评论 -
第4章 处理用户输入与显示数据------------(禁止命令输出、lsof命令、关闭文件描述符、创建读取/写入文件描述符)
4.5 创建自己的重定向 在脚本中重定向输入和输出时,并不局限于3中默认的文件描述符。在shell中最多可以有9个打开的文件描述符。其他6个文件描述符的编号从3~8。可以将这些文件描述符应用到任何文件,然后在脚本中使用它们。4.5.1 创建输出文件描述符 使用exec命令为输出分配文件描述符。与标准的文件描述符一样,向文件位置分配备选文件描述符之后,该重原创 2016-12-14 11:59:11 · 641 阅读 · 0 评论 -
第4章 处理用户输入与显示数据------------(标准文件描述符、STDIN/STDERR/STDOUT、临时重定向、永久重定向exec)
4.4 显示数据4.4.1 标准文件描述符 Linux系统将每个对象当作文件处理。这包括输入和输出过程。Linux使用文件描述符(file descriptor)标识每个文件对象。文件描述符是一个非负整数,可以唯一地标识会话中打开的文件。每个进行最多可以有9个打开文件的描述符。bash shell为特殊需要保留前3个文件描述符(0,1,2),如下所示:原创 2016-12-12 11:03:55 · 1729 阅读 · 0 评论 -
第5章 脚本控制------------------------(作业控制、查看作业jobs命令、重新启动停止的作业)
5.3 作业控制 使用Ctrl+Z组合键停止shell运行中的作业。停止作业后,Linux系统会让用户终止或重启它。可以使用kill命令终止进程。重启停止的进程需要向它发送SIGCONT信号。 重启、停止、终止和恢复作业的操作称为作业控制(job control)。使用作业控制可以完全控制进程以shell环境中运行的方式。5.3.1查看作业原创 2016-12-16 10:56:43 · 1309 阅读 · 0 评论 -
第5章 脚本控制------------------------(以后台模式运行脚本、nohup)
5.2以后台模式运行脚本 有时直接从命令行界面运行shell脚本很不方便。有些脚本需要很长的时间才能处理,不可能让命令行界面等待太长时间。使用ps命令,可以查看Linux系统上运行的进程。所有进程不在终端监视器上运行。这就是所谓的后台运行进程。在后台模式中,进程运行时与终端会话STDIN、STDOUT和STDERR无关。 以后台模式运行shell脚本的方式很原创 2016-12-16 09:40:54 · 4105 阅读 · 0 评论 -
第6章创建函数-----------(select命令操作实例)
6.7 select命令使用创建文本菜单的大多数问题就是创建菜单布局和获取输入的答案。select命令允许从单命令行创建菜单,然后获取输入的答案并自动处理它。select命令格式如下所示:select variable in listdo commanddone 列表参数是用空格隔开的构建菜单的文本项列表。select命令将列表中的每一项显示为一个编号选项,然后为原创 2016-12-23 15:55:47 · 626 阅读 · 0 评论 -
shell编写的zk、hadoop、hbase服务监控并重启服务
#!/bin/bash#zk服务器问题修复脚本#zkServer服务所在路径zkDir="/usr/local/zookeeper/bin/"zkLog='zookeeper.out'#进入zkServer.sh所在的目录cd $zkDirflag=1#当$flag=0时才停止循环设置无线循环until [ $flag -eq 0 ]do #查看zookeeper.out日志原创 2016-12-15 18:24:18 · 1551 阅读 · 0 评论 -
第2章 基本脚本编译------------(shell脚本退出状态)
2.3 退出脚本 每条运行在shell中的命令都使用一个退出状态。这个退出状态时一个介于0和255之间的整数值,当命令运行完成时,命令就会把退出的状态传递给shell。Linux提供$?特殊变量来保存最后一条命令执行结束的退出状态。如果想核对一条命令的退出状态,必须在这条命令运行完毕之后立即查看或使用变量$?。Linux退出状态代码如下:原创 2016-11-30 17:56:15 · 682 阅读 · 0 评论 -
用stress对Linux系统进行压测
进入网站:http://www.rpmfind.net/linux/rpm2html/search.php?query=stress(x86-64)下载对应系统的stress安装包。下载成功后安装stress :rpm -Uvh xxxx.rpm示例然后执行 : nohup stress -c 18 &给系统一个随机负载,此命令产生18个进程,每个进程都反复不停的计算由ra...原创 2019-09-10 08:40:22 · 518 阅读 · 0 评论 -
C白盒测试,把测试用例的头文件和测试函数怎么一次性添加到main函数的shell脚本
#Generate main.c#包含测试用的.c和.h的文件夹src_dir=../LLR_TESTS #定义一个main的shell变量main=main.c #Go to source and clean maincd $src_dirrm -f $main#获取头文件for tc in `ls TC*.c | sed 's/\.c//'`do echo "#in原创 2016-05-18 14:07:09 · 879 阅读 · 0 评论 -
第7章 sed、gawk介绍与正则表达式-----------(扩展的正则表达式)
7.6 扩展的正则表达式 POSIXERE模式包括某些Linux应用程序和工作使用的其他符号。gawk程序能够识别ERE模式,但是sed编辑器。sed编辑器和gawk程序的正则表达式引擎存在差异。gawk程序可以使用大部分扩展正则表达式模式的符号,并且具有sed编辑器没有的其他一些筛选能力。由于这一点,gawk处理数据流的速度通常较慢。7.6.1 问号原创 2017-01-09 11:02:25 · 3102 阅读 · 0 评论 -
第7章 sed、gawk介绍与正则表达式-----------(定义基本正则表达式(BRE)模式)
7.5定义BRE模式 最基本的BRE模式是匹配数据流中的文本字符。7.5.1纯文本 sed编辑器和gawk程序中如何使用标准的文本字符串筛选数据。正则表达式并不关心模式出现在数据流中的位置。模式出现的次数也无关紧要。一旦表达式能够在文本字符串的任何位置匹配该模式,它就将字符串传递给使用它的Linux使用程序。 关键是匹配正则表达式模式原创 2017-01-09 09:36:00 · 630 阅读 · 0 评论 -
第6章创建函数-----------(在函数中使用变量、向函数传递参数、在函数中处理变量、关键字local)
6.3在函数中使用变量 在函数中使用变量,应当多注意如何定义和处理这些变量。6.3.1向函数传递参数 函数可以使用标准参数环境变量来表示命令行传递给函数的参数。例如,函数名在变量$0中定义,函数命令行的其他参数使用变量$1和$2等定义。专用变量$#可以用来确定传递给函数的参数数目。在脚本中指定函数时,必须在函数所在命令行提供参数值。原创 2016-12-20 17:21:50 · 1017 阅读 · 0 评论 -
定时重启机器,重启时运行启动服务脚本
Linux操作系统定时重启机器,机器启动时运行启动服务脚本的操作步骤:首先,执行crontab -e命令,创建并打开一个cron表,在表中添加类似如下信息:#重启服务的脚本30 2 * * * /sbin/reboot上面的意思:每天凌晨2:30重启机器cron表格使用特殊格式指定作业运行时间。cron表格的格式如下:min hour dayofmonth month d原创 2016-12-20 13:13:18 · 2672 阅读 · 0 评论 -
第7章 sed、gawk介绍与正则表达式-----------(正则表达式定义与类型)
7.4 正则表达式定义与类型 正则表达式是定义的、Linux实用程序用来筛选文本的模式模板。Linux实用程序在输入数据时,将正则表达式模式和数据进行匹配。如果数据与模式一致,它接受处理。如果数据与模式不一致,就拒绝。 正则表达式模式利用通配符表示数据流中的一个或多个字符。正则表达式模式包括文本和/或特殊字符,可以定义sed编辑器和gawk程序原创 2017-01-05 10:22:46 · 565 阅读 · 0 评论 -
第7章 sed、gawk介绍与正则表达式-----------(sed编辑器基础知识)
7.3sed编辑器基础知识 成功使用sed编辑器的关键是要了解其大量的命令和格式,这些命令和格式有助于自定义文本编辑。7.3.1更多替换选项 替换标记要放在替换命令字符串之后:s/pattern/replacement/flags 可用的替换标记有4种:(1) 数字:表示新文本替换的模式(2) g:表示用新原创 2017-01-05 09:27:48 · 533 阅读 · 0 评论 -
第7章 sed、gawk介绍与正则表达式-----------(gawk编辑器简单使用)
7.2gawk程序 sed编辑器是动态修改文本文件的便利工具,但是存在一定的局限性。gawk程序允许修改和重新组织文件中的数据。gawk程序是Unix中原awk程序的GUN版本。awk程序在流编辑方面比sed编辑器更先进的是:它提供了一种编程语言而不仅仅是编辑器命令行。在编程语言内部,可以:Ø 定义要保存数据的变量Ø 使用算术和字符串操作符对数据进行运算Ø 使用结构化编程原创 2016-12-27 12:01:12 · 658 阅读 · 0 评论 -
第7章 sed、gawk介绍与正则表达式-----------(sed编辑器简单使用)
第7章 sed、gawk介绍与正则表达式7.1sed编辑器 sed编辑器称为流编辑器(stream editor),与普通的交互式文本编辑器相对应。在交互式文本编辑器中,可以交互式地使用键盘命令插入、删除、或者替换数据中的文本。流编辑器将根据在编辑器处理数据之前事先提供的规则集编辑数据流。 sed编辑器可以根据输入命令行的命令或者存储在命令文本文件中的命原创 2016-12-27 11:49:20 · 547 阅读 · 0 评论 -
第6章创建函数-----------(创建函数、定义函数、使用函数、返回值)
第6章创建函数6.1 基本脚本函数 编写比较复杂的shell脚本时,完成具体任务的代码可能需要重复使用。bash shell提供满足这种要求的特性。函数是被赋予名称的脚本代码块,可以在代码的任意位置重用。每当需要在脚本中使用这样代码块时,只需引用该代码块被赋予的函数名称。6.1.1 创建函数 在bash shell脚本中创建函数可以使用两种格式。一种原创 2016-12-19 17:24:55 · 1267 阅读 · 0 评论 -
第5章 脚本控制-----------------------(启动时启动脚本、随新shell一起启动)
5.6 从头开始 启动shell脚本的最后一种方法是,让脚本在Linux系统已启动或者用户启动新的bashshell会话时便自动运行。5.6.1在启动时启动脚本 Linux在启动时按照一定的顺序启动脚本,在将shell脚本设置为启动时自动启动之前,了解Linux的启动过程的工作方式有助于让脚本按照预期的方式执行。 1.启动过程原创 2016-12-19 17:12:55 · 1187 阅读 · 0 评论 -
第1章 BashShell命令------------(默认的shell环境变量与path变量的设置)
1.6.2 默认的shell环境变量与path变量的设置 1.默认的shell环境变量 bashshell默认将使用一些特定的环境变量来定义系统环境。随时都可以依靠这些Linux系统中的设置的变量。由于bash shell派生自原Unix Bourn shell,因此它还包括最初在该shell中定义的环境变量。列出bash shell提供与原Unix Bou原创 2016-11-28 15:47:45 · 5012 阅读 · 0 评论 -
第1章 Linux设置环境变量
1.6 使用Linux环境变量1.6.1 设置环境变量 bashshell使用一种称为环境变量的特性来存储关于shell会话和工作环境的信息。该特性允许将数据存储在内存中,以便于在shell中运行的程序或脚本访问它们。这是一种便捷的、用于存储持久性数据的方式,这些数据可以标识用户账户、系统、shell或任何需要存储的内容的特性。 bashshell中共有原创 2020-05-02 11:59:42 · 2397 阅读 · 1 评论