01、Linux介紹

来源:https://www.cnblogs.com/szl6/archive/2018/08/11/9460124.html
-Advertisement-
Play Games

一、 Linux介紹 Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIX和UNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟體、應用程式和網路協議。它支持32位和64位硬體。Linux繼承了Unix以網路為核心的設計思想,是一個性能穩定的 ...


一、 Linux介紹

 

Linux是一套免費使用和自由傳播的類Unix操作系統,是一個基於POSIXUNIX的多用戶、多任務、支持多線程和多CPU的操作系統。它能運行主要的UNIX工具軟體、應用程式和網路協議。它支持32位64位硬體。Linux繼承了Unix網路為核心的設計思想,是一個性能穩定的多用戶網路操作系統。

Linux操作系統誕生於1991 年10 月5 日(這是第一次正式向外公佈時間)。Linux存在著許多不同的Linux版本,但它們都使用了Linux內核。Linux可安裝在各種電腦硬體設備中,比如手機平板電腦路由器、視頻游戲控制台、台式電腦、大型機和超級電腦。

嚴格來講,Linux這個詞本身只表示Linux內核,但實際上人們已經習慣了用Linux來形容整個基於Linux內核,並且使用GNU工程各種工具和資料庫的操作系統。

二、主要特性

基本思想

Linux的基本思想有兩點:第一,一切都是文件;第二,每個軟體都有確定的用途。其中第一條詳細來講就是系統中的所有都歸結為一個文件,包括命令硬體軟體設備、操作系統進程等等對於操作系統內核而言,都被視為擁有各自特性或類型的文件。至於說Linux是基於Unix的,很大程度上也是因為這兩者的基本思想十分相近。[3]

完全免費

Linux是一款免費的操作系統,用戶可以通過網路或其他途徑免費獲得,並可以任意修改其源代碼。這是其他的操作系統所做不到的。正是由於這一點,來自全世界的無數程式員參與了Linux的修改、編寫工作,程式員可以根據自己的興趣和靈感對其進行改變,這讓Linux吸收了無數程式員的精華,不斷壯大。[4]

完全相容POSIX1.0標準

這使得可以在Linux下通過相應的模擬器運行常見的DOSWindows的程式。這為用戶從Windows轉到Linux奠定了基礎。許多用戶在考慮使用Linux時,就想到以前在Windows下常見的程式是否能正常運行,這一點就消除了他們的疑慮。[4]

多用戶、多任務

Linux支持多用戶,各個用戶對於自己的文件設備有自己特殊的權利,保證了各用戶之間互不影響。多任務則是現在電腦最主要的一個特點,Linux可以使多個程式同時並獨立地運行。[4]

良好的界面

Linux同時具有字元界面和圖形界面。在字元界面用戶可以通過鍵盤輸入相應的指令來進行操作。它同時也提供了類似Windows圖形界面的X-Window系統,用戶可以使用滑鼠對其進行操作。在X-Window環境中就和在Windows中相似,可以說是一個Linux版的Windows。[4]

支持多種平臺

Linux可以運行在多種硬體平臺上,如具有x86、680x0、SPARCAlpha處理器的平臺。此外Linux還是一種嵌入式操作系統,可以運行在掌上電腦機頂盒游戲機上。2001年1月份發佈的Linux 2.4版內核已經能夠完全支持Intel64位晶元架構。同時Linux也支持多處理器技術。多個處理器同時工作,使系統性能大大提高。[4]

 

三、文件結構

/:根目錄,所有的目錄、文件、設備都在/之下,/就是Linux文件系統的組織者,也是最上級的領導者。

/bin:bin 就是二進位(binary)英文縮寫。在一般的系統當中,都可以在這個目錄下找到linux常用的命令。系統所需要的那些命令位於此目錄。

/boot:Linux的內核及引導系統程式所需要的文件目錄,比如 vmlinuz initrd.img 文件都位於這個目錄中。在一般情況下,GRUBLILO系統引導管理器也位於這個目錄。

/cdrom:這個目錄在剛剛安裝系統的時候是空的。可以將光碟機文件系統掛在這個目錄下。例如:mount /dev/cdrom /cdrom

/dev:dev 是設備(device)的英文縮寫。這個目錄對所有的用戶都十分重要。因為在這個目錄中包含了所有linux系統中使用的外部設備。但是這裡並不是放的外部設備的驅動程式。這一點和常用的windows,dos操作系統不一樣。它實際上是一個訪問這些外部設備的埠。可以非常方便地去訪問這些外部設備,和訪問一個文件,一個目錄沒有任何區別。

/etc:etc這個目錄是linux系統中最重要的目錄之一。在這個目錄下存放了系統管理時要用到的各種配置文件和子目錄。要用到的網路配置文件,文件系統,x系統配置文件,設備配置信息,設置用戶信息等都在這個目錄下。

/home:如果建立一個用戶,用戶名是"xx",那麼在/home目錄下就有一個對應的/home/xx路徑,用來存放用戶的主目錄。

/lib:lib是庫(library)英文縮寫。這個目錄是用來存放系統動態連接共用庫的。幾乎所有的應用程式都會用到這個目錄下的共用庫。因此,千萬不要輕易對這個目錄進行什麼操作,一旦發生問題,系統就不能工作了。

/lost+found:在ext2或ext3文件系統中,當系統意外崩潰或機器意外關機,而產生一些文件碎片放在這裡。當系統啟動的過程中fsck工具會檢查這裡,並修複已經損壞的文件系統。有時系統發生問題,有很多的文件被移到這個目錄中,可能會用手工的方式來修複,或移到文件到原來的位置上。

/mnt:這個目錄一般是用於存放掛載儲存設備的掛載目錄的,比如有cdrom等目錄。可以參看/etc/fstab的定義。

/media:有些linux的發行版使用這個目錄來掛載那些usb介面的移動硬碟(包括U盤)、CD/DVD驅動器等等。

/opt:這裡主要存放那些可選的程式。

/proc:可以在這個目錄下獲取系統信息。這些信息是在記憶體中,由系統自己產生的。

/root:Linux超級許可權用戶root的家目錄。

/sbin:這個目錄是用來存放系統管理員的系統管理程式。大多是涉及系統管理的命令的存放,是超級許可權用戶root的可執行命令存放地,普通用戶無許可權執行這個目錄下的命令,這個目錄和/usr/sbin; /usr/X11R6/sbin或/usr/local/sbin目錄是相似的,凡是目錄sbin中包含的都是root許可權才能執行的。

/selinux :對SElinux的一些配置文件目錄,SElinux可以讓linux更加安全。

/srv 服務啟動後,所需訪問的數據目錄,舉個例子來說,www服務啟動讀取的網頁數據就可以放在/srv/www中

/tmp:臨時文件目錄,用來存放不同程式執行時產生的臨時文件。有時用戶運行程式的時候,會產生臨時文件。/tmp就用來存放臨時文件的。/var/tmp目錄和這個目錄相似。

/usr

這是linux系統中占用硬碟空間最大的目錄。用戶的很多應用程式和文件都存放在這個目錄下。在這個目錄下,可以找到那些不適合放在/bin或/etc目錄下的額外的工具

/usr/local:這裡主要存放那些手動安裝的軟體,即不是通過“新立得”或apt-get安裝的軟體。它和/usr目錄具有相類似的目錄結構。讓軟體包管理器來管理/usr目錄,而把自定義的腳本(scripts)放到/usr/local目錄下麵、。

/usr/share :系統共用的東西存放地,比如 /usr/share/fonts 是字體目錄,/usr/share/doc和/usr/share/man幫助文件。

/var:這個目錄的內容是經常變動的,看名字就知道,可以理解為vary的縮寫,/var下有/var/log 這是用來存放系統日誌的目錄。/var/ www目錄是定義Apache伺服器站點存放目錄;/var/lib 用來存放一些庫文件,比如MySQL的,以及MySQL資料庫的的存放地。

 

 


四、常用命令        http://man.linuxde.net/

一。 通用命令:[6]

date :print or set the system date and time

2. stty -a: 可以查看或者列印控制字元(Ctrl-C, Ctrl-D, Ctrl-Z等)

3. passwd: print or set the system date and time (用passwd -h查看)

4. logout, login: 登錄shell的登錄和註銷命令

5. pwd: print working directory

6. more, less, head tail: 顯示或部分顯示文件內容.

7. lp/lpstat/cancel, lpr/lpq/lprm: 列印文件.

8. 更改文件許可權: chmod u+x...

9. 刪除非空目錄:rm -fr dir

10.拷貝目錄: cp -R dir

11. fg jobid :可以將一個後臺進程放到前臺。

Ctrl-z 可以將前臺進程掛起(suspend), 然後可以用bg jobid 讓其到後臺運行。

job & 可以直接讓job直接在後臺運行。

12. kill 的作用: send a signal to a process. eg: kill -9 發送的是SIG_KILL信號。。。 具體發送什麼信號 可以通過 man kill 查看。

13. ps 的用法, ps -e 或 ps -o pid,ppid,session,tpgid, comm (其中session顯示的sessionid, tpgid顯示前臺進程組id, comm顯示命令名稱。)

二 .ubuntu常用命令:[6]

1. dpkg: package manager for Debian

* 安裝: dpkg -i package

* 卸載: dpkg -r package

* 卸載並刪除配置文件: dpkg -P |--purge package

* 如果安裝一個包時。說依賴某些庫。 可以先 apt-get install somelib...

* 查看軟體包安裝內容 :dpkg -L package

* 查看文件由哪個軟體包提供: dpkg -S filename

* 另外 dpkg還有 dselect和aptitude 兩個frontend.

2. apt

* 安裝: apt-get install packs

* apt-get update : 更新源

* apt-get upgrade: 升級系統。

* apt-get dist-upgrade: 智能升級。安裝新軟體包,刪除廢棄的軟體包

* apt-get -f install : -f == --fix broken 修複依賴

* apt-get autoremove: 自動刪除無用的軟體

* apt-get remove packages :刪除軟體

* apt-get remove package --purge 刪除包並清除配置文件

* 清除所以刪除包的殘餘配置文件: dpkg -l |grep ^rc|awk '{print $2}' |tr ["/n"] [" "]|sudo xargs dpkg -P

* 安裝軟體時候包的臨時存放目錄 : /var/cache/apt/archives

* 清除該目錄: apt-get clean

* 清除該目錄的舊版本的軟體緩存: apt-get autoclean

* 查詢軟體some的依賴包: apt-cache depends some

* 查詢軟體some被哪些包依賴: apt-get rdepends some

* 搜索軟體: apt-cache search name|regexp

* 查看軟體包的作用:apt-cache show package

* 查看一個軟體的編譯依賴庫: apt-cache showsrc packagename|grep Build-Depends

* 下載軟體的源代碼 : apt-get source packagename (註: sources.list 中應該有 deb-src 源)

* 安裝軟體包源碼的同時, 安裝其編譯環境 :apt-get build-dep packagename (有deb-src源)

* 如何將本地光碟加入安裝源列表: apt-cdrom add

3. 系統命令:

* 查看內核版本: uname -a

* 查看ubuntu 版本: cat /etc/issue

* 查看網卡狀態 : ethtool eth0

* 查看記憶體,cpu的信息: cat /proc/meminfo ; cat /proc/cpuinfo

(/proc下麵的有很多系統信息)

* 列印文件系統空間使用情況: df -h

* 查看硬碟分區情況: fdisk -l

* 產看文件大小: du -h filename;

* 查看目錄大小: du -hs dirname ; du -h dirname是查看目錄下所有文件的大小

* 查看記憶體的使用: free -m|-g|-k

* 查看進程: ps -e 或ps -aux -->顯示用戶

* 殺掉進程: kill pid

* 強制殺掉: killall -9 processname

4. 網路相關:

* 配置 ADSL: sudo pppoeconf

* ADSL手工撥號: sudo pon dsl-provider

* 激活 ADSL : sudo /etc/ppp/pppoe_on_boot

* 斷開 ADSL: sudo poff

* 根據IP查網卡地址: arping IP地址

* 產看本地網路信息(包括ip等): ifconfig | ifconfig eth0

* 查看路由信息: netstat -r

* 關閉網卡: sudo ifconfig eth0 down

* 啟用網卡: sudo ifconfig eth0 up

* 添加一個服務: sudo update-rc.d 服務名 defaults 99

* 刪除一個服務: sudo update-rc.d 服務名 remove

* 臨時重啟一個服務: /etc/init.d/服務名 restart

* 臨時關閉一個服務: /etc/init.d/服務名 stop

* 臨時啟動一個服務: /etc/init.d/服務名 start

* 控制臺下顯示中文: sudo apt-get install zhcon

* 查找某個文件: whereis filename 或 find 目錄 -name 文件名

*通過ssh傳輸文件

scp -rp /path/filename username@remoteIP:/path #將本地文件拷貝到伺服器上

scp -rp username@remoteIP:/path/filename /path #將遠程文件從伺服器下載到本地

5. 壓縮:

*解壓縮 a.tar.gz: tar zxvf a.tar.gz

*解壓縮 a.tar.bz2: tar jxvf a.tar.bz2

*壓縮aaa bbb目錄為xxx.tar.gz: tar zcvf xxx.tar.gz aaa bbb

*壓縮aaa bbb目錄為xxx.tar.bz2: tar jcvf xxx.tar.bz2 aaa bbb[6]

6. Nautilus:

特殊 URI 地址

* computer:/// - 全部掛載的設備和網路

* network:/// - 瀏覽可用的網路

* burn:/// - 一個刻錄 CDs/DVDs 的數據虛擬目錄

* smb:/// - 可用的 windows/samba 網路資源

* x-nautilus-desktop:/// - 桌面項目和圖標

* file:/// - 本地文件

* trash:/// - 本地回收站目錄

* ftp:// - FTP 文件夾

* ssh:// - SSH 文件夾

* fonts:/// - 字體文件夾,可將字體文件拖到此處以完成安裝

* themes:/// - 系統主題文件夾

* 顯示隱藏文件: Ctrl+h

* 顯示地址欄: Ctrl+l

* 查看已安裝字體: 在nautilus的地址欄里輸入”fonts:///“,就可以查看本機所有的fonts[6]

7.補充部分:

* 查看本地所有的tpc,udp監聽埠: netstat -tupln (t=tcp, u=udp, p=program, l=listen, n=numric)

* 通過man搜說相關命令: man -k keyword . eg: man -k user

* 或者用 apropos

* 統計文件所占用的實際磁碟空間: du (du - estimate file space usage)

* 統計文件中的字元,位元組數: wc -c/-l/-w (wc - print the number of newlines, words, and bytes in files)

* 查看文件的內容: od -x/-c/.... (od - dump files in octal and other formats)

我認為od最有用的就是文件的位元組流了: od -t x1 filename

查看文件的 Ascii 碼形式: od -t c filename (其中統計信息最左邊的是: 位元組數)

* 查找命令所在文件的位置: which od 輸出: /usr/bin/od

查看該文件由哪個包提供: dpkg -S /usr/bin/od 輸出: coreutils: /usr/bin/od

再查看coreutils包的全部內容就知道了linux的核心命令: dpkg -L coreutils

然後 info coreutils 哈哈,認真學吧, 滿世界都是命令!

* 可以用man 命令產看某個命令的所有section 的解釋: man -a tty

然後用q,和next 轉換到下一個section的解釋

* bash 的好用的快捷鍵:

ctrl+a:游標移到行首。

ctrl+b:游標左移一個字母

ctrl+c:殺死當前進程。

ctrl+d:退出當前 Shell。

ctrl+e:游標移到行尾。

ctrl+h:刪除游標前一個字元,同 backspace 鍵相同。

ctrl+k:清除游標後至行尾的內容。

ctrl+l:清屏,相當於clear。

ctrl+r:搜索之前打過的命令。會有一個提示,根據你輸入的關鍵字進行搜索bash的history

ctrl+u: 清除游標前至行首間的所有內容。

ctrl+w: 移除游標前的一個單詞

ctrl+t: 交換游標位置前的兩個字元

ctrl+y: 粘貼或者恢覆上次的刪除

ctrl+d: 刪除游標所在字母;註意和backspace以及ctrl+h的區別,這2個是刪除游標前的字元

ctrl+f: 游標右移

ctrl+z : 把當前進程轉到後臺運行,使用’ fg ‘命令恢復。比如top -d1 然後ctrl+z ,到後臺,然後fg,重新恢復

* 快速粘貼:先在一個地方選中文字,在欲粘貼的地方按滑鼠 中鍵 即可。

* 等效中鍵:a 、按下滑輪等效於中鍵。b、同時按下滑鼠 左右鍵,等效於中鍵。

* 快速重啟X服務: 同時按下: Alt + Ctrl + Backspace 三個鍵。

* 打開"運行"視窗: 同時按下 Alt + F2 鍵。

* 截屏: a、全屏:直接按下 PrtScr 鍵。

b、當前視窗:同時按下 Alt + PrtScr 鍵。

c、延時截屏:在 終端 或 "運行"視窗中輸入命令: gnome-screenshot --delay 3 ,將延時 3 秒後截屏。

* 直接將 文件管理器 中的文件拖到 GNOME終端 中就可以在終端中得到完整的路徑名。[6]8.ulimit

ulimit:顯示(或設置)用戶可以使用的資源的限制(limit),這限制分為軟限制(當前限制)和硬限制(上限),其中硬限制是軟限制的上限值,應用程式在運行過程中使用的系統資源不超過相應的軟限制,任何的超越都導致進程的終止。

ulimited 不限制用戶可以使用的資源,但本設置對可打開的最大文件數(max open files)

和可同時運行的最大進程數(max user processes)無效

-a 列出所有當前資源極限

-c 設置core文件的最大值.單位:blocks

-d 設置一個進程的數據段的最大值.單位:kbytes

-f Shell 創建文件的文件大小的最大值,單位:blocks

-h 指定設置某個給定資源的硬極限。如果用戶擁有 root 用戶許可權,可以增大硬極限。任何用戶均可減少硬極限

-l 可以鎖住的物理記憶體的最大值

-m 可以使用的常駐記憶體的最大值,單位:kbytes

-n 每個進程可以同時打開的最大文件數

-p 設置管道的最大值,單位為block,1block=512bytes

-s 指定堆棧的最大值:單位:kbytes

-S 指定為給定的資源設置軟極限。軟極限可增大到硬極限的值。如果 -H 和 -S 標誌均未指定,極限適用於以上二者

-t 指定每個進程所使用的秒數,單位:seconds

-u 可以運行的最大併發進程數

-v Shell可使用的最大的虛擬記憶體,單位:kbytes

eg: ulimit -c 1000(可以先通過ulimit -c 查看原來的值)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 1 簡介 pipenv是requests作者的一個項目,整合了virtualenv、pip、pipfile, 用於更方便地為項目建立虛擬環境並管理虛擬環境中的第三方模塊。不需要再分別使用pip和virtualenv,直接使用pipenv即可。它使用Pipfile和Pipfile.lock 取代了re ...
  • 本文參考了官方文檔以及提供的示例代碼(官方代碼貌似有點誤導,所以寫了這一篇,並且文末有GayHub代碼地址) 官方文檔發佈於20180806,說明NavigationView剛發佈了沒幾天,還在開發中,所以裡面的介面啥的隨時會變! 隨時會變! 隨時會變! ,用在你的項目之前,請需要做好充足的心理準備 ...
  • 環境: .net 4.0 ashx一般處理程式 使用 html5 FormData ajax上傳文件 功能如下:如果用戶有登錄,則對文件進行處理;如果用戶沒登錄,則直接返回json,提示用戶未登錄 遇到問題: 用戶登錄:正常 用戶沒登錄:調試的時候,沒任何異常,瀏覽器顯示Failed to load ...
  • 多層實體轉xml,泛型轉xml都可用,完善中.... ...
  • 屏幕拖拽截圖、全屏截圖,cropperjs裁剪上傳等功能,詳細介紹請看博客,寫的很細: https://www.cnblogs.com/bq-blog/p/9455241.html ...
  • 0.背景 在實際項目當中,我們採用的是 Abp 框架,但是 Abp 框架官方並沒有針對 Grpc 進行模塊封裝。基於此我結合 Abp 與 MagicOnion 封裝了一個 Abp.Grpc 模塊,它包括服務端和調用端兩部分的包。通過這兩個包,你可以很方便地在 Abp 框架當中集成 Grpc 實現服務 ...
  • 1、確保是純凈系統 確保是乾凈的操作系統,沒有安裝過其它環境帶的Apache/Nginx/php/MySQL,否則安裝不上 2、sudo進行安裝 yum install -y wget && wget -O install.sh http://download.bt.cn/install/insta ...
  • 1.構建jenkins 鏡像 vim Dockerfile FROM jenkins USER root ARG dockerGid=999 RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group # 安裝 docker-compose RUN ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...