1、Linux介紹linux
咱們如今很常見Windows系統,對於Linux則顯得尤其陌生。固然我也不例外,初識Linux過程當中遇到一些困惑,但我也在實驗的同時經過不斷查找資料與實踐中慢慢解決問題。那麼下面我將從安裝Ubuntu到實現一些基本實驗案例談一下個人感覺。shell
我以爲這是首先要理解的關係。硬件屬於最底層,咱們經過設備驅動系統來進行內核與設備之間的訪問,內核是一個操做系統的核心,它具備訪問管理硬件設備,分配系統資源,響應中斷程序等等功能。而用戶使用應用程序時則是經過系統調用接口來對用戶空間進行操做的。能夠說是層層調用的關係。編程
一般咱們在使用 Linux 時,並非直接與系統打交道,而是經過一個叫作 Shell 的中間程序來完成的,在圖形界面下爲了實現讓咱們在一個窗口中完成用戶輸入和顯示輸出,Linux 系統還提供了一個叫作終端模擬器的程序(Terminal),下面是幾個比較常見的終端模擬器: gnome-terminal,Konsole,xterm,rxvt,kvt,nxterm 和 eterm 。而在實驗中使用的的終端程序是 xfce 桌面環境自帶的 xfce-terminal 。這裏我就出現了疑問:咱們平時都是說打開控制檯輸入命令行執行指令,那麼如今出現的虛擬終端是什麼。查找了相關資料後總結出來我認爲,之前終端是指經過電纜、網絡等等串口鏈接上的不是指計算機自己存在的,而控制檯是一臺計算機上本有的,與計算機是一一對應的關係,信息都是經過控制檯顯示,但因爲如今基本上都是獨佔計算機,所以區別變模糊了,如今基本上都是指能夠輸入命令行並顯示程序運行過程當中的信息以及程序運行結果的窗口。vim
shell就是咱們一般說的殼,簡單理解就是咱們輸入的命令能夠進行顯示解析,是與咱們進行交互的界面,是用戶與內核進行交互操做的一種接口,過程則爲它接收用戶輸入的命令,並把它送入內核去執行。同時shell還有控制腳本語言的功能。那麼shell script和shell之間是什麼關係呢?shell腳本是利用shell的功能所寫的一個程序,這個程序是使用純文本文件,將一些shell的語法與指令寫在裏面,而後用正規表示法,管道命令以及數據流重導向等功能,以達到咱們所想要的處理目的。最簡單的功能就是將許多指令彙整寫一塊兒,讓使用者很容易地就可以一個操做執行多個命令,而shell script更是提供了數組,循環,條件以及邏輯判斷等重要功能,讓使用者能夠直接以shell來寫程序,而沒必要使用相似C程序語言等傳統程序編寫的語法。數組
環境變量至關於給系統或用戶應用程序設置的一些參數,,具體起什麼做用這固然和具體的環境變量相關。例如在Windows操做系統下path的使用,設置path是告訴系統,當要求系統運行一個程序而沒有告訴它程序所在的完整路徑時,,系統除了在當前目錄下面尋找此程序外,還應到哪些目錄下去尋找。服務器
對於其文件結構其實表現爲目錄和文件的組織形式。總體來講Linux 是以樹形目錄結構的形式來構建整個系統的,在控制檯上輸入tree /即可以直觀瞭解(若出現錯誤則先進行安裝便可),那麼目錄採用什麼標準,如何顯示、建立,刪除目錄等等,以及包含在目錄下的各類文件怎麼查看,編輯,建立,搜索,打包等等這些問題,我經過實驗已經基本瞭解,下面舉出部分例子進行說明。在這過程當中其實遇到很多問題,好比對一些命令之間的關係表示不很理解(例如root和sudo的關係)以及初學對於命令的掌握記憶不很熟練致使還得翻書來查看命令等等。但實驗自己就是熟練與理解的過程,不斷實踐總會有收穫。網絡
步驟爲:先添加一個用戶loutest,而後經過mkdir命令新建一個opt文件,進入opt文件後,經過touch命令新建一個forloutest文件,而後修改權限爲讀寫。多線程
用命令 $ locate /etc/.list 便可實現併發
主要特色:whereis簡單快速,locate快而全,which小而精,find精而細異步
步驟:一、啓動日誌服務器 sudo service rsyslog start
二、啓動crontab 服務 sudo cron -f &
三、進入 crontab 文件 crontab -e
四、編輯自動啓動內容 0 3 * * * cp /var/log/alternatives.log /home/shiyanlou/tmp/'date+ %y-%m-%d'
咱們須要初步的瞭解進程在系統中存在的概念,以及進程的如何在系統中衍生,發展,以及進程之間存在的相互關係,爲之後學習打下基礎。
簡單來講,程序是爲了完成某種任務而設計的軟件,好比 vim 是程序。什麼是進程呢?進程就是運行中的程序。程序只是一些列指令的集合,是一個靜止的實體,而進程不一樣,進程有如下的特性:
動態性:進程的實質是一次程序執行的過程,有建立、撤銷等狀態的變化。而程序是一個靜態的實體。
併發性:進程能夠作到在一個時間段內,有多個程序在運行中。程序只是靜態的實體,因此不存在併發性。
獨立性:進程能夠獨立分配資源,獨立接受調度,獨立地運行。
異步性:進程以不可預知的速度向前推動。
結構性:進程擁有代碼段、數據段、PCB(進程控制塊,進程存在的惟一標誌)。也正是由於有結構性,進程才能夠作到獨立地運行。
引入進程是由於傳統意義上的程序已經不足以描述 OS 中各類活動之間的動態性、併發性、獨立性還有相互制約性。程序就像一個公司,只是一些證書,文件的堆積(靜態實體)。而當公司運做起來就有各個部門的區分,財務部,技術部,銷售部等等,就像各個進程,各個部門之間能夠獨立運作,也能夠有交互(獨立性、併發性)。
而隨着程序的發展越作越大,又會繼續細分,從而引入了線程的概念,當代多數操做系統、Linux 2.6及更新的版本中,進程自己不是基本運行單位,而是線程的容器。就像上述所說的,每一個部門又會細分爲各個工做小組(線程),而工做小組須要的資源須要向上級(進程)申請。簡而言之,一個程序至少有一個進程,一個進程至少有一個線程。線程的劃分尺度小於進程,使得多線程程序的併發性高。另外,進程在執行過程當中擁有獨立的內存單元,而多個線程共享內存,從而極大地提升了程序的運行效率。
Linux"figlet"命令:這個命令會用大寫方式把咱們輸入的字符串顯示在標題欄,顯示效果由ASCII字符組成。因爲它不是標準設置,因此要先安裝這一功能。$sudo apt-get install figlet Linux "toilet"命令:我不知道這個命令的名字源自哪裏。可是它確實個五光十色的命令。與figlet同樣,它會把文本顯示稱標題欄,可是效果更好。它比figlet命令的效果更有藝術感。
簡單學習總結: 經過對linux相關內容的學習,基本瞭解了linux是一個怎樣的操做系統以及相比Windows系統具備的優勢及缺點。學習到的linux使用和操做技巧,例如對於linux命令,不可能所有記憶,學會使用man和info指令查看相關命令。學會了一些簡單的linux編程,如gcc編譯器編譯c程序並在shell中運行等。 總之,代碼是要不斷實踐的,瞭解了基本原理後要親自動手操做纔會有收穫。