linux Base

来源:https://www.cnblogs.com/LynMissTyy/archive/2022/08/23/16617301.html
-Advertisement-
Play Games

目錄 gun組織 項目 Linux版本 指令下達和執行 如何關機 linux Base gun組織 項目 copyleft:代表無版權。 copyright:代表有版權 opensource:開放源代碼、軟體誰都可以使用、誰都可以傳播、都可二次開發 free:免費 GPL:通用許可證協議,如果軟體打 ...


目錄

linux Base

gun組織

項目

copyleft:代表無版權。

copyright:代表有版權

opensource:開放源代碼、軟體誰都可以使用、誰都可以傳播、都可二次開發

free:免費

GPL:通用許可證協議,如果軟體打上GPL任何人都可對其進行修改,但是修改完以後必鬚髮布出來。

口號:團結就是力量

Linux系統之父:linus Torvalds 林納斯.托瓦茲

Linux版本

我們現在所說的Linux都是發行版distribution version;就是Linux內核加上各種gun的庫文件、應用程式構造而成的操作系統

各版本

Redhat:企業級操作系統

centos:社區企業級操作系統

Ubuntu社區維護,主要做手機系統和電腦桌面系統

以及debian系統等等。。。

指令下達和執行

[dmtsai@study ~]$ command [-options] parameter1 parameter2 ...
                    指令      選項     參數(1)  參數(2)
  1. 一行指令中第一個輸入的部分絕對是“指令(command)”或“可可執行文件案(例如批次腳本,script)”

  2. command 為指令的名稱,例如變換工作目錄的指令為 cd 等等;

  3. 中刮號[]並不存在於實際的指令中,而加入選項設置時,通常選項前會帶 - 號,例如 -h;有時候會使用選項的完整全名,則選項前帶有 -- 符號,例如 --help;

  4. parameter1 parameter2.. 為依附在選項後面的參數,或者是 command 的參數;

  5. 指令, 選項, 參數等這幾個咚咚中間以空格來區分,不論空幾格 shell 都視為一格。所以空格是很重要的特殊字元!;

  6. 按下[Enter]按鍵後,該指令就立即執行。[Enter]按鍵代表著一行指令的開始啟動。

  7. 指令太長的時候,可以使用反斜線 (\) 來跳脫[Enter]符號,使指令連續到下一行。註意!反斜線後就立刻接特殊字元,才能跳脫!

  8. 其他:在 Linux 系統中,英文大小寫字母是不一樣的。舉例來說, cd 與 CD 並不同。

ls這個指令列出自己的主文件夾(區分大小寫

  • 幾個基本且好玩,有用的指令

    • 顯示時間與日期的指令:dat

    • 顯示日曆的指令: cal

      [dmtsai@study ~]$ cal [month] [year]
      
    • 簡單好用的電腦: bc
      如果要輸出小數點下位
      數,那麼就必須要執行 scale=number ,那個number就是小數點位數

    • 查詢幫助的:help/man

  • 幾個熱鍵[Tab], [ctrl]-c, [ctrl]-d``[Tab]
    接在一串指令的第一個字的後面,則為“命令補全”;
    接在一串指令的第二個字以後時,則為“文件補齊”!
    若安裝 bash-completion 軟體,則在某些指令後面使用 [tab] 按鍵時,可以進行“選項/參數的補齊”功能!
    善用 [tab] 按鍵真的是個很好的習慣!可以讓你避免掉很多輸入錯誤的機會!
    [ctrl]-c:讓當前的程式“停掉”的
    [ctrl]-d:鍵盤輸入結束(End Of File, EOF 或 End Of Input)”的意思! 另外,他也可以用來取代exit的輸入呢!例如你想要直接離開命令行,可以直接按下[Ctrl]-d就能夠直接離開了(相當於輸入exit啊!)

錯誤信訊息的察看

[dmtsai@study ~]$ DATE
bash: DATE: command not found... # 這裡顯示錯誤的訊息
Similar command is: 'date' # 這裡竟然給你一個可能的解決方案耶!

上面的bach:表示的是我們的shell的名稱,上面例子的錯誤bash會告訴你出現了什麼錯誤:

command not found

出現這種情況可能原因是這條指令不存在或者你打錯了。

  • man(man page) 指令詳情

    [dmtsai@study ~]$ man date
    DATE(1) User Commands DATE(1)
    # 請註意上面這個括弧內的數字
    NAME <==這個指令的完整全名,如下所示為date且說明簡單用途為設置與顯示日期/時間
        date - print or set the system date and time
    SYNOPSIS <==這個指令的基本語法如下所示
        date [OPTION]... [+FORMAT] <==第一種單純顯示的用法
        date [-u|--utc|--universal] [MMDDhhmm[[CC]YY][.ss]] <==這種可以設置系統時間的用法
    DESCRIPTION <==詳細說明剛剛語法談到的選項與參數的用法
        Display the current time in the given FORMAT, or set the system date.
        Mandatory arguments to long options are mandatory for short options too.
    -d, --date=STRING <==左邊-d為短選項名稱,右邊--date為完整選項名稱
        display time described by STRING, not 'now'
    -f, --file=DATEFILE
        like --date once for each line of DATEFILE
    -I[TIMESPEC], --iso-8601[=TIMESPEC]
        output date/time in ISO 8601 format. TIMESPEC='date' for date only (the
        default), 'hours', 'minutes', 'seconds', or 'ns' for date and time to the
        indicated precision.
        ....(中間省略)....
    # 找到了!下麵就是格式化輸出的詳細數據!
    FORMAT controls the output. Interpreted sequences are:
    %% a literal %
    %a locale's abbreviated weekday name (e.g., Sun)
    %A locale's full weekday name (e.g., Sunday)
        ....(中間省略)....
        ENVIRONMENT <==與這個指令相關的環境參數有如下的說明
        TZ Specifies the timezone, unless overridden by command line parameters.
        If neither is specified, the setting from /etc/localtime is used.
        EXAMPLES <==一堆可用的範本
        Convert seconds since the epoch (1970-01-01 UTC) to a date
        $ date --date='@2147483647'
        ....(中間省略)....
    DATE STRING <==上面曾提到的 --date 的格式說明!
        The --date=STRING is a mostly free format human readable date string such as "Sun, 29
        Feb 2004 16:21:42 -0800" or "2004-02-29 16:21:42" or even "next Thursday". A date
        string may contain items indicating calendar date, time of day, time zone, day of
    AUTHOR <==這個指令的作者啦!
        Written by David MacKenzie.
    COPYRIGHT <==受到著作權法的保護!用的就是 GPL 了!
        Copyright © 2013 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or
        later <http://gnu.org/licenses/gpl.html>.
        This is free software: you are free to change and redistribute it. There is NO WARRANTY,
        to the extent permitted by law.
    SEE ALSO <==這個重要,你還可以從哪裡查到與date相關的說明文檔之意
        The full documentation for date is maintained as a Texinfo manual. If the info and
        date programs are properly installed at your site, the command
        info coreutils 'date invocation'
        should give you access to the complete manual.
    GNU coreutils 8.22 June 2014 DATE
    

表格的第一行,你可以看到的是:“DATE(1)”,DATE我們知道是指令的名
稱, 那麼(1)代表什麼呢?他代表的是“一般使用者可使用的指令”的意思!咦!還有這個用
意啊!呵呵! 沒錯~在查詢數據的後面的數字是有意義的喔!他可以幫助我們瞭解或者是直
接查詢相關的數據。 常見的幾個數字的意義是這樣的:

1 使用者在shell環境中可以操作的指令或可可執行文件
2 系統核心可調用的函數與工具等
3 一些常用的函數(function)與函數庫(library),大部分為C的函數庫(libc)
4 設備文件的說明,通常在/dev下的文件
5 配置文件或者是某些文件的格式
6 游戲(games)
7 慣例與協定等,例如Linux文件系統、網路協定、ASCII code等等的說明
8 系統管理員可用的管理指令
9 跟kernel有關的文件

上表中的1, 5, 8這三個號碼特別重要,也請讀者要將這三個數字所代表的意義背下來喔!

man page的內容也分成好幾個部分來加以介紹該指令呢!就是上頭man date那個表格內, 以NAME作為開始介紹,最後還有個SEE ALSO來作為結束。基本上,man page大致分成下麵這幾個部分:

NAME 簡短的指令、數據名稱說明
SYNOPSIS 簡短的指令下達語法(syntax)簡介
DESCRIPTION 較為完整的說明,這部分最好仔細看看!
OPTIONS 針對SYNOPSIS部分中,有列舉的所有可用的選項說明
COMMANDS 當這個程式(軟體)在執行的時候,可以再此程式(軟體)中下達的指令
FILES 這個程式或數據所使用或者參考或鏈接到的某些文件
SEE ALSO 可以參考的,跟這個指令或者數據有相關的其他說明
EXAMPLE 一些可以參考的範例
空白鍵 向下翻一頁
/string 向“下”搜尋 string 這個字串,如果要搜尋 vbird 的話,就輸入 /vbird
?string 向“上”搜尋 string 這個字串
n,N 利用 / 或 ? 來搜尋字串時,可以用 n 來繼續下一個搜尋 (不論是 / 或 ?) ,可以利用 N 來進行“反向”搜尋。舉例來說,以 /vbird 搜尋 vbird 字串, 那麼可以 n 繼續往下查詢,用 N 往上查詢。若以 ?vbird 向上查詢 vbird 字串, 那可以用 n 繼續“向上”查詢,用 N 反向查詢。
q 結束這次的 man page
  • 上述表格說明
    有時候除了這些外,還可能會看到Authors與Copyright等,不過也有很多時候僅有NAME與
    DESCRIPTION等部分。 通常鳥哥在查詢某個數據時是這樣來查閱的:

    1. 先察看NAME的項目,約略看一下這個數據的意思;

    2. 再詳看一下DESCRIPTION,這個部分會提到很多相關的數據與使用時機,從這個地方可以學到很多小細節呢;

    3. 而如果這個指令其實很熟悉了(例如上面的date),那麼鳥哥主要就是查詢關於OPTIONS的部分了! 可以知道每個選項的意義,這樣就可以下達比較細部的指令內容呢!

    4. 最後,再看一下,跟這個數據有關的還有哪些東西可以使用的?舉例來說,上面的SEE ALSO就告知我們還可以利用“info coreutils date”來進一步查閱數據;

    5. 某些說明內容還會列舉有關的文件(FILES 部分)來提供我們參考!這些都是很有幫助的!

如何關機

最大的問題是,若不正常關機,則可能造成文件系統的毀損 (因為來不及將數據回寫

到文件中,所以有些服務的文件會有問題!)。所以正常情況下,要關機時需要註意下麵幾

件事:

  • 觀察系統的使用狀態: 如果要看目前有誰線上上,可以下達“who”這個指令,而如果要看網路的連線狀態,可以下達 “ netstat -a ”這個指令,而要看背景執行的程式可以執行“ ps -aux ”這個指令。使用這些指令可以讓你稍微瞭解主機目前的使用狀態!當然啰,就可以讓你判斷是否可以關機了 (這些指令在後面Linux常用指令中會提及喔!)

  • 通知線上使用者關機的時刻: 要關機前總得給線上的使用者一些時間來結束他們的工作,所以,這個時候你可以使用 shutdown 的特別指令來達到此一功能。

  • 正確的關機指令使用: 例如 shutdown 與 reboot 兩個指令!所以下麵我們就來談一談幾個與關機/重新開機相關的指令啰!

  • 將數據同步寫入硬碟中的指令: sync

    我們談到過數據在電腦中運行的模式, 所有的數據都得要被讀入記憶體後才能夠被CPU所處理,但是數據又常常需要由記憶體寫回硬碟當中(例如儲存的動作)。 由於硬碟的速度太慢(相對於記憶體來說),如果常常讓數據在記憶體與硬碟中來回寫入/讀出,系統的性能就不會太好。因此在Linux系統中,為了加快數據的讀取速度,所以在預設的情況中, 某些已經載入記憶體中的數據將不會直接被寫回硬碟,而是先暫存在記憶體當中,如此一來, 如果一個數據被你重覆的改寫,那麼由於他尚未被寫入硬碟中,因此可以直接由記憶體當中讀取出來, 在速度上一定是快上相當多的!

    不過,如此一來也造成些許的困擾,那就是萬一你的系統因為某些特殊情況造成不正常關機(例如停電或者是不小心踢到power)時,由於數據尚未被寫入硬碟當中,哇!所以就會成數據的更新不正常啦! 那要怎麼辦呢?這個時候就需要sync這個指令來進行數據的寫入動作啦! 直接在命令行下輸入sync,那麼在記憶體中尚未被更新的數據,就會被寫入硬碟中!所以,這個指令在系統關機或重新開機之前, 很重要喔!最好多執行幾次!

    雖然目前的 shutdown/reboot/halt 等等指令均已經在關機前進行了 sync 這個工具的調用,不過,多做幾次總是比較放心點~呵呵~

    [dmtsai@study ~]$ su - # 這個指令在讓你的身份變成 root !下麵請輸入 root 的密碼!
    Password: # 就這裡!請輸入安裝時你所設置的 root 密碼!
    Last login: Mon Jun 1 16:10:12 CST 2015 on pts/0
    [root@study ~]# sync
    

    事實上sync也可以被一般帳號使用喔!只不過一般帳號使用者所更新的硬碟數據就僅有自己的數據,不像root可以更新整個系統中的數據了

  • 慣用的關機指令: shutdown

    由於Linux的關機是那麼重要的工作,因此除了你是在主機前面以實體終端機 (tty1~tty7) 來登陸系統時, 不論用什麼身份都能夠關機之外,若你是使用遠端管理工具(如通過pietty使用ssh服務來從其他電腦登陸主機), 那關機就只有root有權力而喔!

    嗯!那麼就來關機試試看吧!我們較常使用的是shutdown這個指令,而這個指令會通知系統內的各個程式 (processes),並且將通知系統中的一些服務來關閉。shutdown可以達成如下的工作:

    • 可以自由選擇關機模式:是要關機或重新開機均可;

    • 可以設置關機時間: 可以設置成現在立刻關機, 也可以設置某一個特定的時間才關機。

    • 可以自訂關機訊息:在關機之前,可以將自己設置的訊息傳送給線上 user 。

    • 可以僅發出警告訊息:有時有可能你要進行一些測試,而不想讓其他的使用者干擾,或者是明白的告訴使用者某段時間要註意一下!這個時候可以使用 shutdown 來嚇一嚇使用者,但卻不是真的要關機啦!

    簡單的語法規則

    [root@study ~]# /sbin/shutdown [-krhc] [時間] [警告訊息]
    選項與參數:
    -k : 不要真的關機,只是發送警告訊息出去!
    -r : 在將系統的服務停掉之後就重新開機(常用)
    -h : 將系統的服務停掉後,立即關機。 (常用)
    -c : 取消已經在進行的 shutdown 指令內容。
    時間 : 指定系統關機的時間!時間的範例下麵會說明。若沒有這個項目,則預設 1 分鐘後自動進行。
    範例:
    [root@study ~]# /sbin/shutdown -h 10 'I will shutdown after 10 mins'
    Broadcast message from [email protected] (Tue 2015-06-02 10:51:34 CST):
    I will shutdown after 10 mins
    The system is going down for power-off at Tue 2015-06-02 11:01:34 CST!
    

    執行完這個指令之後,十分鐘後機子關機,可以輸入“shutdown -c“取消本次指令,如果什麼參數都沒有輸入則預設為一分鐘之內關機

    [root@study ~]# shutdown -h now
    立刻關機,其中 now 相當於時間為 0 的狀態
    [root@study ~]# shutdown -h 20:25
    系統在今天的 20:25 分會關機,若在21:25才下達此指令,則隔天才關機
    [root@study ~]# shutdown -h +10
    系統再過十分鐘後自動關機
    [root@study ~]# shutdown -r now
    系統立刻重新開機
    [root@study ~]# shutdown -r +30 'The system will reboot'
    再過三十分鐘系統會重新開機,並顯示後面的訊息給所有線上上的使用者
    [root@study ~]# shutdown -k now 'This system will reboot'
    僅發出警告信件的參數!系統並不會關機啦!嚇唬人!
    
  • 重新開機,關機: reboot, halt, poweroff

    還有三個指令可以進行重新開機與關機的任務,那就是reboot, halt, poweroff。 其實這三個指令調用的函數庫都差不多,所以當你使用“man reboot”時,會同時出現三個指令的用法給你看呢。 其實鳥哥通常都只有記poweroff與reboot這兩個指令啦!一般鳥哥在重新開機時,都會下達如下的指令喔:

    [root@study ~]# sync; sync; sync; reboot
    

    既然這些指令都能夠關機或重新開機,那他有沒有什麼差異啊?基本上,在預設的情況下,

    這幾個指令都會完成一樣的工作!(全部的動作都是去調用 systemctl 這個重要的管理命

    令!) 所以,你只要記得其中一個就好了!重點是,你自己習慣即可!更多功能去man一下

    [root@study ~]# halt # 系統停止~屏幕可能會保留系統已經停止的訊息!
    [root@study ~]# poweroff # 系統關機,所以沒有提供額外的電力,屏幕空白!
    
    • 實際使用管理工具 systemctl 關機

      如果你是個老手,那麼一定會知道有個名為 init 的指令,這個指令可以切換不同的執行等級~ 執行等級共有 0~6 七個,其中 0 就是關機、6 就是重新開機等等。不過,這個init目前只是一個相容模式而已~ 所以在 CentOS 7 當中,雖然你依舊可以使用“ init 0 ”來關機,但是那已經跟所謂的“執行等級”無關了!

      那目前系統中所有服務的管理是使用哪個指令呢?那就是 systemctl 啦!這個指令相當的複雜!我們會在很後面系統管理員部份才講的到! 目前你只要學習 systemctl 當中與關機有關的部份即可。要註意,上面談到的 halt, poweroff, reboot, shutdown 等等,其實都是調用這個

      systemctl 指令的喔! 這個指令跟關機有關的語法如下:

      [root@study ~]# systemctl [指令]
      指令項目包括如下:
      halt 進入系統停止的模式,屏幕可能會保留一些訊息,這與你的電源管理模式有關
      poweroff 進入系統關機模式,直接關機沒有提供電力喔!
      reboot 直接重新開機
      suspend 進入休眠模式
      [root@study ~]# systemctl reboot # 系統重新開機
      [root@study ~]# systemctl poweroff # 系統關機
      

Linux系統關機/重啟是很重大的系統運行,因此只有root才能夠進行。


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

-Advertisement-
Play Games
更多相關文章
  • 一、前言 我們在開發中會經常遇到一些可能會變的值,比如資料庫的密碼,一些關鍵鏈接的配置等等。 都需要我們寫在配置文件中,這樣可以把這些配置文件放到nacos上進行管理,修改nacos的配置,咱們發佈的包就可以動態的進行更新了,不需要重新修改打包在重新發包! 咱們今天就來說一說讀取配置文件中的值常見的 ...
  • Excelize 是 Go 語言編寫的 Excel 文檔基礎庫,2022年8月22日,社區正式發佈了 2.6.1 版本,該版本包含了多項新增功能、錯誤修複和相容性提升優化。 ...
  • 作者:昌維 來源:https://www.zhihu.com/question/537774494/answer/2534015588 知乎上有一個提問: 分享一個很有意思的回答。 1 我是一名 JetBrains 的忠實粉絲。我學習編程語言的經歷大概有 10 年左右,使用 JetBrains 大概 ...
  • 一、前言 在上一篇隨筆中,我向大家介紹瞭如何製作自己的 nuget 包,並沒有向大家介紹如何發佈製作好的包,今天就繼續向大家介紹如何搭建一個簡易的 nuget 私有倉庫,並上傳自己的包以供內部使用。 老規矩,今天介紹的還是在Windows系統下進行的操作,Linux系統下也可以使用 nexus 來搭 ...
  • 來瞧瞧,WPF 炫酷走馬燈! 控制項名:SpotLight 作者:WPFDevelopersOrg 原文鏈接: https://github.com/WPFDevelopersOrg/WPFDevelopers 框架使用大於等於.NET40; Visual Studio 2022; 項目使用 MIT ...
  • 一:背景 這篇我們來聊一下 PerfView 在協助 WinDbg 分析 Dump 過程中的兩個超實用技巧,可能會幫助我們快速定位最後的問題,主要有如下兩塊: 洞察記憶體泄漏中的靜態大集合變數名。 驗證當前程式的 GC 模式。 這裡就把經驗分享一下,希望讓大家少走彎路。 二:如何洞察 1. 查看靜態變 ...
  • 大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家分享的是IAR下調試信息輸出機制之半主機(Semihosting)。 在嵌入式世界里,輸出列印信息是一種非常常用的輔助調試手段,藉助列印信息,我們可以比較容易地定位和分析程式問題。在嵌入式應用設計里實現列印信息輸出的方式有很多,本系列將以 IA ...
  • 原文鏈接:https://www.zhoubotong.site/post/76.html 最近發現一個文檔類網站,編寫教程很合適,特地查了一下叫Read the Docs ,可以使用 Sphinx 生成文檔,GitHub 托管文檔,然後導入到 ReadtheDocs進行展示,這裡順便記錄一下搭建過 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...