日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux基本命令+Makefile

發(fā)布時間:2023/12/19 linux 27 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux基本命令+Makefile 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1.linux下查看進程占用cpu的情況(top);

格式
top [-] [d delay] [q] [c] [S] [s] [i] [n]
主要參數(shù)

  • d:指定更新的間隔,以秒計算。
  • q:沒有任何延遲的更新。如果使用者有超級用戶,則top命令將會以最高的優(yōu)先序執(zhí)行。
  • S:累積模式,會將己完成或消失的子行程的CPU時間累積起來。
  • s:安全模式。
  • n:顯示更新的次數(shù),完成后將會退出top。

    ??在圖1中,第一行表示的項目依次為當前時間、系統(tǒng)啟動時間、當前系統(tǒng)登錄用戶數(shù)目、平均負載(最近一分鐘,五分鐘和十五分鐘的系統(tǒng)負載。load average數(shù)據(jù)是每隔5秒鐘檢查一次活躍的進程數(shù),然后按特定算法計算出的數(shù)值。如果這個數(shù)除以邏輯CPU的數(shù)量,結果高于5的時候就表明系統(tǒng)在超負荷運轉了。)。第二行顯示的是所有啟動的進程、目前運行的、掛起(Sleeping)的和無用(Zombie)的進程。
    第三行,cpu狀態(tài)信息,具體屬性說明如下:
  • 5.9%us — 用戶空間占用CPU的百分比。
  • 3.4% sy — 內核空間占用CPU的百分比。
  • 0.0% ni — 改變過優(yōu)先級的進程占用CPU的百分比
  • 90.4% id — 空閑CPU百分比
  • 0.0% wa — IO等待占用CPU的百分比
  • 0.0% hi — 硬中斷(Hardware IRQ)占用CPU的百分比
  • 0.2% si — 軟中斷(Software Interrupts)占用CPU的百分比

??第四行顯示物理內存的使用情況,包括總的可以使用的內存、已用內存、空閑內存、緩沖區(qū)占用的內存。
??第五行顯示交換分區(qū)使用情況,包括總的交換分區(qū)、使用的、空閑的和用于高速緩存的大小。對于內存監(jiān)控,在top里我們要時刻監(jiān)控第五行swap交換分區(qū)的used,如果這個數(shù)值在不斷的變化,說明內核在不斷進行內存和swap的數(shù)據(jù)交換,這是真正的內存不夠用了。
??第七行以下:各進程(任務)的狀態(tài)監(jiān)控,項目列信息說明如下:

  • PID — 進程id
  • USER — 進程所有者
  • PR — 進程優(yōu)先級
  • NI — nice值。負值表示高優(yōu)先級,正值表示低優(yōu)先級
  • VIRT — 進程使用的虛擬內存總量,單位kb。VIRT=SWAP+RES
  • RES — 進程使用的、未被換出的物理內存大小,單位kb。RES=CODE+DATA
  • SHR — 共享內存大小,單位kb
  • S — 進程狀態(tài)。D=不可中斷的睡眠狀態(tài) R=運行 S=睡眠 T=跟蹤/停止 Z=僵尸進程
  • %CPU — 上次更新到現(xiàn)在的CPU時間占用百分比
  • %MEM — 進程使用的物理內存百分比
  • TIME+ — 進程使用的CPU時間總計,單位1/100秒
  • COMMAND — 進程名稱(命令名/命令行)

在top基本視圖中,按鍵盤數(shù)字“1”,可監(jiān)控每個邏輯CPU的狀況:

觀察上圖,服務器有16個邏輯CPU,實際上是4個物理CPU。再按數(shù)字鍵1,就會返回到top基本視圖界面。
高亮顯示當前運行進程
敲擊鍵盤“b”(打開/關閉加亮效果),top的視圖變化如下:

我們發(fā)現(xiàn)進程id為2570的“top”進程被加亮了,top進程就是視圖第二行顯示的唯一的運行態(tài)(runing)的那個進程,可以通過敲擊“y”鍵關閉或打開運行態(tài)進程的加亮效果。

2.查看內存使用情況free

free命令用來顯示內存的使用情況,使用權限是所有用戶。
格式
free [-b-k-m] [-o] [-s delay] [-t] [-V]
主要參數(shù)

  • -b -k -m:分別以字節(jié)(KB、MB)為單位顯示內存使用情況。
  • -s delay:顯示每隔多少秒數(shù)來顯示一次內存使用情況。
  • -t:顯示內存總和列。
  • -o:不顯示緩沖區(qū)調節(jié)列。

應用實例
??free命令是用來查看內存使用情況的主要命令。和top命令相比,它的優(yōu)點是使用簡單,并且只占用很少的系統(tǒng)資源。通過-S參數(shù)可以使用free命令不間斷地監(jiān)視有多少內存在使用,這樣可以把它當作一個方便實時監(jiān)控器。
#free -b -s5
??使用這個命令后終端會連續(xù)不斷地報告內存使用情況(以字節(jié)為單位),每5秒更新一次。

3.linux下查看目錄(ls);

4.顯示日期的指令: date

5.顯示日歷的指令:cal


5.1簡單好用的計算器:bc


怎么10/100會變成0呢?這是因為bc預設僅輸出整數(shù),如果要輸出小數(shù)點下位數(shù),那么就必須要執(zhí)行 scale=number ,那個number就是小數(shù)點位數(shù),例如:

數(shù)據(jù)同步寫入磁盤: sync

輸入sync,在內存中尚未被更新的數(shù)據(jù)就會被寫入硬盤中;所以,這個指令在系統(tǒng)關機重新啟動之前很重要!最好多執(zhí)行幾次!

7.慣用的關機指令:shutdown

8.改變文件擁有者:chown

9.改變文件的權限:chmod

權限的設定方法有兩種, 分別可以使用數(shù)字或者是符號來進行權限的變更。
–數(shù)字類型改變檔案權限:

10.變換目錄:cd

11.顯示當前所在目錄:pwd

12.檔案與目錄的顯示:ls

13.觀察文件類型:file

14. 網絡操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger。

netstat 查看網絡信息
telnet命令通常用來遠程登錄。telnet程序是基于TELNET協(xié)議的遠程登錄客戶端程序。Telnet協(xié)議是TCP/IP協(xié)議族中的一員,是Internet遠程登錄服務的標準協(xié)議和主要方式。它為用戶提供了在本地計算機上完成遠程主機工作的能力。
telnet 192.168.120.209

15.終止當前執(zhí)行命令 ctrl+c

16.打開終端: ctrl+alt+t;關閉當前終端:exit

vi編輯器命令

三種工作模式:輸入模式、命令模式、底行命令模式。三種模式轉換方式如下:

  • i鍵–光標之前插入
  • I鍵–光標所在行的行首插入
  • a鍵– 光標之后插入
  • A鍵–光標所在行的行尾插入
  • o鍵–光標所在行的下一行插入
  • O鍵–光標所在行的上一行插入
  • x鍵–刪除光標所在字符
  • X鍵–刪除光標前面的字符
  • dd–刪除光標所在的整行
  • u鍵–取消最近的一次操作
  • U鍵–取消所有的操作

底行命令

  • :set number 顯示正文行號
  • :set autoindent 設置正文自動縮進

文件間的文本移動(前提:目標文件已存在)

  • :1,5 w filename
  • :1,5 w >> filename

文本塊移動

  • :1,3 m 7

按行復制

  • :1,3 co . 將1-3行復制到光標所在位置
  • :1.3 co 7 將1-3行復制到第7行

編輯多個文件

  • vi m1.c m2.c m3.c

編輯下一個文件

  • : n

跳躍式編輯

  • : e m3.c

返回剛才編輯的文件

  • :e #
  • :wq 存盤后退出
  • :q 若無修改直接退出
  • :w filename 另存為
  • :w 將編輯緩沖區(qū)的文件寫入編輯的文件中
  • :q! 強制退出,丟棄緩沖區(qū)內容

注 makefile

??makefile關系到了整個工程的編譯規(guī)則。一個工程中的源文件不計數(shù),其按類型、功能、模塊分別放在若干個目錄中,makefile定義了一系列的規(guī)則來指定,哪些文件需要先編譯,哪些文件需要后編譯,哪些文件需要重新編譯,甚至于進行更復雜的功能操作,因為makefile就像一個Shell腳本一樣,其中也可以執(zhí)行操作系統(tǒng)的命令。
??makefile帶來的好處就是——“自動化編譯”,一旦寫好,只需要一個make命令,整個工程完全自動編譯,極大的提高了軟件開發(fā)的效率。make是一個命令工具,是一個解釋makefile中指令的命令工具,一般來說,大多數(shù)的IDE都有這個命令,比如:Delphi的make,Visual C++的nmake,Linux下GNU的make。可見,makefile都成為了一種在工程方面的編譯方法。
??一般來說,無論是C、C++、還是pas,首先要把源文件編譯成中間代碼文件,在Windows下也就是 .obj 文件,UNIX下是 .o 文件,即 Object File,這個動作叫做編譯(compile)。然后再把大量的Object File合成執(zhí)行文件,這個動作叫作鏈接(link)。
??編譯時,編譯器需要的是語法的正確,函數(shù)與變量的聲明的正確。對于后者,通常是你需要告訴編譯器頭文件的所在位置(頭文件中應該只是聲明,而定義應該放在C/C++文件中),只要所有的語法正確,編譯器就可以編譯出中間目標文件。一般來說,每個源文件都應該對應于一個中間目標文件(O文件或是OBJ文件)。
??鏈接時,主要是鏈接函數(shù)和全局變量,所以,我們可以使用這些中間目標文件(O文件或是OBJ文件)來鏈接我們的應用程序。鏈接器并不管函數(shù)所在的源文件,只管函數(shù)的中間目標文件(Object File),在大多數(shù)時候,由于源文件太多,編譯生成的中間目標文件太多,而在鏈接時需要明顯地指出中間目標文件名,這對于編譯很不方便,所以,我們要給中間目標文件打個包,在Windows下這種包叫“庫文件”(Library File),也就是 .lib 文件,在UNIX下,是Archive File,也就是 .a 文件。
??總結一下,源文件首先會生成中間目標文件,再由中間目標文件生成執(zhí)行文件。在編譯時,編譯器只檢測程序語法,和函數(shù)、變量是否被聲明。如果函數(shù)未被聲明,編譯器會給出一個警告,但可以生成Object File。而在鏈接程序時,鏈接器會在所有的Object File中找尋函數(shù)的實現(xiàn),如果找不到,那到就會報鏈接錯誤碼(Linker Error).
新建文件 vi、vim、touch
假設我們有下面這樣的程序:

/*main.c*/ #include "mytool1.h" #include "mytool2.h" #include <stdio.h>int main(int argc,char *argv[]) {mytool1_print("hello");mytool2_print("hello"); } /*mytoo1.h*/ #ifndef _MYTOOL1_H #define _MYTOOL1_H void mytool1_print(char *print_str); #endif /*mytool1.c*/ #include "mytool1.h"void mytool1_print(char *print_str) {printf("This is mytool1 print %s\n",print_str); } /*mytool2.h*/ #ifndef _MYTOOL2_H #define _MYTOOL2_H void mytool2_print(char *print_str); #endif /*mytool2.c*/ #include "mytool2.h"void mytool2_print(char *print_str) {printf("This is mytool2 print %s\n",print_str); }

我們可以這么編譯鏈接這個程序:

gcc -c main.c gcc -c mytool1.c gcc -c mytool2.c gcc -o myprint main.o mytool1.o mytool2.o

這樣之后只需執(zhí)行命令”./myprint”,便可以簡單的運行這個程序。
但是當我們修改了其中的一個文件之后是不是還要不厭其煩的輸入上面的編譯命令?

??為了解決這一問題,我們有個好方法去解決,那就是編寫一個makefile文件,用make命令去編譯上面的程序。
執(zhí)行命令”vim Makefile”
編寫如下代碼:

main: main.o mytool1.o mytool2.o [Tab]gcc -o myprint main.o mytool1.o mytool2.o main.o: main.c mytool1.h mytool2.h [Tab]gcc -c main.c mytool1.o: mytool1.c mytool1.h [Tab]gcc -c mytool1.c mytool2.o: mytool2.c mytool2.h [Tab]gcc -c mytool2.c

保存后執(zhí)行命令“make -f Makefile”
這樣也可以生成一個可執(zhí)行程序。
有了這個Makefile文件之后,無論我們修改什么地方,只要make一些這個文件,就可以輕松的生成可執(zhí)行文件。
在Makefile中#開始的行為注釋行,此文件的一般格式為:
(target目標):(components依賴對象)
【Tab制表符按鍵】(rule規(guī)則)
??第一行為依賴關系,比如上面那個Makefile文件的第一行,我們的目標main的依賴對象為main.o、mytool1.o和mytool2.o
??第二行為執(zhí)行規(guī)則,當依賴的對象在目標修改后修改的話,就要執(zhí)行規(guī)則這一行所指定的命令,注意,這一行開頭必須是Tab鍵。
??上面的make里的-f參數(shù)表示尋找到名為Makefile的文件進行make,因為make只能自動識別名為makefile或者Makefiile兩個文件,如果你編譯的makefile文件名為my_makefile的話,就需要加上-f參數(shù),否則make無法找到你指定的my_makefile文件。
??此外,makefile里面還有三個非常有用的變量:$@(目標文件)、$^(所有的依賴文件)和$<(第一個依賴文件)
??如果使用這三個變量,我們的Makefile文件可以簡化為:

main: main.o mytool1.o mytool2.o [Tab]gcc -o $@ $^ main.o: main.c mytool1.h mytool2.h [Tab]gcc -c $< mytool1.o: mytool1.c mytool1.h [Tab]gcc -c $< mytool2.o: mytool2.c mytool2.h [Tab]gcc -c $<

轉載于:https://www.cnblogs.com/Y-S-X/p/8331654.html

總結

以上是生活随笔為你收集整理的Linux基本命令+Makefile的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。