Linux命令行與Shell腳本編程學習筆記20

2021-01-07 臨江墨雲

1. trap命令允許你來指定shell腳本要觀察哪些linux信號並從shell中攔截。如果腳本收到了trap命令中列出的信號,它會阻止它被shell處理,而在本地處理它。

2. trap命令的格式是: trap commands signals

3. 當&符放到命令後時,它會將命令和bash shell分離開來,並將它作為系統上的獨立後臺進程運行。

4. nohup命令運行了另外一個命令來阻斷所有發送給該進程的SIGHUP信號。這會在退出終端會話時阻止進程退出。

5. nohup命令的格式: nohup 命令 &

為了保護該命令產生的輸出,nohup命令會自動將STDOUT和STDERR的消息重定向到一個名為nohup.out的文件中。

6. 如果用nohup運行了另一個命令,輸出會追加到現有的nohup.out文件中。在運行同目錄中的多個命令時,要小心了,因為所有的輸出都會發送到通一個nohup.out文件。

7. job命令查看shell當前正在處理的作業。

8. jobs命令參數:

9. job命令輸出中的加號和減號,帶加號的作業會被當做默認的作業。帶減號的作業則會在當前默認作業完成處理時成為下一個默認作業。任何時候都只有一個帶加號的作業和一個帶減號的作業,不管shell中有多少個正在運行的作業。

10.bg命令加上作業號可以以後臺模式啟動一個作業。由於作業是以後臺模式重啟的,命令行界面的提示符會出現,允許輸入其他命令。

fg命令加上作業號可以以前臺模式重啟作業。由於作業是以前臺模式運行的,命令行界面的提示符不會出現。

11.內核負責將CPU時間分配給系統上運行的每個進程,實際上每次只有一個進程可以運行在CPU上,所以內核將CPU時間輪流分配給每個進程。

12.調度優先級是個整數值,從-20(最高優先級)到+20(最低優先級)。默認情況下。bash shell以優先級0來啟動所有進程。

13.nice命令允許在啟動時調整一個命令的調度優先級。要讓命令以更低的優先級運行,只要用nice的-n命令行來指定新的優先級級別。

14.nice命令阻止普通系統用戶來增加命令的優先級。

15.renice命令能改變系統上已運行命令的優先級,它允許指定運行進程的PID來改變它的優先級。

16.renice命令也有一些限制:

(1) 用戶只能對屬於自己的進程執行renice;

(2) 用戶只能通過renice降低進程的優先級;

(3) root用戶可以通過renice來調整任何進程的優先級到任何級別。

17.linux系統提供了多個在預選時間運行腳本的方法:at命令和cron表。

18.at命令的基本格式: at[ -f filename ] time

-f參數來指定讀取命令的文件名,time參數指定了linux系統何時運行該作業。

19.at命令能識別多種不同的時間格式:

(1) 標準的小時和分鐘格式,比如10:15;

(2) ~AM/~PM指示符,比如10:15~PM;

(3) 特定可命名的時間,比如now、noon、midnight等。

如果指定了一個已經過去的時間,at命令會在第二天該時間運行該作業。

除了指定運行作業時間,也可以指定特定的日期,通過不同的日期格式:

(1) 標準日期格式,比如MMDDYY、MM/DD/YY或DD.MM.YY;

(2) 文本日期,比如Jul 4 等,加不加年份均可。

也可以指定時間增量:

(1) 當前時間+25 min;

(2) 明天10:15~PM;

(3) 10:15 + 7 天。

20.在使用at命令時,改作業會被提交到作業隊列中。只對不同的優先級,存在26中不同的作業隊列。作業隊列通常用小寫字母a~z來引用。作業隊列的字母排序越高,作業運行的優先級就越低。如果想以更高優先級運行作業。可以用-q參數指定不同的隊列字母。

21.batch命令是允許腳本在後面某個時間運行的另一種方法。

22.可以在at命令中用-m選項來生成一封E-mail消息,說明作業完成了,即使腳本並未產生任何輸出。

23.atq命令查看系統中有哪些作業在等待

atrm命令刪除等待中的作業,只要指定想要刪除的作業號就行了。但只能刪除自己提價的要執行的作業,不能刪除其他人提交的作業。

24.linux系統使用cron程序來計劃要定期執行的作業。cron程序會在後臺運行並檢查特殊的稱做cron時間表的表,來獲得計劃執行的作業。

25.cron時間表的格式如下:

min hour dayofmonth month dayofweek command

cron時間表允許用特定值、值範圍或者是通配符(星號)來指定條目。

26.設置一個命令在每個月的最後一天的中午12點執行,常用的方法是加一條使用date命令的if-then語句來檢查明天的日期是不是01:

00 12 * * * if [`date +%d -d tomorrow ` = 01 ]; then; command 就會在每天中午12點來檢查是不是當月的最後一天,如果是,cron將會運行該命令。

27.命令列表必須指定要運行的命令或腳本的全路徑名。可以添加任何想要的命令行參數和重定向符號,作為定期命令行。

28.cron程序會用提交作業的用戶帳戶運行腳本。因此,用戶必須有訪問該命令和命令中指定的輸出文件的權限。

29.crontab命令來處理cron時間表。要列出已有的cron時間表,用-l參數。要為cron時間表添加條目,用-e參數。

30.如果創建的腳本不要求有精確的執行時間,用預配置的cron腳本目錄會更方便。有4個基本目錄:hourly、daily、monthly和weekly。

31.cron程序不會回去再運行哪些錯過的作業,但anacron程序知道作業錯過了計劃好的運行,它會儘快運行該作業。這個功能通常用於進行常規日誌維護腳本。

32. anacron程序只會處理位於cron目錄的程序。它用時間戳來決定作業是否在適合的計劃間隔內運行了。每個cron目錄都有個時間戳文件。

33.anacron時間表的基本格式: period delay identifier command

period條目定義了作業多久運行一次,以天為單位。Delay條目會指定系統啟動後多少分鐘後anacron程序開始運行錯過的腳本。Command條目包含了run-parts程序和一個cron腳本目錄名。

anacron程序不會運行位於/etc/cron.hourly的腳本。這是因為anacron程序不會處理執行時間需求小於一天的腳本。

Identifier條目是一種特別的非空白字符字符串。它用於唯一識別日誌消息和錯誤E-mail中的作業。

34.linux本地開機文件位置:

35. .bash_profile文件會在用戶每次登錄到系統時運行腳本,.bashrc文件會在啟動每個shell實例時運行腳本。

相關焦點

  • Linux命令行與Shell腳本編程學習筆記15
    如果要兩個命令一起運行,可在同一提示行輸入它們,用分號分隔開。2. 在創建shell腳本文件時,必須在文件的第一行指定要使用的shell。3. 在通常的shell腳本的行裡,井號(#)用作注釋行。shell腳本中注釋行是不被shell執行的。然而,shell腳本文件的第一行是個特例,井號後接嘆號告訴shell用哪個shell來運行腳本。4.
  • 資料|《Linux 命令行與 shell 腳本編程大全》
    今日資料推薦《 Linux 命令行與 shell 腳本編程大全》這是一本關於 Linux 命令行與 shell 腳本編程的全方位教程,主要包括四大部分:Linux 命令行,shell 腳本編程基礎,高級 shell 腳本編程,如何創建實用的 shell 腳本。
  • Linux命令行與Shell腳本編程學習筆記26
    gawk程式語言支持兩種不同類型的變量:(1)內建變量 (2)自定義變量2. 欄位是由欄位分隔符來劃分的。默認情況下,欄位分隔符是一個空白字符,也就是空格符或者制表符。3. gawk數據欄位和數據行變量變量FS和OFS定義了gawk如何處理數據流中的數據欄位。變量OFS用在print命令的輸出上。
  • Linux命令行與Shell腳本編程學習21
    使用return命令的這種方法從函數中返回值時,要注意一下兩點:(1) 函數一結束就取返回值;(2) 退出狀態碼必須在0-255之間。5. 可以將函數的輸出保存到shell變量中。這種方法可以返回浮點值和字符串值。6. 函數可以使用標準的參數環境變量來代表命令行上傳給函數的參數。7.
  • Linux命令行與Shell腳本編程學習筆記16
    有一類命令會基於變量值或其他命令的結果等條件使腳本跳過或循環執行命令,這樣的命令通常稱為結構化命令。2. 結構化命令中,最基本的類型就是if-then語句。if-then語句格式如下:if commandthencommandsfibash shell的if語句會運行if行定義的那個命令。如果該命令的退出狀態碼是0.位於then部分的命令就會被執行。
  • Linux中Shell腳本基礎筆記
    shell腳本都是以"#!"作為開頭。這是腳本開始的標記,它是告訴linux系統執行該腳本文件需要使用相應的解釋器,緊挨著的/bin/bash指定了解釋器的具體路徑。shell主要用#作為注釋標記。後面可以加腳本的注釋,建議寫shell腳本要根據情況多寫注釋,便於以後腳本的維護。shell腳本的運行方式:1、可以在shell腳本第一行加上"#!/bin/bash"的話。可以按照以下方式執行:bash test.sh #要保證目錄中存在該腳本文件。2、給腳本加上可執行的權限,然後使用".
  • 玩轉Linux - shell 編程基礎(一)
    shell腳本(shell script),是一種為shell編寫的腳本程序。業界所說的shell通常都是指shell腳本,但讀者朋友要知道,shell和shell script是兩個不同的概念。由於習慣的原因,簡潔起見,本文出現的「shell編程」都是指shell腳本編程,不是指開發shell自身(如Windows Explorer擴展開發)。
  • 玩轉 Linux - shell 編程基礎
    shell腳本(shell script),是一種為shell編寫的腳本程序。業界所說的shell通常都是指shell腳本,但讀者朋友要知道,shell和shell script是兩個不同的概念。由於習慣的原因,簡潔起見,本文出現的「shell編程」都是指shell腳本編程,不是指開發shell自身(如Windows Explorer擴展開發)。
  • 【Linux】shell高級編程視頻教程(含經典案例)
    shell的最強大的重要特性是它自身就是一個解釋型的程序設計語言,shell 程序設計語言支持在高級語言裡所能見到的絕大多數程序控制結構,比如循環,函數,變量和數組。shell 程式語言很易學,並且一旦掌握後它將成為你的得力工具。任何在提示符下能鍵入的命令都能放到一個可執行的shell程序裡,這意味著用shell語言能簡單地重複執行某一任務。
  • Linux——Shell腳本的應用1(基礎)
    Shell腳本的應用(基礎)簡介:隨著linux系統在企業中的應用越來越多,伺服器的自動化管理也變得越來越重要。在linux伺服器的自動化維護工作中,除了計劃任務的設置以外,shell腳本的應用也是非常重要的一部分。
  • Linux shell腳本編程入門系列一:認識shell腳本
    1、什麼是shell腳本將多個shell命令按語法組合在一起,並保存在文本文件中即得到我們所說的shell腳本(shell script)。shell腳本可以方便地與系統交互,完成系統管理以及批處理任務。shell處於作業系統與應用之間,起到橋梁的作用。
  • 《Linux基礎》第5講 shell編程 (一)
    Shell腳本和程式語言很相似,也有變量和流程控制語句,但Shell腳本是解釋執行的,不需要編譯,Shell程序從腳本中一行一行讀取並執行這些命令,相當於一個用戶把腳本中的命令一行一行敲到Shell提示符下執行。Shell初學者請注意,在平常應用中,建議不要用 root 帳號運行 Shell 。
  • Linux作業系統之Shell程序設計
    Shell是種命令解釋程序,也可以看作是一種命令語言的解釋器。 用戶在與Shell交互時所輸入的命令行必須符合Shell命令的語法和語義規範,才能夠被Shell理解並執行。Shell所使用的這種命令語言稱為Shell 語言。Shell語言不僅僅是一種交互式語言, 它還是一種可編程的程序設計語言。
  • Linux常用Shell腳本,值得學習及收藏
    在運維中,尤其是linux運維,都知道腳本的重要性,腳本會讓我們的 運維事半功倍,所以學會寫腳本是我們每個linux運維必須學會的一門功課,這裡收藏
  • shell腳本極簡教程
    不懂shell的程式設計師不是好程式設計師,學習shell是為了自動化,使用自動化可以非常有效的提高工作效率。
  • 3個學生的linux視頻學習筆記
    視頻介紹了學習linux需要用到的學習資料,包括一本書:Linux命令行與shell腳本編程大全,以及以前的學員寫的很詳細的學習經驗。學習linux這種系統的知識很有效的是記筆記,如果要很系統的學下來可以讀書輔助視頻,而對於常用到的命令,最好的方法就是背下來。
  • ...Bash | Linux 中國|linux|程式語言|bash|shell|隨機數_網易訂閱
    本文字數:2676,閱讀時長大約: 3分鐘  https://linux.cn/article-12962-1.html作者:Jim Hall譯者:Xingyu.Wang  學習一門新的程式語言是很有趣的。每當我嘗試學習一門新的語言時,我都會專注於定義變量、編寫語句和評估表達式。
  • shell不是Linux系統的殼嗎?咋還能腳本編程了?
    小豆丁:老張啊,你不是剛給我講完Linux系統的shell是什麼意思嘛(詳見《貝殼?龜殼?手機殼?究竟啥是Linux系統的殼?》),今天我有看到個詞,叫做「shell腳本編程」,這又是啥意思啊?shell不是Linux系統的殼嗎,怎麼還能編程了?老張:哦,這個問題啊,也好理解。老張:在解釋這個問題之前,我先問問你,shell大致的工作過程還記得嗎?
  • 什麼是Shell腳本?為什麼要學習Shell?
    Shell腳本語言是實現Linux/UNIX系統管理及自動化運維所必備的重要工具, Linux/UNIX系統的底層及基礎應用軟體的核心大都涉及Shell腳本的內容。每一個合格 的Linux系統管理員或運維工程師,都需要能夠熟練地編寫Shell腳本語言,並能夠閱 讀系統及各類軟體附帶的Shell腳本內容。
  • Linux 平臺下 Python 腳本編程入門(一)
    大多數人會認為 Bash (或者其他的 shell 語言)用起來很方便,但一些強大的語言(比如 Python)會給你帶來一些其它的好處。在 Linux 中學習 Python 腳本編程首先,我們會使用 Python 的命令行工具,還會接觸到 Python 的面向對象特性(這篇文章的後半部分會談到它)。