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.pswp.cn/news/390712.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/390712.shtml
英文地址,請注明出處:http://en.pswp.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…