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,一经查实,立即删除!

相关文章

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

贝叶斯 定理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…

文本数据可视化_如何使用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…

linux shell 编程

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

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

真实感人故事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…

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…

新建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…

Linux 题目总结

守护进程的工作就是打开一个端口&#xff0c;并且等待&#xff08;Listen&#xff09;进入连接。 如果客户端发起一个连接请求&#xff0c;守护进程就创建&#xff08;Fork&#xff09;一个子进程响应这个连接&#xff0c;而主进程继续监听其他的服务请求。 xinetd能够同时监听…

《精通Spring4.X企业应用开发实战》读后感第二章

一、配置Maven\tomcat https://www.cnblogs.com/Miracle-Maker/articles/6476687.html https://www.cnblogs.com/Knowledge-has-no-limit/p/7240585.html 二、创建数据库表 DROP DATABASE IF EXISTS sampledb; CREATE DATABASE sampledb DEFAULT CHARACTER SET utf8; USE sampl…

视图可视化 后台_如何在单视图中可视化复杂的多层主题

视图可视化 后台Sometimes a dataset can tell many stories. Trying to show them all in a single visualization is great, but can be too much of a good thing. How do you avoid information overload without oversimplification?有时数据集可以讲述许多故事。 试图在…

一步一步构建自己的管理系统①

2019独角兽企业重金招聘Python工程师标准>>> 系统肯定要先选一个基础框架。 还算比较熟悉Spring. 就选Spring boot postgres mybatis. 前端用Angular. 开始搭开发环境&#xff0c;开在window上整的。 到时候再放到服务器上。 自己也去整了个小服务器&#xff0c;…

python边玩边学_边听边学数据科学

python边玩边学Podcasts are a fun way to learn new stuff about the topics you like. Podcast hosts have to find a way to explain complex ideas in simple terms because no one would understand them otherwise &#x1f642; In this article I present a few episod…

react css多个变量_如何使用CSS变量和React上下文创建主题引擎

react css多个变量CSS variables are really cool. You can use them for a lot of things, like applying themes in your application with ease. CSS变量真的很棒。 您可以将它们用于很多事情&#xff0c;例如轻松地在应用程序中应用主题。 In this tutorial Ill show you …

vue 自定义 移动端筛选条件

1.创建组件 components/FilterBar/FilterBar.vue <template><div class"filterbar" :style"{top: top px}"><div class"container"><div class"row"><divclass"col":class"{selected: ind…

PPPOE拨号上网流程及密码窃取具体实现

楼主学生党一枚&#xff0c;最近研究netkeeper有些许心得。 关于netkeeper是调用windows的rasdial来进行上网的东西&#xff0c;网上已经有一大堆&#xff0c;我就不赘述了。 本文主要讲解rasdial的部分核心过程&#xff0c;以及我们可以利用它来干些什么。 netkeeper中rasdial…

新购阿里云服务器ECS创建之后无法ssh连接的问题处理

作者&#xff1a;13 GitHub&#xff1a;https://github.com/ZHENFENG13 版权声明&#xff1a;本文为原创文章&#xff0c;未经允许不得转载。 问题描述 由于原服务器将要到期&#xff0c;因此趁着阿里云搞促销活动重新购买了一台ECS服务器&#xff0c;但是在初始化并启动后却无…

边缘计算 ai_在边缘探索AI!

边缘计算 ai介绍 (Introduction) What is Edge (or Fog) Computing?什么是边缘(或雾)计算&#xff1f; Gartner defines edge computing as: “a part of a distributed computing topology in which information processing is located close to the edge — where things a…

初识spring-boot

使用Spring或者SpringMVC的话依然有许多东西需要我们进行配置&#xff0c;这样不仅徒增工作量而且在跨平台部署时容易出问题。 使用Spring Boot可以让我们快速创建一个基于Spring的项目&#xff0c;而让这个Spring项目跑起来我们只需要很少的配置就可以了。Spring Boot主要有如…