文章目录
- 系统管理
* - Linux 中的进程和服务
- Service服务管理(CentOS 6 版本-了解)
– - systemctl服务管理(CentOS 7 版本-重点掌握)
– - chkconfig 设置后台服务的自启配置(CentOS 6 版本)
– - systemctl 设置后台服务的自启配置
– - 正则表达式
* - 基本正则表达式
- 正则表达式与通配符的区别
- 扩展正则表达式
- sed工具
- awk工具
- 附:Linux系统中文件颜色分别代表什么?
- Linux 系统启动级别
系统管理
Linux 中的进程和服务
计算机中,一个正在执行的程序或命令,被叫做”进程”(process)。
启动之后一只存在、常驻内存的 进程,一般被称作”服务”(service)。
windows电脑中的服务:
这里有几个注意点:
- 在linux中,每一个程序都有自己的一个进程,每一个进程有一个id号(PID)
- 每一个进程,都有一个父进程!
- 进程可以有两种存在方式:前台、后台
- 一般的服务都是后台运行的,基本的程序都是前台运行的
我们整个系统运行的时候可能需要很多后台的服务来支撑,这些服务往往都是在系统一启动的时候就开始了,直到系统关闭的时候才会被终止,所有的这些服务,我们称作 系统服务
,而具体执行这些服务的进程,我们往往把他们叫做 守护进程(deamon)
.
我们可以发现Linux中的很多服务是以d结尾的,说明当成的进程是守护进程。
在Linux里面系统服务和守护进程可以当成一个东西
; Service服务管理(CentOS 6 版本-了解)
基本语法
service 服务名 start | stop |· restart | status
使用
首先我们查看一下服务:
ls /etc/init.d/服务名
(1)查看网络服务的状态
[root@hadoop100 桌面]#service network status
(2)停止网络服务
[root@hadoop100 桌面]#service network stop
(3)启动网络服务
[root@hadoop100 桌面]#service network start
(4)重启网络服务
[root@hadoop100 桌面]#service network restart
systemctl服务管理(CentOS 7 版本-重点掌握)
基本语法
systemctl start | stop | restart | status 服务名
我们还是来查看一下服务:
这回的位置不一样
ls /usr/lib/systemd/system
我们可以明显的感觉到服务的数量变多了
使用
(1)查看防火墙服务的状态
[root@hadoop100 桌面]# systemctl status firewalld
(2)停止防火墙服务
[root@hadoop100 桌面]# systemctl stop firewalld
(3)启动防火墙服务
[root@hadoop100 桌面]# systemctl start firewalld
(4)重启防火墙服务
[root@hadoop100 桌面]# systemctl restart firewalled
chkconfig 设置后台服务的自启配置(CentOS 6 版本)
基本语法
chkconfig (功能描述:查看所有服务器自启配置)
chkconfig 服务名 off (功能描述:关掉指定服务的自动启动)
chkconfig 服务名 on (功能描述:开启指定服务的自动启动)
chkconfig 服务名 --list (功能描述:查看服务开机启动状态)
使用
(1)开启/关闭 network(网络)服务的自动启动
[root@hadoop100 桌面]#chkconfig network on
[root@hadoop100 桌面]#chkconfig network off
(2)开启/关闭 network 服务指定级别的自动启动
[root@hadoop100 桌面]#chkconfig --level 指定级别 network on
[root@hadoop100 桌面]#chkconfig --level 指定级别 network of
systemctl 设置后台服务的自启配置
基本语法
systemctl list-unit-files (功能描述:查看服务开机启动状态)
systemctl disable service_name (功能描述:关掉指定服务的自动启动)
systemctl enable service_name (功能描述:开启指定服务的自动启动)
例如:
static代表我现在不能确定这个服务是否启动还是不启动,因为当前服务可能与其他服务相关联,他可能依赖于其他服务。
使用
(1)开启/关闭 iptables(防火墙)服务的自动启动
[root@hadoop100 桌面]# systemctl enable firewalld.service
[root@hadoop100 桌面]# systemctl disable firewalld.service
正则表达式
正则表达式是处理字符串的方法,他是以行为单位来进行字符串处理的行为,通过一些特殊符号的辅助,可以让使用者轻易的达到搜索/删除/取代某特定字符串的处理程序
正则表达是一种表示方法,工具程序支持这种表示方法,则可以用正则表达式来进行字符串的处理。例如:vi、grep、awk、sed等
用途:分析日志、简单的垃圾邮件过滤、软件(系统)配置等等
正则表达式拥有不同的规范,POSIX规范,Perl规范,Python规范等,Shell中的grep、egrep都使用POSIX规范。POSIX规范包括:
- 基本的正则表达式(Basic Regular Expression 又叫BasicRegEx 简称BREs)
- 扩 展 的 正 则 表 达 式 ( Extended Regular Expression 又 叫Extended RegEx 简称EREs)
基本正则表达式
基本正则表达式常用字符:
POSIX字符
POSIX字符类是一个形如 [:...:]
的 特殊元序列(meta sequence)
,他可以用于匹配特定的字符范围。
例如:
[:alnum:]
匹配任意一个字母或数字字符[:alpha:]
匹配任意一个字母字符(包括大小写字母)[:blank:]
空格与制表符(横向和纵向)[:digit:]
匹配任意一个数字字符[:lower:]
匹配小写字母[:upper:]
匹配大写字母[:punct:]
匹配标点符号[:space:]
匹配一个包括换行符、回车等在内的所有空白符[:graph:]
匹配任何一个可以看得见的且可以打印的字符[:xdigit:]
任何一个十六进制数(即:0-9,a-f,A-F)[:cntrl:]
任何一个控制字符(ASCII字符集中的前32个字符)[:print:]
任何一个可以打印的字符
接下来我们就来看看几种使用方法:
搜索指定字符串(以grep命令,搜索regular.txt文件为例)
grep –n 'the' man_db.conf
含有元字符的搜索 (以regular.txt为例)
1.grep –n 't[ae]st' regular.txt
2.grep –n '[^g]oo' regular.txt
3.grep -n'[^a-z]oo' regular.txt
4.grep –n '[^[:lower:]]oo' regular.txt
5.grep –n '[^[:digit:]]' regular.txt
指定开始、结尾字符串的搜索 (以grep命令,搜索regular.txt文件为例)
1.grep –n '^the' regular.txt
2.grep –n '^[a-z]' regular.txt
3.grep -n'^[[:lower:]]' regular.txt
4. grep -n '^[[:alpha:]]' regular.txt
5.grep –n'\.$' regular.txt
6. grep –n'^$' regular.txt
7. grep –v'^$' regular.txt | grep –v '^
含 有 任 意 、 重 复 字 符 的 字 符 串 搜 索 ( 以 grep 命 令 , 搜 索regular.txt文件为例)
.
:一定有一个任意字符*
:重复前一个字符,0到多次
grep –n'g..d' regular.txt
grep –n 'o*' regular.txt
grep –n'oo*' regular.txt
grep –n 'g*g' regular.txt
grep –n 'g.*g' regular.txt
给定字符范围的字符串搜索 (以grep命令,搜索regular.txt文件为例)
‘{}’能够指定字符个数,但'{}’在shell中有特殊意义,因此需要使用转移字符’\’
。
grep –n 'o\{2\}' regular.txt
grep –n 'o\{2,5\}' regular.txt
总结:
正则表达式与通配符的区别
通配符是bash 操作接口的一个功能
正则表达式是一种字符串处理的表示方式。
例如:
通配符中, *
代表0~无限多个字符, 而正则中 *
标识重复前一个字符多次
通配符中, ?
表示任意一个字符, 正则中则用 ’.’
表示
扩展正则表达式
grep 仅支持基础正则表达式,如果要使用扩展正则表达式,一般使用 egrep
, 或 grep -E
。
例如:
标准正则:
grep -v'^$’ regular_express.txt l grep -v ‘^#’
用扩展正则表达式替换为:
egrep -v'^$|^#’regular_express.txt
总结:
附:Perl正则
sed工具
- sed 命令是利用脚本来处理文本文件。
- sed 可依照脚本的指令来处理、编辑文本文件。
- sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。
sed工作流程图:
语法规则:
sed [-hnV][-e<span class="token punctuation">]</span><span class="token punctuation">[</span><span class="token operator">-</span>f<script文件><span class="token punctuation">]</span><span class="token punctuation">[</span>文本文件<span class="token punctuation">]</span>
</code></pre><p>参数:</p><ul><li>-e<script>或–expression=<script> 以选项中指定的script来处理输入的文本文件。</li><li>-f<script文件>或–file=<script文件> 以选项中指定的script文件来处<br>理输入的文本文件。</li><li>-h或–help 显示帮助。</li><li>-n或–quiet或–silent 取消默认sed的输出(因为sed默认是输出所有),常与sed内置命令p一起使用</li><li>-V或–version 显示版本信息。</li><li>-r 表示支持正则拓展</li></ul><blockquote><p>script用单引号('')括起来,不过当我们的script里面要使用变量的时候需要双引号("")。<br>例如:<br>设置shell变量var的值为evening,用sed命令查找匹配var变量值的行:<br><img src="https://img-blog.csdnimg.cn/5cddcfa72dcb42e38308b9c91ca87940.png"></p></blockquote><p>动作说明</p><ul><li>a :新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)~</li><li>c :取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!</li><li>d :删除, d 后面通常不接任何东西;</li><li>i :插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);</li><li>p :打印,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~</li><li>s :取代,可以直接进行取代的工作!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g !<ul><li>格式一般如下:s/正则/替换内容/g</li><li>g表示全局匹配</li></ul></li></ul><p>sed的匹配范围:<br><img src="https://img-blog.csdnimg.cn/80bcac21d8944dde99cd17b5dbaf4912.png"></p><p>应用举例</p><p>以行为单位新增/删除</p><pre><code class="prism language-shell"><span class="token punctuation">[</span>root@www ~<span class="token punctuation">]</span>
<span class="token number">1</span> root:x:0:0:root:/root:/bin/bash
<span class="token number">6</span> sync:x:5:0:sync:/sbin:/bin/sync
<span class="token number">7</span> shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
<span class="token function">nl</span> <span class="token function">passwd</span> <span class="token operator">|</span> <span class="token function">sed</span> <span class="token string">'2,5d'
nl passwd | sed '</span>2d<span class="token string">'
nl passwd | sed '</span><span class="token number">3</span>,<span class="token variable">$d</span>'
<span class="token function">nl</span> <span class="token function">passwd</span> <span class="token operator">|</span> <span class="token function">sed</span> '2a hello world'
<span class="token function">nl</span> /etc/passwd <span class="token operator">|</span> <span class="token function">sed</span> '2i drink tea'
<span class="token function">nl</span> /etc/passwd <span class="token operator">|</span> <span class="token function">sed</span> '2a Drink tea or <span class="token punctuation">..</span><span class="token punctuation">..</span><span class="token punctuation">..</span><span class="token punctuation">\</span>
<span class="token operator">></span> drink beer ?'
</code></pre><p>以行为单位显示和替换</p><pre><code class="prism language-shell"><span class="token function">nl</span> <span class="token function">passwd</span> <span class="token operator">|</span> <span class="token function">sed</span> '2,5c No <span class="token number">2</span>-5 number'
<span class="token function">nl</span> <span class="token function">passwd</span> <span class="token operator">|</span> <span class="token function">sed</span> '5,7p No <span class="token number">2</span>-5 number'
</code></pre><p>以行为单位搜索并显示</p><pre><code class="prism language-shell"><span class="token function">nl</span> /etc/passwd <span class="token operator">|</span> <span class="token function">sed</span> '/root/p'
<span class="token number">1</span> root:x:0:0:root:/root:/bin/bash
<span class="token number">2</span> daemon:x:1:1:daemon:/usr/sbin:/bin/
</code></pre><p>数据的搜索并删除</p><pre><code class="prism language-shell"><span class="token function">nl</span> /etc/passwd <span class="token operator">|</span> <span class="token function">sed</span> <span class="token string">'/root/d'</span>
<span class="token number">2</span> daemon:x:1:1:daemon:/usr/sbin:/bin/sh
<span class="token number">3</span> bin:x:2:2:bin:/bin:/bin/sh
</code></pre><p>数据的搜索并执行命令</p><pre><code class="prism language-shell"><span class="token function">nl</span> /etc/passwd <span class="token operator">|</span> <span class="token function">sed</span> <span class="token parameter variable">-n</span> <span class="token string">'/root/{s/bash/blueshell/;p;q}'</span>
<span class="token number">1</span> root:x:0:0:root:/root:/bin/blueshell
</code></pre><p>数据的搜索并替换</p><pre><code class="prism language-powershell">nl <span class="token operator">/</span>etc/passwd <span class="token punctuation">|</span> sed <span class="token operator">-</span>n 's/root/sroot/g'
</code></pre><p>直接修改内容(危险)</p><pre><code class="prism language-powershell">sed –i 's/\<span class="token punctuation">.</span>$<span class="token operator">/</span>\<span class="token operator">!</span><span class="token operator">/</span>g' regular<span class="token punctuation">.</span>txt
</code></pre><h2><a id="awk_404"></a>awk工具</h2><p>awk也是管道命令,sed通常处理一行数据,awk处理一行中的每个字段,默认以空格或tab键分隔。</p><p>使用方法:</p><pre><code class="prism language-shell"><span class="token function">awk</span> <span class="token punctuation">[</span>option<span class="token punctuation">]</span> '条件类型1 <span class="token punctuation">{</span>动作1<span class="token punctuation">}</span> 条件类型2 <span class="token punctuation">{</span>动作2<span class="token punctuation">}</span>...' filename
</code></pre><blockquote><p>注意:条件类型和动作一定用单引号括起来。</p></blockquote><blockquote><p>动作里面的语法类似于C语言</p></blockquote><p><img src="https://img-blog.csdnimg.cn/f29ba48da3c14bd7852437a849762d9d.png"></p><p>处理流程:</p><ol><li>读入第一行,并将第一行的资料填入$0(整行),$1(一行的第一个字段),$2,...</li><li>依据"条件类型的限制",判断是否需要进行后面的动作</li><li>完成所有动作</li><li>对后续行重复上面的步骤1~3,直到所有的数据都读完为止</li></ol><p>常用内置变量:</p><ul><li>NF:每一行($0)拥有的字段总数</li><li>NR:目前awk所处理的是第几行</li><li>FS:目前的分隔字符,默认是空格</li></ul><blockquote><p>awk,必须外层单引号,内层双引号<br>内置变量$1 $2 ···都不得添加双引号,否则会识别为文本,尽量别加引号。</p></blockquote><p><img src="https://img-blog.csdnimg.cn/1a37560d79634c64b2a1ef97f30d9a87.png"><br>逻辑运算字符:<br><code>></code>、<code><</code>、<code>>=</code>、<code><=</code>、<code>==</code>、<code>!=</code></p><p><img src="https://img-blog.csdnimg.cn/96712844a98e4bc1820c8a0fed42c389.png"></p><p>awk中的begin、end:</p><ul><li>BEGIN{ 执行前的语句 }</li><li>END { 处理完所有的行后要执行的语句 }</li></ul><p>例:</p><pre><code class="prism language-powershell"><span class="token function">cat</span> <span class="token operator">/</span>etc/passwd <span class="token punctuation">|</span> awk <span class="token string">'{FS=":"} $3<10 {print $1 "\t" $3}'</span>
<span class="token function">cat</span> <span class="token operator">/</span>etc/passwd <span class="token punctuation">|</span> awk '<span class="token keyword">BEGIN</span> <span class="token punctuation">{</span>FS=<span class="token string">":"</span><span class="token punctuation">}</span> <span class="token variable">$3</span><10 <span class="token punctuation">{</span>print <span class="token variable">$1</span> <span class="token string">"\t"</span> <span class="token variable">$3</span><span class="token punctuation">}</span>'
</code></pre><p>awk中的IF语句:</p><pre><code class="prism language-powershell"><span class="token keyword">if</span> <span class="token punctuation">(</span>condition<span class="token punctuation">)</span>
<span class="token punctuation">{</span>
action-1
action-1
<span class="token punctuation">.</span>
<span class="token punctuation">.</span>
action-n
<span class="token punctuation">}</span>
</code></pre><p><img src="https://img-blog.csdnimg.cn/c0aa0bb6819f45cb85fcc824ea3e852b.png"></p><p>awk中的for语句:</p><pre><code class="prism language-powershell"><span class="token keyword">for</span> <span class="token punctuation">(</span>initialisation<span class="token punctuation">;</span> condition<span class="token punctuation">;</span> increment/decrement<span class="token punctuation">)</span>
action
</code></pre><p>例:</p><pre><code>awk 'BEGIN { for (i = 1; i <= 5; ++i) print i }'
</code></pre><p>awk中的While语句:</p><pre><code class="prism language-powershell"><span class="token keyword">while</span> <span class="token punctuation">(</span>condition<span class="token punctuation">)</span>
action
</code></pre><p>例如:</p><pre><code class="prism language-powershell">awk <span class="token string">'BEGIN {i = 1; while (i < 6) { print i; ++i } }'</span>
</code></pre><p>break 和 continue语句:</p><ul><li>break结束循环,</li><li>continue结束本次循环</li></ul><pre><code>$ awk 'BEGIN {
sum = 0; for (i = 0; i < 20; ++i) {
sum += i; if (sum > 50) break; else print "Sum = ", sum
}
}'
awk 'BEGIN {for (i = 1; i <= 20; ++i) {if (i % 2 == 0) print i ; else continue} }'
</code></pre><p>exit</p><p>结束脚本程序的执行,该函数接受一个整数作为参数表示 AWK 进程结束状态。 如果没有提供该参数,其默认状态为 0。</p><pre><code class="prism language-powershell">$ awk <span class="token string">'BEGIN {
sum = 0; for (i = 0; i < 20; ++i) {
sum += i; if (sum > 50) exit(10); else print "Sum =", sum
}
}'</span>
</code></pre><h1><a id="Linux_522"></a>附:Linux系统中文件颜色分别代表什么?</h1><p>1、蓝色代表目录</p><p>2、白色代表一般性文件,如文本文件、配置文件、源码文件等</p><p>3、绿色代表可执行文件</p><p>4、黄色代表设备文件</p><p>5、红色代表压缩文件</p><p>6、红色代表闪烁代表连接文件有问题</p><p>7、灰色代表其他文件</p><p>8、浅蓝色代表链接文件</p><h1><a id="Linux__540"></a>Linux 系统启动级别</h1><p>Linux的启动分为五个阶段:</p><ul><li>内核的引导</li><li>运行init</li><li>系统初始化</li><li>建立终端</li><li>用户登陆系统</li></ul><p>init程序的类型:</p><ul><li><code>SysV</code>: init, CentOS 5之前, 配置文件: /etc/inittab。</li><li><code>Upstart</code>: init,CentOS 6, 配置文件: /etc/inittab, /etc/init/*.conf。</li><li><code>Systemd</code>: systemd, CentOS 7,配置文件: /usr/lib/systemd/system、 /etc/systemd/system。</li></ul><p><img src="https://img-blog.csdnimg.cn/416f7642f82f4e019630eda46c49ef66.png"></p><p>启动步骤:开机之后首先进入到BIOS的自检和启动过程,然后去引导分区里面去获取引导文件和linux内核中的一些内容进行整个系统的初始化,初始化完成之后进入init进程,它是用户级别主动启动的第一个进程,接下来他就会判断当前系统的运行级别,根据运行级别启动对应的系统服务。</p><p>我们可以看到Linux系统有七种运行级别,级别越高支持的功能就会越丰富。</p><blockquote><p>级别6是一个重启的级别,与前面无关<br>NFS指网络文件系统</p></blockquote><p>CentOS7 的运行级别简化为:<br>multi-user.target 等价于原运行级别 3(多用户有网,无图形界面)<br>graphical.target 等价于原运行级别 5(多用户有网,有图形界面)</p><p>查看当前运行级别:</p><blockquote><p>systemctl get-default</p></blockquote><p>修改当前运行级别</p><blockquote><p>systemctl set-default TARGET.target<br>(这里 TARGET 取 multi-user 或者 graphical)</p></blockquote><p>我们也可以在命令行使用:</p><ul><li>init 3进入非图形化模式</li><li>init 5进入图形化模式</li></ul>
Original: https://blog.csdn.net/zyb18507175502/article/details/126642141
Author: 十八岁讨厌编程
Title: Linux从入门到入土②(系统管理)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/637329/
转载文章受原作者版权保护。转载请注明原作者出处!