2025年yarn的常用命令(yarn top命令)

yarn的常用命令(yarn top命令)tbody tr td id artContent style max width 656px div style width 656px margin 0 padding 0 height 0 div lt td tr tbody

大家好,我是讯享网,很高兴认识大家。



 <tbody> <tr> <td id="artContent" style="max-width: 656px;"> <div style="width: 656px; margin: 0; padding: 0; height: 0;"></div> <p><strong>目录</strong></p><p style="margin: 0px 0px 2px;">一、进程管理&nbsp;</p><p style="margin: 0px 0px 2px;">二、系统信息&nbsp;</p><p style="margin: 0px 0px 2px;">三、关机 (系统的关机、重启以及登出 )&nbsp;</p><p style="margin: 0px 0px 2px;">四、文件和目录&nbsp;</p><p style="margin: 0px 0px 2px;">五、文件搜索&nbsp;</p><p style="margin: 0px 0px 2px;">六、挂载一个文件系统&nbsp;</p><p style="margin: 0px 0px 2px;">七、磁盘空间&nbsp;</p><p style="margin: 0px 0px 2px;">八、系统负载 -- top&nbsp;</p><p style="margin: 0px 0px 2px;">九、用户和群组&nbsp;</p><p style="margin: 0px 0px 2px;">十、文件的权限 - 使用 &quot;+&quot; 设置权限,使用 &quot;-&quot; 用于取消&nbsp;</p><p style="margin: 0px 0px 2px;">十一、文件的特殊属性 - 使用 &quot;+&quot; 设置权限,使用 &quot;-&quot; 用于取消&nbsp;</p><p style="margin: 0px 0px 2px;">十二、打包和压缩文件&nbsp;</p><p style="margin: 0px 0px 2px;">十三、OS包管理器</p><p style="margin: 0px 0px 2px 48px;">①、RPM 包 - (Fedora, Redhat及类似系统)&nbsp;</p><p style="margin: 0px 0px 2px 48px;">②、YUM 软件包升级器 - (Fedora, RedHat及类似系统)&nbsp;</p><p style="margin: 0px 0px 2px 48px;">③、DEB 包 (Debian, Ubuntu 以及类似系统)&nbsp;</p><p style="margin: 0px 0px 2px 48px;">④、APT 软件工具 (Debian, Ubuntu 以及类似系统)&nbsp;</p><p style="margin: 0px 0px 2px;">十四、文本查看、处理</p><p style="margin: 0px 0px 2px 48px;">①、查看文件内容&nbsp;</p><p style="margin: 0px 0px 2px 48px;">②、文本处理&nbsp;</p><p style="margin: 0px 0px 2px;">十五、vim专题&nbsp;</p><p style="margin: 0px 0px 2px 48px;">①、大小写转换</p><p style="margin: 0px 0px 2px 48px;">②、字符串处理专题</p><p style="margin: 0px 0px 2px 48px;">③、vi中文本操作</p><p style="margin: 0px 0px 2px 48px;">④、vim基础操作</p><p style="margin: 0px 0px 2px 48px;">⑤、shell脚本中的注释(单行注释/多行注释)</p><p style="margin: 0px 0px 2px;">十五、字符设置和文件格式转换&nbsp;</p><p style="margin: 0px 0px 2px;">十六、文件系统分析&nbsp;</p><p style="margin: 0px 0px 2px;">十七、初始化一个文件系统&nbsp;</p><p style="margin: 0px 0px 2px;">十八、SWAP文件系统&nbsp;</p><p style="margin: 0px 0px 2px;">十九、备份&nbsp;</p><p style="margin: 0px 0px 2px;">二十、光盘操作&nbsp;</p><p style="margin: 0px 0px 2px;">二一、网络 - (以太网和WIFI无线)&nbsp;</p><p style="margin: 0px 0px 2px;">二二、JPS工具</p><p style="margin: 0px 0px 2px;">二三、crontab调度器</p><p style="margin: 0px 0px 2px 48px;">①、语法</p><p style="margin: 0px 0px 2px;">二四、Shell编程相关</p><p style="margin-left: 40px;">①、内置变量</p><p style="margin: 0px 0px 2px 48px;">②、数据结构</p><p style="margin: 0px 0px 2px 96px;">1、数组</p><p style="margin: 0px 0px 2px 96px;">for i in in {1..10}; do rm -f hadoop-cmf-hive-HIVEMETASTORE-nn1.testhdp.com.log.out.$i;done</p><p style="margin: 0px 0px 2px 96px;">2、字典dict 或 Map</p><p style="margin: 0px 0px 2px 96px;">3、管道输出中执行下一条指令</p><p style="margin: 0px 0px 2px 96px;">4、循环、迭代逻辑控制</p><p style="margin: 0px 0px 2px 96px;">5、break 与 contine区别</p><p style="margin: 0px 0px 2px 96px;">6、大文件拆分处理</p><p style="margin: 0px 0px 2px 96px;">7、awk</p><p style="margin: 0px 0px 2px 96px;">8、实现脚本中切换用户并执行该用户相关的命令操作</p><p style="margin: 0px 0px 2px;">③、echo在shell中控制颜色&amp;闪烁显示</p><p style="margin: 0px 0px 2px 96px;">1、在shell中显示色彩</p><p style="margin: 0px 0px 2px;"></p><p style="margin: 0px 0px 2px;">二十五、程序开机自启动服务配置&nbsp;</p><p style="margin: 0px 0px 2px;">二十六、持续监控Linux命令的执行情况</p><hr><hr><p>Linux和windows相比,很多管控都需要用命令来操作。windows以直观的可视化的方式操作,特别适合在桌面端PC上操作执行相应的软件。</p><p>而Linux命令行方式的操作,特别是在服务器端编程、管理、运维方面,更加简单、短小、精悍。短短一行组合命令,即可完成在windows需要各种加工、整合的复杂高效的功能操作。&nbsp;</p><p><br> w 显示当前在线用户情况</p><p>my_adm pts/0 &nbsp; &nbsp;111.111.111.111 &nbsp; &nbsp;三15 &nbsp; 24:58 &nbsp; 2:51 &nbsp; 0.02s sshd: my_admin [priv]<br> root &nbsp; &nbsp; pts/3 &nbsp; &nbsp;111.111.111.112 &nbsp; &nbsp; &nbsp;13:15 &nbsp; &nbsp;3:47m &nbsp;0.35s &nbsp;0.35s -bash<br> my_adm pts/5 &nbsp; &nbsp;111.111.111.113 &nbsp; &nbsp;15:14 &nbsp; &nbsp;2.00s &nbsp;0.54s &nbsp;0.02s sshd: my_admin [priv]</p><p>pkill -kill -t pts/??&nbsp; 杀掉指定名字的进程,如上述的pts/5</p><p>传送门:Linux中Kill进程的N种方法</p><p><br> arch 显示机器的处理器架构(1)&nbsp;<br> uname -m 显示机器的处理器架构(2)&nbsp;<br> uname -r 显示正在使用的内核版本&nbsp;<br> dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)&nbsp;<br> hdparm -i /dev/hda 罗列一个磁盘的架构特性&nbsp;<br> hdparm -tT /dev/sda 在磁盘上执行测试性读取操作&nbsp;<br> cat /proc/cpuinfo 显示CPU info的信息&nbsp;<br> cat /proc/interrupts 显示中断&nbsp;<br> cat /proc/meminfo 校验内存使用&nbsp;<br> cat /proc/swaps 显示哪些swap被使用&nbsp;<br> cat /proc/version 显示内核的版本&nbsp;<br> cat /proc/net/dev 显示网络适配器及统计&nbsp;<br> cat /proc/mounts 显示已加载的文件系统&nbsp;<br> lspci -tv 罗列 PCI 设备&nbsp;<br> lsusb -tv 显示 USB 设备&nbsp;<br> date 显示系统日期&nbsp;</p><p>ctime=`date +%Y-%m-%dT%k:%M:%S` #格式化时间,如2018-01-13T11:09:19, 注意%k 与 %H的区别,前者返回9,后者返回09.</p><p>YESTERDAY=`date +%Y-%m-%d -d &quot;-1 days&quot;` 获取昨日日期<br> cal 2007 显示2007年的日历表&nbsp;<br> date 0.00 设置日期和时间 - 月日时分年.秒&nbsp;<br> clock -w 将时间修改保存到 BIOS&nbsp;</p><p>查询网关地址(如将centos服务器网络获取类型由dhcp切换为static时,需要获取到ip及网关信息进行固化配置时会用到,如本地ip为10.34.0.123,则通过如下命令查询到网关为第一个3.254):</p><pre>[root@file-server&nbsp;~]#&nbsp;netstat&nbsp;-rnKernel&nbsp;IP&nbsp;routing&nbsp;tableDestination&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Gateway&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Genmask&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Flags&nbsp;&nbsp;&nbsp;MSS&nbsp;Window&nbsp;&nbsp;irtt&nbsp;Iface0.0.0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;10.34.3.254&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UG&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;enp3g010.34.0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;255.255.252.0&nbsp;&nbsp;&nbsp;U&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;enp3g0192.168.1.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0.0.0.0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;255.255.255.0&nbsp;&nbsp;&nbsp;U&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0&nbsp;virbr0</pre> <p>CentOS / RedHat 系列,查看操作系统信息(如果没有lsb_release命令, 使用&quot;yum install redhat-lsb&quot;安装):</p><pre>[root@server-test&nbsp;online]#&nbsp;lsb_release&nbsp;-aLSB&nbsp;Version: :core-4.1-amd64:core-4.1-noarchDistributor&nbsp;ID: CentOSDescription: CentOS&nbsp;Linux&nbsp;release&nbsp;7.5.1804&nbsp;(Core)Release: 7.5.1804Codename: Core</pre><p>shutdown -h now 关闭系统(1)&nbsp;<br> init 0 关闭系统(2)&nbsp;<br> telinit 0 关闭系统(3)&nbsp;<br> shutdown -h hours:minutes &amp; 按预定时间关闭系统&nbsp;<br> shutdown -c 取消按预定时间关闭系统&nbsp;<br> shutdown -r now 重启(1)&nbsp;<br> reboot 重启(2)&nbsp;<br> logout 注销&nbsp;</p><p>cd /home 进入 &#39;/ home&#39; 目录&#39;&nbsp;<br> <span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 0);">cd .. 返回上一级目录&nbsp;</span><br> cd http://www.360doc.com/content/24/0807/.. 返回上两级目录&nbsp;<br> cd 进入个人的主目录&nbsp;<br> cd ~user1 进入个人的主目录&nbsp;<br> cd - 返回上次所在的目录&nbsp;<br> <span style="background-color: rgb(255, 255, 0);">pwd 显示工作路径&nbsp;<br> ls 查看目录中的文件&nbsp;</span><br> ls -F 查看目录中的文件&nbsp;<br> ls -l 显示文件和目录的详细资料&nbsp;<br> ls -a 显示隐藏文件&nbsp;<br> ls *[0-9]* 显示包含数字的文件名和目录名&nbsp;<br> tree 显示文件和目录由根目录开始的树形结构(1)&nbsp;<br> lstree 显示文件和目录由根目录开始的树形结构(2)&nbsp;<br> <span style="background-color: rgb(255, 255, 0);">mkdir dir1 创建一个叫做 &#39;dir1&#39; 的目录&#39;&nbsp;<br> mkdir dir1 dir2 同时创建两个目录&nbsp;</span><br> mkdir -p /tmp/dir1/dir2 创建一个目录树&nbsp;<br> <span style="background-color: rgb(255, 255, 0);">rm -f file1 删除一个叫做 &#39;file1&#39; 的文件&#39;&nbsp;<br> rmdir dir1 删除一个叫做 &#39;dir1&#39; 的目录&#39;&nbsp;</span><br> <span style="background-color: rgb(255, 255, 0);">rm -rf dir1 删除一个叫做 &#39;dir1&#39; 的目录并同时删除其内容&nbsp;</span><br> rm -rf dir1 dir2 同时删除两个目录及它们的内容&nbsp;<br> mv dir1 new_dir 重命名/移动 一个目录&nbsp;<br> <span style="background-color: rgb(255, 255, 0);">cp file1 file2 复制一个文件&nbsp;</span><br> cp dir/* . 复制一个目录下的所有文件到当前工作目录&nbsp;<br> cp -a /tmp/dir1 . 复制一个目录到当前工作目录&nbsp;<br> cp -a dir1 dir2 复制一个目录&nbsp;<br> ln -s file1 lnk1 创建一个指向文件或目录的软链接&nbsp;<br> ln file1 lnk1 创建一个指向文件或目录的物理链接&nbsp;<br> touch -t 0 file1 修改一个文件或目录的时间戳 - (YYMMDDhhmm)&nbsp;<br> file file1 outputs the mime type of the file as text&nbsp;<br> iconv -l 列出已知的编码&nbsp;<br> iconv -f fromEncoding -t toEncoding inputFile &gt; outputFile creates a new from the given input file by assuming it is encoded in fromEncoding and converting it to toEncoding.&nbsp;<br> find . -maxdepth 1 -name *.jpg -print -exec convert &quot;{}&quot; -resize 80x60 &quot;thumbs/{}&quot; ; batch resize files in the current directory and send them to a thumbnails directory (requires convert from Imagemagick)&nbsp;<br></p><p><span style="background-color: rgb(255, 255, 0);">find / -name file1 从 &#39;/&#39; 开始进入根文件系统搜索文件和目录&nbsp;</span><br> find / -user user1 搜索属于用户 &#39;user1&#39; 的文件和目录&nbsp;<br> find /home/user1 -name *.bin 在目录 &#39;/ home/user1&#39; 中搜索带有&#39;.bin&#39; 结尾的文件&nbsp;<br> find /usr/bin -type f -atime +100 搜索在过去100天内未被使用过的执行文件&nbsp;<br> find /usr/bin -type f -mtime -10 搜索在10天内被创建或者修改过的文件&nbsp;<br> find / -name *.rpm -exec chmod 755 &#39;{}&#39; ; 搜索以 &#39;.rpm&#39; 结尾的文件并定义其权限 ^&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; find /tmp -name *.hprof -exec rm -f {} ;批量删除java堆栈.hprof文件<br> find / -xdev -name *.rpm 搜索以 &#39;.rpm&#39; 结尾的文件,忽略光驱、捷盘等可移动设备&nbsp;<br> locate *.ps 寻找以 &#39;.ps&#39; 结尾的文件 - 先运行 &#39;updatedb&#39; 命令&nbsp;<br> whereis halt 显示一个二进制文件、源码或man的位置&nbsp;<br> which halt 显示一个二进制文件或可执行文件的完整路径&nbsp;</p><p>grep -rn &quot;query_string&quot; *&nbsp; Linux目录下全局查找所有文件中是否包含指定字符串(-r:递归;-n:显示行号)</p><p>mount /dev/hda2 /mnt/hda2 挂载一个叫做hda2的盘 - 确定目录 &#39;/ mnt/hda2&#39; 已经存在&nbsp;<br> umount /dev/hda2 卸载一个叫做hda2的盘 - 先从挂载点 &#39;/ mnt/hda2&#39; 退出&nbsp;<br> fuser -km /mnt/hda2 当设备繁忙时强制卸载&nbsp;<br> umount -n /mnt/hda2 运行卸载操作而不写入 /etc/mtab 文件- 当文件为只读或当磁盘写满时非常有用&nbsp;<br> mount /dev/fd0 /mnt/floppy 挂载一个软盘&nbsp;<br> mount /dev/cdrom /mnt/cdrom 挂载一个cdrom或dvdrom&nbsp;<br> mount /dev/hdc /mnt/cdrecorder 挂载一个cdrw或dvdrom&nbsp;<br> mount /dev/hdb /mnt/cdrecorder 挂载一个cdrw或dvdrom&nbsp;<br> mount -o loop file.iso /mnt/cdrom 挂载一个文件或ISO镜像文件&nbsp;<br> mount -t vfat /dev/hda5 /mnt/hda5 挂载一个Windows FAT32文件系统&nbsp;<br> mount /dev/sda1 /mnt/usbdisk 挂载一个usb 捷盘或闪存设备&nbsp;<br> mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share 挂载一个windows网络共享&nbsp;<br></p><p>df -h 显示已经挂载的分区列表&nbsp;<br> ls -lSr |more 以尺寸大小排列文件和目录&nbsp;<br> du -sh dir1 估算目录 &#39;dir1&#39; 已经使用的磁盘空间&#39;&nbsp;<br> du -sk * | sort -rn 以容量大小为依据依次显示文件和目录的大小&nbsp;<br> rpm -q -a --qf &#39;%10{SIZE}t%{NAME}n&#39; | sort -k1,1n 以大小为依据依次显示已安装的rpm包所使用的空间 (fedora, redhat类系统)&nbsp;<br> dpkg-query -W -f=&#39;${Installed-Size;10}t${Package}n&#39; | sort -k1,1n 以大小为依据显示已安装的deb包所使用的空间 (ubuntu, debian类系统)&nbsp;</p><p>hdfs dfs -du /dw/default | sort -rn | head -n 10&nbsp;| awk &#39;{printf(&quot;%.2f %.2f %s 

讯享网

&quot;,\(1/1024/1024/1024,&quot; &quot;\)2/1024/1024/1024,&quot; &quot;\(3)}&#39;&nbsp; 查询hdfs文件系统中表文件大小,按从大到小的顺序排列(取前10列),单位GB</p><p>top -d 20 -p 1303&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;将进程号1303的系统负载,每隔20秒刷新一次。英文状态下,按住c键,将展示进行的详细环境信息,对于java程序调试来说,非常友好。&nbsp;<br> top -d 20 -n 3 -b &gt; test.txt&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 每隔20秒,一共执行3次, 将统计结果导入到test.txt文件中。&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;</p><p>top命令显示不全,添加-w参数:</p><pre>命令为:top&nbsp;-b&nbsp;-n&nbsp;1-b为&nbsp;批处理模式,-n为刷新的次数发现信息显示不全,最后man&nbsp;top,加一个参数w后,完全显示top&nbsp;-b&nbsp;-n&nbsp;1&nbsp;-w&nbsp;512如果需要显示完整的COMMAND命令,使用top&nbsp;-c参数top&nbsp;-c&nbsp;-bw&nbsp;500查看完整进程名,&nbsp;按500个字符长度查看(这样基本可以查看到完整的命令)</pre> <p>其他参数列表,官方解释:&nbsp;</p><pre>1.&nbsp;COMMAND-LINE&nbsp;OptionsThe&nbsp;command-line&nbsp;syntax&nbsp;for&nbsp;top&nbsp;consists&nbsp;of:-hv|-bcHiOSs&nbsp;-d&nbsp;secs&nbsp;-n&nbsp;max&nbsp;-u|U&nbsp;user&nbsp;-p&nbsp;pid&nbsp;-o&nbsp;fld&nbsp;-w&nbsp;[cols]The&nbsp;typically&nbsp;mandatory&nbsp;switch&nbsp;(&#39;-&#39;)&nbsp;and&nbsp;even&nbsp;whitespace&nbsp;are&nbsp;completely&nbsp;optional.-h&nbsp;|&nbsp;-v&nbsp;&nbsp;:Help/VersionShow&nbsp;library&nbsp;version&nbsp;and&nbsp;the&nbsp;usage&nbsp;prompt,&nbsp;then&nbsp;quit.-b&nbsp;&nbsp;:Batch-mode&nbsp;operationStarts&nbsp;top&nbsp;in&nbsp;Batch&nbsp;mode,&nbsp;which&nbsp;could&nbsp;be&nbsp;useful&nbsp;for&nbsp;sending&nbsp;output&nbsp;from&nbsp;top&nbsp;to&nbsp;other&nbsp;programs&nbsp;or&nbsp;to&nbsp;a&nbsp;file.&nbsp;&nbsp;In&nbsp;this&nbsp;mode,&nbsp;top&nbsp;will&nbsp;not&nbsp;accept&nbsp;input&nbsp;and&nbsp;runs&nbsp;until&nbsp;the&nbsp;iterations&nbsp;limit&nbsp;you&#39;ve&nbsp;set&nbsp;with&nbsp;the&nbsp;`-n&#39;&nbsp;command-line&nbsp;option&nbsp;or&nbsp;until&nbsp;killed.-c&nbsp;&nbsp;:Command-line/Program-name&nbsp;toggleStarts&nbsp;top&nbsp;with&nbsp;the&nbsp;last&nbsp;remembered&nbsp;`c&#39;&nbsp;state&nbsp;reversed.&nbsp;&nbsp;Thus,&nbsp;if&nbsp;top&nbsp;was&nbsp;displaying&nbsp;command&nbsp;lines,&nbsp;now&nbsp;that&nbsp;field&nbsp;will&nbsp;show&nbsp;program&nbsp;names,&nbsp;and&nbsp;visa&nbsp;versa.&nbsp;&nbsp;See&nbsp;the&nbsp;`c&#39;&nbsp;interactive&nbsp;command&nbsp;for&nbsp;additional&nbsp;information.-d&nbsp;&nbsp;:Delay-time&nbsp;interval&nbsp;as:&nbsp;&nbsp;-d&nbsp;ss.t&nbsp;(secs.tenths)Specifies&nbsp;the&nbsp;delay&nbsp;between&nbsp;screen&nbsp;updates,&nbsp;and&nbsp;overrides&nbsp;the&nbsp;corresponding&nbsp;value&nbsp;in&nbsp;one&#39;s&nbsp;personal&nbsp;configuration&nbsp;file&nbsp;or&nbsp;the&nbsp;startup&nbsp;default.&nbsp;&nbsp;Later&nbsp;this&nbsp;can&nbsp;be&nbsp;changed&nbsp;with&nbsp;the&nbsp;`d&#39;&nbsp;or&nbsp;`s&#39;&nbsp;interactive&nbsp;commands.Fractional&nbsp;&nbsp;seconds&nbsp;&nbsp;are&nbsp;honored,&nbsp;but&nbsp;a&nbsp;negative&nbsp;number&nbsp;is&nbsp;not&nbsp;allowed.&nbsp;&nbsp;In&nbsp;all&nbsp;cases,&nbsp;however,&nbsp;such&nbsp;changes&nbsp;are&nbsp;prohibited&nbsp;if&nbsp;top&nbsp;is&nbsp;running&nbsp;in&nbsp;Secure&nbsp;mode,&nbsp;except&nbsp;for&nbsp;root&nbsp;(unless&nbsp;the&nbsp;`s&#39;&nbsp;command-line&nbsp;option&nbsp;was&nbsp;used).&nbsp;&nbsp;For&nbsp;additional&nbsp;information&nbsp;onSecure&nbsp;mode&nbsp;see&nbsp;topic&nbsp;6a.&nbsp;SYSTEM&nbsp;Configuration&nbsp;File.-H&nbsp;&nbsp;:Threads-mode&nbsp;operationInstructs&nbsp;top&nbsp;to&nbsp;display&nbsp;individual&nbsp;threads.&nbsp;&nbsp;Without&nbsp;this&nbsp;command-line&nbsp;option&nbsp;a&nbsp;summation&nbsp;of&nbsp;all&nbsp;threads&nbsp;in&nbsp;each&nbsp;process&nbsp;is&nbsp;shown.&nbsp;&nbsp;Later&nbsp;this&nbsp;can&nbsp;be&nbsp;changed&nbsp;with&nbsp;the&nbsp;`H&#39;&nbsp;interactive&nbsp;command.-i&nbsp;&nbsp;:Idle-process&nbsp;toggleStarts&nbsp;top&nbsp;with&nbsp;the&nbsp;last&nbsp;remembered&nbsp;`i&#39;&nbsp;state&nbsp;reversed.&nbsp;&nbsp;When&nbsp;this&nbsp;toggle&nbsp;is&nbsp;Off,&nbsp;tasks&nbsp;that&nbsp;have&nbsp;not&nbsp;used&nbsp;any&nbsp;CPU&nbsp;since&nbsp;the&nbsp;last&nbsp;update&nbsp;will&nbsp;not&nbsp;be&nbsp;displayed.&nbsp;&nbsp;For&nbsp;additional&nbsp;information&nbsp;regarding&nbsp;this&nbsp;toggle&nbsp;see&nbsp;topic&nbsp;4c.&nbsp;TASK&nbsp;AREA&nbsp;Commands,&nbsp;SIZE.-n&nbsp;&nbsp;:Number-of-iterations&nbsp;limit&nbsp;as:&nbsp;&nbsp;-n&nbsp;numberSpecifies&nbsp;the&nbsp;maximum&nbsp;number&nbsp;of&nbsp;iterations,&nbsp;or&nbsp;frames,&nbsp;top&nbsp;should&nbsp;produce&nbsp;before&nbsp;ending.-o&nbsp;&nbsp;:Override-sort-field&nbsp;as:&nbsp;&nbsp;-o&nbsp;fieldnameSpecifies&nbsp;the&nbsp;name&nbsp;of&nbsp;the&nbsp;field&nbsp;on&nbsp;which&nbsp;tasks&nbsp;will&nbsp;be&nbsp;sorted,&nbsp;independent&nbsp;of&nbsp;what&nbsp;is&nbsp;reflected&nbsp;in&nbsp;the&nbsp;configuration&nbsp;file.&nbsp;&nbsp;You&nbsp;can&nbsp;prepend&nbsp;a&nbsp;`+&#39;&nbsp;or&nbsp;`-&#39;&nbsp;to&nbsp;the&nbsp;field&nbsp;name&nbsp;to&nbsp;also&nbsp;override&nbsp;the&nbsp;sort&nbsp;direction.&nbsp;&nbsp;A&nbsp;leading&nbsp;`+&#39;&nbsp;will&nbsp;force&nbsp;sorting&nbsp;&nbsp;high&nbsp;&nbsp;tolow,&nbsp;whereas&nbsp;a&nbsp;`-&#39;&nbsp;will&nbsp;ensure&nbsp;a&nbsp;low&nbsp;to&nbsp;high&nbsp;ordering.This&nbsp;option&nbsp;exists&nbsp;primarily&nbsp;to&nbsp;support&nbsp;automated/scripted&nbsp;batch&nbsp;mode&nbsp;operation.-O&nbsp;&nbsp;:Output-field-namesThis&nbsp;option&nbsp;acts&nbsp;as&nbsp;a&nbsp;form&nbsp;of&nbsp;help&nbsp;for&nbsp;the&nbsp;above&nbsp;-o&nbsp;option.&nbsp;&nbsp;It&nbsp;will&nbsp;cause&nbsp;top&nbsp;to&nbsp;print&nbsp;each&nbsp;of&nbsp;the&nbsp;available&nbsp;field&nbsp;names&nbsp;on&nbsp;a&nbsp;separate&nbsp;line,&nbsp;then&nbsp;quit.&nbsp;&nbsp;Such&nbsp;names&nbsp;are&nbsp;subject&nbsp;to&nbsp;nls&nbsp;translation.-p&nbsp;&nbsp;:Monitor-PIDs&nbsp;mode&nbsp;as:&nbsp;&nbsp;-pN1&nbsp;-pN2&nbsp;...&nbsp;&nbsp;or&nbsp;&nbsp;-pN1,N2,N3&nbsp;...Monitor&nbsp;only&nbsp;processes&nbsp;with&nbsp;specified&nbsp;process&nbsp;IDs.&nbsp;&nbsp;This&nbsp;option&nbsp;can&nbsp;be&nbsp;given&nbsp;up&nbsp;to&nbsp;20&nbsp;times,&nbsp;or&nbsp;you&nbsp;can&nbsp;provide&nbsp;a&nbsp;comma&nbsp;delimited&nbsp;list&nbsp;with&nbsp;up&nbsp;to&nbsp;20&nbsp;pids.&nbsp;&nbsp;Co-mingling&nbsp;both&nbsp;approaches&nbsp;is&nbsp;permitted.A&nbsp;pid&nbsp;value&nbsp;of&nbsp;zero&nbsp;will&nbsp;be&nbsp;treated&nbsp;as&nbsp;the&nbsp;process&nbsp;id&nbsp;of&nbsp;the&nbsp;top&nbsp;program&nbsp;itself&nbsp;once&nbsp;it&nbsp;is&nbsp;running.This&nbsp;is&nbsp;a&nbsp;command-line&nbsp;option&nbsp;only&nbsp;and&nbsp;should&nbsp;you&nbsp;wish&nbsp;to&nbsp;return&nbsp;to&nbsp;normal&nbsp;operation,&nbsp;it&nbsp;is&nbsp;not&nbsp;necessary&nbsp;to&nbsp;quit&nbsp;and&nbsp;restart&nbsp;top&nbsp;&nbsp;--&nbsp;&nbsp;just&nbsp;issue&nbsp;any&nbsp;of&nbsp;these&nbsp;interactive&nbsp;commands:&nbsp;`=&#39;,&nbsp;`u&#39;&nbsp;or&nbsp;`U&#39;.The&nbsp;`p&#39;,&nbsp;`u&#39;&nbsp;and&nbsp;`U&#39;&nbsp;command-line&nbsp;options&nbsp;are&nbsp;mutually&nbsp;exclusive.-s&nbsp;&nbsp;:Secure-mode&nbsp;operationStarts&nbsp;top&nbsp;with&nbsp;secure&nbsp;mode&nbsp;forced,&nbsp;even&nbsp;for&nbsp;root.&nbsp;&nbsp;This&nbsp;mode&nbsp;is&nbsp;far&nbsp;better&nbsp;controlled&nbsp;through&nbsp;the&nbsp;system&nbsp;configuration&nbsp;file&nbsp;(see&nbsp;topic&nbsp;6.&nbsp;FILES).-S&nbsp;&nbsp;:Cumulative-time&nbsp;toggleStarts&nbsp;&nbsp;top&nbsp;&nbsp;with&nbsp;&nbsp;the&nbsp;&nbsp;last&nbsp;&nbsp;remembered&nbsp;`S&#39;&nbsp;state&nbsp;reversed.&nbsp;&nbsp;When&nbsp;Cumulative&nbsp;time&nbsp;mode&nbsp;is&nbsp;On,&nbsp;each&nbsp;process&nbsp;is&nbsp;listed&nbsp;with&nbsp;the&nbsp;cpu&nbsp;time&nbsp;that&nbsp;it&nbsp;and&nbsp;its&nbsp;dead&nbsp;children&nbsp;have&nbsp;used.&nbsp;&nbsp;See&nbsp;the&nbsp;`S&#39;&nbsp;interactive&nbsp;command&nbsp;for&nbsp;additional&nbsp;information&nbsp;regarding&nbsp;thismode.-u&nbsp;|&nbsp;-U&nbsp;&nbsp;:User-filter-mode&nbsp;as:&nbsp;&nbsp;-u&nbsp;|&nbsp;-U&nbsp;number&nbsp;or&nbsp;nameDisplay&nbsp;only&nbsp;processes&nbsp;with&nbsp;a&nbsp;user&nbsp;id&nbsp;or&nbsp;user&nbsp;name&nbsp;matching&nbsp;that&nbsp;given.&nbsp;&nbsp;The&nbsp;`-u&#39;&nbsp;option&nbsp;matches&nbsp;on&nbsp;&nbsp;effective&nbsp;user&nbsp;whereas&nbsp;the&nbsp;`-U&#39;&nbsp;option&nbsp;matches&nbsp;on&nbsp;any&nbsp;user&nbsp;(real,&nbsp;effective,&nbsp;saved,&nbsp;or&nbsp;filesystem).Prepending&nbsp;an&nbsp;exclamation&nbsp;point&nbsp;(&#39;!&#39;)&nbsp;to&nbsp;the&nbsp;user&nbsp;id&nbsp;or&nbsp;name&nbsp;instructs&nbsp;top&nbsp;to&nbsp;display&nbsp;only&nbsp;processes&nbsp;with&nbsp;users&nbsp;not&nbsp;matching&nbsp;the&nbsp;one&nbsp;provided.The&nbsp;`p&#39;,&nbsp;`u&#39;&nbsp;and&nbsp;`U&#39;&nbsp;command-line&nbsp;options&nbsp;are&nbsp;mutually&nbsp;exclusive.-w&nbsp;&nbsp;:Output-width-override&nbsp;as:&nbsp;&nbsp;-w&nbsp;[&nbsp;number&nbsp;]In&nbsp;Batch&nbsp;mode,&nbsp;when&nbsp;used&nbsp;without&nbsp;an&nbsp;argument&nbsp;top&nbsp;will&nbsp;format&nbsp;output&nbsp;using&nbsp;the&nbsp;COLUMNS=&nbsp;and&nbsp;LINES=&nbsp;environment&nbsp;variables,&nbsp;if&nbsp;set.&nbsp;&nbsp;Otherwise,&nbsp;width&nbsp;will&nbsp;be&nbsp;fixed&nbsp;at&nbsp;the&nbsp;maximum&nbsp;512&nbsp;columns.&nbsp;&nbsp;With&nbsp;an&nbsp;argument,&nbsp;output&nbsp;width&nbsp;can&nbsp;be&nbsp;decreased&nbsp;or&nbsp;&nbsp;increased(up&nbsp;to&nbsp;512)&nbsp;but&nbsp;the&nbsp;number&nbsp;of&nbsp;rows&nbsp;is&nbsp;considered&nbsp;unlimited.In&nbsp;normal&nbsp;display&nbsp;mode,&nbsp;when&nbsp;used&nbsp;without&nbsp;an&nbsp;argument&nbsp;top&nbsp;will&nbsp;attempt&nbsp;to&nbsp;format&nbsp;output&nbsp;using&nbsp;the&nbsp;COLUMNS=&nbsp;and&nbsp;LINES=&nbsp;environment&nbsp;variables,&nbsp;if&nbsp;set.&nbsp;&nbsp;With&nbsp;an&nbsp;argument,&nbsp;output&nbsp;width&nbsp;can&nbsp;only&nbsp;be&nbsp;decreased,&nbsp;not&nbsp;increased.&nbsp;&nbsp;Whether&nbsp;using&nbsp;environment&nbsp;vari‐ables&nbsp;or&nbsp;an&nbsp;argument&nbsp;with&nbsp;-w,&nbsp;when&nbsp;not&nbsp;in&nbsp;Batch&nbsp;mode&nbsp;actual&nbsp;terminal&nbsp;dimensions&nbsp;can&nbsp;never&nbsp;be&nbsp;exceeded.Note:&nbsp;Without&nbsp;the&nbsp;use&nbsp;of&nbsp;this&nbsp;command-line&nbsp;option,&nbsp;output&nbsp;width&nbsp;is&nbsp;always&nbsp;based&nbsp;on&nbsp;the&nbsp;terminal&nbsp;at&nbsp;which&nbsp;top&nbsp;was&nbsp;invoked&nbsp;whether&nbsp;or&nbsp;not&nbsp;in&nbsp;Batch&nbsp;mode.</pre><p>groupadd group_name 创建一个新用户组&nbsp;<br> groupdel group_name 删除一个用户组&nbsp;<br> groupmod -n new_group_name old_group_name 重命名一个用户组&nbsp;<br> useradd -c &quot;Name Surname &quot; -g admin -d /home/user1 -s /bin/bash user1 创建一个属于 &quot;admin&quot; 用户组的用户&nbsp;<br> useradd user1 创建一个新用户&nbsp;<br> userdel -r user1 删除一个用户 ( &#39;-r&#39; 排除主目录)&nbsp;<br> usermod -c &quot;User FTP&quot; -g system -d /ftp/user1 -s /bin/nologin user1 修改用户属性&nbsp;<br> passwd 修改口令&nbsp;<br> passwd user1 修改一个用户的口令 (只允许root执行)&nbsp;<br> chage -E 2005-12-31 user1 设置用户口令的失效期限&nbsp;<br> pwck 检查 &#39;/etc/passwd&#39; 的文件格式和语法修正以及存在的用户&nbsp;<br> grpck 检查 &#39;/etc/passwd&#39; 的文件格式和语法修正以及存在的群组&nbsp;<br> newgrp group_name 登陆进一个新的群组以改变新创建文件的预设群组&nbsp;</p><p>案例 1:</p><pre>&nbsp;1-创建用户、2-追加附加组、3-删除附加组#&nbsp;1useradd&nbsp;san_zhang&nbsp;-mpasswd&nbsp;san_zhang&nbsp;#&nbsp;从管道输出中修改密码(如果非root且可以转为root,请使用sudo)echo&nbsp;&nbsp;|&nbsp;sudo&nbsp;passwd&nbsp;--stdin&nbsp;san_zhang#-----------------------------------------------------#&nbsp;2usermod&nbsp;-aG&nbsp;hdfs&nbsp;san_zhang&nbsp;(将san_zhang追加到附加组hdfs中(可以添加多个附加组,多个组之间用空格隔开,如&quot;hdfs,yarn,spark&quot;),其默认在san_zhang中)此时查看其所在的用户组,可以发现其所属组为san_zhang,附加组为hdfs,如下:id&nbsp;san_zhanguid=1001(san_zhang)&nbsp;gid=1001(san_zhang)&nbsp;groups=1001(san_zhang),992(hdfs)引申:如果上一步顺序写错,误将hdfs追加到san_zhang用户组中,如使用了如下错误的命令:usermod&nbsp;-aG&nbsp;san_zhang&nbsp;hdfs则此时查看hdfs所属组,就会发现其也在san_zhang组下了id&nbsp;hdfsuid=995(hdfs)&nbsp;gid=992(hdfs)&nbsp;groups=992(hdfs),994(hadoop),1001(san_zhang)这时再查看san_zhang组,就会看到误加入的hdfs用户了groups&nbsp;san_zhangsan_zhang&nbsp;:&nbsp;san_zhang&nbsp;hdfs#-----------------------------------------------------#&nbsp;3gpasswd&nbsp;-d&nbsp;hdfs&nbsp;san_zhang&nbsp;(从san_zhang组中删除误加入的hdfs用户)执行后的日志:Removing&nbsp;user&nbsp;hdfs&nbsp;from&nbsp;group&nbsp;san_zhang#-----------------------------------------------------</pre> <p>案例 2:</p><p>统计某个分组下有哪些用户</p><pre>[root@cdh01&nbsp;~]#&nbsp;grep&nbsp;hdfs&nbsp;/etc/grouphdfs:x:993:[root@cdh01&nbsp;~]#&nbsp;awk&nbsp;-F&nbsp;:&nbsp;&#39;{print&nbsp;\)1,\(4}&#39;&nbsp;/etc/passwd&nbsp;|&nbsp;grep&nbsp;&#39;993&#39;hdfs&nbsp;993</pre> <p>ls -lh 显示权限&nbsp;<br> ls /tmp | pr -T5 -W\)COLUMNS 将终端划分成5栏显示&nbsp;
chmod ugo+rwx directory1 设置目录的所有人(u)、群组(g)以及其他人(o)以读(r )、写(w)和执行(x)的权限&nbsp;
chmod go-rwx directory1 删除群组(g)与其他人(o)对目录的读写执行权限&nbsp;
chown user1 file1 改变一个文件的所有人属性&nbsp;
chown -R user1 directory1 改变一个目录的所有人属性并同时改变改目录下所有文件的属性&nbsp;
chgrp group1 file1 改变文件的群组&nbsp;
chown user1:group1 file1 改变一个文件的所有人和群组属性&nbsp;
find / -perm -u+s 罗列一个系统中所有使用了SUID控制的文件&nbsp;
chmod u+s /bin/file1 设置一个二进制文件的 SUID 位 - 运行该文件的用户也被赋予和所有者同样的权限&nbsp;
chmod u-s /bin/file1 禁用一个二进制文件的 SUID位&nbsp;
chmod g+s /home/public 设置一个目录的SGID 位 - 类似SUID ,不过这是针对目录的&nbsp;
chmod g-s /home/public 禁用一个目录的 SGID 位&nbsp;
chmod o+t /home/public 设置一个文件的 STIKY 位 - 只允许合法所有人删除文件&nbsp;
chmod o-t /home/public 禁用一个目录的 STIKY 位&nbsp;







































rpm -e –nodeps rpm -qa | grep clickhouse 批量删除所有 ClickHouse 已安装的 rpm 包,并忽略彼此间的依赖关系
rpm -qa 显示系统中所有已经安装的rpm包&nbsp;
rpm -qa | grep httpd 显示所有名称中包含 &quot;httpd&quot; 字样的rpm包&nbsp;
rpm -qi package_name 获取一个已安装包的特殊信息&nbsp;
rpm -qg &quot;System Environment/Daemons&quot; 显示一个组件的rpm包&nbsp;
rpm -ql package_name 显示一个已经安装的rpm包提供的文件列表&nbsp;
rpm -qc package_name 显示一个已经安装的rpm包提供的配置文件列表&nbsp;
rpm -q package_name –whatrequires 显示与一个rpm包存在依赖关系的列表&nbsp;
rpm -q package_name –whatprovides 显示一个rpm包所占的体积&nbsp;
rpm -q package_name –scripts 显示在安装/删除期间所执行的脚本l&nbsp;
rpm -q package_name –changelog 显示一个rpm包的修改历史&nbsp;
rpm -qf /etc/httpd/conf/httpd.conf 确认所给的文件由哪个rpm包所提供&nbsp;
rpm -qp package.rpm -l 显示由一个尚未安装的rpm包提供的文件列表&nbsp;
rpm –import /media/cdrom/RPM-GPG-KEY 导入公钥数字证书&nbsp;
rpm –checksig package.rpm 确认一个rpm包的完整性&nbsp;
rpm -qa gpg-pubkey 确认已安装的所有rpm包的完整性&nbsp;
rpm -V package_name 检查文件尺寸、 许可、类型、所有者、群组、MD5检查以及最后修改时间&nbsp;
rpm -Va 检查系统中所有已安装的rpm包- 小心使用&nbsp;
rpm -Vp package.rpm 确认一个rpm包还未安装&nbsp;
rpm2cpio package.rpm | cpio –extract –make-directories bin 从一个rpm包运行可执行文件&nbsp;
rpm -ivh /usr/src/redhat/RPMS/arch/package.rpm 从一个rpm源码安装一个构建好的包&nbsp;
rpmbuild –rebuild package_name.src.rpm 从一个rpm源码构建一个 rpm 包&nbsp;





























































grep -E ‘string_1|string_2’&nbsp;/var/log/test.log&nbsp;在日志中同时查询包含&nbsp;string_1或包含string_2的记录

讯享网#&nbsp;匹配redis中,&nbsp;field&nbsp;中包含以1到4位数字开头,以&quot;_已下单&quot;结尾的字符,&nbsp;并将其&nbsp;value&nbsp;值带出来(-A1)redis-cli&nbsp;-h&nbsp;111.111.111.111&nbsp;-p&nbsp;7001&nbsp;-c&nbsp;-a&nbsp;\({PASSWORD}&nbsp;--raw&nbsp;hgetall&nbsp;2022-03-24_ORDER_STAT&nbsp;|&nbsp;grep&nbsp;-E&nbsp;&quot;^[[:digit:]]{1,4}_已下单&quot;&nbsp;-A1</pre> <p>grep&nbsp;-Hnr&nbsp;docker&nbsp;* 在本层或子文件夹里递归查找包含指定字符“docker”的文件,并显示文件名+行号,如果精确匹配文本,加o参数。参数含义:(H:每次匹配时将文件名打印出来;n:打印字符串所在的行号;r:递归查找;o:精确匹配到单词,多一个字符都不行)</p><p>“grep显示匹配行的上下行内容”专题:</p><pre>grep&nbsp;-A2&nbsp;2&nbsp;test.txt&nbsp;&nbsp;返回匹配行和匹配行的后两行grep&nbsp;-B2&nbsp;2&nbsp;test.txt&nbsp;&nbsp;返回匹配行和匹配行的前两行grep&nbsp;-C2&nbsp;2&nbsp;text.txt&nbsp;或者&nbsp;grep&nbsp;-A2&nbsp;-B2&nbsp;2&nbsp;test.txt&nbsp;返回匹配行和匹配行的前后两行-A&nbsp;-B&nbsp;-C&nbsp;后面跟阿拉伯数字-A&nbsp;返回匹配后和它后面的n行,(After,之后)。-B&nbsp;返回匹配行和它前面的n行,(Before,之前)。-C&nbsp;返回匹配行和它前后各n行,通-A和-B联用,(Context,上下文即前后)。</pre> <p>sed -i &#39;s/string1/string2/g&#39; example.txt 将example.txt文件中的 &quot;string1&quot; 替换成 &quot;string2&quot;(<span style="color:#f33b45;">如果不加-i参数,则在内存中替换; 添加-i参数,则在文件中直接替换</span>)<br> sed &#39;/^\)/d‘ example.txt 从example.txt文件中删除所有空白行&nbsp;
sed ’/ *#/d; /^\(/d&#39; example.txt 从example.txt文件中删除所有注释和空白行&nbsp;<br> echo &#39;hElloWorld&#39; | tr &#39;[:lower:]&#39; &#39;[:upper:]&#39; 找出所有的小写字母并全部替换为大写字母&nbsp;<br> sed -e &#39;1d&#39; result.txt 从文件example.txt 中排除第一行&nbsp;<br> sed -n &#39;/string1/p&#39; 查看只包含词汇 &quot;string1&quot;的行&nbsp;<br> sed -e &#39;s/ *\)//‘ example.txt 删除每一行最后的空白字符&nbsp;
sed -e ’s/string1//g‘ example.txt 从文档中只删除词汇 &quot;string1&quot; 并保留剩余全部&nbsp;
sed -n ’1,5p;5q‘ example.txt 查看从第一行到第5行内容&nbsp;
sed -n ’5p;5q‘ example.txt 查看第5行&nbsp;
sed -e ’s/00/0/g‘ example.txt 用单个零替换多个零sed -i ’3i helloword‘ test.txt&nbsp; &nbsp;在test.txt文件的第三行插入’helloword’字符串“sed按指定字符串删除”专题:
用sed删除匹配到字符串的行:
语法:sed-i‘/关键字符/d’文件名
举例1:匹配&quot;etcinstall.sh&quot;
set -i ‘//etc/install.sh/d’ 1.txt
/ 搜索
匹配/etc/install.sh,就是“/etc/install.sh”
-i 表示操作在源文件上生效.否则操作内存中数据,并不写入文件中.
在分号内的/d表示删除匹配的行。
&nbsp;
举例2:
删除以a开头的行
sed -i ‘/^a.































/d’ tmp.txt
^a表示开头是a, .*表示后跟任意字符串Example-1:&nbsp; 使用sed进行文本批量替换
#!/bin/bashddl_file_path=/c/Users/user/Downloads/sqoop_data/hive_2_mysqlls&nbsp;\(ddl_file_path&nbsp;|&nbsp;while&nbsp;read&nbsp;f;doecho&nbsp;&quot;---------&gt;&quot;\)ddl_file_path/\(f&nbsp;Template#sed&nbsp;-i&nbsp;&#39;s///g&#39;&nbsp;\)ddl_file_path/\(f#sed&nbsp;-i&nbsp;&quot;s///g&quot;&nbsp;\)ddl_file_path/\(fsed&nbsp;-i&nbsp;&#39;s/111.111.111.111:3306/222.222.222.222:3307/g&#39;&nbsp;\)ddl_file_path/\(fsed&nbsp;-i&nbsp;&quot;s/&#39;password_1&#39;/&#39;password_2&#39;/g&quot;&nbsp;\)ddl_file_path/$fdone#&nbsp;echo&nbsp;-e&nbsp;&quot;=========&gt; 
讯享网&nbsp;Files&nbsp;contains&nbsp;keyword&nbsp;&quot;/WARN:&quot;&nbsp;in&nbsp;path&nbsp;$ddl_file_path&nbsp;are&nbsp;deleted!!!&quot;</pre> <pre>#!/bin/bashset&nbsp;-x&nbsp;Template#sed&nbsp;-i&nbsp;&#39;s///g&#39;&nbsp;$ddl_file_path/$f#sed&nbsp;-i&nbsp;&quot;s///g&quot;&nbsp;$ddl_file_path/$f&nbsp;Func&nbsp;1&nbsp;-&nbsp;实现在所有文件的第四行、第五行插入指定文本ddl_file_path=/e/迅雷下载/user_data_afterls&nbsp;$ddl_file_path&nbsp;|&nbsp;while&nbsp;read&nbsp;f;do#&nbsp;如果文件不是文件夹类型,才允许插入操作if&nbsp;[&nbsp;!&nbsp;-d&nbsp;$f&nbsp;];thenecho&nbsp;&quot;---------&gt;&quot;$ddl_file_path/$fsed&nbsp;-i&nbsp;&#39;4i&nbsp;retries=10&#39;&nbsp;$ddl_file_path/$fsed&nbsp;-i&nbsp;&#39;5i&nbsp;retry.backoff=3&#39;&nbsp;$ddl_file_path/$ffidone&nbsp;Func&nbsp;2&nbsp;-&nbsp;如果文件夹不存在,则创建;反之提示文件已存在if&nbsp;[&nbsp;!&nbsp;-d&nbsp;&quot;beijing&quot;&nbsp;];thenmkdir&nbsp;beijingelseecho&nbsp;&quot;File&nbsp;already&nbsp;exists&quot;fi</pre> 
文件类型的参数判别大全:
shell脚本判断文件类型shell判断文件,目录是否存在或者具有权限#!/bin/shmyPath=&quot;/var/log/httpd/&quot;myFile=&quot;/var/log/httpd/access.log&quot;#&nbsp;这里的-x&nbsp;参数判断\(myPath是否存在并且是否具有可执行权限if&nbsp;[&nbsp;!&nbsp;-x&nbsp;&quot;\)myPath&quot;];&nbsp;thenmkdir&nbsp;&quot;\(myPath&quot;fi#&nbsp;这里的-d&nbsp;参数判断\)myPath是否存在if&nbsp;[&nbsp;!&nbsp;-d&nbsp;&quot;\(myPath&quot;];&nbsp;thenmkdir&nbsp;&quot;\)myPath&quot;fi#&nbsp;这里的-f参数判断\(myFile是否存在if&nbsp;[&nbsp;!&nbsp;-f&nbsp;&quot;\)myFile&quot;&nbsp;];&nbsp;thentouch&nbsp;&quot;\(myFile&quot;fi#&nbsp;其他参数还有-n,-n是判断一个变量是否是否有值if&nbsp;[&nbsp;!&nbsp;-n&nbsp;&quot;\)myVar&quot;&nbsp;];&nbsp;thenecho&nbsp;&quot;\(myVar&nbsp;is&nbsp;empty&quot;exit&nbsp;0fi#&nbsp;两个变量判断是否相等if&nbsp;[&nbsp;&quot;\)var1&quot;&nbsp;=&nbsp;&quot;\(var2&quot;&nbsp;];&nbsp;thenecho&nbsp;&#39;\)var1&nbsp;eq&nbsp;\(var2&#39;elseecho&nbsp;&#39;\)var1&nbsp;not&nbsp;eq&nbsp;\(var2&#39;fi文件的判别逻辑大全:---------------------------------------------------------------------a&nbsp;file&nbsp;exists.-b&nbsp;file&nbsp;exists&nbsp;and&nbsp;is&nbsp;a&nbsp;block&nbsp;special&nbsp;file.-c&nbsp;file&nbsp;exists&nbsp;and&nbsp;is&nbsp;a&nbsp;character&nbsp;special&nbsp;file.-d&nbsp;file&nbsp;exists&nbsp;and&nbsp;is&nbsp;a&nbsp;directory.-e&nbsp;file&nbsp;exists&nbsp;(just&nbsp;the&nbsp;same&nbsp;as&nbsp;-a).-f&nbsp;file&nbsp;exists&nbsp;and&nbsp;is&nbsp;a&nbsp;regular&nbsp;file.-g&nbsp;file&nbsp;exists&nbsp;and&nbsp;has&nbsp;its&nbsp;setgid(2)&nbsp;bit&nbsp;set.-G&nbsp;file&nbsp;exists&nbsp;and&nbsp;has&nbsp;the&nbsp;same&nbsp;group&nbsp;ID&nbsp;as&nbsp;this&nbsp;process.-k&nbsp;file&nbsp;exists&nbsp;and&nbsp;has&nbsp;its&nbsp;sticky&nbsp;bit&nbsp;set.-L&nbsp;file&nbsp;exists&nbsp;and&nbsp;is&nbsp;a&nbsp;symbolic&nbsp;link.-n&nbsp;string&nbsp;length&nbsp;is&nbsp;not&nbsp;zero.-o&nbsp;Named&nbsp;option&nbsp;is&nbsp;set&nbsp;on.-O&nbsp;file&nbsp;exists&nbsp;and&nbsp;is&nbsp;owned&nbsp;by&nbsp;the&nbsp;user&nbsp;ID&nbsp;of&nbsp;this&nbsp;process.-p&nbsp;file&nbsp;exists&nbsp;and&nbsp;is&nbsp;a&nbsp;first&nbsp;in,&nbsp;first&nbsp;out&nbsp;(FIFO)&nbsp;special&nbsp;file&nbsp;ornamed&nbsp;pipe.-r&nbsp;file&nbsp;exists&nbsp;and&nbsp;is&nbsp;readable&nbsp;by&nbsp;the&nbsp;current&nbsp;process.-s&nbsp;file&nbsp;exists&nbsp;and&nbsp;has&nbsp;a&nbsp;size&nbsp;greater&nbsp;than&nbsp;zero.-S&nbsp;file&nbsp;exists&nbsp;and&nbsp;is&nbsp;a&nbsp;socket.-t&nbsp;file&nbsp;descriptor&nbsp;number&nbsp;fildes&nbsp;is&nbsp;open&nbsp;and&nbsp;associated&nbsp;with&nbsp;aterminal&nbsp;device.-u&nbsp;file&nbsp;exists&nbsp;and&nbsp;has&nbsp;its&nbsp;setuid(2)&nbsp;bit&nbsp;set.-w&nbsp;file&nbsp;exists&nbsp;and&nbsp;is&nbsp;writable&nbsp;by&nbsp;the&nbsp;current&nbsp;process.-x&nbsp;file&nbsp;exists&nbsp;and&nbsp;is&nbsp;executable&nbsp;by&nbsp;the&nbsp;current&nbsp;process.-z&nbsp;string&nbsp;length&nbsp;is&nbsp;zero.注意-s&nbsp;和&nbsp;-f&nbsp;参数的区别</pre> <p><br> cat -n file1 标示文件的行数&nbsp;<br> cat example.txt | awk &#39;NR%2==1&#39; 删除example.txt文件中的所有偶数行&nbsp;<br> echo a b c | awk &#39;{print \)1}‘ 查看一行第一栏&nbsp;
echo a b c | awk ’{print \(1,\)3}‘ 查看一行的第一和第三栏&nbsp;
paste file1 file2 合并两个文件或两栏的内容&nbsp;
paste -d ’+‘ file1 file2 合并两个文件或两栏的内容,中间用&quot;+&quot;区分&nbsp;
sort file1 file2 排序两个文件的内容&nbsp;
sort file1 file2 | uniq 取出两个文件的并集(重复的行只保留一份)&nbsp;
sort file1 file2 | uniq -u 删除交集,留下其他的行&nbsp;
sort file1 file2 | uniq -d 取出两个文件的交集(只留下同时存在于两个文件中的文件)&nbsp;
comm -1 file1 file2 比较两个文件的内容只删除 ’file1‘ 所包含的内容&nbsp;
comm -2 file1 file2 比较两个文件的内容只删除 ’file2‘ 所包含的内容&nbsp;
comm -3 file1 file2 比较两个文件的内容只删除两个文件共有的部分&nbsp;




























综合案例:①:本机tcp各种状态数统计
讯享网netstat&nbsp;-n&nbsp;|&nbsp;awk&nbsp;’/^tcp/&nbsp;{++S[\(NF]}&nbsp;END&nbsp;{for(a&nbsp;in&nbsp;S)&nbsp;print&nbsp;a,&nbsp;S[a]}&#39;CLOSE_WAIT&nbsp;2ESTABLISHED&nbsp;276SYN_SENT&nbsp;2TIME_WAIT&nbsp;63270awk&nbsp;&#39;BEGIN&nbsp;{sum&nbsp;=&nbsp;0;&nbsp;for&nbsp;(i&nbsp;=&nbsp;0;&nbsp;i&nbsp;&lt;&nbsp;20;&nbsp;++i)&nbsp;{sum&nbsp;+=&nbsp;i;&nbsp;if&nbsp;(sum&nbsp;&gt;&nbsp;50)&nbsp;exit(10);&nbsp;else&nbsp;print&nbsp;&quot;Sum&nbsp;=&quot;,&nbsp;sum}}&#39;</pre> <p><span style="background-color: rgb(255, 255, 0);">②:使用cut提取文本字符串:</span></p><p>按“:”分割,提取/etc/passwd中第1,3,4,5列数据,按原分隔符&quot;:&quot;进行拼接。</p><pre>[hdfs@cdh01&nbsp;test]\)&nbsp;head&nbsp;-n&nbsp;5&nbsp;/etc/passwd&nbsp;|&nbsp;cut&nbsp;-d&nbsp;:&nbsp;-f&nbsp;1,3-5root:0:0:rootbin:1:1:bindaemon:2:2:daemonadm:3:4:admxixi:4:7:xixi
③:使用uniq进行滤重cut的具体用法,如下:
A).去除重复行&nbsp;
sort target_file | uniq

B).查找非重复行&nbsp;
sort target_file | uniq -u

C).查找重复行&nbsp;
sort target_file | uniq -d

D).统计每一个文件出现的次数&nbsp;
sort target_file | uniq -c

④:排序sort linux下的排序工具&nbsp;参数说明:
  •   -r  降序排列
  •   -u  去重
  •   -n  以数字大小排序(默认是首字母排序)
  •   -t  指定分隔符 这里我们指定‘|’为分隔符
  •   -k  指定分隔后的第几位进行排序 这里我们指定第2位
任务:report.txt文件里有以下内容:记录了一些方法的执行时间,要求按执行时间降序排列.命令:sort -run -k 2 -t ‘|’ report.txt
1&nbsp;void&nbsp;com.dustpan.zeus.core.service.MergeService.startService(int)|22&nbsp;void&nbsp;com.dustpan.zeus.core.service.InitShopDateService.startService(int)|13&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|4754&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|965&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|10136&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|1847&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|7298&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|149&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|39410&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|9011&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|56912&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|79613&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|8215&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|1417&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|93718&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|1719&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|60120&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|5221&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|38823&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|19824&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|1125&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|20326&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|1127&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|24128&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|1329&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|17630&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|1231&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|20632&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|3333&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.MergeService.executeGePrintSyncTask()|24234&nbsp;boolean&nbsp;com.dustpan.zeus.core.service.InitShopDateService.executeInitShopTask()|19
案例一、找出本文件夹中包含my_test_calendar关键字的所有文件(含全路径+文件名),并滤重。查询hive_sh目录下,包含搜索关键字‘my_test_calendar’的文本出现的文件及关键字所在的行,将文件(文件路径+文件名) 字段提取出来,并做滤重处理。
讯享网[hdfs@nn1&nbsp;hive_sh]\(&nbsp;find&nbsp;.&nbsp;-type&nbsp;f&nbsp;|&nbsp;xargs&nbsp;grep&nbsp;-rn&nbsp;&#39;my_test_calendar&#39;&nbsp;|&nbsp;cut&nbsp;-d&nbsp;:&nbsp;-f&nbsp;1&nbsp;|&nbsp;uniq</pre> <p>案例二、查找所有出现指定文本的文件并滤重(进阶版)</p><pre>&nbsp;#&nbsp;脚本说明#&nbsp;遍历&nbsp;hive_tables.txt&nbsp;文件中的所有表(如&nbsp;hive_table_1),查找其在指定目录/data/program/hive_sh/下的文件中,是否使用到。如果查到重复出现该文本的文件,做滤重处理。#&nbsp;cat&nbsp;query_table_usage_in_hive.sh&nbsp;-----------------------------------------------#!/bin/bashwhile&nbsp;read&nbsp;tbldoecho&nbsp;------------------Handle&nbsp;table:&nbsp;\)tbl————–find&nbsp;/data/program/hive_sh/&nbsp;-type&nbsp;f&nbsp;|&nbsp;xargs&nbsp;grep&nbsp;-rn&nbsp;\(tbl&nbsp;|&nbsp;cut&nbsp;-d&nbsp;:&nbsp;-f&nbsp;1&nbsp;|&nbsp;uniq&nbsp;&gt;&nbsp;http://www.360doc.com/content/24/0807/17/output/\){tbl}_result.txtdone&nbsp;&lt;&nbsp;hive_tables.txt
案例三、查找内存耗用top3的app
ps&nbsp;auxw&nbsp;|&nbsp;head&nbsp;-1;ps&nbsp;auxw|sort&nbsp;-rn&nbsp;-k4|head&nbsp;-5
:&nbsp;vim大小写转换_郭耀今 – 蓝天白云-CSDN博客_vim大写转小写总结:掐头(删左侧: ①#:删左侧;②:贪婪删左侧)去尾(删右侧: ①%:删右边;②%%:贪婪删右侧)1、linux shell 字符串操作详解 (长度,读取,替换,截取,连接,对比,删除,位置 )2、Linux Bash Shell字符串截取3、Shell 截取字符串4、shell脚本字符串截取的8种方法5.&nbsp;Linux-shell脚本字符串截取6.&nbsp;linux中shell变量\(#,\)@,\(0,\)1,\(2的含义解释/Shell中的\){}、和%%使用范例/export7.Shell 命令中的特殊替换、模式匹配替换、字符串提取和替换8.shell变量里的字符替换字符串切片操作样例:
讯享网#&nbsp;1.&nbsp;从左边第几个字符开始,及字符的个数url=&quot;https://www.baidu.com/&quot;echo&nbsp;${url:0:5}其中的&nbsp;0&nbsp;表示左边第一个字符开始,5&nbsp;表示字符的总个数。结果:https#&nbsp;2.&nbsp;从左边第几个字符开始(下标从0开始),一直到结束url=&quot;https://www.baidu.com/&quot;echo&nbsp;${url:5}结果:://www.baidu.com/
vi/vim 中在每行行首或行尾插入指定字符串行首 :%s/^/your_word/
行尾 :%s/\(/your_word/</p><p>按键操作:</p><p>注释(<span style="color:#f33b45;"><strong>列模式</strong></span>方式):ctrl+v 进入列编辑模式,向下或向上移动光标,把需要注释的行的开头标记起来,然后按大写的I,再插入注释符,比如”#”,再按Esc,就会全部注释了。</p><p>删除:先按v,进入visual模式,横向选中列的个数(如”#”注释符号,需要选中两列),再按Esc,再按ctrl+v 进入列编辑模式,向下或向上移动光标,选中注释部分,然后按d, 就会删除注释符号(#)。</p><p>PS:当然不一定是shell的注释符”#”,也可以是”//”,或者其他任意的字符;vim才不知道什么是注释符呢,都是字符而已。</p><p>案例:</p><p>vim 列编辑模式</p><p>使用替换命令:</p><p>替换命令语法:</p><pre>:[addr]s/源字符串/目标字符串/[option]</pre> <p>全局替换:</p><pre>:%s/源字符串/目标字符串/g</pre> <p>参数说明:</p><ul><li><p>[addr]——表示检索范围,省略时表示当前行。</p></li><ul><li><p>&quot;%&quot;:表示整个文件,同&quot;1,\)&quot;;

  • &quot;.,\(&quot;:从当前行到文件尾;</p></li></ul><li><p>s:表示替换操作</p></li><li><p>[option]:表示操作类型</p></li><ul><li><p>g:全局替换</p></li><li><p>c:表示进行确认</p></li><li><p>p:表示替换结果逐行显示(Ctrl+L恢复屏幕)</p></li><li><p>省略option:默认仅对每行第一个匹配串进行替换</p></li></ul><li><p>如果在源字符串和目标字符串中有特殊字符,需要使用“”转义</p></li></ul><p>举例:</p><p>在全部内容的行首添加//号注释<br> :% s/^////g</p><p>在2~50行首添加//号注释<br> :2,50 s/^////g</p><p>在2~50行首删除//号<br> :2,50 s/^////g</p><p>全局替换(全文替换、全部替换):</p><p><span style="color:#fe2c24;">:%s/原字符/希望替换的字符/g</span></p><p>在命令模式下:</p><p><strong>1、填到指定行,如5</strong></p><p>:5</p><p><span style="background-color: rgb(255, 255, 0);"><strong>2、跳到最后一行</strong></span></p><p>G(shift + g)</p><p><span style="color: rgb(0, 0, 0); background-color: rgb(255, 255, 0);"><strong>3、跳到行首</strong></span></p><p>gg</p><p><strong>4、转到第N行,如第7行</strong></p><p>7G</p><p><strong>5、删除所有内容</strong></p><p><strong>A).使用shift+g转到最后一行</strong></p><p><strong>B).命令模式下输入:1,.d</strong></p><p>引申:深处第3行到最后一行</p><p><strong>A).使用shift+g转到最后一行</strong></p><p><strong>B).命令模式下输入:3,.d</strong></p><p><strong>6、删除光标所在字符</strong></p><p>x</p><p><strong>7、删除表过所在前的字符(大写X)</strong></p><p>X</p><p><strong>8、删除到下一个单词开头</strong></p><p>dw</p><p><strong>9、删除到本单词末尾</strong></p><p>de</p><p><strong>10、删除到本单词末尾包括标点在内</strong></p><p>dE</p><p><strong>11、删除到前一个单词</strong></p><p>db</p><p><strong>12、删除到前一个单词包括标点在内</strong></p><p>dB</p><p><strong>13、删除一整行</strong></p><p>dd</p><p><strong>14、删除光标位置到本行结尾</strong></p><p>ud\)15、删除光标位置到本行开头
    讯享网
    d0在vim中 ,“.”当前行 ,“1,.”表示从第一行到当前行 ,“d”删除,3dd代表删除三行。16、vim 统计单词匹配数量
    &nbsp;
    :%s/hello world/&/gn&nbsp;
    上句统计hello world 在全文出现的次数







    如果要统计从50行到100行,出现的次数,则使用:&nbsp;
    :50,100s/hello world//gn

    1、单行注释&quot;#&quot; 置于行首位置2、多行注释A) 方式一
    :&lt;&lt;!#&nbsp;需要注释的内容!
    B) 方式二
    讯享网if&nbsp;false;&nbsp;then#&nbsp;待注释的代码块fi
    C) 方式三
    ((0))&nbsp;&&&nbsp;{#&nbsp;待注释的代码块}
    dos2unix filedos.txt fileunix.txt 将一个文本文件的格式从MSDOS转换成UNIX&nbsp;
    unix2dos fileunix.txt filedos.txt 将一个文本文件的格式从UNIX转换成MSDOS&nbsp;
    recode ..HTML &lt; page.txt &gt; page.html 将一个文本文件转换成html&nbsp;
    recode -l | more 显示所有允许的转换格式&nbsp;







    badblocks -v /dev/hda1 检查磁盘hda1上的坏磁块&nbsp;
    fsck /dev/hda1 修复/检查hda1磁盘上linux文件系统的完整性&nbsp;
    fsck.ext2 /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性&nbsp;
    e2fsck /dev/hda1 修复/检查hda1磁盘上ext2文件系统的完整性&nbsp;
    e2fsck -j /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性&nbsp;
    fsck.ext3 /dev/hda1 修复/检查hda1磁盘上ext3文件系统的完整性&nbsp;
    fsck.vfat /dev/hda1 修复/检查hda1磁盘上fat文件系统的完整性&nbsp;
    fsck.msdos /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性&nbsp;
    dosfsck /dev/hda1 修复/检查hda1磁盘上dos文件系统的完整性&nbsp;






















    mkfs /dev/hda1 在hda1分区创建一个文件系统&nbsp;
    mke2fs /dev/hda1 在hda1分区创建一个linux ext2的文件系统&nbsp;
    mke2fs -j /dev/hda1 在hda1分区创建一个linux ext3(日志型)的文件系统&nbsp;
    mkfs -t vfat 32 -F /dev/hda1 创建一个 FAT32 文件系统&nbsp;
    fdformat -n /dev/fd0 格式化一个软盘&nbsp;
    mkswap /dev/hda3 创建一个swap文件系统&nbsp;













    mkswap /dev/hda3 创建一个swap文件系统&nbsp;
    swapon /dev/hda3 启用一个新的swap文件系统&nbsp;
    swapon /dev/hda2 /dev/hdb3 启用两个swap分区&nbsp;




    dump -0aj -f /tmp/home0.bak /home 制作一个 ‘/home’ 目录的完整备份&nbsp;
    dump -1aj -f /tmp/home0.bak /home 制作一个 ‘/home’ 目录的交互式备份&nbsp;
    restore -if /tmp/home0.bak 还原一个交互式备份&nbsp;
    rsync -rogpav –delete /home /tmp 同步两边的目录&nbsp;
    rsync -rogpav -e ssh –delete /home ip_address:/tmp 通过SSH通道rsync&nbsp;
    rsync -az -e ssh –delete ip_addr:/home/public /home/local 通过ssh和压缩将一个远程目录同步到本地目录&nbsp;
    rsync -az -e ssh –delete /home/local ip_addr:/home/public 通过ssh和压缩将本地目录同步到远程目录&nbsp;
    dd bs=1M if=/dev/hda | gzip | ssh user@ip_addr ‘dd of=hda.gz’ 通过ssh在远程主机上执行一次备份本地磁盘的操作&nbsp;
    dd if=/dev/sda of=/tmp/file1 备份磁盘内容到一个文件&nbsp;
    tar -Puf backup.tar /home/user 执行一次对 ‘/home/user’ 目录的交互式备份操作&nbsp;
    ( cd /tmp/local/ && tar c . ) | ssh -C user@ip_addr ‘cd /home/share/ && tar x -p’ 通过ssh在远程目录中复制一个目录内容&nbsp;
    ( tar c /home ) | ssh -C user@ip_addr ‘cd /home/backup-home && tar x -p’ 通过ssh在远程目录中复制一个本地目录&nbsp;
    tar cf - . | (cd /tmp/backup ; tar xf - ) 本地将一个目录复制到另一个地方,保留原有权限及链接&nbsp;
    find /home/user1 -name ‘.txt’ | xargs cp -av –target-directory=/home/backup/ –parents 从一个目录查找并复制所有以 ‘.txt’ 结尾的文件到另一个目录&nbsp;
    find /var/log -name ‘

    .log’ | tar cv –files-from=- | bzip2 &gt; log.tar.bz2 查找所有以 ‘.log’ 结尾的文件并做成一个bzip包&nbsp;
    dd if=/dev/hda of=/dev/fd0 bs=512 count=1 做一个将 MBR (Master Boot Record)内容复制到软盘的动作&nbsp;
    dd if=/dev/fd0 of=/dev/hda bs=512 count=1 从已经保存到软盘的备份中恢复MBR内容&nbsp;











































    cdrecord -v gracetime=2 dev=/dev/cdrom -eject blank=fast -force 清空一个可复写的光盘内容&nbsp;
    mkisofs /dev/cdrom &gt; cd.iso 在磁盘上创建一个光盘的iso镜像文件&nbsp;
    mkisofs /dev/cdrom | gzip &gt; cd_iso.gz 在磁盘上创建一个压缩了的光盘iso镜像文件&nbsp;
    mkisofs -J -allow-leading-dots -R -V &quot;Label CD&quot; -iso-level 4 -o http://www.360doc.com/content/24/0807/17/cd.iso data_cd 创建一个目录的iso镜像文件&nbsp;
    cdrecord -v dev=/dev/cdrom cd.iso 刻录一个ISO镜像文件&nbsp;
    gzip -dc cd_iso.gz | cdrecord dev=/dev/cdrom - 刻录一个压缩了的ISO镜像文件&nbsp;
    mount -o loop cd.iso /mnt/iso 挂载一个ISO镜像文件&nbsp;
    cd-paranoia -B 从一个CD光盘转录音轨到 wav 文件中&nbsp;
    cd-paranoia – &quot;-3&quot; 从一个CD光盘转录音轨到 wav 文件中(参数-3)&nbsp;
    cdrecord –scanbus 扫描总线以识别scsi通道&nbsp;
    dd if=/dev/hdc | md5sum 校验一个设备的md5sum编码,例如一张 CD&nbsp;




























    ifconfig eth0 显示一个以太网卡的配置&nbsp;
    ifup eth0 启用一个 ‘eth0’ 网络设备&nbsp;
    ifdown eth0 禁用一个 ‘eth0’ 网络设备&nbsp;
    ifconfig eth0 192.168.1.1 netmask 255.255.255.0 控制IP地址&nbsp;
    ifconfig eth0 promisc 设置 ‘eth0’ 成混杂模式以嗅探数据包 (sniffing)&nbsp;
    dhclient eth0 以dhcp模式启用 ‘eth0’&nbsp;
    route -n show routing table&nbsp;
    route add -net 0/0 gw IP_Gateway configura default gateway&nbsp;
    route add -net 192.168.0.0 netmask 255.255.0.0 gw 192.168.1.1 configure static route to reach network ‘192.168.0.0/16’&nbsp;
    route del 0/0 gw IP_gateway remove static route&nbsp;
    echo &quot;1&quot; &gt; /proc/sys/net/ipv4/ip_forward activate ip routing&nbsp;
    hostname show hostname of system&nbsp;
    host www.example.com lookup hostname to resolve name to ip address and viceversa(1)&nbsp;
    nslookup www.example.com lookup hostname to resolve name to ip address and viceversa(2)&nbsp;
    ip link show show link status of all interfaces&nbsp;
    mii-tool eth0 show link status of ‘eth0’&nbsp;
    ethtool eth0 show statistics of network card ‘eth0’&nbsp;
    netstat -tup show all active network connections and their PID&nbsp;
    netstat -tupl show all network services listening on the system and their PID&nbsp;
    tcpdump tcp port 80 show all HTTP traffic&nbsp;
    iwlist scan show wireless networks&nbsp;
    iwconfig eth1 show configuration of a wireless network card&nbsp;
    hostname show hostname&nbsp;
    host www.example.com lookup hostname to resolve name to ip address and viceversa&nbsp;
    nslookup www.example.com lookup hostname to resolve name to ip address and viceversa&nbsp;
    whois www.example.com lookup on Whois database&nbsp;









































































    jps(Java Virtual Machine Process Status Tool)是JDK 1.5提供的一个显示当前所有java进程pid的命令,简单实用,非常适合在linux/unix平台上简单察看当前java进程的一些简单情况。&nbsp;&nbsp;&nbsp; 我想很多人都是用过unix系统里的ps命令,这个命令主要是用来显示当前系统的进程情况,有哪些进程,及其 id。 jps 也是一样,它的作用是显示当前系统的java进程情况,及其id号。我们可以通过它来查看我们到底启动了几个java进程(因为每一个java程序都会独占一个java虚拟机实例),和他们的进程号(为下面几个程序做准备),并可通过opt来查看这些进程的详细启动参数。&nbsp;&nbsp;&nbsp;&nbsp; 使用方法:在当前命令行下打 jps(需要JAVA_HOME,没有的话,到改程序的目录下打) 。jps存放在JAVA_HOME/bin/jps,使用时为了方便请将JAVA_HOME/bin/加入到Path.\(&gt;<strong>&nbsp;jps</strong><br> 23991 Jps<br> 23789 BossMain<br> 23651 Resin</p><p>比较常用的参数:</p><p><strong>-q 只显示pid,不显示class名称,jar文件名和传递给main 方法的参数</strong><br> \)&gt;&nbsp;&nbsp;jps -q
    28680
    23789
    23651







    -m 输出传递给main 方法的参数,在嵌入式jvm上可能是null\(&gt;&nbsp;<strong>jps -m</strong><br> 28715 Jps -m<br> 23789 BossMain<br> 23651 Resin -socketwait 32768 -stdout /data/aoxj/resin/log/stdout.log -stderr /data/aoxj/resin/log/stderr.log</p><p><strong>-l 输出应用程序main class的完整package名 或者 应用程序的jar文件完整路径名</strong></p><p>\)&gt;&nbsp;jps -l
    28729 sun.tools.jps.Jps
    23789 com.asiainfo.aimc.bossbi.BossMain
    23651 com.caucho.server.resin.Resin







    -v 输出传递给JVM的参数\(&gt;&nbsp;<strong>jps -v</strong><br> 23789 BossMain<br> 28802 Jps -Denv.class.path=/data/aoxj/bossbi/twsecurity/java/trustwork140.jar:/data/aoxj/bossbi/twsecurity/java/:/data/aoxj/bossbi/twsecurity/java/twcmcc.jar:/data/aoxj/jdk15/lib/rt.jar:/data/aoxj/jd</p><p>k15/lib/tools.jar -Dapplication.home=/data/aoxj/jdk15 -Xms8m<br> 23651 Resin -Xss1m -Dresin.home=/data/aoxj/resin -Dserver.root=/data/aoxj/resin -Djava.util.logging.manager=com.caucho.log.LogManagerImpl -</p><p>Djavax.management.builder.initial=com.caucho.jmx.MBeanServerBuilderImpl</p><p><strong>sudo jps看到的进程数量最全</strong></p><p><strong>jps 192.168.0.77</strong></p><p><strong>列出远程服务器192.168.0.77机器所有的jvm实例,采用rmi协议,默认连接端口为1099</strong></p><p><strong>(前提是远程服务器提供jstatd服务)</strong></p><p><strong>注:jps命令有个地方很不好,似乎只能显示当前用户的java进程,要显示其他用户的还是只能用unix/linux的ps命令。</strong></p><p>详细情况请参考sun官方文档。<br>http://javahttp://www.360doc.com/content/24/0807/17/j2se/1.7.0/docs/tooldocs/share/jps.html</p><p>GO TOP INDEX ^&nbsp;<br> Microsoft Windows networks (SAMBA)&nbsp;<br> nbtscan ip_addr netbios name resolution&nbsp;<br> nmblookup -A ip_addr netbios name resolution&nbsp;<br> smbclient -L ip_addr/hostname show remote shares of a windows host&nbsp;<br> smbget -Rr smb://ip_addr/share like wget can download files from a host windows via smb&nbsp;<br> mount -t smbfs -o username=user,password=pass //WinClient/share /mnt/share mount a windows network share</p><p>-b file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在且是一个块特殊文件,则为真<br> -c file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在且是一个字符特殊文件,则为真<br> -d file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在且是一个目录,则为真<br> -e file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在,则为真<br> -f file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在且是一个规则文件,则为真<br> -g file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在且设置了SGID位的值,则为真<br> -h file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在且为一个符合链接,则为真<br> -k file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在且设置了&quot;sticky&quot;位的值<br> -p file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在且为一已命名管道,则为真<br> -r file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在且可读,则为真<br> -s file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在且其大小大于零,则为真<br> -u file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在且设置了SUID位,则为真<br> -w file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在且可写,则为真<br> -x file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在且可执行,则为真<br> -o file&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若文件存在且被有效用户ID所拥有,则为真</p><p>-z string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若string长度为0,则为真<br> -n string&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若string长度不为0,则为真<br> string1 = string2&nbsp; 若两个字符串相等,则为真<br> string1 != string2 若两个字符串不相等,则为真</p><p>int1 -eq int2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若int1等于int2,则为真<br> int1 -ne int2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若int1不等于int2,则为真<br> int1 -lt int2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若int1小于int2,则为真<br> int1 -le int2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若int1小于等于int2,则为真<br> int1 -gt int2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若int1大于int2,则为真<br> int1 -ge int2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若int1大于等于int2,则为真</p><p>!expr&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 若expr为假则复合表达式为真。expr可以是任何有效的测试表达式<br> expr1 -a expr2&nbsp;&nbsp;&nbsp;&nbsp; 若expr1和expr2都为真则整式为真<br> expr1 -o expr2&nbsp;&nbsp;&nbsp;&nbsp; 若expr1和expr2有一个为真则整式为真</p><p>特殊变量</p><p>\)0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 正在被执行命令的名字。对于shell脚本而言,这是被激活命令的路径
    \(n&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 该变量与脚本被激活时所带的参数相对应。n是正整数,与参数位置相对应(\)1,\(2…)<br> \)#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 提供脚本的参数号
    \(*&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所有这些参数都被双引号引住。若一个脚本接收两个参数,\)等于\(1\)2
    \(@&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 所有这些参数都分别被双引号引住。若一个脚本接收到两个参数,\)@等价于\(1\)2
    \(?&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前一个命令执行后的退出状态, 常用于判断上一个命令的执行结果, 以辅助判断下游分支逻辑的执行<br> \)\(&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 当前shell的进程号。对于shell脚本,这是其正在执行时的进程ID<br> \)!&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 前一个后台命令的进程号









    Linux下的任务调度分为两类:系统任务调度和用户任务调度。Linux系统任务是由 cron (crond) 这个系统服务来控制的,这个系统服务是默认启动的。用户自己设置的计划任务则使用crontab 命令。在CentOS系统中:
    讯享网cat&nbsp;/etc/crontabSHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/#&nbsp;For&nbsp;details&nbsp;see&nbsp;man&nbsp;4&nbsp;crontabs#&nbsp;Example&nbsp;of&nbsp;job&nbsp;definition:#&nbsp;.—————-&nbsp;minute&nbsp;(0&nbsp;-&nbsp;59)#&nbsp;|&nbsp;.————-&nbsp;hour&nbsp;(0&nbsp;-&nbsp;23)#&nbsp;|&nbsp;|&nbsp;.———-&nbsp;day&nbsp;of&nbsp;month&nbsp;(1&nbsp;-&nbsp;31)#&nbsp;|&nbsp;|&nbsp;|&nbsp;.——-&nbsp;month&nbsp;(1&nbsp;-&nbsp;12)&nbsp;OR&nbsp;jan,feb,mar,apr&nbsp;…#&nbsp;|&nbsp;|&nbsp;|&nbsp;|&nbsp;.—-&nbsp;day&nbsp;of&nbsp;week&nbsp;(0&nbsp;-&nbsp;6)&nbsp;(Sunday=0&nbsp;or&nbsp;7)&nbsp;OR&nbsp;sun,mon,tue,wed,thu,fri,sat#&nbsp;|&nbsp;|&nbsp;|&nbsp;|&nbsp;|#&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;user-name&nbsp;command&nbsp;to&nbsp;be&nbsp;executed前四行是用来配置crond任务运行的环境变量:》第一行SHELL变量指定了系统要使用哪个shell,这里是bash;》第二行PATH变量指定了系统执行命令的路径;》第三行MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户,如果MAILTO变量的值为空,则表示不发送任务执行信息给用户;》第四行的HOME变量指定了在执行命令或者脚本时使用的主目录。用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。用户可以使用&nbsp;crontab&nbsp;工具来定制自己的计划任务。所有用户定义的crontab&nbsp;文件都被保存在&nbsp;/var/spool/cron目录中。其文件名与用户名一致。
    用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段:
    》前五段是时间设定段;
    》第六段是要执行的命令段




    crontab表达式 格式如下:
    minute hour day month week command

    crontab用法与实例crontab用法与实例在以上各个字段中,还可以使用以下特殊字符:
    &quot;*&quot;代表所有的取值范围内的数字,如月份字段为,则表示1到12个月;
    &quot;/&quot;代表每一定时间间隔的意思,如分钟字段为

    /10,表示每10分钟执行1次。
    &quot;-&quot;代表从某个区间范围,是闭区间。如“2-5”表示“2,3,4,5”,小时字段中0-23/2表示在023点范围内每2个小时执行一次。
    &quot;,&quot;分散的数字(不一定连续),如1,2,3,4,7,9。
    注:由于各个地方每周第一天不一样,因此Sunday=0(第一天)或Sunday=7(最后1天)。






    case: 每隔2分钟,删除指定目录下,创建时间超过10个小时的文件
    /2&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/bin/sh&nbsp;-c&nbsp;&quot;find&nbsp;/tmp/hadoop-hdfs/mapred/local&nbsp;-cmin&nbsp;+600&nbsp;-type&nbsp;d&nbsp;-exec&nbsp;rm&nbsp;-rf&nbsp;{}&nbsp;;&quot;&nbsp;&gt;&gt;&nbsp;/var/lib/hadoop-hdfs/auto_remove_mr_output.out
    1、declaredeclare声明变量的使用,总结如下:
    declare [+/-][选项] 变量名
    选项:
    &nbsp; &nbsp;-:给变量添加类型属性
    &nbsp; &nbsp;+:取消变量的类型属性
    &nbsp; -a:将变量声明为数组型,-A将声明一个关联数组,俗称字典。&nbsp; 关联知识:Shell 数组与关联数组详解及实例代码(https://www.jb51.net/article/103915.htm)
    &nbsp; -i:将变量声明为整型
    &nbsp; -x:将变量声明为环境变量
    &nbsp; -r:将变量声明为只读变量
    &nbsp; -p:查看变量的被声明的类型

























    declare -i 说明:和 (())、let、\([] 不同,的功能非常有限,仅支持最基本的数学运算(加减乘除和取余),不支持逻辑运算(比较运算、与运算、或运算、非运算),所以在实际开发中很少使用。</p><pre>declare&nbsp;-i&nbsp;m&nbsp;n&nbsp;retm=10n=30ret=\)m+\(necho&nbsp;\)retret=\(n/\)mecho&nbsp;\(ret</pre> <p>declare的作用域,只在函数内,出来后就失效了,如下:</p><pre>#!/bin/bashfoo(){declare&nbsp;FOO=&quot;bar&quot;}bar(){fooecho&nbsp;\)FOO}bar
  • 1、数组

    Linux shell中数组的使用数组有两种数据类型:A). 一是数值类型;B). 二是字符串类型.虽然shell本身是弱类型的,但也可以这么区分。数值类型的数组:一对括号表示数组,数组中元素之间使用“空格”来隔开。  举个列子:&nbsp;  arr_number=(1 2 3 4 5);字符串类型数组:同样,使用一对括号表示数组,其中数组中的元素使用双引号或者单引号包含,同样使用“空格”来隔开。  arr_string=(&quot;abc&quot; &quot;edf&quot; &quot;sss&quot;); 或者 arr_string=(‘abc’ ‘edf’ ‘sss’);
    讯享网#!/bin/basharr_number=(1&nbsp;2&nbsp;3&nbsp;4&nbsp;5)#&nbsp;①、获取数组长度#&nbsp;语法:&nbsp;${#ARRAY_NAME[@|]}echo&nbsp;‘arr_number&nbsp;length&nbsp;=’\({#arr_number[@]}echo&nbsp;&#39;arr_number&nbsp;length&nbsp;=&#39;\){#arr_number[]}#&nbsp;②、根据下标访问数组元素(注意:下标与java语法类似,从0开始)#&nbsp;2nd&nbsp;key‘s&nbsp;valueecho&nbsp;&quot;2nd&nbsp;key’s&nbsp;value&nbsp;=&quot;\({arr_number[1]}#&nbsp;③、分片访问echo&nbsp;\){arr_number[@]:0:6}#&nbsp;④、模式替换echo&nbsp;\({arr_number[@]/3/33}#&nbsp;⑤、数组的遍历for&nbsp;e&nbsp;in&nbsp;\){arr_number[@]}doecho&nbsp;\(edone#&nbsp;⑥、综合案例#&nbsp;编注:数组默认分割符为空格,如果数组元素中本身包含空格,也会被截断,这里通过改变IFS(系统字段分割#&nbsp;符默认为空格)为换行,达到分割数组的目的。greet=(&#39;hello&nbsp;world&#39;&nbsp;&quot;hi,john&quot;)OLD_IFS=\)IFSIFS=‘ ’for&nbsp;e&nbsp;in&nbsp;\({greet[@]}doecho&nbsp;\)edoneIFS=\(OLD_IFS</pre> <h4></h4><p>》①、批量删除日志:</p><p>for i in in {1..10}; do rm -f hadoop-cmf-hive-HIVEMETASTORE-nn1.testhdp.com.log.out.\)i;done》②、批量将日志置空:for i in in {1..10}; do cat /dev/null &gt; hadoop-cmf-yarn-NODEMANAGER-dn8.hadoop.com.log.out.\(i;done</p><h4>2、字典dict 或 Map</h4><p><strong>1). 声明字典类型:</strong><br> declare -A dic</p><p>这里一定要-A来声明,-a只能用来声明数组类型。</p><p><strong>2). 字典赋初值</strong><br> dic=([key1]=&quot;value1&quot; [key2]=&quot;value2&quot; [key3]=&quot;value3&quot;)</p><p><strong>3). 字典动态赋值</strong><br> dic[&#39;key&#39;]=value</p><p><strong>4). 打印指定key的value</strong><br> echo \){dic[‘key’]}5). 打印所有key值
    echo ${!dic[

    ]}6). 打印所有value
    echo \({dic[*]}</p><p><strong>7). 遍历key值</strong><br> for key in \)(echo \({!dic[*]})<br> do<br> &nbsp; &nbsp; echo &quot;\)key : \({dic[\)key]}&quot;
    done
    8). 综合案例







    #!&nbsp;/bin/sh#输入格式为一行一个单词declare&nbsp;-A&nbsp;dictdict=([k1]=&quot;v1&quot;&nbsp;[k2]=&quot;v2&quot;)echo&nbsp;\({dict[&quot;k1&quot;]}echo&nbsp;\){!dict[]}echo&nbsp;${dict[]}for&nbsp;key&nbsp;in&nbsp;\({!dict[*]}doecho&nbsp;&quot;\)key&nbsp;:&nbsp;\({dict[\)key]}&quot;doneset&nbsp;-xaa=&quot;null&quot;bb=cc=‘’#&nbsp;&nbsp;&nbsp;&nbsp;-z&nbsp;字符串为&quot;null&quot;.就是长度为0.&nbsp;&nbsp;&nbsp;&nbsp;-n&nbsp;字符串不为&quot;null&quot;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;注意:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;使用-n在[]结构中测试必须要用&quot;&quot;把变量引起来.使用一个未被&quot;&quot;的字符串来使用!&nbsp;-z&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;或者就是未用&quot;&quot;引用的字符串本身,放到[]结构中。虽然一般情况下可&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;以工作,但这是不安全的.习惯于使用&quot;&quot;来测试字符串是一种好习惯.if&nbsp;[&nbsp;-n&nbsp;&quot;\(cc&quot;&nbsp;];thenecho&nbsp;&quot;aa&nbsp;is&nbsp;not&nbsp;null&quot;fiset&nbsp;+x#定义字典类型变量declare&nbsp;-A&nbsp;dict#从标准输入读取while&nbsp;read&nbsp;worddo#若key为word的变量不存在,则为未定义,即第一次遇到此word,则将此word加入字典并设置其value为1。,否则自增value值if&nbsp;[&nbsp;!&nbsp;-n&nbsp;dict[\){word}]&nbsp;];thendict[\({word}]=1else((dict[\){word}]++))fidone#打印统计结果echo&nbsp;-e&nbsp;&quot;word count&quot;for&nbsp;key&nbsp;in&nbsp;\((echo&nbsp;\){!dict[]})doecho&nbsp;-e&nbsp;&quot;\(key \){dict[\(key]}&quot;done</pre> <p>综合案例二:&nbsp;shell的map简单的添加、查找、删除、遍历</p><h4>3、管道输出中执行下一条指令</h4><pre>ps&nbsp;-ef&nbsp;|&nbsp;grep&nbsp;&#39;new-consumer&#39;&nbsp;|&nbsp;awk&nbsp;&#39;{print&nbsp;\)2}‘&nbsp;|xargs&nbsp;kill&nbsp;-9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#删除kafka&nbsp;consumer进程ps&nbsp;-ef|grep&nbsp;java|grep&nbsp;-v&nbsp;grep|awk&nbsp;’{print&nbsp;$2}‘|xargs&nbsp;kill&nbsp;-9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;#删除java进程&nbsp;&nbsp;&nbsp;find&nbsp;/opt/flume-custom/&nbsp;-name&nbsp;.conf|xargs&nbsp;grep&nbsp;-re&nbsp;&quot;127.0.0.1:9092&quot;&nbsp;#查找到的文件中查找指定字符串find&nbsp;/opt/&nbsp;-type&nbsp;f&nbsp;-name&nbsp;’*.log‘&nbsp;|xargs&nbsp;grep&nbsp;’db.hostname‘cat&nbsp;/.ssh/id_rsa.pub&nbsp;|&nbsp;ssh&nbsp;my_admin@111.111.111.111&nbsp;&quot;cat&nbsp;-&nbsp;&gt;&gt;&nbsp;/.ssh/authorized_keys&quot;kill&nbsp;-9&nbsp;\((ps&nbsp;-ef|grep&nbsp;&quot;sh&nbsp;*start_new.sh&nbsp;*main&quot;|grep&nbsp;-v&nbsp;grep|awk&nbsp;&#39;{print&nbsp;\)2}’)&nbsp;#&nbsp;*表任意多空格kill&nbsp;-9&nbsp;ps&nbsp;-ef|grep&nbsp;data-integration|awk&nbsp;&#39;{print&nbsp;$2}&#39;ls|while&nbsp;read&nbsp;f;do&nbsp;zip&nbsp;-r&nbsp;\({f}.zip&nbsp;\)f;done&nbsp;&nbsp;#压缩所有ls出来的文件夹ls|grep&nbsp;‘hadoop-cmf-yarn-RESOURCEMANAGER-nn1.hadoop.com.log.out.[0-9]{1,}’|while&nbsp;read&nbsp;f;do&nbsp;cat&nbsp;/dev/null&nbsp;&gt;&nbsp;\(f;done&nbsp;#将所有RESOURCEMANAGER日志文件内容置为空,文件尾缀为1个以上从0到9的数字,如1、2、9、12均能匹配查找到,在nn1上磁盘(/var/log/{hadoop-hdfs,hadoop-yarn})上日志一般都比较大#&nbsp;查找10日前创建的文件,并情况其内容find&nbsp;.&nbsp;-type&nbsp;f&nbsp;-name&nbsp;&#39;*oozie-instrumentation.log.*&#39;&nbsp;-atime&nbsp;+10&nbsp;|&nbsp;while&nbsp;read&nbsp;f;do&nbsp;cat&nbsp;/dev/null&nbsp;&gt;&nbsp;\)f;done#查看所有用户的crontab任务,其中&quot;-I&nbsp;{}&quot;参数,可以使用-i来等量实现cat&nbsp;/etc/passwd&nbsp;|&nbsp;cut&nbsp;-f&nbsp;1&nbsp;-d&nbsp;:&nbsp;|xargs&nbsp;-I&nbsp;{}&nbsp;crontab&nbsp;-l&nbsp;-u&nbsp;{}cat&nbsp;/etc/passwd&nbsp;|&nbsp;cut&nbsp;-f&nbsp;1&nbsp;-d&nbsp;:&nbsp;|xargs&nbsp;-i&nbsp;crontab&nbsp;-l&nbsp;-u&nbsp;{}#&nbsp;查询当前目录下所有文件(含目录下文件)中包含关键字(sku)的文件路径,&nbsp;滤重,&nbsp;并过滤掉路径中含指定字符(000)grep&nbsp;-rn&nbsp;‘sku’&nbsp;&nbsp;|&nbsp;awk&nbsp;-F&nbsp;‘:’&nbsp;‘{print&nbsp;\(1}&#39;&nbsp;|&nbsp;uniq&nbsp;|&nbsp;grep&nbsp;-v&nbsp;000</pre> <p>注意:</p><p>xargs 的参数 “-n” 后接数字,表示一次传递几个参数给xargs</p><pre>(pyspark)&nbsp;[david@cdh01&nbsp;bin]\)&nbsp;echo&nbsp;’1&nbsp;2&nbsp;3&nbsp;4‘|xargs&nbsp;-n11234(pyspark)&nbsp;[david@cdh01&nbsp;bin]\(&nbsp;echo&nbsp;&#39;1&nbsp;2&nbsp;3&nbsp;4&#39;|xargs&nbsp;-n21&nbsp;23&nbsp;4(pyspark)&nbsp;[david@cdh01&nbsp;bin]\)&nbsp;echo&nbsp;’1&nbsp;2&nbsp;3&nbsp;4‘|xargs&nbsp;-n31&nbsp;2&nbsp;34(pyspark)&nbsp;[david@cdh01&nbsp;bin]\(&nbsp;echo&nbsp;&#39;1&nbsp;2&nbsp;3&nbsp;4&#39;|xargs&nbsp;-n41&nbsp;2&nbsp;3&nbsp;4</pre> <p>传送门:Shell基础知识》xargs详解</p><p>读取文件每一行,并循环做处理:</p><p><span style="color:#f33b45;">①、while&nbsp;read&nbsp;line<br> do<br> &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;…<br> done&nbsp;&lt;&nbsp;file</span></p><p><span style="color:#f33b45;">②、cat&nbsp;file&nbsp;&nbsp;| \){BIZ_LOGICAL}综合实例:
    讯享网ssh&nbsp;&nbsp;&nbsp;127.0.0.1&nbsp;&lt;&lt;EOFsudo&nbsp;sused&nbsp;-i&nbsp;’s/^Hostname=.
    /Hostname=127.0.0.1/‘&nbsp;/etc/zabbix/zabbix_agentd.confcat&nbsp;/etc/zabbix/zabbix_agentd.conf&nbsp;|&nbsp;grep&nbsp;Hostnameps&nbsp;-ef&nbsp;|&nbsp;grep&nbsp;zabbix&nbsp;|&nbsp;awk&nbsp;&nbsp;’{print&nbsp;\(2}&#39;&nbsp;|&nbsp;xargs&nbsp;kill&nbsp;-9/usr/sbin/zabbix_agentd&nbsp;-c&nbsp;/etc/zabbix/zabbix_agentd.confsleep&nbsp;2ps&nbsp;-ef&nbsp;&nbsp;|&nbsp;grep&nbsp;zabbixexitexitEOF</pre> <h4>4、循环、迭代逻辑控制</h4><p><strong>4.1 while循环语法(while...do...done)</strong></p><pre>#hdfs文件统计hdfs&nbsp;dfs&nbsp;-ls&nbsp;/&nbsp;&nbsp;|&nbsp;hdfs&nbsp;dfs&nbsp;-ls&nbsp;`awk&nbsp;&#39;{print&nbsp;\)8}‘/&nbsp;|&nbsp;&nbsp;echo&nbsp;-e&nbsp;&quot;awk&nbsp;’{print&nbsp;\(8}&#39;`/&nbsp; &quot;&nbsp;&nbsp;|&nbsp;while&nbsp;read&nbsp;line&nbsp;;&nbsp;do&nbsp;echo&nbsp;-e&nbsp;&quot;\)line&nbsp; &nbsp;sudo&nbsp;-u&nbsp;hdfs&nbsp;hdfs&nbsp;dfs&nbsp;-ls&nbsp;-R&nbsp;$line&nbsp;|&nbsp;wc&nbsp;-l&nbsp;&quot;&nbsp;&nbsp;&nbsp;&nbsp;;donehdfs&nbsp;dfs&nbsp;-ls&nbsp;/&nbsp;&nbsp;|&nbsp;hdfs&nbsp;dfs&nbsp;-ls&nbsp;awk&nbsp;&#39;{print&nbsp;$8}&#39;/&nbsp;|&nbsp;&nbsp;awk&nbsp;‘{&nbsp;cmd=&quot;echo&nbsp;-e&nbsp;&nbsp;&quot;\(8&quot;\ \ \ \ `sudo&nbsp;-u&nbsp;hdfs&nbsp;&nbsp;hdfs&nbsp;dfs&nbsp;-ls&nbsp;-R&nbsp;&nbsp;&quot;\)8&quot;|&nbsp;wc&nbsp;-l`&quot;&nbsp;;cmd|getline&nbsp;;&nbsp;print&nbsp;\(0}&#39;#jar包里统计包含指定字符的文件名ls;while&nbsp;read&nbsp;line;do&nbsp;cat&nbsp;/dev/null&gt;\)line;&nbsp;donels&nbsp;lib/*&nbsp;|while&nbsp;read&nbsp;line;do&nbsp;jar&nbsp;-tf&nbsp;\(line|grep&nbsp;LogAnalysis;&nbsp;echo&nbsp;\)line;done#hdfs文件大小统计排序hdfs&nbsp;dfs&nbsp;-du&nbsp;\({HDFS_PATH}&nbsp;|&nbsp;sort&nbsp;-rn&nbsp;|&nbsp;head&nbsp;-n&nbsp;10&nbsp;|&nbsp;awk&nbsp;&#39;{printf(&quot;%.2f %.2f %s &quot;,\)1/1024/1024/1024,&quot; &quot;\(2/1024/1024/1024,&quot; &quot;\)3)}’#获取所有java程序的进程号ps&nbsp;-ef&nbsp;|&nbsp;while&nbsp;read&nbsp;line&nbsp;;&nbsp;do&nbsp;if&nbsp;[[&nbsp;$line&nbsp;=
    &nbsp;&quot;java&quot;&nbsp;]]&nbsp;;then&nbsp;echo&nbsp;\(line&nbsp;|&nbsp;&nbsp;awk&nbsp;-F&nbsp;&#39;&nbsp;&#39;&nbsp;&#39;{print&nbsp;\)2}‘&nbsp;;&nbsp;fi&nbsp;;done//循环所有文件,并添加header#!/bin/bashls&nbsp;OrderDetailsysdate&nbsp;|while&nbsp;read&nbsp;file;dosed&nbsp;-i&nbsp;&quot;1i$(cat&nbsp;header.csv)&quot;&nbsp;\(filedone</pre> <p>综合案例:</p><p>清理日志文件夹中的日志文件,将其置为黑洞文件内容(即情况该文件)。</p><pre>#!/bin/bash#先遍历本文件夹里文件夹dir_list=`ls`#对查询到的文件夹执行清空其内文件的操作for&nbsp;dir&nbsp;in&nbsp;\)dir_list;doecho&nbsp;\(dirls&nbsp;\)dir/&nbsp;|&nbsp;while&nbsp;read&nbsp;line;do&nbsp;echo&nbsp;\(line;&nbsp;cat&nbsp;/dev/null&nbsp;&gt;&nbsp;\)line;&nbsp;donedone
    for&nbsp;i&nbsp;in&nbsp;seq&nbsp;1&nbsp;$(cat&nbsp;/proc/cpuinfo&nbsp;|grep&nbsp;&quot;physical&nbsp;id&quot;&nbsp;|wc&nbsp;-l);&nbsp;do&nbsp;dd&nbsp;if=/dev/zero&nbsp;of=/dev/null&nbsp;&&nbsp;donepkill&nbsp;-9&nbsp;dd

    5、break 与 contine区别

    如下代码所示:
    break&nbsp; 循环只能退出最内层的循环; continue&nbsp; 只能去掉本次循环的剩余代码;
    break N 可以退出N层循环; continue N&nbsp; 将会把N层循环剩余代码都去掉,单循环次数不变;
    #!/bin/bashfor&nbsp;i&nbsp;in&nbsp;a&nbsp;b&nbsp;c&nbsp;ddoecho&nbsp;-n&nbsp;\(ifor&nbsp;j&nbsp;in&nbsp;`seq&nbsp;10`doif&nbsp;test&nbsp;\)j&nbsp;-eq&nbsp;5;then#break#&nbsp;continue#break&nbsp;2continue&nbsp;2fiecho&nbsp;-n&nbsp;\(jdone#换行echodone&nbsp;Program&nbsp;result:&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;1.&nbsp;break&nbsp;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;#&nbsp;a1234#&nbsp;b1234#&nbsp;c1234#&nbsp;d1234#&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;2.&nbsp;continue&nbsp;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;#&nbsp;a#&nbsp;b#&nbsp;c#&nbsp;d#&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;3.&nbsp;&quot;break&nbsp;2&quot;,&quot;break&nbsp;3&quot;&nbsp;has&nbsp;same&nbsp;effect&nbsp;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;#&nbsp;a1234#&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;4.&nbsp;&quot;continue&nbsp;2&quot;&nbsp;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;#&nbsp;a1234#&nbsp;b1234#&nbsp;c1234#&nbsp;d1234</pre> <h4>6、大文件拆分处理</h4><p>文件拆分:</p><p>split&nbsp;-d&nbsp;-a 8&nbsp;-l&nbsp;10000 PayOrderDetail.csv&nbsp;PayOrderDetail_sysdate_.csv</p><blockquote><p>用法:</p><p>Usage: split [OPTION]... [INPUT [PREFIX]]<br> Output fixed-size pieces of INPUT to PREFIXaa, PREFIXab, ...; default<br> size is 1000 lines, and default PREFIX is &#39;x&#39;. &nbsp;With no INPUT, or when INPUT<br> is -, read standard input.</p><p>Mandatory arguments to long options are mandatory for short options too.<br> &nbsp; -a, --suffix-length=N &nbsp; generate suffixes of length N (default 2)<br> &nbsp; &nbsp; &nbsp; --additional-suffix=SUFFIX &nbsp;append an additional SUFFIX to file names<br> &nbsp; -b, --bytes=SIZE &nbsp; &nbsp; &nbsp; &nbsp;put SIZE bytes per output file<br> &nbsp; -C, --line-bytes=SIZE &nbsp; put at most SIZE bytes of lines per output file<br> &nbsp; -d, --numeric-suffixes[=FROM] &nbsp;use numeric suffixes instead of alphabetic;<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;FROM changes the start value (default 0)<br> &nbsp; -e, --elide-empty-files &nbsp;do not generate empty output files with &#39;-n&#39;<br> &nbsp; &nbsp; &nbsp; --filter=COMMAND &nbsp; &nbsp;write to shell COMMAND; file name is \)FILE
    &nbsp; -l, –lines=NUMBER &nbsp; &nbsp; &nbsp;put NUMBER lines per output file
    &nbsp; -n, –number=CHUNKS &nbsp; &nbsp; generate CHUNKS output files; see explanation below
    &nbsp; -u, –unbuffered &nbsp; &nbsp; &nbsp; &nbsp;immediately copy input to output with ’-n r/…‘
    &nbsp; &nbsp; &nbsp; –verbose &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; print a diagnostic just before each
    &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; output file is opened
    &nbsp; &nbsp; &nbsp; –help &nbsp; &nbsp; display this help and exit
    &nbsp; &nbsp; &nbsp; –version &nbsp;output version information and exitSIZE is an integer and optional unit (example: 10M is 10*10241024). &nbsp;Units
    are K, M, G, T, P, E, Z, Y (powers of 1024) or KB, MB, … (powers of 1000).

    CHUNKS may be:
    N &nbsp; &nbsp; &nbsp; split into N files based on size of input
    K/N &nbsp; &nbsp; output Kth of N to stdout
    l/N &nbsp; &nbsp; split into N files without splitting lines
    l/K/N &nbsp; output Kth of N to stdout without splitting lines
    r/N &nbsp; &nbsp; like ’l‘ but use round robin distribution
    r/K/N &nbsp; likewise but only output Kth of N to stdout
















    GNU coreutils online help: &lt;http://wwwhttp://www.360doc.com/content/24/0807/17/software/coreutils/&gt;
    For complete documentation, run: info coreutils ’split invocation‘

    详细案例,详见:split命令_Linux split命令:切割(拆分)文件

    7、awk

    #批量删除hdfs下ods层下所有数据hdfs&nbsp;dfs&nbsp;-lsr&nbsp;/user/hive/warehouse/ods|awk&nbsp;’{print&nbsp;&quot;hdfs&nbsp;dfs&nbsp;-rm&nbsp;-R&quot;&nbsp;\(8}&#39;</p><h4>8、实现脚本中切换用户并执行该用户相关的命令操作</h4><p>假如当前用户为root账户,希望切换到其他用户下执行相关的操作,如有以下业务场景:</p><p>想以yarn用户身份,取删除yarn运行相关的早期用处不大的日志。</p><p>方式①、</p><pre>#!/bin/bashsu&nbsp;-&nbsp;yarn&nbsp;&lt;&lt;EOF&nbsp;&nbsp;&nbsp;&nbsp;pwd;&nbsp;&nbsp;&nbsp;&nbsp;exit;EOF</pre> <p>方式②、</p><pre>su&nbsp;-&nbsp;\){USER}&nbsp;-c&nbsp;\({COMMAND}&nbsp;&gt;&nbsp;/dev/null&nbsp;2&gt;&amp;1&nbsp;&amp;</pre> <p>注意:</p><p>该命令的执行权限是临时的,只在本条语句起作用。即在COMMAND命令行内部,是以\)USER身份执行命令;执行结束后,回到初始状态用户,这里为root。&nbsp;案例:
    讯享网&nbsp;01-Handle&nbsp;logic&nbsp;of&nbsp;clean&nbsp;HDFS&nbsp;NAMENODE&nbsp;&&nbsp;DATANODE&nbsp;&&nbsp;audit&nbsp;logs.su&nbsp;-&nbsp;hdfs&nbsp;-c&nbsp;‘HDFS_PATH=/var/log/hadoop-hdfs;ls&nbsp;\(HDFS_PATH&nbsp;|&nbsp;grep&nbsp;&quot;hadoop-cmf-hdfs-NAMENODE-nn1.hadoop.com.log.out.[0-9]{1,}\)&quot;&nbsp;|&nbsp;while&nbsp;read&nbsp;f;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;cat&nbsp;/dev/null&nbsp;&gt;&nbsp;$HDFS_PATH/$f;&nbsp;done&nbsp;&nbsp;&nbsp;;ls&nbsp;\(HDFS_PATH&nbsp;|&nbsp;grep&nbsp;&quot;hadoop-cmf-hdfs-DATANODE-nn1.hadoop.com.log.out.[0-9]{1,}\)&quot;&nbsp;|&nbsp;while&nbsp;read&nbsp;f;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;cat&nbsp;/dev/null&nbsp;&gt;&nbsp;$HDFS_PATH/$f;&nbsp;done&nbsp;&nbsp;&nbsp;;ls&nbsp;\(HDFS_PATH&nbsp;|&nbsp;grep&nbsp;&quot;hdfs-audit.log.[0-9]{1,}\)&quot;&nbsp;|&nbsp;while&nbsp;read&nbsp;f;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;do&nbsp;cat&nbsp;/dev/null&nbsp;&gt;&nbsp;$HDFS_PATH/$f;&nbsp;done’
    注意:① ls这段语句在命令行下执行没任何问题,提取到“su - hdfs -c”中时,cat /dev/null &gt; $HDFS_PATH/$f这段必须要包裹上`符号,才能正常执行。</p><p>② -c 参数中,可以执行多行命令,但是需要几个条件:A). 所用命令使用&#39;&#39;包裹,每一行命令间,使用&quot;;&quot;来进行分隔。</p><p>补充su的用法:</p><pre>[root@cdh-nn1&nbsp;~]#&nbsp;su&nbsp;--helpUsage:su&nbsp;[options]&nbsp;[-]&nbsp;[USER&nbsp;[arg]...]Change&nbsp;the&nbsp;effective&nbsp;user&nbsp;id&nbsp;and&nbsp;group&nbsp;id&nbsp;to&nbsp;that&nbsp;of&nbsp;USER.A&nbsp;mere&nbsp;-&nbsp;implies&nbsp;-l.&nbsp;&nbsp;&nbsp;If&nbsp;USER&nbsp;not&nbsp;given,&nbsp;assume&nbsp;root.Options:-m,&nbsp;-p,&nbsp;--preserve-environment&nbsp;&nbsp;do&nbsp;not&nbsp;reset&nbsp;environment&nbsp;variables-g,&nbsp;--group&nbsp;&lt;group&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;specify&nbsp;the&nbsp;primary&nbsp;group-G,&nbsp;--supp-group&nbsp;&lt;group&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;specify&nbsp;a&nbsp;supplemental&nbsp;group-,&nbsp;-l,&nbsp;--login&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;make&nbsp;the&nbsp;shell&nbsp;a&nbsp;login&nbsp;shell-c,&nbsp;--command&nbsp;&lt;command&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass&nbsp;a&nbsp;single&nbsp;command&nbsp;to&nbsp;the&nbsp;shell&nbsp;with&nbsp;-c--session-command&nbsp;&lt;command&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass&nbsp;a&nbsp;single&nbsp;command&nbsp;to&nbsp;the&nbsp;shell&nbsp;with&nbsp;-cand&nbsp;do&nbsp;not&nbsp;create&nbsp;a&nbsp;new&nbsp;session-f,&nbsp;--fast&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;pass&nbsp;-f&nbsp;to&nbsp;the&nbsp;shell&nbsp;(for&nbsp;csh&nbsp;or&nbsp;tcsh)-s,&nbsp;--shell&nbsp;&lt;shell&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;run&nbsp;shell&nbsp;if&nbsp;/etc/shells&nbsp;allows&nbsp;it-h,&nbsp;--help&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;display&nbsp;this&nbsp;help&nbsp;and&nbsp;exit-V,&nbsp;--version&nbsp;&nbsp;output&nbsp;version&nbsp;information&nbsp;and&nbsp;exitFor&nbsp;more&nbsp;details&nbsp;see&nbsp;su(1).</pre> <p>su 和 “su - ${USER}”的区别:</p><blockquote><p>①、su只是切换用户。<br> ②、su - 切换用户并切换shell环境。</p><p>③、su another<br> pwd后为/home/current</p><p>④、su - another<br> pwd后为/home/another</p></blockquote><h4>9、awk实现查找奇数行、偶数行:</h4><p>seq 20 &gt; test.txt<br> [root@server1 tmp]# awk &#39;NR%2 != 0&#39; test.txt<br> [root@server1 tmp]# awk &#39;NR%2 == 0&#39; test.txt</p><h4><strong>10、IFS专题</strong></h4><p>IFS, 全称&nbsp;内部字段分隔符(Internal Field Separator, IFS) , 作用是在Linux中定义一个定界符,默认是空格。</p><p>如果字符串中的分隔符,默认不是空格,而是逗号(如csv文件), 则可以考虑临时替换IFS为逗号,处理完文本处理任务后, 再将默认的修改回来.</p><p>如果脚本实现, 按&quot;,&quot;提取表名list:</p><p>batch_upsert_table_process.sh</p><pre>#!/bin/bashinclude_tables=&quot;activity_info,activity_rule,activity_sku,base_category1,base_category2,base_category3,base_province,base_region,base_trademark,coupon_info,coupon_range,coupon_use,financial_sku_cost,sku_info,spu_info,user_info&quot;function&nbsp;get_element_by_split_comma(){ifs_old=$IFSIFS=&quot;,&quot;for&nbsp;tbl&nbsp;in&nbsp;$(echo&nbsp;&quot;${include_tables}&quot;);doecho&nbsp;&#39;Now&nbsp;is&nbsp;handle&nbsp;table&nbsp;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&nbsp;&#39;$tbl/data/maxwell/bin/maxwell-bootstrap&nbsp;--database&nbsp;gmall&nbsp;--table&nbsp;$tbl&nbsp;--config&nbsp;/data/maxwell/tf_custom_config/gmall_rtdw_test.propertiesdone#Recovery&nbsp;IFS&nbsp;to&nbsp;defaultIFS=$ifs_old}get_element_by_split_comma</pre> <h4>1、在shell中显示色彩</h4><p>语法格式:</p><p>echo -e &quot;033[颜色1:颜色2m 要展示的文字 033[0m&quot;</p><p>参数说明:</p><p>-----------------------------------------------------------------------------------------------------------------------</p><p>-e选项:表示允许反斜杠(对字符)转义。<br> 033[颜色1;颜色2m:称为转义序列,它本身是一个整体,中间不要有空格。<br> 033[:转义序列的开始。其中033代表Esc符号,也可以使用E或e来代替。<br> 颜色1和颜色2:表示字体的前景色或背景色,至于颜色1和颜色2哪一个表示前景色,哪一个表示背景色,由其设定的数值来决定,前景色和背景色的数值空间是不同的。<br> m:转义序列的终止标志。<br> 033[0m:表示将颜色恢复回原来的配色。<br> &nbsp;我们可以用一张原理图来理解:</p><p>-----------------------------------------------------------------------------------------------------------------------</p><p>图示说明:</p><p><img doc360img-src='http://image109.360doc.com/DownloadImg/2024/08/0717/_2_.png' alt="" src="http://image109.360doc.com/DownloadImg/2024/08/0717/_2_.png"></p><p>颜色码:</p><h4>1、字符串转化为数字</h4><p>案例1: 将日期中以0开头的数字字符串转换为数字</p><p>比如今日为2022-03-25, 如果想获取月份, 可以使用 echo $(date +%m) 或 echodate +%m, 将获取到字符串&quot;03&quot;, 但我们想要去掉开头0的3, 翻遍date的api都没有找到.</p><p>这时候可以考虑使用数学运算将原字符串 与 一个数字0相加, 变相通过数学计算获取到整形的计算结果.</p><pre>[hdfs@hadoop&nbsp;test]$&nbsp;echo&nbsp;$(expr&nbsp;$(date&nbsp;+%m)&nbsp;+&nbsp;0)3[hdfs@hadoop&nbsp;test]$&nbsp;echo&nbsp;expr&nbsp;\((date&nbsp;+%m)&nbsp;+&nbsp;0`3[hdfs@hadoop&nbsp;test]\)&nbsp;hive&nbsp;–hivevar&nbsp;year=\((date&nbsp;+%Y)&nbsp;--hivevar&nbsp;month=`expr&nbsp;\)(date&nbsp;+%m)&nbsp;+&nbsp;0`&nbsp;-f&nbsp;/data/program/test_hive.hql



















    test_hive.hql中则可以使用上述动态传参的值:
    ALTER&nbsp;TABLE&nbsp;ads.my_partition_table_test&nbsp;DROP&nbsp;IF&nbsp;EXISTS&nbsp;PARTITION(year=\({hivevar:year},&nbsp;month=\){hivevar:month});
    登录shell:使用linux账户登录后执行的shell非登录shell:不经登录,直接使用shell,如ssh 远程连接到主机后执行的shell注意:
    • &nbsp;如果将环境变量配置信息,配置在/etc/profile中,对于非登录shell,则获取不到。
    • 而对于/etc/profile.d/.sh,则对于2种shell,都可以访问到。
    Centos系统服务器脚本目录位置:/usr/lib/systemd/其内部有系统(system)和用户(user)2个文件夹,如需要开机不登录即要求能执行的程序,在系统服务(system)里,即/usr/lib/systemd/system;而如果需要用户登录之后才可以运行的程序,在用户服务(user)里,即/usr/lib/systemd/user。这里以nginx服务开启自启为例:
    讯享网[Unit]Description=Nginx&nbsp;restart&nbsp;on&nbsp;RebootAfter=network.target[Service]Type=forkingUser=nginxGroup=nginxExecStart=/etc/init.d/nginx&nbsp;startExecReload=/etc/init.d/nginx&nbsp;restartExecStop=/etc/init.d/nginx&nbsp;&nbsp;stopPrivateTmp=true[Install]WantedBy=multi-user.target
    参数说明:
    1. Description:描述服务
    2. After:描述本服务的上游依赖关系,即上游启动完毕后,才可以启动本服务
    3. [Service]服务运行参数的设置
    4. Type=forking是后台运行的形式
    5. User服务启动用户
    6. Group服务启动用户组
    7. ExecStart为服务的具体运行命令
    8. ExecReload为重启命令
    9. ExecStop为停止命令
    10. PrivateTmp=True表示给服务分配独立的临时空间
    注意:
    • [Service]的启动、重启、停止命令全部要求使用绝对路径
    • [Install]服务安装的相关设置,可设置为多用户
    一般文件以644权限进行保存,如下:[root@nn2 system]# ll frp.service&nbsp;
    -rw-r–r– 1 root root 266 Oct 29 11:50 frp.service

    设置开机自启动命令:systemctl&nbsp; enable&nbsp; nginx.service&gt;&gt; 如果查看systemctl启动服务的log信息?Service启动之后, 如果想查询其详细日志信息, 可以使用类似tail的命令,&nbsp;使用journalctl -f 可以来实时追踪日志.&nbsp;使用journalctl可以查看使用systemctl启动的service,常用参数有两种, 如下:①. 显示多个混合在一起的systemctl 服务日志, 一般刚启动完一个service时查看比较方便
    journalctl&nbsp;-f
    ②. 只查看某一个具体的service服务的日志
    讯享网journalctl&nbsp;-u&nbsp;服务名如:2021-11-10&nbsp;10:06:37&nbsp;nn1&nbsp;systemd:&nbsp;Started&nbsp;Bigdata&nbsp;KafkaManager.2021-11-10&nbsp;10:06:37&nbsp;nn1&nbsp;kafka-manager:&nbsp;This&nbsp;application&nbsp;is&nbsp;already&nbsp;running&nbsp;(Or&nbsp;delete&nbsp;/opt/software/kafka-manager-1.3.3.23/RUNNING_PID&nbsp;file).2021-11-10&nbsp;10:06:37&nbsp;nn1&nbsp;systemd:&nbsp;bigdata_kafkaManager.service:&nbsp;main&nbsp;process&nbsp;exited,&nbsp;code=exited,&nbsp;status=255/n/a2021-11-10&nbsp;10:06:37&nbsp;nn1&nbsp;systemd:&nbsp;Unit&nbsp;bigdata_kafkaManager.service&nbsp;entered&nbsp;failed&nbsp;state.2021-11-10&nbsp;10:06:37&nbsp;nn1&nbsp;systemd:&nbsp;bigdata_kafkaManager.service&nbsp;failed.2021-11-10&nbsp;10:06:46&nbsp;nn1&nbsp;bigdata_admin:&nbsp;root&nbsp;[/etc/systemd/system]2021-11-10&nbsp;10:06:46&nbsp;systemctl&nbsp;is-enabled&nbsp;bigdata_kafkaManager.service2021-11-10&nbsp;10:06:52&nbsp;nn1&nbsp;systemd:&nbsp;Reloading.2021-11-10&nbsp;10:06:53&nbsp;nn1&nbsp;systemd:&nbsp;[/run/systemd/generator.late/cloudera-scm-server.service:13]&nbsp;Failed&nbsp;to&nbsp;add&nbsp;dependency&nbsp;on&nbsp;+cloudera-scm-server-db.service,&nbsp;ignoring:&nbsp;Invalid&nbsp;argument2021-11-10&nbsp;10:06:53&nbsp;nn1&nbsp;systemd:&nbsp;[/etc/systemd/system/bigdata_kafkaManager.service:15]&nbsp;Unknown&nbsp;lvalue&nbsp;‘StartLimitIntervalSec’&nbsp;in&nbsp;section&nbsp;‘Service’2021-11-10&nbsp;10:06:53&nbsp;nn1&nbsp;bigdata_admin:&nbsp;root&nbsp;[/etc/systemd/system]2021-11-10&nbsp;10:06:52&nbsp;systemctl&nbsp;disable&nbsp;bigdata_kafkaManager.service2021-11-10&nbsp;10:07:02&nbsp;nn1&nbsp;systemd:&nbsp;Stopped&nbsp;Bigdata&nbsp;KafkaManager.2021-11-10&nbsp;10:07:02&nbsp;nn1&nbsp;systemd:&nbsp;[/etc/systemd/system/bigdata_kafkaManager.service:15]&nbsp;Unknown&nbsp;lvalue&nbsp;‘StartLimitIntervalSec’&nbsp;in&nbsp;section&nbsp;‘Service’2021-11-10&nbsp;10:07:02&nbsp;nn1&nbsp;systemd:&nbsp;[/etc/systemd/system/bigdata_kafkaManager.service:15]&nbsp;Unknown&nbsp;lvalue&nbsp;‘StartLimitIntervalSec’&nbsp;in&nbsp;section&nbsp;‘Service’2021-11-10&nbsp;10:07:02&nbsp;nn1&nbsp;bigdata_admin:&nbsp;root&nbsp;[/etc/systemd/system]2021-11-10&nbsp;10:07:02&nbsp;systemctl&nbsp;stop&nbsp;bigdata_kafkaManager.service
    ③. 通过 &quot;系统日志&quot; 来进行查询
    tail&nbsp;-100f&nbsp;/var/log/message2021-11-10&nbsp;10:06:37&nbsp;nn1&nbsp;systemd:&nbsp;Started&nbsp;Bigdata&nbsp;KafkaManager.2021-11-10&nbsp;10:06:37&nbsp;nn1&nbsp;kafka-manager:&nbsp;This&nbsp;application&nbsp;is&nbsp;already&nbsp;running&nbsp;(Or&nbsp;delete&nbsp;/opt/software/kafka-manager-1.3.3.23/RUNNING_PID&nbsp;file).2021-11-10&nbsp;10:06:37&nbsp;nn1&nbsp;systemd:&nbsp;bigdata_kafkaManager.service:&nbsp;main&nbsp;process&nbsp;exited,&nbsp;code=exited,&nbsp;status=255/n/a2021-11-10&nbsp;10:06:37&nbsp;nn1&nbsp;systemd:&nbsp;Unit&nbsp;bigdata_kafkaManager.service&nbsp;entered&nbsp;failed&nbsp;state.2021-11-10&nbsp;10:06:37&nbsp;nn1&nbsp;systemd:&nbsp;bigdata_kafkaManager.service&nbsp;failed.2021-11-10&nbsp;10:06:46&nbsp;nn1&nbsp;bigdata_admin:&nbsp;root&nbsp;[/etc/systemd/system]2021-11-10&nbsp;10:06:46&nbsp;systemctl&nbsp;is-enabled&nbsp;bigdata_kafkaManager.service2021-11-10&nbsp;10:06:52&nbsp;nn1&nbsp;systemd:&nbsp;Reloading.2021-11-10&nbsp;10:06:53&nbsp;nn1&nbsp;systemd:&nbsp;[/run/systemd/generator.late/cloudera-scm-server.service:13]&nbsp;Failed&nbsp;to&nbsp;add&nbsp;dependency&nbsp;on&nbsp;+cloudera-scm-server-db.service,&nbsp;ignoring:&nbsp;Invalid&nbsp;argument2021-11-10&nbsp;10:06:53&nbsp;nn1&nbsp;systemd:&nbsp;[/etc/systemd/system/bigdata_kafkaManager.service:15]&nbsp;Unknown&nbsp;lvalue&nbsp;‘StartLimitIntervalSec’&nbsp;in&nbsp;section&nbsp;‘Service’2021-11-10&nbsp;10:06:53&nbsp;nn1&nbsp;bigdata_admin:&nbsp;root&nbsp;[/etc/systemd/system]2021-11-10&nbsp;10:06:52&nbsp;systemctl&nbsp;disable&nbsp;bigdata_kafkaManager.service2021-11-10&nbsp;10:07:02&nbsp;nn1&nbsp;systemd:&nbsp;Stopped&nbsp;Bigdata&nbsp;KafkaManager.2021-11-10&nbsp;10:07:02&nbsp;nn1&nbsp;systemd:&nbsp;[/etc/systemd/system/bigdata_kafkaManager.service:15]&nbsp;Unknown&nbsp;lvalue&nbsp;‘StartLimitIntervalSec’&nbsp;in&nbsp;section&nbsp;‘Service’2021-11-10&nbsp;10:07:02&nbsp;nn1&nbsp;systemd:&nbsp;[/etc/systemd/system/bigdata_kafkaManager.service:15]&nbsp;Unknown&nbsp;lvalue&nbsp;‘StartLimitIntervalSec’&nbsp;in&nbsp;section&nbsp;‘Service’2021-11-10&nbsp;10:07:02&nbsp;nn1&nbsp;bigdata_admin:&nbsp;root&nbsp;[/etc/systemd/system]2021-11-10&nbsp;10:07:02&nbsp;systemctl&nbsp;stop&nbsp;bigdata_kafkaManager.service2021-11-10&nbsp;10:07:24&nbsp;nn1&nbsp;bigdata_admin:&nbsp;root&nbsp;[/etc/systemd/system]2021-11-10&nbsp;10:07:08&nbsp;watch&nbsp;free&nbsp;-g2021-11-10&nbsp;10:07:24&nbsp;nn1&nbsp;bigdata_admin:&nbsp;root&nbsp;[/etc/systemd/system]2021-11-10&nbsp;10:07:08&nbsp;watch&nbsp;free&nbsp;-g2021-11-10&nbsp;10:07:24&nbsp;nn1&nbsp;bigdata_admin:&nbsp;root&nbsp;[/etc/systemd/system]2021-11-10&nbsp;10:07:08&nbsp;watch&nbsp;free&nbsp;-g2021-11-10&nbsp;10:18:20&nbsp;nn1&nbsp;bigdata_admin:&nbsp;root&nbsp;[/etc/systemd/system]2021-11-10&nbsp;10:08:19&nbsp;tail&nbsp;-100f&nbsp;/var/log/messages
    watch -d -n 1&nbsp;ls -l参数说明:①、-n:默认为2s刷新一次,通过-n 参数更新刷新频次;②、-d:方便查看输出与上次的不同之处。参考博文列表:
    1. Linux常用命令大全(非常全!!!) - fcyh - 博客园
    2. shell中break 与 continue - 亮哥vvv - 博客园
    3. crontab用法与实例 | 《Linux就该这么学》
    4. 最详细的CentOS7设置自定义开机启动服务教程 - 简书(centos7设置自定义开机启动)
    5. Centos7允许3306端口通过防火墙_vv小飞的专栏-CSDN博客_centos 允许端口(Centos7允许3306端口通过防火墙)
    6. Linux字符截取命令-cut_小工匠-CSDN博客(cut文本处理)
    7. 服务器日志 之 CentOS7日志管理工具 journalctl - 简书(服务器日志 之 CentOS7日志管理工具 journalctl)
    8. echo 在shell及脚本中显示色彩及闪烁警告效果 - 南清风 - 博客园(echo 在shell及脚本中显示色彩及闪烁警告效果)
    9. Linux命令大全(排版清晰!!持续更新!!非常详细)
    10. Linux sort命令详解
    讯享网 </td> </tr> </tbody> 


















    小讯
    上一篇 2025-04-15 08:34
    下一篇 2025-04-28 09:57

    相关推荐

    版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
    如需转载请保留出处:https://51itzy.com/kjqy/144785.html