Linux从入门到入土②(系统管理)

文章目录

系统管理

Linux 中的进程和服务

计算机中,一个正在执行的程序或命令,被叫做”进程”(process)。

启动之后一只存在、常驻内存的 进程,一般被称作”服务”(service)。

windows电脑中的服务:

Linux从入门到入土②(系统管理)

这里有几个注意点:

  • 在linux中,每一个程序都有自己的一个进程,每一个进程有一个id号(PID)
  • 每一个进程,都有一个父进程!
  • 进程可以有两种存在方式:前台、后台
  • 一般的服务都是后台运行的,基本的程序都是前台运行的

我们整个系统运行的时候可能需要很多后台的服务来支撑,这些服务往往都是在系统一启动的时候就开始了,直到系统关闭的时候才会被终止,所有的这些服务,我们称作 系统服务,而具体执行这些服务的进程,我们往往把他们叫做 守护进程(deamon).

我们可以发现Linux中的很多服务是以d结尾的,说明当成的进程是守护进程。

在Linux里面系统服务和守护进程可以当成一个东西

; Service服务管理(CentOS 6 版本-了解)

基本语法

service 服务名 start | stop |· restart | status

使用

首先我们查看一下服务:

ls /etc/init.d/服务名

Linux从入门到入土②(系统管理)

(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

Linux从入门到入土②(系统管理)

我们可以明显的感觉到服务的数量变多了

使用

(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 (功能描述:开启指定服务的自动启动)

例如:

Linux从入门到入土②(系统管理)
Linux从入门到入土②(系统管理)

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规范包括:

  1. 基本的正则表达式(Basic Regular Expression 又叫BasicRegEx 简称BREs)
  2. 扩 展 的 正 则 表 达 式 ( Extended Regular Expression 又 叫Extended RegEx 简称EREs)

基本正则表达式

基本正则表达式常用字符:

Linux从入门到入土②(系统管理)

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

Linux从入门到入土②(系统管理)

含有元字符的搜索 (以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

总结:

Linux从入门到入土②(系统管理)
Linux从入门到入土②(系统管理)
Linux从入门到入土②(系统管理)

正则表达式与通配符的区别

通配符是bash 操作接口的一个功能
正则表达式是一种字符串处理的表示方式。

例如:

通配符中, *代表0~无限多个字符, 而正则中 *标识重复前一个字符多次

通配符中, ?表示任意一个字符, 正则中则用 ’.’表示

扩展正则表达式

grep 仅支持基础正则表达式,如果要使用扩展正则表达式,一般使用 egrep, 或 grep -E

Linux从入门到入土②(系统管理)
例如:

标准正则:

grep -v'^$’ regular_express.txt l grep -v ‘^#’

用扩展正则表达式替换为:

egrep -v'^$|^#’regular_express.txt

总结:

Linux从入门到入土②(系统管理)
Linux从入门到入土②(系统管理)
附:Perl正则

Linux从入门到入土②(系统管理)

sed工具

  • sed 命令是利用脚本来处理文本文件。
  • sed 可依照脚本的指令来处理、编辑文本文件。
  • sed 主要用来自动编辑一个或多个文件、简化对文件的反复操作、编写转换程序等。

sed工作流程图:

Linux从入门到入土②(系统管理)

语法规则:

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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球