常用命令+工具
<p>[TOC]</p>
<p>-目录</p>
<pre><code class="language-bash">1、安装gcc、c++编译器以及内核文件
2、Windows命令robocopy
3.如何在sed中使用变量
4.Windows下FAT32格式U盘转换成NFS格式命令
5.vi/vim字符串替换
6.使用grep排除空行和注释行
7.Linux下,用命令进行 大文件(日志)分割、合并
8 linux gz 解压缩
9、pstree
10、pgrep
10.回车与换行
11.disown命令</code></pre>
<h4>1、安装gcc、c++编译器以及内核文件</h4>
<p><code>yum -y install gcc gcc-c++ kernel-devel</code>
CentOS8下make安装</p>
<pre><code class="language-bash">dnf -y install gcc automake autoconf libtool make
dnf -y install gcc gcc-c++</code></pre>
<h4>2、Windows命令robocopy</h4>
<p><a href="http://blog.chinaunix.net/uid-26782198-id-3265496.html">http://blog.chinaunix.net/uid-26782198-id-3265496.html</a>
<a href="https://www.cnblogs.com/xinyuxin912/archive/2013/07/10/3181564.html">https://www.cnblogs.com/xinyuxin912/archive/2013/07/10/3181564.html</a></p>
<h4>3、Linux rysnc命令</h4>
<p><a href="https://blog.csdn.net/wana_one_gy/article/details/82557309">https://blog.csdn.net/wana_one_gy/article/details/82557309</a>
<a href="https://www.cnblogs.com/f-ck-need-u/p/7220009.html">https://www.cnblogs.com/f-ck-need-u/p/7220009.html</a>
<a href="https://www.cnblogs.com/fuhai0815/p/10238255.html">https://www.cnblogs.com/fuhai0815/p/10238255.html</a></p>
<h3>3.如何在sed中使用变量</h3>
<p>在sed条件中是不认识变量取值的,解决办法就是:把"单引号"变成"双引号"
原语句:</p>
<pre><code class="language-bash">sed -i 's/localhost.domain/$HTNAME/g' /etc/hostname</code></pre>
<p>把"单引号"变成"双引号",修改后语句:</p>
<pre><code class="language-bash">sed -i "s/localhost.domain/$HTNAME/g" /etc/hostname</code></pre>
<h3>4.Windows下FAT32格式U盘转换成NFS格式命令</h3>
<pre><code class="language-bash">convert i: /fs:ntfs</code></pre>
<h3>5.vi/vim字符串替换</h3>
<pre><code class="language-bash">:%s/vivian/sky/g 替换每一行中所有 vivian 为 sky (等同于 :g/vivian/s//sky/g) </code></pre>
<p>更多的替换方法详见:
<a href="https://www.cnblogs.com/black/p/5171633.html">https://www.cnblogs.com/black/p/5171633.html</a></p>
<h3>6.使用grep排除空行和注释行</h3>
<p><strong>grep的排除选项为 -v</strong></p>
<p>排除空行的命令是:</p>
<pre><code class="language-bash">grep -v '^$' filename</code></pre>
<p>排除以#注释的命令是:</p>
<pre><code class="language-bash">grep -v '^#' filename</code></pre>
<p>结合起来就是,既排除空行又排除注释行的命令</p>
<pre><code class="language-bash">grep -v "^#" nova.conf | grep -v "^$"</code></pre>
<pre><code class="language-bash">grep去除空行与注释行的三种方式
cat elasticsearch.yml | grep -v ^# |grep -v ^$
grep "^[^#]" kk.txt 不以#字符的其他字符 开头的。因为[ ]指定了是单个字符,所以就把空行排除了
grep -v "^$\|[#;]" kk.txt ////这个是 ^$ 或者 含有#的,^被或者符 分开了,^过不去的
grep -v "^$\|^#" kk.txt /////既然过不去那就只能 在后面加上^了</code></pre>
<h3>7.Linux下,用命令进行 大文件(日志)分割、合并</h3>
<h4>7.1.指定文件大小分割:</h4>
<p>以每个文本文件10M方式分割日志</p>
<pre><code class="language-bash">split -b 10m catalina.out imsoft</code></pre>
<h4>7.2.大文件合并</h4>
<pre><code class="language-bash">cat small_file* > large_file</code></pre>
<h3>8 linux gz 解压缩</h3>
<pre><code class="language-bash">Linux压缩保留源文件的方法:
gzip –c filename > filename.gz
Linux解压缩保留源文件的方法:
gunzip –c filename.gz > filename
gunzip的用法
1.作用
gunzip命令作用是解压文件,使用权限是所有用户。
2.格式
gunzip [-acfhlLnNqrtvV][-s ][文件...]
或者gunzip [-acfhlLnNqrtvV][-s ][目录]
3.主要参数
-a或--ascii:使用ASCII文字模式。
-c或--stdout或--to-stdout:把解压后的文件输出到标准输出设备。
-f或-force:强行解开压缩文件,不理会文件名称或硬连接是否存在,以及该文件是否为符号连接。
-h或--help:在线帮助。
-l或--list:列出压缩文件的相关信息。
-L或--license:显示版本与版权信息。
-n或--no-name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其忽略不予处理。
-N或--name:解压缩时,若压缩文件内含有原来的文件名称及时间戳记,则将其回存到解开的文件上。
-q或--quiet:不显示警告信息。
-r或--recursive:递归处理,将指定目录下的所有文件及子目录一并处理。
-S或--suffix:更改压缩字尾字符串。
-t或--test:测试压缩文件是否正确无误。
-v或--verbose:显示指令执行过程。
-V或--version:显示版本信息。
4.说明
gunzip是个使用广泛的解压缩程序,它用于解开被gzip压缩过的文件,这些压缩文件预设最后的扩展名为“.gz”。事实上,gunzip就是gzip的硬连接,因此不论是压缩或解压缩,都可通过gzip指令单独完成。</code></pre>
<h3>9、pstree</h3>
<p>在 Fedora/Red Hat/CentOS 上安装pstree
yum -y install psmisc
<a href="https://www.cnblogs.com/alongdidi/archive/2019/08/06/linux_process.html">https://www.cnblogs.com/alongdidi/archive/2019/08/06/linux_process.html</a></p>
<h3>10、pgrep</h3>
<p>查看进程专用工具-----pgrep
系统最小化安装就有这命令
<a href="https://blog.51cto.com/12790236/1981861https://blog.51cto.com/12790236/1981861">https://blog.51cto.com/12790236/1981861https://blog.51cto.com/12790236/1981861</a></p>
<h3>10.回车与换行</h3>
<p><a href="https://cloud.tencent.com/developer/article/1423461">https://cloud.tencent.com/developer/article/1423461</a>
仅回车换行</p>
<pre><code class="language-bash">echo -e "\r"</code></pre>
<p>回车换行并一空行</p>
<pre><code class="language-bash">echo -e "\n"</code></pre>
<h3>11.disown命令</h3>
<p>disown命令可以从当前shell的作业列表中移除全部作业,也可移除指定的一到多个作业;正在运行的作业也可以移除;也可以标记作业,使得它们在当前shell退出后也不会结束。</p>
<p>该命令需要set选项monitor处于开启状态时才能执行;查看作业控制状态:输入set -o查看 monitor行;执行set -o monitor或set -m开启该选项。disown命令该命令是bash内建命令,相关的帮助信息请查看help命令。</p>
<h4>语法格式</h4>
<p>disown [参数] [标识符or进程ID]</p>
<h4>常用参数</h4>
<p>-h 标记每个作业标识符,这些作业将不会在shell接收到sighup信号时接收到sighup信号
-a 移除所有的作业
-r 移除运行的作业</p>
<h4>参考实例</h4>
<p>删除全部作业:</p>
<pre><code class="language-bash">disown -a</code></pre>
<p>删除运行状态的作业:</p>
<pre><code class="language-bash">disown -r</code></pre>
<p>根据jobId,移出指定的后台任务:</p>
<pre><code class="language-bash">jobs -l
disown %2
disown -h %2
```bash
# 演示 -h 选项作用
sleep 90 &
[1] 109080
jobs -l
[1]+ 109080 Running sleep 90 &
disown -h %1
exit # 此时前一个终端已经关闭,现在打开新终端查找该作业。
pgrep -a -u user2 -f 'sleep 90' 或
ps -ef |grep sleep
109080 sleep 90</code></pre>
<h3>12 vim tab设置为4个空格</h3>
<p><a href="https://blog.csdn.net/jiang1013nan/article/details/6298727">https://blog.csdn.net/jiang1013nan/article/details/6298727</a></p>
<h3>13 Linux expr命令</h3>
<p><a href="https://www.runoob.com/linux/linux-comm-expr.html">https://www.runoob.com/linux/linux-comm-expr.html</a></p>
<h3>14 禁ping配置</h3>
<pre><code class="language-bash">firewall-cmd --permanent --add-rich-rule='rule protocol value=icmp drop'
firewall-cmd --reload</code></pre>
<p>取消禁ping</p>
<pre><code class="language-bash">firewall-cmd --remove-rich-rule='rule protocol value=icmp drop'
firewall-cmd --reload</code></pre>
<h3>15.SSH自动断开连接的原因和解决办法|SSH保持长连接方法</h3>
<p>export TMOUT 在CentOS7中没有,则添加即可。</p>
<pre><code class="language-bash">vim /etc/profile中
export TMOUT=300
改为:
export TMOUT=0
vim /etc/ssh/sshd_config 中
将下面两句前的#去掉
#ClientAliveInterval 0
#ClientAliveCountMax 3
并ClientAliveInterval 0 改成 ClientAliveInterval 60</code></pre>
<p>shell脚本</p>
<pre><code class="language-bash">sudo sed -i 's/^export TMOUT=.*/export TMOUT=0/' /etc/profile &&sudo sed -i "/#ClientAliveInterval/a\ClientAliveInterval 60" /etc/ssh/sshd_config &&sudo sed -i "/#ClientAliveInterval/d" /etc/ssh/sshd_config &&sudo sed -i '/ClientAliveCountMax/ s/^#//' /etc/ssh/sshd_config &&sudo /bin/systemctl restart sshd.service</code></pre>