Linux 设备管理和进程管理

设备管理

Linux系统中设备是用文件来表示的,每种设备都被抽象为设备文件的形式,这样,就给应用程序一个一致的文件界面,方便应用程序和操作系统之间的通信。
设备文件集中放置在/dev目录下,一般有几千个,不管有没有对应的真实设备,Linux系统在安装的时候都会自动预先创建。

磁盘设备

Linux系统磁盘设备命名方式遵循一定的规则。

前两个字母表示分区所在设备的类型:

  • hd:IDE硬盘
  • sd:SCSI硬盘(U盘,移动硬盘等)
    第三个字母表示分区在哪个设备上
  • hda:第一块IDE硬盘
  • sda:第一块SCSI硬盘
  • sdb:第二块SCSI硬盘

数字表示分区的次序:

  • hda1:第一块IDE硬盘第一分区
  • sdb2:第二块SCSI硬盘第二个分区
    查看硬盘及分区情况
fdisk -l
lsblk

image.png

挂载的文件系统类型

可以挂载:ext、FAT、NTFS 、 ext2(extended file system )、ext3、MINIX、MSDOS、SYSV

  1. Linux系统的第一个文件系统是Minix(文件名不能超过14个字符,文件大小不能超过64MB)
  2. ext:1992年设计,是第一个专为linux设计的文件系统,文件大小可到2GB,文件名支持255字符,性能不佳
  3. ext2: 1993年设计,提高性能
  4. ext3:采用日志式文件系统技术(Journaling File System,独立的日志文件跟踪磁盘内容的变化),目前各个linux发行版使用

VFS

Linux引进ext文件系统时有了一个重大的改进:把文件系统从操作系统和系统服务中分离出来,在它们之间使用了一个接口层—虚拟文件系统VFS(Virtual File System)

Linux系统可以支持多种文件系统,为此,必须使用一种统一的接口,这就是虚拟文件系统(VFS)。通过VFS将不同文件系统的实现细节隐藏起来,因而从外部看上去,所有的文件系统都是一样的。

image.png

VFS并不是一个实际的文件系统:只存在于内存,系统启动时建立,系统关闭时消亡

VFS功能包括:

  • 记录可用文件系统的类型
  • 将设备与对应的文件系统联系起来
  • 处理面向文件的通用操作
  • 涉及到针对文件系统的操作时,把他们映射到相关的物理文件系统

挂载设备信息

计算机系统中,所有的存储设备都是以目录树的形式对文件进行管理的 。
在Linux系统中,所有的文件都是在以“/”目录为根的一棵“大”目录树中进行管理。
如果要使用USB存储设备、光盘或软盘等存储设备,必须将这些设备中的“小”目录树像嫁接一样挂载(mount)到Linux系统的“大”目录树中。

image.png

挂载对象的文件系统类型:/proc/filesystems

vfat (fat32)     ext2    ext3     iso9660

挂载对象的设备名称;
在Linux系统中,设备名称通常都在/dev目录下,设备名称的命名是有规则的 ;

/dev/hda1   /dev/sda2  /dev/fd0  /dev/cdrom

设备挂载到哪一目录,即挂载点。
Linux系统中有一个/mnt目录,专门用作挂载点(mount point)目录
在挂载设备时首先查看挂载点目录是否存在,如果不存在必须首先创建该目录,否则mount命令无法正常执行。

挂载设备过程

  1. 查看设备:使用命令“fdisk -l”可以查看系统的存储设备
  2. 挂载设备 :首先使用mkdir命令建立挂载点目录,然后再使用mount命令挂载相关设备
  3. 访问设备
  4. 卸载设备 :用户在使用完挂载设备后,不能直接将挂载设备从系统拔出,否则会出现问题,严重的会导致系统崩溃。用户必须先执行卸载命令然后再该设备拔出umount [挂载点或设备名]

mkfs

mkfs [选项][-t <文件系统类型>] [设备名称] [区块数]

说明:把指定的设备格式为指定的文件系统。

例如

  • 格式化硬盘时:
    mkfs -t ext3 /dev/hda4
  • 格式化软盘时,需要指定设备名和区块数,每个区块大约1000个字节,一张1.44MB的软盘对应1440个区块。格式化指令为:
    mkfs -t ext3 /dev/fd0 1440

mount

mount [选项] <挂载设备名称> <挂载点>
选项:

  • t 挂载的文件系统 [ext2 ext3 vfat iso9660]
    例如:
    mount -t ext3 /dev/fd0 /mnt/floppy
  • o [参数=值] ,对于挂载的不同类型的设备可以使用一组不同的参数。[ro rw auto iocharset]
    mount -o iocharset=cp936 /dev/sda1 /mnt/usb

df

磁盘空间使用情况
df [选项]

  • a : 显示所有文件系统的磁盘使用情况
  • h : 以友好直观方式显示信息,即以KB或MB为单位
  • T : 显示文件系统类型

例子:以友好直观方式显示所有文件系统的使用情况,并列出文件系统类型

df -ahT

du

统计目录或文件所占磁盘空间大小
du [选项/参数] [目录名…]

  • a : 递归显示制定目录中各个文件及下级目录中各文件占用的数据块数
  • h : 以友好直观方式显示信息,即以KB或MB为单位
  • b : 以字节为单位列出磁盘空间使用情况
  • k : 以KB为单位显示
  • s : 对每个目录参数只给出占用的数据块总数
    例子:以KB为单位,显示/tmp目录占用的磁盘空间情况

du -k /tmp

账号管理和查看命令

  • whoami命令的功能在于显示用户自身的用户名。
  • who [选项]:该命令主要用于查看当前在线的用户情况
    -H:显示时加上头标志
  • w命令 :用于显示登录到系统的用户情况,是who的增强版 w | more
  • id [选项] : 显示用户信息
    -g:显示工作组信息
    -u:显示用户信息
  • finger命令:可用于查找和显示用户信息,并且在查找后显示指定账号的相关信息
  • chfn命令:能够改变系统存储的用户信息
  • 切换用户身份:su [用户名]

进程

进程的概念

Linux操作系统包括三种不同类型的进程,每种进程都有自己的特点和属性:

  • 交互进程:由shell启动的进程。
  • 批处理进程:这种进程和终端没有联系,是一个进程序列。
  • 守护进程:在后台持续运行的进程。

启动进程/手工启动

  • 前台启动:一般地,用户键入一个命令,就已经启动了一个前台的进程。
    中断前台进程
    ctrl+c/
    kill
  • 后台启动:对于非常耗时进程,可以让进程在后台运行。从后台启动进程其实就是在命令结尾加上一个“&”号,例:updaedb &
  1. jobs 显示所有后台进程
  2. ctrl+z 前台->后台,并暂停
  3. fg 将后台进程调到前台执行
  4. bg 将一个后台暂停的进程,继续执行

at

指定在将来的某个时间点执行某些命令,通过atd守护进程来实现

systemctl status atd

at [选项] TIME

at -l / atq  #列出所有的作业
at -d / atrm 任务号  #删除作业
at -q #指定队列来存储(默认为a队列),队列的编号为a-z A-Z,共52个,字母越大,优先级越低。

执行方式:

  • 交互式
    在shell提示符下输入“at 时间”,然后按回车键。这时在下一行shell会等待用户继续输入要执行的命令。每一行输入一个命令,所有命令都输入完毕后按Ctrl+d键结束。

  • 指定文件
    将各个命令写入shell脚本中,然后使用下面格式设置在指定时间执行shell脚本中的命令:
    at 时间 -f 脚本文件。

执行结果会发邮件通知
/var/spool/mail/xxx

时间格式
  • 具体时间日期 hh:mm MM/DD/YY
    23:59 03/15/2017
  • 模糊词语格式 hh:mm midnight tomorrow am…
    17:20 tomorrow
  • 相对计时法 时间点 + 多少 + 时间单位
    now + 2 minutes
    5pm + 3 days

cron

at命令产生的进程调度不具有周期性,只能在时间条件满足时执行一次。但很多时候需要重复地周期性地执行某个程序。crontab用来让使用者在固定时间或固定时间间隔执行程序。

格式:

crontab [ -u user ] 文件

crontab [ -u user ] { -l | -r | -e }

只有root用户可以指定他人的时间表

主要参数

  • e:执行文字编辑器来设定时程表,内定的文字编辑器是vi
  • r:删除目前的时程表
  • l:列出目前的时程表
    和at命令相比,crontab命令适合完成固定周期的任务

原理

  1. cron命令在系统启动时由一个shell脚本自动启动,进入后台,crond守护进程。
  2. cron启动后搜索/var/spool/cron目录,寻找以/etc/passwd文件中的用户名命名的crontab文件,被找到的这种文件将载入内存。
  3. 如果没有crontab文件,就转入“休眠”状态,释放系统资源。
  4. cron每分钟“醒”过来一次,查看当前是否有需要运行的命令。
  5. 如果发现某个用户设置了crontab文件,它将以该用户的身份去运行文件中指定的命令。命令执行结束后,任何输出都将作为邮件发送给crontab的所有者,或者/etc/crontab文件中MAILTO环境变量中指定的用户。

对用户来说,只需要关注自己的crontab文件的撰写,不需干涉crond进程的执行。因为一个用户只有一个crontab文件,crontab文件不能直接创建或者直接修改,必须通过crontab命令得到。crontab命令用于安装、删除或者列出用于驱动cron后台进程的crontab文件 。

crontab源文件格式

<minute> <hour> <day-of-month> <month-of-year> <day-of-week> <commands>

  • f1: 分钟,00-59
  • f2: 小时,00-23
  • f3: 一个月份中的第几天,01-31
  • f4: 月份,01-12
  • f5: 一个星期中的第几天,0-6
  • commands: 要执行的程序
# 每月每天12点执行一次echo hello
0 12 * * * echo hello
# 在12月内,每天早上6点到12点,每隔20分钟执行一次/usr/bin/backup
*/20 6-12 * 12 * /usr/bin/backup
# 每月每天的午夜0点20分,2点20分,4点20分…显示当前时间
20 0-23/2 * * * date

进程管理

ps

进程查看命令

ps [选项]

主要选项的含义如下:

  • e:显示所有进程;
  • f : 采用全格式显示;
  • h:不显示标题;
  • l:采用详细的格式来显示进程;
  • a:显示所有终端上的进程,包括其他用户的进程;
  • r:只显示当前终端上正在运行的进程;
  • x:显示所有进程,不以终端来区分;
  • u:以用户为主的格式来显示进程;

pstree

进程查看命令

pstree [选项] [pid | user]

主要选项的含义如下:

  • a:显示该进程的完整指令及参数;
  • p : 显示是将PID号一起显示;
  • pid:指定显示某进程信息;
  • user:指定显示某用户信息;

kill

删除进程命令

kill [-s <信号> | -p ] [ -a ] <进程号> ..

kill -l [信号] :显示信号详情

选项的含义如下:

  • s:指定需要送出的信号。既可以是信号名也可以是信号名对应的数字。
  • HUP(1):重跑 kill -1
  • KILL(9):强制杀死 kill -9
  • TERM(15) (预设信号):结束 kill -15

强行中止(经常使用杀掉)一个进程标识号为324的进程:kill -9 324

作用:

  • 解除Linux系统的死锁
  • 使用命令回收内存

killall

Linux下还提供了一个killall命令,可以直接使用进程的名字而不是进程标识号,例如:

killall -HUP inetd

top

系统监控命令:能显示实时的进程列表,而且还能实时监视系统资源,包括内存、交换分区和CPU的使用率等。
top命令使用过程中,可以使用一些交互的命令来完成其它参数的功能。这些命令是通过快捷键启动的。

  • <空格>:立刻刷新。
  • P:根据CPU使用大小进行排序。
  • M:根据使用内存大小进行排序。
  • T:根据时间、累计时间排序。
  • t:切换显示进程和CPU状态信息。
  • m:切换显示内存信息。
  • c:切换显示命令名称和完整命令行。
  • q:退出top命令。

image.png

free

查看系统内存的使用情况

image.png

日志查看

日志文件(log files)是包含关于系统消息的文件,包括内核、服务、在系统上运行的应用程序等。
不同的日志文件记载不同的信息。
多数的日志文件位于/var/log目录下。
某些程序(如samba)在/var/log中有单独的日志文件目录。
日志可以滚动

image.png
多数日志文件都使用纯文本格式,可以使用任何文本编辑器如vi来查看它们。
大多数日志文件都需要拥有特权才允许查看。

系统初始化过程

image.png

BIOS初始化

主要负责计算机硬件检测,确定启动引导顺序,并从可引导设备中加载和执行引导程序(如磁盘主引导分区MBR) ,确定从哪里可以引导并启动操作系统,引导成功后,交由内核负责

GRUB加载

Boot Loader(启动加载)管理程序
将引导装载程序安装到主引导记录(MBR)的程序
用户能够开始操作系统的选择,在内核引导时传递特定指令给内核,或是在内核引导前确定一些系统参数。
支持命令交互工具,提供非常方便的引导程序修复功能,并支持引导菜单的加密保护

内核初始化

用户在GRUB引导菜单中选择了合适的启动项后,操作系统正式进入加载内核的功能。
内核初始化:

  1. 硬件设备的检测
  2. 设备驱动程序的初始化
  3. 以只读方式挂载根文件系统
  4. 启动第一个应用进程init

第一个初始进程init启动

当内核启动之后,通过启动用户级程序init来完成引导进程的内核部分。
init总是第一个进程(PID=1)
init进程扮演了终极父进程的角色,失去了父进程的子进程就会以init作为它们的父进程。

确定系统运行级别

读取配置文件/etc/inittab,这是一个系统初始化脚本程序,用于确定系统启动的运行级别,定义系统常规功能。

image.png

运行系统初始化脚本

/etc/rc.d/rc.sysinit 是系统的初始化脚本,系统的大部分功能都由这个脚本实现

image.png

运行指定级别目录内的脚本

每一个特定的运行级别都会有一个与之相对应的目录,共有7个运行界别(/etc/rc.d/rc[x].d),每一个运行级别的目录内都有一些可执行脚本。

image.png

运行用户自定义脚本

用户可以自定义一些系统启动时启动的脚本,通过修改/etc/rc.d/rc.local的内容来增加用户自己需要的功能。

image.png在这里插入图片描述

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

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

相关文章

乐高ev3涉及到的一些赛事_使您成为英雄的前五名开发者技能(提示:涉及LEGO)

乐高ev3涉及到的一些赛事Programming is like building something with LEGOs. Any developer can pick up a brand new LEGO set and build it following the instructions. This is very easy. Think of it as coding school assignments or entry level tutorials.编程就像用…

贝叶斯 定理_贝叶斯定理实际上是一个直观的分数

贝叶斯 定理Bayes’ Theorem is one of the most known to the field of probability, and it is used often as a baseline model in machine learning. It is, however, too often memorized and chanted by people who don’t really know what P(B|E) P(E|B) * P(B) / P(E…

winfrom 点击按钮button弹框显示颜色集

1.窗体托一个按钮button&#xff1b; 2.单击事件&#xff1a; 1 private void btnForeColor_Click(object sender, EventArgs e)2 {3 using (ColorDialog cdialog new ColorDialog())4 {5 cdialog.AnyColor true;6 …

JavaScript时间事件:setTimeout和setInterval

Programmers use timing events to delay the execution of certain code, or to repeat code at a specific interval.程序员使用时序事件来延迟某些代码的执行&#xff0c;或以特定的时间间隔重复代码。 There are two native functions in the JavaScript library used to …

webservice 基本要点

webservice的特点 webservices是自我包含的 webservices是自我描述的 webservices是跨平台和语言的 webservices是基于开放和标准的 webservices是可以组合的 webservices是松散耦合的 webservices提供编程访问的能力 webservices通过网络进行发布&#xff0c;查找和使用 发布w…

文本数据可视化_如何使用TextHero快速预处理和可视化文本数据

文本数据可视化自然语言处理 (Natural Language Processing) When we are working on any NLP project or competition, we spend most of our time on preprocessing the text such as removing digits, punctuations, stopwords, whitespaces, etc and sometimes visualizati…

Less变量

Less变量 定义变量 Less 中的变量和其他编程语言一样&#xff0c;可以实现值的复用&#xff0c;同样它也有作用域&#xff08;scope&#xff09;。简单的讲&#xff0c;变量作用域就是局部变量和全局变量的概念。 Less 中&#xff0c;变量作用域采用的是就近原则&#xff0c;换…

渐进式web应用程序_如何在渐进式Web应用程序中添加到主屏幕

渐进式web应用程序添加到主屏幕 (Add To Homescreen) Here the web app install banner is focused on web app, with the feature of add to homescreen.在此&#xff0c;Web应用程序安装标语专注于Web应用程序&#xff0c;具有添加到主屏幕的功能。 浏览器对“添加到主屏幕”…

linux shell 编程

shell的作用 shell是用户和系统内核之间的接口程序shell是命令解释器 shell程序 Shell程序的特点及用途&#xff1a; shell程序可以认为是将shell命令按照控制结构组织到一个文本文件中&#xff0c;批量的交给shell去执行 不同的shell解释器使用不同的shell命令语法 shell…

Leetcode之javascript解题(No33-34)

附上我的github仓库&#xff0c;会不断更新leetcode解题答案&#xff0c;提供一个思路&#xff0c;大家共勉 在我的主页和github上可以看到更多的关于leetcode的解题报告&#xff01;&#xff08;因为不知道为什么掘金没有将其发布出来&#xff0c;目前已经联系掘金客服&#x…

真实感人故事_您的数据可以告诉您真实故事吗?

真实感人故事Many are passionate about Data Analytics. Many love matplotlib and Seaborn. Many enjoy designing and working on Classifiers. We are quick to grab a data set and launch Jupyter Notebook, import pandas and NumPy and get to work. But wait a minute…

转:防止跨站攻击,安全过滤

转&#xff1a;http://blog.csdn.net/zpf0918/article/details/43952511 Spring MVC防御CSRF、XSS和SQL注入攻击 本文说一下SpringMVC如何防御CSRF(Cross-site request forgery跨站请求伪造)和XSS(Cross site script跨站脚本攻击)。 说说CSRF 对CSRF来说&#xff0c;其实Spring…

Linux c编程

c语言标准 ANSI CPOSIX&#xff08;提高UNIX程序可移植性&#xff09;SVID&#xff08;POSIX的扩展超集&#xff09;XPG&#xff08;X/Open可移植性指南&#xff09;GNU C&#xff08;唯一能编译Linux内核的编译器&#xff09; gcc 简介 名称&#xff1a; GNU project C an…

html怎么注释掉代码_HTML注释:如何注释掉您HTML代码

html怎么注释掉代码HTML中的注释 (Comments in HTML) The comment tag is an element used to leave notes, mostly related to the project or the website. This tag is frequently used to explain something in the code or leave some recommendations about the project.…

k均值算法 二分k均值算法_使用K均值对加勒比珊瑚礁进行分类

k均值算法 二分k均值算法Have you ever seen a Caribbean reef? Well if you haven’t, prepare yourself.您见过加勒比礁吗&#xff1f; 好吧&#xff0c;如果没有&#xff0c;请做好准备。 Today, we will be answering a question that, at face value, appears quite sim…

您好,这是我的第一篇文章

您好我是CYL 这是一个辣鸡博客 欢迎指教 转载于:https://www.cnblogs.com/pigba/p/8823472.html

08_MySQL DQL_SQL99标准中的多表查询(内连接)

# sql99语法/*语法&#xff1a; select 查询列表 from 表1 别名 【连接类型】 join 表2 别名 on 连接条件 【where 筛选条件】 【group by 分组】 【having 分组后筛选】 【order by 排序列表】分类内连接&#xff08;重点&#xff09;&#xff1a; inner外连接 左外&#xff0…

java中抽象类继承抽象类_Java中的抽象类用示例解释

java中抽象类继承抽象类Abstract classes are classes declared with abstract. They can be subclassed or extended, but cannot be instantiated. You can think of them as a class version of interfaces, or as an interface with actual code attached to the methods.抽…

新建VUX项目

使用Vue-cli安装Vux2 特别注意配置vux-loader。来自为知笔记(Wiz)

衡量试卷难度信度_我们可以通过数字来衡量语言难度吗?

衡量试卷难度信度Without a doubt, the world is “growing smaller” in terms of our access to people and content from other countries and cultures. Even the COVID-19 pandemic, which has curtailed international travel, has led to increasing virtual interactio…