由于bash中重定向只在当前命令中有效,命令执行完毕后,重定向被撤销。可以使用内置命令exec使重定向在整个脚本有效。 脚本举例: #!.../bin/bash #打开输入文件描述符3,并关联文件file exec 3<file #先将文件描述符复制给标准输入,cat命令从标准输入读取到文件file的内容 cat <&3 #关闭文件描述符3.../stderr #转移标准输出到3号描述符,关闭原来的1号文件描述符。 exec 1>&3- #转移标准错误到4号描述符,关闭原来的2号文件描述符。 exec 2>&4- #命令的标准输出将写入文件....IP在日志文件access.log出现的次数 grep -c $IP access.log >>result.txt echo #命令运行结束后仍写入一个空行至文件描述符...当然,这里的for循环中执行的复合命令可以替换为任意需要并发执行的任务。
这里有一个原则,这个原则掌握好了,这个问题就很简单了: 对循环重定向的输入可适用于循环中的所有需要从标准输入读取数据的命令; 对循环重定向的输出可适用于循环中的所有需要向标准输出写入数据的命令;...上面的while结构中,read命令是需要从标准输入中读取数据的。我们来详细了解一下read命令的用法吧,这个命令是shell脚本中使用频率最高的命令之一。...read的一个最大特性是可以在脚本中产生交互,因为它从标准输入读取数据。read之所以很常用,一是因为我们经常需要赋值,二是因为它可以交互,三是read能够一次给多个变量赋值。...是的,read命令也有退出状态,当它从文件file中读到内容时,退出状态为0,循环继续惊醒;当read从文件中读完最后一行后,下次便没有内容可读了,此时read的退出状态为非0,所以循环才会退出。...command命令的输出作为read循环的输入,这种结构长用于处理超过一行的输出,当然awk也很擅长做这种事
" \) -print # -exec command {} \;是连用的,所有符合的都会放置在{}中,去执行command #将文件分割成多个大小为10kb的文件 split -b 10k data.file...关闭进程号12的进程 kill 12 ##等同于在前台运行PID为123的进程时按下Ctrl+C键 kill -2 123 ##如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL...#该命令可以在你退出帐户/关闭终端之后继续运行相应的进程。...文件后十行是否增加了一个用户aaa ##计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务。...(3) 只有root用户才能提高进程的优先权 renice -5 -p 5200 #PID为5200的进程nice设为-5 ##pmap命令用于显示一个或多个进程的内存状态。
-f:使用sed脚本 -e:可以指定多个处理动作 -r:启用扩展的正则表达式,当与其他选项使用时应作为首个选项 -{}:可组合多个命令,以分号分割 定址符:用来指定处理的起止行,省略定址符时默认逐行处理全部文本.../' a.txt 将文件中每行的第一个和第二个字符互换 sed -r 's/^(.)(.)(.*)/\2\1\3/' a.txt 将文件中每行的第一个和第二个单词互换 sed -r 's/([a-Z]+...在第二行之前插入文本行‘YY’ 4,7iYY 在第4-7行的每一行前添加文本 a 行后插入文本:2aYY 在第2行之后添加文本 /^XX/aYY 在以XX开头的行之后添加文本 c 替换当前行:2cYY...r:读取文件 3r b.txt 在第3行下方插入文本b.txt 4,7r b.txt 在第4-7行每一行后插入文件b.txt w:保存到文件 3w c.txt 将第3行另存为文件c.txt 4,7w...UID小于或等于500的用户个数,统计UID大于500的用户个数 awk -F: 'BEGINelse}END' /etc/passwd 循坏结构:while循坏 while(条件) do while循环
Read AWK从输入流(文件,管道或者标准输入)中读取一行,然后存储到内存中。 Execute 所有的AWK命令都依次在输入上执行。...第三个语句close(cmd, "to")用于执行完成后关闭to进程 第四个语句cmd |& getline out使用getline函数存储输出到out变量 接下来打印变量out的内容,然后关闭cmd...一个大型的程序可以被划分为多个函数,每个函数之间可以独立的开发和测试,提供可重用的代码。...> "/tmp/message.txt" }' 与shell中一样,>用于将输出写入到指定的文件中,如果文件中有内容则覆盖,而>>则为追加模式写入。...第三行用于在上面的语句close(cmd, "to"),在执行完成后关闭其to进程 第四行 cmd |& getline out使用getline函数存储输出到变量out中 最后一行使用close函数关闭命令
Read AWK从输入流(文件,管道或者标准输入)中读取一行,然后存储到内存中。 Execute 所有的AWK命令都依次在输入上执行。...上述代码执行后,输出以下内容 ? 在程序的开始,AWK在BEGIN语句中打印出标题。然后再BODY语句中,它会读取文件的每一行然后执行AWK的print命令将每一行的内容打印到标准输出。...AWK命令行 我们可以使用单引号在命令行中指定AWK命令 ? AWK程序文件 我们可以使用脚本文件提供AWK命令 ?...上例看起来有些复杂,我们逐行分析一下 首先,第一行 cmd = “tr [a-z] [A-Z]” 是在AWK中要建立双向连接的命令 第二行的print命令用于为tr命令提供输入,而 |& 用于指出要建立双向连接...第三行用于在上面的语句close(cmd, “to”),在执行完成后关闭其to进程 第四行 cmd |& getline out使用getline函数存储输出到变量out中 最后一行使用close函数关闭命令
Read AWK从输入流(文件,管道或者标准输入)中读取一行,然后存储到内存中。 Execute 所有的AWK命令都依次在输入上执行。...然后再BODY语句中,它会读取文件的每一行然后执行AWK的print命令将每一行的内容打印到标准输出。这个过程会一直重复直到文件的结尾。...一个大型的程序可以被划分为多个函数,每个函数之间可以独立的开发和测试,提供可重用的代码。...上例看起来有些复杂,我们逐行分析一下 首先,第一行 cmd = “tr [a-z] [A-Z]” 是在AWK中要建立双向连接的命令 第二行的print命令用于为tr命令提供输入,而 |& 用于指出要建立双向连接...第三行用于在上面的语句close(cmd, “to”),在执行完成后关闭其to进程 第四行 cmd |& getline out使用getline函数存储输出到变量out中 最后一行使用close函数关闭命令
-f:使用sed脚本 -e:可以指定多个处理动作 -r:启用扩展的正则表达式,当与其他选项使用时应作为首个选项 -{}:可组合多个命令,以分号分割 定址符:用来指定处理的起止行,省略定址符时默认逐行处理全部文本.../' a.txt 将文件中每行的第一个和第二个字符互换 sed -r 's/^(.)(.)(.*)/\2\1\3/' a.txt 将文件中每行的第一个和第二个单词互换 sed -r 's/([a-Z]+...在第二行之前插入文本行‘YY’ 4,7iYY 在第4-7行的每一行前添加文本 a 行后插入文本:2aYY 在第2行之后添加文本 /^XX/aYY 在以XX开头的行之后添加文本 c 替换当前行:2cYY...r:读取文件 3r b.txt 在第3行下方插入文本b.txt 4,7r b.txt 在第4-7行每一行后插入文件b.txt w:保存到文件 3w c.txt 将第3行另存为文件c.txt 4,7w.../passwd提出密码串 day06 1.awk基本用法 命令格式解析: 格式1:前置命令 | awk 选项 ‘条件{编辑指令}’ 格式2:awk 选项 ‘条件{编辑指令} 文件’ awk -F “:”
: 2)编辑配置文件 3)logrotate 命令: 七、搭建远程日志收集服务器-日志切割 服务器端: 1.开启端口TCP/UDP 2.重启rsyslog 3.查看端口是否打开 4.关闭防火墙及保护机制...*.* /var/log/alert.log #在 62 行左右写入。...对于第六个归档,时间最久的归档将被删除。 compress: 在轮循任务完成后,已轮循的归档将使用 gzip 进行压缩。...这在你或任何软件仍然需要读取最新归档时很有用。 missingok: 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。...例: #客户端服务器端需要关闭 SELinux 和 firewalld。
pdf" \) -print # -exec command {} \;是连用的,所有符合的都会放置在{}中,去执行command #将文件分割成多个大小为10kb的文件 split -b k data.file...关闭进程号12的进程 kill 12 ##等同于在前台运行PID为123的进程时按下Ctrl+C键 kill -2 123 ##如果任无法终止该程序可用“-KILL” 参数,其发送的信号为SIGKILL...12:00执行一项操作 #at>useradd aaa //在at命令里设定添加用户aaa #ctrl+d //退出at命令 #tail -f /etc/passwd //查看/etc/passwd文件后十行是否增加了一个用户...aaa ##计划任务设定后,在没有执行之前我们可以用atq命令来查看系统没有执行工作任务。...(3) 只有root用户才能提高进程的优先权 renice -5 -p 5200 #PID为5200的进程nice设为-5 ##pmap命令用于显示一个或多个进程的内存状态。
1、 搜索包含特定模式的文本行: 2、 从stdin中读取: 3、 单个grep命令可以对多个文件进行搜索: 4、 --color选项在输出行中着重标记出匹配到的单词: 5、 grep...,-c(在单行出现多个匹配,只匹配一次): 9、 打印出包含匹配字符串的行号,-n: 10、 搜索多个文件并找出匹配文本位于哪一个文件,-l(-L与之作用相反): 11、 递归搜素文件,-r...stdin中读取输入,不影响原本的内容 2、默认情况下sed命令打印替换后的文本,如果想连原文本一起修改加-i命令,-i: 3、 之前的sed都是替换第一个匹配到的内容,想要全部替换就要在末尾加g:...它对列和行进行操作。awk有很多内建的功能,比如数组、函数等,和C有很多相同之处。awk最大的优势是灵活性。...这就像一个用来读取行的while循环,在循环中提供了相应的语句。
2、Linux 管道(Pipeline)的作用是在命令和命令之间,传递数据。比如说一个命令的结果,就可以作为另一个命令的输入。这里说的命令就是进程。更准确地说,管道在进程间传递数据。...标准输出流(用 1 表示)中写入的结果会被打印到屏幕上。 如果进程在执行过程中发生异常,那么异常信息会被记录到标准错误流(用 2 表示)中。...* # 匹配零个或多个先前字符 如:'*grep'匹配所有一个或多个空格后紧跟grep的行。 --color=auto # 标记匹配颜色。 8、wc -l 用来统计行数。...到这里你可能会有一个疑问:如果一个文件设置为不可读,但是可以执行,那么结果会怎样?答案当然是不可以执行,无法读取文件内容自然不可以执行。...19、ifconfig 命令被用于配置和显示 Linux 内核中网络接口的网络参数。
在 echo 命令中如果使用了”-n”选项,则表示在输出内容结束后,不会换行,直接显示新行的提示符。...命令:tar/unzip/zip 1.命令:tar -zcvf 打包压缩后的文件名 要打包的文件可以多个 linux中的打包文件格式:.tar linux中的压缩文件格式:.gz...而一般情况下打包和压缩是一起进行的,打包并压缩后的文件的后缀名一般.tar.gz。...六、系统操作命令 1关机和重启命令 命令:shutdown(关闭计算机) shutdown是最常用也是最安全的关机和重启命令,它会在关机之前调用fsck检查磁盘,其中-h和-r是最常用的参数: -h:停止系统服务并关机...命令 chmod 将修改 who 指定的用户类型对文件的访问权限,用户类型由一个或者多个字母在 who 的位置来说明,如 who 的符号模式表所示: 示例1:将文件 test.txt 设为所有人皆可读取
对于第六个归档,时间最久的归档将被删除。 compress 在轮循任务完成后,已轮循的归档将使用gzip进行压缩。...这在你或任何软件仍然需要读取最新归档时很有用。 missingok 在日志轮循期间,任何错误将被忽略,例如“文件无法找到”之类的错误。 notifempty 如果日志文件为空,轮循不会进行。...dateext 切换后的日志文件会附加上一个短横线和YYYYMMDD格式的日期,没有这个配置项会附加一个小数点加一个数字序号 sharedscripts 在所有其它指令完成后,postrotate和endscript...postrotate/endscript 在所有其它指令完成后,postrotate和endscript里面指定的命令将被执行。在这种情况下,rsyslogd 进程将立即再次读取其配置并继续运行。...在没有执行kill -USR1 `cat ${pid_path}`之前,即便已经对文件执行了mv命令而改变了文件名称,tomcat还是会向新命名的文件" xxx.out_ 20180619"照常写入日志数据的
在交互式的控制台会话中执行tail -f命令是实时的,但是当命令行程序通过管道连接其它程序的时候,命令行程序可能就无法识别最终的输出是否需要(接近)实时了。...幸运的是,在UNIX下有一些技术可以用于控制I/O的缓冲行为。 理解缓冲原理,最重要的是要明确的知道,是写入方(writer)使用的缓冲区,而不是读取方(reader)。...在这种模式 下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾EOF,shell也就终止了。...参考bash 深入理解:交互式shell和非交互式shell、登录shell和非登录shell的区别 解决方案 排除不需要的命令 回到上面的问题,我们有一个命令行管道程序tail -f logfile...下面的命令中去掉了grep命令,使用AWK去实现了筛选操作 tail -f logfile | awk '/foo bar/ ...' 但是这样做依然是不够的,比如我们无法实现对结果进行排序。
这包括在程序中途调用 Shell 命令来处理程序中的部分数据; 或在调用 Shell 命令后将其产生的结果交回 awk 程序(不需将结果暂存于某个文件)....在Shell的语法中, 可用 $1 代表第一个参数, $2 代表第二个参数. 当不确定命令行上的参数个数时, 可使用 $* 表之. awk命令行上可同时指定多个数据文件....如何读取命令行上的参数 大部分的应用程序都允许使用者在命令之后增加一些选择性的参数.执行awk时这些参数大部分用于指定数据文件文件名, 有时希望在程序中能从命令行上得到一些其它用途的数据....不断地从文件 datafile 中读取资料, 当$1等于0时,就停止该执行循环. l continue 指令 循环中的 statement 进行到一半时, 执行 continue 指令来略过循环中尚未执行的...因为 sort 完后的资料也将写到data.rpt,而该文件正为awk所打开使用(write)中, 故awk程式中应先关闭data.rpt.
的dispatch(分发)将读事件分发给对应的hanlder,handler读取命令,执行完后,生成一个 包含数据的写事件扔给Reacotr,让其再次分发给写事件的handler; 然后此hanler将数据写入...socket中的命令,然后执行; 写事件: redis服务端将命令执行结果 写入socket文件返回给客户端; 当与同一个客户端的socket 读事件 和写事件同时发生时,先执行读事件; 时间事件 在指定时间点运行的事件...对不合理的数据库大小进行调整; 2种事件在事件循环中的处理顺序 2种事件必须有先后顺序,无法抢占CPU资源,中断某个事件 当2种事件类型都有需要执行的事件时,先执行 文件事件(客户端的命令) 等执行完后...,再执行时间事件; 在事件循环中 文件时间的等待时间(epoll函数等待有就绪的socket时间) 由 距离到达时间最短的时间事件决定; 如 最近时间事件在2s后执行,则 文件时间的等待时间最多为2s;...; 此机制会在fork后,子进程访问内存时将内存空间指向父进程,也就是 子进程共享父进程的内存数据; 只有在 父或子进程对 内存数据进行写入时,才会触发将 父进程的内存空间中对应写的内存页数据复制一份给子进程
RAID 5具有和RAID0相近似的数据读取速度,只是多了一个奇偶校验信息,写入数据的速度比对单个磁盘进行写入操作稍慢。...day18 三剑客awk 1.awk使用方法及其参数 1.什么是awk? awk 是一种编程语言,用于在`linux/unix`下对文本和数据进行处理。...awk 数据可以来自标准输入、一个或多个文件,或其它命令的输出。 awk 通常是配合脚本进行使用, 是一个强大的文本处理工具。 2.awk怎么处理数据?...chattr +a ***.txt 只能写入 追加 不可删除 不可修改 chattr -a ***.txt 取消隐藏属性 chattr -i ***.txt 无法修改 无法删除 无敌的存在 给重要的文件增加...fdisk 适用于小于2TB的磁盘 fdisk只支持mbr分区表 parted 一般用于大于2TB的磁盘 gpt支持更大的磁盘且支持更多的分区 不写入内存直接生效 3.使用parted命令实战
/etc/rc.local具有开机执行权限,该方法的缺陷是在/etc/init.d/network服务重启后添加的路由会消失 方法2:增加文件,并写入如下需要添加的路由信息:vim /etc/sysconfig...,当前行所拥有的列数 NR,表示awk开始执行程序后读取的数据行数 FNR,awk当前读取的记录数,其变量值小于等于NR(比如当读取第二个文件时,FNR是从0开始重新计数,而NR不会)。...NR==FNR:用于在读取两个或两个以上的文件时,判断是不是在读取第一个文件。..."*.log" -print0 | xargs -0 ls -l find命令的参数 -print0(注意这是数字0),表示find在找到文件后在文件的结尾加上一个标记,不用默认的空格分隔文件。...使用这个方法还可以进一步判断登录的用户的权限是否足够,以实现带“权限”的下载。 这种方法的另外一个缺点是访客无法匿名下载,所以这个方法一般只用于论坛和社区网站。
底线命令模式 在命令模式下按:键就进入了底线命令模式,在底线命令模式中可以输入单个或多个字符的命令。...vim在文本文件中写入一首唐诗。...参数说明: 参数 说明 -F fs 指定以fs作为输入行的分隔符,awk 命令默认分隔符为空格或制表符 -f file 读取awk脚本 -v val=val 在执行处理过程之前,设置一个变量var,并给其设置初始值为...默认情况下,awk会从输入中读取一行文本,然后针对该行的数据执行程序脚本,但有时可能需要在处理数据前运行一些脚本命令,这就需要使用BEGIN关键字,BEGIN会在awsk读取数据前强制执行该关键字后指定的脚本命令...和BEGIN关键字相对应,END关键字允许我们指定一些脚本命令,awk会在读完数据后执行它们。 命令使用示例: 查看本机IP地址。
领取专属 10元无门槛券
手把手带您无忧上云