當前位置:首頁 » 操作系統 » linux結構圖

linux結構圖

發布時間: 2023-10-26 02:37:16

linux快速入門第八章:Shell基礎

我們平時所說的 Shell 可以理解為 Linux 系統提供給用戶的使用界面。Shell 為用戶提供了輸入命令和參數並可得到命令執行結果的環境。當一個用戶登錄 Linux 之後,系統初始化程序 init 就根據 /etc/passwd 文件中的設定,為每個用戶運行一個被稱為 Shell(外殼)的程序。

確切地說,Shell 是一個命令行解釋器,它為用戶提供了一個向 Linux 內核發送請求以便運行程序的界面系統級程序,用戶可以用 Shell 來啟動、掛起、停止甚至編寫一些程序。

Shell 處在內核與外層應用程序之間,起著協調用戶與系統的一致性、在用戶與系統之間進行交互的作用。圖 1 是 Linux 系統層次結構圖,Shell 接收用戶輸入的命令,並把用戶的命令從類似 abed 的 ASCII 碼解釋為類似 0101 的機器語言,然後把命令提交到系統內核處理;當內核處理完畢之後,把處理結果再通過 Shell 返回給用戶。

換句話說:

Shell 是一個用 C 語言編寫的程序,它是用戶使用 Linux 的橋梁。Shell 既是一種命令語言,又是一種程序設計語言。

Shell 是指一種應用程序,這個應用程序提供了一個界面,用戶通過這個界面訪問操作系統內核的服務。

Ken Thompson 的 sh 是第一種 Unix Shell,Windows Explorer 是一個典型的圖形界面 Shell。

Shell 與其他 Linux 命令一樣,都是實用程序,但它們之間還是有區別的。一旦用戶注冊到系統後,Shell 就被系統裝入內存並一直運行到用戶退出系統為止;而一般命令僅當被調用時,才由系統裝入內存執行。

與一般命令相比,Shell 除了是一個命令行解釋器,同時還是一門功能強大的編程語言,易編寫,易調試,靈活性較強。作為一種命令級語言,Shell 是解釋性的,組合功能很強,與操作系統有密切的關系,可以在 Shell 腳本中直接使用系統命令。大多數 Linux 系統的啟動相關文件(一般在 /etc/rc.d 目錄下)都是使用 Shell 腳本編寫的。

同傳統的編程語言一樣,Shell 提供了很多特性,這些特性可以使 Shell 腳本編程更為有用,如數據變數、參數傳遞、判斷、流程式控制制、數據輸入和輸出、子程序及中斷處理等。

說了這么多,其實我們在 Linux 中操作的命令行界面就是 Linux 的 Shell,也就是 Bash,但是我們的圖形界面是 Shell 嗎?其實從廣義講,圖形界面當然也是 Shell,因為它同樣用來接收用戶的操作,並傳遞到內核進行處理。不過,這里的 Shell 主要指的是 Bash。

Shell 腳本

Shell 腳本(shell script),是一種為 shell 編寫的腳本程序。

業界所說的 shell 通常都是指 shell 腳本,但讀者朋友要知道,shell 和 shell script 是兩個不同的概念。

由於習慣的原因,簡潔起見,本文出現的 "shell編程" 都是指 shell 腳本編程,不是指開發 shell 自身。

Shell的分類

目前 Shell 的版本有很多種,如 Bourne Shell、C Shell、Bash、ksh、tcsh 等,它們各有特點,下面簡要介紹一下。

最重要的 Shell 是 Bourne Shell,這個命名是為了紀念此 Shell 的發明者 Steven Bourne。從 1979 年起,UNIX 就開始使用 Boume Shell。Bourne Shell 的主文件名為 sh,開發人員便以 sh 作為 Bourne Shell 的主要識別名稱。

雖然 Linux 與 UNIX 一樣,可以支持多種 Shell,但 Boume Shell 的重要地位至今仍然沒有改變,許多 UNIX 系統中仍然使用 sh 作為重要的管理工具。它的工作從開機到關機,幾乎無所不包。在 Linux 中,用戶 Shell 主要是 Bash,但在啟動腳本、編輯等很多工作中仍然使用 Bourne Shell。

C Shell 是廣為流行的 Shell 變種。C Shell 主要在 BSD 版的 UNIX 系統中使用,發明者是柏克萊大學的 Bill Joy。C Shell 因為其語法和 C 語言類似而得名,這也使得 UNIX 的系統工程師在學習 C Shell 時感到相當方便。

Bourne Shell 和 C Shell 形成了 Shell 的兩大主流派別,後來的變種大都吸取這兩種 Shell 的特點,如 Korn、 tcsh 及 Bash。

Bash Shell 是 GNU 計劃的重要工具之一,也是 GNU 系統中標準的 Shell。Bash 與 sh 兼容,所以許多早期開發出來的 Bourne Shell 程序都可以繼續在 Bash 中運行。現在使用的 Linux 就使用 Bash 作為用戶的基本 Shell。

Bash 於 1988 年發布,並在 1995-1996年推出Bash 2.0。在這之前,廣為使用的版本是1.14,Bash 2.0增加了許多新的功能,以及具備更好的兼容性。表 2 中詳細列出了各版本的具體情況。

注意,Shell 的兩種主要語法類型有 Bourne 和 C,這兩種語法彼此不兼容。Boume 家族主要包括 sh、ksh、Bash、psh、zsh;C 家族主要包括 csh、tcsh(Bash 和 zsh 在不同程序上支持 csh 的語法)。

本章講述的腳本編程就是在 Bash 環境中進行的。不過,在 Linux 中除了可以支持 Bash,還可以支持很多其他的 Shell。我們可以通過 /etc/shells 文件來査詢 Linux 支持的 Shell。命令如下:

在 Linux 中,這些 Shell 是可以任意切換的,命令如下:

用戶信息文件 /etc/passwd 的最後一列就是這個用戶的登錄 Shell。命令如下:

大家可以看到,root 用戶和其他可以登錄系統的普通用戶的登錄 Shell 都是 /bin/bash,也就是 Linux 的標准 Shell,所以這些用戶登錄之後可以執行許可權允許范圍內的所有命令。不過,所有的系統用戶(偽用戶)因為登錄 Shell 是 /sbin/ndogin,所以不能登錄系統。

筆記:

sh/bash/csh/Tcsh/ksh/pdksh等shell的區別

❷ Linux操作系統由什麼組成

Linux系統結構一般有3個主要部分:內核kernel、命令解釋層Shell或其他操作環境、實用工具
1.Linux內核

內核是系統的核心,是運行程序和管理磁碟、列印機等硬體設備的核心程序。操作系統向用戶提供一個操作界面,它從用戶那裡接收命令,並且把命令送給內核去執行。

當 Linux安裝完畢之後,一個通用的內核就被安裝到主機中,這個通用內核能滿足絕大部分用戶的需求,但普遍適用性內核對具體的某台主機來說,可能有一些並不需要的內核程序將被安裝。因此,Linux允許用戶根據主機的實際配置定製 Linux的內核,從而有效地簡化 Linux內核,提高系統啟動速度。
2.Linux Shell

Shell是系統的用戶界面,提供了用戶與內核進行交互操作的介面。它接收用戶輸入的命今,並且把它送入內核執行。操作系統在系統內核與用戶之間提供操作界面, Linux存在多種操作環境,分別是基於圖形界面的集成桌面環境和基於Shell命令行環境。

Shell是一個命令解釋器,它解釋由用戶輸入的命令,並且送到內核。Shell編程語言具有普通編程語言的很多特點,如它也有循環結構和分支控制結構等,用這種編程語言編寫的Shell程序與其他應用程序具有同樣的效果。

作為命令行操作界面的替代, Linux還提供了像 Windows那樣的可視化圖形界面X-window的圖形用戶界面。

3.實用工具
標準的 Linux系統都有配套的實用工具程序,如編輯器、瀏覽器、辦公套件及其它系統管理工具等,用戶可以自行編寫需要的應用程序。

❸ Linux進程詳解

ps是Linux 中最基礎的瀏覽系統中的進程的命令。能列出系統中運行的進程,包括進程號、命令、CPU使用量、內存使用量等。接下來解讀一下Linux操作系統的進程和Windows「Ctrl+Alt+delete」直接的差異。

在進行了解進程命令之前需要知道進程的一些狀態

ps工具標識進程的5種狀態碼:

Linux操作系統進程執行的狀態轉換圖如圖所示:

下面來看一下 ps命令
ps --help命令可以查看ps命令的使用說明

或者使用 man ps命令 查詢ps的詳細說明

在 man手冊 關於ps的解讀中,總結了一下幾個參數的含義:

以上的參數是可以拼接使用的,那就了解一些常用的參數組合
ps aux命令

ps -ef命令

查看進程狀態這兩個是命令是最常用的,使用 ps aux 可以查看進程的詳細運行狀態等。使用 ps -ef 不僅可以顯示自身的PID,也可以顯示PPID(父進程)。但是顯示不了進程的運行狀態

top命令
top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源佔用狀況,類似於Windows的任務管理器

man手冊關於top的解釋

關閉進程,重啟進程
在上一片文章中 linux的目錄結構 裡面說過,在目錄/etc/init.d/目錄下包含許多系統各種服務的啟動和停止腳本。假設進程佔用內存較大或者進程異常,我們是重啟這個進程restart。如下圖所示:

我們重啟了mysqld這個進程,可以看出進程號已經改變(從15743到15964),說明進程已經重啟。

Linux下有3個特殊的進程,idle進程(PID=0), init進程(PID=1)和kthreadd(PID=2)

我們來看一下進程狀態[下面是刪減版,進程數量太多,列舉一部分]

可以看到很多進程的PPID號是1和2。也就是init進程和kthreadd進程。

在使用Windows系統的過程中,都碰到過應用程序卡死的情況。應對此問題,我們一般都是等待失去響應的程序恢復,或者是直接使用任務管理器將其強制關閉,然後再重新打開。

在Linux中,遇到特別耗費資源的進程,當然需要使用 top命令 查看進程佔用率高的進程。或者使用 free -m命令 查看內存剩餘。假設需要強殺進程來釋放空間。我們涉及到Linux中信號📶的知識,在這里簡單的描述一下,信號的詳解會在接下來的文章裡面敘述。
free -m命令查看內存空間

在linux中存在著64種信號
使用 kill -l命令 查看信號列表

在前面說過進程會被這些個信號> (進程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信號強制停止運行) 那問題就在於如何發信號給這些個進程。
使用kill命令發信號

我們從上面可以看到 mysqld進程被重啟了 。

關於Linux的這一塊進程的知識還有很多,後面的文章跟大家分享僵屍進程,孤兒進程等等知識,以及守護進程(daemon進程).

❹ linux操作系統的體系結構

看下操作系統原理就懂了,操作系統就是在用戶和硬體之間的一個媒介,因此它有兩個任務,一個是方便用戶操作,一個是管理硬體,所有的操作系統架構都離不開這兩個最初的動機,包括 windows、linux、mac等等。 另外內核主要實現的硬體管理,用戶操作主要通過shell來完成,比如windows上的cmd、explorer.exe,以及linux上的bash shell、kde、gnome。 其實說白了就是一種思想 ——封裝思想,譬如送人一台筆記本,你不用告訴它裡面有什麼CPU、內存,只要告訴他開機按鈕在哪裡就好了。 下面有一張linux體系的結構圖:

❺ 系統加固之Linux安全加固

Linux系統基本操作

文件結構圖及關鍵文件功能介紹

Linux文件結構

Linux文件結構圖

二級目錄

| 目錄 | 功能 |
| /bin | 放置的是在單人維護模式下能被操作的指令,在/bin底下的指令可以被root與一般賬號所使用 |
| /boot | 這個目錄只要在放置開機會使用到的文件,包括 Linux核心文件以及開機選單與開機所需配置的文件等等 |
| /dev | 在Linux系統上,任何裝置與介面設備都是以文件的形態存在於這個目錄當中的 |
| /etc |

系統主要的配置文件幾乎都放在這個目錄內,例如人員賬號密碼各種服務的啟動檔,系統變數配置等

|
| /home | 這個是系統默認的用戶家目錄(home directory) |
| /lib | /lib放置的則是在開機時會用到的函式庫,以及在/lib或/sbin底下的指令會呼叫的函式庫 |
| /media | /media底下放置的是可以移出的裝置,包括軟盤、光碟、DVD等等裝置都掛載於此 |
| /opt | 給第三方協議軟體放置的目錄 |
| /root | 系統管理員(root)的家目錄 |
| /sbin | 放置/sbin底下的為開機過程中所需要的,裡麵包括了開機、修復、還原系統所需的指令。 |
| /srv | srv可視為[service]的縮寫,是一些網路服務啟動之後,這些服務所需要取用的數據目錄 |
| /tmp | 這是讓一般使用者或是正在執行的程序暫時放置文件的地方 |

文件

賬號和許可權

系統用戶

超級管理員 uid=0

系統默認用戶 系統程序使用,從不登錄

新建普通用戶 uid大於500

/etc/passwd

/etc/shadow

用戶管理

許可權管理

解析文件許可權

文件系統安全

查看許可權:ls -l

修改許可權:

**chmod **

** chgrp**

設置合理的初始文件許可權

很奇妙的UMASK:

umask值為0022所對應的默認文件和文件夾創建的預設許可權分別為644和755

文件夾其許可權規則為:777-022-755

文件其許可權規則為:777-111-022=644(因為文件默認沒有執行許可權)

修改UMASK值:

1、直接在命令行下 umask xxx(重啟後消失)

2、修改/etc/profile中設定的umask值

系統加固

鎖定系統中多餘的自建賬號

檢查shadow中空口令賬號

檢查方法:

加固方法:

使用命令passwd -l <用戶名> 鎖定不必要的賬號

使用命令passwd -u <用戶名>解鎖需要恢復的賬號

使用命令passwd <用戶名> 為用戶設置密碼

設置系統密碼策略

執行命令查看密碼策略設置

加固方法:

禁用root之外的超級用戶

檢測方法:

awk -F ":" '( 1}' /etc/passwd

加固方法:

** passwd -l <用戶名>**

****

限制能夠su為root的用戶

查看是否有auth required /libsecurity/pam_whell.so這樣的配置條目

加固方法:

重要文件加上不可改變屬性

把重要文件加上不可改變屬性

Umask安全

SSH安全:

禁止root用戶進行遠程登陸

檢查方法:

加固方法:

更改服務埠:

屏蔽SSH登陸banner信息

僅允許SSH協議版本2

防止誤使用Ctrl+Alt+Del重啟系統

檢查方法:

加固方法:

設置賬號鎖定登錄失敗鎖定次數、鎖定時間

檢查方法:

修改賬號TMOUT值,設置自動注銷時間

檢查方法:

cat /etc/profile | grep TMOUT

加固方法:

vim /etc/profile

增加

TMOUT=600 無操作600秒後自動退出

設置BASH保留歷史命令的條目

檢查方法:

cat /etc/profile | grep HISTSIZE

加固方法:

vim /etc/profile

修改HISTSIZE=5即保留最新執行的5條命令

設置注銷時刪除命令記錄

檢查方法:

cat /etc/skel/.bash_logout 增加如下行

rm -f $HOME/.bash_history

這樣,系統中的所有用戶注銷時都會刪除其命令記錄,如果只需要針對某個特定用戶,,如root用戶進行設置,則可只在該用戶的主目錄下修改/$HOME/.bash_history文件增加相同的一行即可。

設置系統日誌策略配置文件

日誌的主要用途是 系統審計 、監測追蹤和分析。為了保證 Linux 系 統正常運行、准確解決遇到的各種樣統問題,認真地讀取日誌文件是管理員的一項非常重要任務。

UNIX/ Linux 採用了syslog 工具來實現此功能,如果配置正確的 話,所有在主機上發生的事情都會被記錄下來不管是好還是壞的 。

檢查方法:

cat /etc/profile | grep HISTSIZE

確定syslog服務是否啟用

查看syslogd的配置,並確認日誌文件是否存在

阻止系統響應任何從外部/內部來的ping請求

加固方法:

echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all

熱點內容
armlinux命令 發布:2025-01-23 00:01:08 瀏覽:134
戰地4亞洲伺服器為什麼被攻擊 發布:2025-01-22 23:45:42 瀏覽:668
javascript反編譯 發布:2025-01-22 23:37:57 瀏覽:429
夏天來了你的巴氏奶存儲對嗎 發布:2025-01-22 23:37:56 瀏覽:203
求最大值c語言 發布:2025-01-22 23:22:35 瀏覽:247
一鍵清理系統腳本 發布:2025-01-22 23:21:10 瀏覽:59
防疫宣傳腳本 發布:2025-01-22 23:21:05 瀏覽:632
編譯程序編譯後是什麼語言 發布:2025-01-22 23:20:08 瀏覽:368
電腦文件夾設密碼 發布:2025-01-22 23:17:21 瀏覽:7
anyconnect伺服器地址2018 發布:2025-01-22 23:05:56 瀏覽:530