鸟哥的Linux私房菜——基础学习篇(第三版) (11-17章)

news2024/11/21 1:25:31

基础学习篇

  • 第十一章 :认识和学习bash
  • 第十二章 :正则表达式与文件格式化处理
  • 第十三章 :学习shell script
  • 第十四章 :Linux账号管理与ACL权限设定
  • 第十五章 :磁盘配额(Quota)与进阶文件系统管理
  • 第十六章 :例行性工作
  • 第十七章 :程序管理

第十一章 :认识和学习bash

1.shell功能

只是提供用户操作系统的一个接口,通过shell(命令行模式)来操作这些应用程序,让这些应用程序调用内核来运行所需的工作。

2.Liunx默认的shell

/bin/bash是linux默认的shell

3.环境变量命令
1.echo : 显示你的环境变量
在这里插入图片描述
设置自己的环境变量:
在这里插入图片描述
2.环境变量的功能:用env查看环境变量与常见环境变量说明
在这里插入图片描述

第十二章 :正则表达式与文件格式化处理

1.grep的基础用法:
在这里插入图片描述
2.sed指令的用法:
在这里插入图片描述
在这里插入图片描述

第十三章 :学习shell script

1.第一个script的编写与执行
在这里插入图片描述
例子:
假设你写的程序文件名是/home/dmtsai/shell.sh好了,怎么执行这个文件呢?按照下面的方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

第十四章 :Linux账号管理与ACL权限设定

/etc/shadow文件

Su使用

su总结一下用法是这样的:

 若要完整的切换到新使用者的环境,必须要使用『 su - username 』或『 su -l username 』, 才会连同 PATH/USER/MAIL 等变量都转成新用户的环境;

 如果仅想要执行一次 root 的指令,可以利用『 su - -c “指令串” 』的方式来处理;

 使用 root 切换成为任何使用者时,并与需要输入新用户的密码;

虽然使用 su 很方便啦,与过缺点是,当我的主机是多人共管的环境时,如果大家都要使用 su 来切换成为 root 的身份,那么与就每个人都得要知道 root 的密码,这样密码太多人知道可能会流出去, 很不妥当呢!怎办?透过 sudo 来处理即可!

sudo

相对于 su 需要了解新切换的用户密码 (常常是需要 root 的密码), sudo 的执行则仅需要自己的密码即可! 甚至可以设定不需要密码即可执行 sudo 呢!由于 sudo 可以让你以其他用户的身份执行指令 (通常是使用 root 的身份来执行指令),因此并非所有人都能够执行 sudo , 而是仅有规范到/etc/sudoers 内的用户才能够执行 sudo 这个指令

第十五章 :磁盘配额(Quota)与进阶文件系统管理

第十六章 :例行性工作

第十七章 :程序管理

ps命令

 ps :将某个时间点的程序运作情况获取下来

 仅观察自己的 bash 相关程序: ps –l

系统整体的程序运作是非常多的,但如果使用 ps -l 则仅列出与你的操作环境 (bash) 有关的程序而已,

亦即最上层的父程序会是你自己的 bash 而没有延伸到 init 这支程序去!我们就来观察看看:

F:代表这个程序旗标 (process flags),说明这个程序的总结权限,常见号码有:

o 若为 4 表示此程序的权限为 root ;
o 若为 1 则表示此子程序仅进行复制(fork)而没有实际执行(exec)。
S:代表这个程序的状态 (STAT),主要的状态有:
o R (Running):该程序正在运作中;
o S (Sleep):开程序目前正在睡眠状态(idle),但可以被唤醒(signal)。
o D :不可被唤醒的睡眠状态,通常这支程序可能在等待 I/O 的情况(ex>打印)
o T :停止状态(stop),可能是在工作控制(背景暂停)或除错 (traced) 状态;
o Z (Zombie):僵尸状态,程序已经终止但即无法被移除至内存外。
UID/PID/PPID:代表『此程序被该 UID 所拥有/程序的 PID 号码/此程序的父程序 PID 号码』
C:代表 CPU 使用率,单位为百分比;
PRI/NI:Priority/Nice 的缩写,代表此程序被 CPU 所执行的优先级,数值越小代表该程序越快被 CPU 执行。
ADDR/SZ/WCHAN:都与内存有关,ADDR 是 kernel function,指出该程序在内存的哪个部分,如果是个 running 的程序,一般就会显示『 - 』 / SZ 代表此程序用掉多少内存 / WCHAN表示目前程序是否运作中,同样的, 若为 - 表示正在运作中。
 TTY:登入者的终端机位置,若为进程登录则使用动态终端接口 (pts/n);
 TIME:使用掉的 CPU 时间,注意,是此程序实际花费 CPU 运作的时间,而不是系统时间;
 CMD:就是 command 的缩写,造成此程序的触发程序之指令为何。
所以你看到的 ps -l 输出讯息中,他说明的是:『bash 的程序属于 UID 为 0 的使用者,状态为睡眠(sleep), 之所以为睡眠因为他触发了 ps (状态为 run) 之故。此程序的 PID 为 13639,优先执行顺序为 75 , 下达 bash 所取得的终端接口为 pts/1 ,运作状态为等待 (wait) 。』这样已经够清楚了吧?

 观察系统所有程序: ps aux

你会变现 ps -l 与 ps aux 显示的项目并不相同!在 ps aux 显示的项目中,各字段的意义为:

USER:该 process 属于那个使用者账号的?
PID :该 process 的程序标识符。
%CPU:该 process 使用掉的 CPU 资源百分比;
%MEM:该 process 所占用的物理内存百分比;
VSZ :该 process 使用掉的虚拟内存量 (Kbytes)
RSS :该 process 占用的固定的内存量 (Kbytes)
TTY :该 process 是在那个终端机上面运作,若与终端机无关则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:该程序目前的状态,状态显示与 ps -l 的 S 旗标相同 (R/S/T/Z)
START:该 process 被触发启动的时间;
TIME :该 process 实际使用 CPU 运作的时间。
COMMAND:该程序的实际指令为何?
一般来说,ps aux 会依照 PID 的顺序来排序显示,我们还是以 13639 那个 PID 那行来说明!该行的意

义为『 root 执行的 bash PID 为 13639,占用了 0.2% 的内存容量百分比,状态为休眠 (S),该程序启

动的时间为 11:44 , 且取得的终端机环境为 pts/1 。』与 ps aux 看到的其实是同一个程序啦!

top:动态观察程序的变化

相对于 ps 是获取一个时间点的程序状态, top 则可以持续侦测程序运作的状态!使用方式如下:

top 也是个挺不错的程序观察工具!但不同于 ps 是静态的结果输出, top 这个程序可以持续的监测整个系统的程序工作状态。 在默认的情况下,每次更新程序资源的时间为 5 秒,不过,可以使用 -d 来进行修改。 top 主要分为两个画面,上面的画面为整个系统的资源使用状态,基本上总共有六行,显示的内容依序是:

第一行(top…):这一行显示的信息分别为:
o 目前的时间,亦即是 17:03:09 那个项目;

o 开机到目前为止所经过的时间,亦即是 up 7days, 16:16 那个项目;

o 已经登入系统的用户人数,亦即是 1 user项目;

o 系统在 1, 5, 15 分钟的平均工作负载。我们在第十六章课到的 batch 工作方式为负载小于 0.8 就是这个负载啰!代表的是 1, 5, 15 分钟,系统平均要负责运作几个程序(工作)的意思。 越小代表系统越闲置,若高于 1 得要注意你的系统程序是否太过繁复了!

第二行(Tasks…):显示的是目前程序的总量与个别程序在什么状态(running, sleeping, stopped, zombie)。 比较需要注意的是最后的 zombie 那个数值,如果不是 0 !好好看看到底是那个process 变成僵尸了吧?
第三行(Cpus…):显示的是 CPU 的整体负载,每个项目可使用 ? 需要特别注意的是 %wa ,那个项目代表的是 I/O wait, 通常你的系统会变慢都是 I/O 产生的问题比较大!因此这里得要注意这个项目耗用 CPU 的资源喔! 另外,如果是多核心的设备,可以按下数字键『1』来切换成与同 CPU 的负载率。
第四行与第五行:表示目前的物理内存与虚拟内存 (Mem/Swap) 的使用情况。 再次重申,要注意的是 swap 的使用量要尽量的少!如果 swap 被用的很大量,表示系统的物理内存实在与足!
第六行:这个是当在 top 程序当中输入指令时,显示状态的地方。
至于 top 下半部分的画面,则是每个 process 使用的资源情况。比较需要注意的是:

 PID :每个 process 的 ID 啦!

 USER:该 process 所属的使用者;

 PR :Priority 的简写,程序的优先执行顺序,越小越早被执行;

 NI :Nice 的简写,与 Priority 有关,也是越小越早被执行;

 %CPU:CPU 的使用率;

 %MEM:内存的使用率;

 TIME+:CPU 使用时间的累加;

top 预设使用 CPU 使用率 (%CPU) 作为排序的重点,如果你想要使用内存使用率排序,则可以按下『M』, 若要回复则按下『P』即可。如果想要离开 top 则按下『 q 』吧!如果你想要将 top 的结果输出成为档案时, 可以这样做:

系统资源的观察
除了系统的程序之外,我们还必须就系统的一些资源进行检查啊!举例来说,我们使用 top 可以看到很多系统的资源

 (1) free :观察内存使用情况

仔细看看,我的系统当中有 725MB 左右的物理内存,我的 swap 有 1GB 左右, 那我使用 free -m 以 MBytes 来显示时,就会出现上面的信息。Mem 那一行显示的是物理内存的量, Swap 则是虚拟内存的量。 total 是总量, used 是已被使用的量, free 则是剩余可用的量。 后面的shared/buffers/cached 则是在已被使用的量当中,用来作为缓冲及快取的量。

仔细的看到范例一的输出喔,我们的 Linux 测试用主机是很平凡的,根本没有什么工作, 但是,我的物内存是几乎被用光光的情况呢!不过,至少有 132MB 用在缓冲记忆 (buffers) 工作, 287MB 则用在快取 (cached) 工作,也就是说,系统是『很有效率的将所有的内存用光光』, 目的是为了让系统的存取效能加速啦!

很多服友都会问到这个问题『我的系统明明很轻松,为何内存会被用光光?』现在瞭了吧? 被用光是正常的!而需要注意的反而是 swap 的量。一般来说, swap 最好不要被使用,尤其 swap 最好不要被使用超过 20% 以上, 如果您变现 swap 的用量超过 20% ,那举,最好还是买物理内存来插吧! 因为, Swap 的效能跟物理内存实在差很多,而系统会使用到 swap , 绝对是因为物理内存与足了才会这样做的!

Tips:

Linux 系统为了要加速系统效能,所以会将最常使用到的或者是最近使用到的档案数据快取 (cache) 下来, 这样未来系统要使用该档案时,就直接由内存中搜寻取出,而不需要重新读取硬盘,速度上面当然就加快了! 因此,物理内存被用光是正常的!

 uname:查阅系统与核心相关信息

uptime:观察系统启动时间与工作负载
这个指令很单纯呢!就是显示出目前系统已经开机多久的时间,以及 1, 5, 15 分钟的平均负载就是了。还记得 top 吧?没错啦!这个 uptime 可以显示出 top 画面的最上面一行!

 netstat :追踪网络或插槽文件
这个 netstat 也是挺好玩的,其实这个指令比较常被用在网络的监控方面,与过,在程序管理方面也是需要了解的啦! 这个指令的执行如下所示:基本上, netstat 的输出分为两大部分,分别是网络与系统自己的程序相关忢部分:

 dmesg :分析核心产生的讯息
系统在开机的时候,核心会去侦测系统的硬件,你的某些硬件到底有没有被捉到,那就与这个时候的侦测有关。 但是这些侦测的过程要与是没有显示在屏幕上,就是很飞快的在屏幕上一闪而逝!能不能把核心侦测的讯息捉出来瞧瞧? 可以的,那就使用 dmesg 吧!

所有核心侦测的讯息,不管是开机时候还是系统运作过程中,反正只要是核心产生的讯息,都会被记录到内存中的某个保护区段。 dmesg 这个指令就能够将该区段的讯息读出来的!因为讯息实在太多了,所以执行时可以加入这个管线指令『 | more 』来使画面暂停!

由范例二就知道我这部主机的硬盘的格式是什么了吧!没错啦!还可以查阅能与能找到网络卡喔!网络卡的代号是 eth ,所以,直接输入 dmesg | grep -i eth

 (6) vmstat :侦测系统资源变化

如果你想要动态的了解一下系统资源的运作,那举这个 vmstat 确实可以玩一玩!vmstat 可以侦测『 CPU / 内存 / 磁盘输入输出状态 』等等,如果你想要了解一部繁忙的系统到底是哪个环节最累人, 可以使用 vmstat 分析看看。底下是常见的选项与参数说明:

/proc/* 代表的意义
其实,我们之前提到的所谓的程序都是在内存当中嘛!而内存当中的数据又都是写入到 /proc/* 这个目录下的,所以啰,我们当然可以直接观察 /proc 这个目录当中的档案啊!

查询已开启档案或已执行程序开启之档案

 (1) fuser:藉由档案(或文件系统)找出正在使用该档案的程序

有的时候我想要知道我的程序到底在这次启动过程中开启了多少档案,可以利用 fuser 来观察啦! 举例来说,你如果卸除时变现系统通知:『 device is busy 』,那表示这个文件系统正在忙碌中, 表示有某支程序有利用到该文件系统啦!那举你就可以利用 fuser 来追踪啰!fuser 语法有点像这样:

(2)  lsof :列出被程序所开启的档案文件名

相对于 fuser 是由档案或者装置去找出使用该档案或装置的程序,反过来说, 如何查出某个程序开启或者使用的档案与装置呢?呼呼!那就是使用 lsof 啰~

(3) pidof :找出某支正在执行的程序的 PID

学习资料:资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/502002.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++List类详解

目录 1.List介绍 2.List的常见使用 2.1 list的构造函数 2.2 list iterator的使用 2.3 list capacity 2.4 list element access 2.5 list modifiers 2.6 list的迭代器失效 3.List的模拟实现 3.1 list模拟实现(可跳过) 3.2 反向迭代器实现 3.2.1 list反…

100天精通Python(可视化篇)——第86天:matplotlib绘制不同种类炫酷热力图参数说明+代码实战

文章目录 专栏导读一、热力图介绍1. 介绍2. 参数说明 二、绘制热力图1. 普通热力图2. 添加坐标轴和标题3. 添加热力标尺4. 添加色块数值5. 修改热力图颜色6. 突出特殊数据 三、应用场景1. 适用场景2. 不适用场景 专栏导读 🔥🔥本文已收录于《100天精通P…

如何提高亚马逊卖家订单量?这些建议和技巧值得收藏

作为全球最大的电商平台之一,亚马逊拥有庞大的客户基础和丰富的销售渠道,这对于亚马逊卖家来说是一个非常宝贵的机会。但是,如何提高亚马逊卖家订单量是一个非常重要的问题。在本文中,我将分享一些提高亚马逊卖家订单量的建议和技…

【软考备战·希赛网每日一练】2023年5月8日

文章目录 一、今日成绩二、错题总结第一题第二题 三、知识查缺 题目及解析来源:2023年05月08日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 题目中存在一个 指向链表尾元素的指针,所以插入操作直接通过该指针进行后续操作即…

MySQL数据库用户管理以及数据库用户授权

一、数据库用户管理 1、新建用户 CREATE USER 用户名来源地址 [IDENTIFIED BY [PASSWORD] 密码]; ---------------------------------------------------------------------------------------------------------- 用户名:指定将创建的用户名 来源地址&#xff1a…

Mysql数据库管理高级操作

目录 一、克隆/复制一个表1.1 方法一1.2 方法二 二、清空表,删除表内所有数据2.1 方法一2.2 方法二2.3 drop、truncate、delete对比①.drop table name②.truncate table table_name③.delete from table_name小结: 三、创建临时的表四、用户管理4.1 新建…

Java每日一练(20230508) Excel表列名称、验证回文串、路径总和II

目录 1. Excel表列名称 🌟 2. 验证回文串 🌟 3. 路径总和 II 🌟🌟 🌟 每日一练刷题专栏 🌟 Golang每日一练 专栏 Python每日一练 专栏 C/C每日一练 专栏 Java每日一练 专栏 1. Excel表列名称 给…

启动Rabbit时出现Plugin configuration unchanged无法启动问题

文章目录 问题描述问题解决新问题 问题描述 在安装好Erlang和RabbitMQ并配置好环境变量后, 运行rabbitmq-plugins enable rabbitmq_management 命令, 出现如下问题 在启动Rabbit时出现以下内容 The folwing plugins have been configured: rabbitmq_management rabbitmq_mana…

Linux中最低调、最易让人忽视的tmp目录,原来用处那么大!

在Linux操作系统中,tmp目录是一个临时目录,用于存储临时文件。这个目录通常位于根目录下,命名为/tmp。本文将详细介绍Linux中的tmp目录,包括它的作用、权限、使用方法和安全性等方面。 作用 tmp目录用于存储临时文件,…

为什么成本管理在项目管理中很重要

成本管理是估算、分配和控制项目成本的过程。成本管理流程允许企业预测未来的开支,以减少预算超支的可能性。预计成本是在项目的规划阶段计算的,必须在工作开始前获得批准。 在执行项目计划时,会记录和跟踪费用,因此一切都在成本管…

聊一聊智能AI的未来

AI技术的快速发展让我们走进了一个智能时代,各种智能产品和服务也在迅速兴起。而小凡AI作为一家国内知名的人工智能开发公司,旨在为用户提供高质量、高效率、低成本的人工智能解决方案。 想象一下,当您需要大量进行数据处理和分析时&#xf…

IT图书翻译——痛并快乐着

作者:韩磊 整理者:韦小琪 作者简介 韩磊是AR 技术公司亮风台的产研副总裁。在此之前,他曾在大学、技术媒体和财经媒体工作,有多年的企业经营管理、社区与媒体运营经验。他与人合著有《网络媒体教程》,合译有《Beginning C# Objec…

时间复杂度

学习《代码随想录》 时间复杂度为什么要引入时间复杂度和空间复杂度?什么是时间复杂度?这个O是什么意思?时间复杂度越低越好? 内存管理什么是内存空间?(C为例)为什么总说C/C更偏向底层&#xff…

OpenCV4 学习指导2 —— 多种方式访问图像的像素值

图像像素访问 1、测试用例1.1、颜色缩减算法1.2、颜色缩减示例 2、图像矩阵的存储与访问2.1、图像的存储方式2.2、图像的访问方式2.2.1、C 指针:高效的访问方式2.2.2、迭代器:安全的访问方式2.2.3、行列索引:动态计算地址2.2.4、LUT 查询函数…

tiechui_lesson06_注册表操作

这节课主要学习注册表的相关操作,包括注册表的打开,读取,修改,删除。可以自己通过底层API手动来获取和设置注册表,也可以用微软提供的运行时函数。我的看法是底层函数用来了解原理,真正在代码中使用的时候还…

《三十岁,一切刚刚开始》读书笔记

目录 书籍简介 经典语句 书籍简介 在抖音上看到此书,顺便看了看。 《三十岁,一切刚刚开始》作者李尚龙。写给敢于探险、敢于突破自己的年轻人的进取之书。人这一生可以有无数种可能。 如果你近期特别丧,或者正处于瓶颈期间,不…

VLAN【实验】

虚拟局域网VLAN VLAN即虚拟局域网,是将一个物理的局域网在逻辑上划分成为多个广播域的技术。通过在交换机上配置VLAN,可以实现在同一个VLAN内的用户进行二层互访,而不通的VLAN间的用户被二层隔离。这样既能够隔离广播域,又能够提…

身临其境文化之旅——VR全景图片畅游世界各地文化景点

文化旅游是一种独特的旅游体验,它不仅让人们感受到异域文化的魅力,更能增进对世界的了解和认知。VR全景图片和文化旅游之间有着密不可分的关系。作为一种数字化技术,VR全景图片可以为文化旅游提供更加深入、真实、立体的体验。随着VR技术的发…

品牌宣传软文发布,多久一次合适?

传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 品牌宣传有许多手段,线下活动,电视广告,讲座,招商等手段,其中软文发布是性价比较高的一种方式,那么软文宣传多久一…

神奇,声网Web SDK还能这么实现直播中美颜功能

前言 本篇文章是通过使用声网Web SDK来实现直播中美颜效果的深度体验文章,其中发现了屏幕共享并本地合图多个视频、图片,声网美颜插件等功能特性十分强大和专业,特为此做一个技术体验的分享,毕竟好技术就是要去传播的。 随着音视…