歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> linux系統的指令基礎2

linux系統的指令基礎2

日期:2017/3/3 11:25:30   编辑:Linux技術

1.使用遠程桌面控制的,需在linux上安裝vnc服務,安裝指令:

sudo apt-get install tightvncserver
第一次使用要設置密碼,其會要求輸入兩次密碼,其也是以後修改密碼的指令:

vncpasswd
然後開啟指令,這裡的是指開啟桌面1,其分辨率是800*600,其分辨率也可以不寫,可以這樣:vncserver :2

vncserver :1 -geometry 800x600
關閉vnc服務指令:
#vncserver -kill :1
2.linux指令的man指令

Linux提供了豐富的幫助手冊,當你需要查看某個命令的參數時不必到處上網查找,只要man一下即可。

Linux的man手冊共有以下幾個章節:

代號代表內容1使用者在shell中可以操作的指令或可執行檔2系統核心可呼叫的函數與工具等3一些常用的函數(function)與函數庫(library),大部分是C的函數庫(libc)4裝置檔案的說明,通常在/dev下的檔案5設定檔或者是某些檔案的格式6游戲(games)7慣例與協定等,例如Linux檔案系統、網絡協定、ASCII code等等的說明8系統管理員可用的管理指令9跟kernel有關的文件如:man 5 data1 Executable programs or shell commands

2 System calls (functions provided by the kernel)

3 Library calls (functions within program libraries)

4 Special files (usually found in /dev)

5 File formats and conventions eg /etc/passwd

6 Games

7 Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)

8 System administration commands (usually only for root)

9 Kernel routines [Non standard]

1、Standard commands (標准命令)

2、System calls (系統調用)

3、Library functions (庫函數)

4、Special devices (設備說明)

5、File formats (文件格式)

6、Games and toys (游戲和娛樂)

7、Miscellaneous (雜項)

8、Administrative Commands (管理員命令)

9 其他(Linux特定的), 用來存放內核例行程序的文檔。

n 新文檔, 可能要移到更適合的領域。

o 老文檔, 可能會在一段期限內保留。

l 本地文檔, 與本特定系統有關的。

例如:我們輸入 man ls,它會在最左上角顯示“LS(1)”,在這裡,“LS”表示手冊名稱,而“(1)”表示該手冊位於第一節章,同樣,我們輸入“man ifconfig”它會在最左上角顯示“IFCONFIG(8)”。也可以這樣輸入命令:“man [章節號] 手冊名稱”。

man是按照手冊的章節號的順序進行搜索的,比如:

man sleep

只會顯示sleep命令的手冊,如果想查看庫函數sleep,就要輸入:

man 3 sleep

ubuntu默認是沒有安裝c語言的庫函數man手冊的

1.添加庫函數手冊

ubuntu默認是沒有安裝c語言的庫函數man手冊的,所以你在man perror 和sendto之類的函數時會顯示沒有相關文檔的問題,這個問題讓我郁悶了我好久。解決方法:

sudo apt-get install manpages-dev

2.讓man顯示中文

ubuntu源裡面已經包含了中文的man包,所以不用從其他地方down了,直接

sudo apt-get install manpages-zh

但是這樣man默認顯示的還不是中文,還需要以下兩步

a.把中文man包轉換成utf8格式的

新建一個腳本文件

gedit t.sh

把下面內容添加進去

#!/bin/bashcd /usr/share/man/zh_CN/for k in *docd $kfor i in *.gzdo j=`echo ${i%.gz}` gunzip $i iconv -f gb18030 -t utf8 $j >tmp mv tmp $j gzip $jdonecd ..done

然後

sudo ./t

b.修改man默認的語言

sudo gedit /etc/manpath.config 把裡面的所有的 /usr/share/man 改成 /usr/share/man/zh_CN

保存後退出,然後你再試一下man ls

3.讓沒有中文幫助的顯示英文

做完上面第二部還不夠,這時你再man 一下一些c語言函數(不要用printf,socket之類比較有名的函數,這些已經有中文幫助了)的時候就會發現竟然沒有幫助,而剛才明明在第一步已經安裝了啊。這是因為你上面 把/usr/share/man 改成 /usr/share/man/zh_CN的操作使man只在中文幫助中搜索,如果沒有就直接放棄,因此還需要以下操作,才能讓man在沒有中文幫助的時候自動顯示英文的幫助,如果英文的也沒有,哪就真的沒有了。

sudo gedit /etc/manpath.config

然後搜索你剛才改過的地方,然後在其後面添加同樣的一行,只是後面的目錄還用原來的/usr/share/man,比如在修改後的

MANPATH_MAP /bin /usr/share/man/zh_CN

再添加一行

MANPATH_MAP /bin /usr/share/man

新安裝了ubuntu 8.04版本,發現安裝過的系統中缺少很多手冊頁。

用以下命令搞定了

sudo apt-get install manpages

sudo apt-get install manpages-de

sudo apt-get install manpages-de-dev

sudo apt-get install manpages-dev

2.使用ls 【選項】 其選項有:-a -l

其中-l指的是顯示用戶權限,-a顯示所有的文件,其如下:

其中前面的drwxr-xr-x是指用戶權限,第一個字母d表示這是一個文件;第一個rwx指的是當前用戶的權限操作,第二個是與當前用戶在同一個用戶組裡的用戶;第三個是其他的任意一個用戶。

1.殺死進程的指令有:kill killall pkill其中

a.其中kill只能殺死單一進程,通過kill -l查看可用的進程信號,其中的信號1也叫作平滑重啟,其比較重要的信號如下:

指令使用為:kill -HUP 1523 或者使用kill -1 1523兩者是一樣的效果,其中的kill -9 1523是強制殺死進程,

b. killall 【選項】【信號】進程名

選項有: -i:交互式,詢問是否要殺死某個進程,當有多個子進程的則會一個個進程的詢問, -I:忽略進程名的大小寫

其與killall的一樣作用,只是選項只有一個t,選項 -t為按照終端號踢出用戶,其中的 ps aux | grep httpd 指令是顯示httpd相關的所以進程,其中的‘|’是管道,進行數據傳輸

其中的grep是在文件中查找指定的字符串,其運行效果如下:

重啟阿帕奇的指令是:service httpd start ,一般其啟動的時候回報錯,但是這個不會影響其使用,所以這個錯誤不用去理會。

killall -i -9 httpd 會交互的詢問你是否要殺掉進程

c. pkill 【選項】【信號】進程名

選項: -t 按照終端號踢出用戶,其使用如下:

其中的w指令是查詢本機已登錄的用戶,記住只要是使用用戶賬號密碼登錄過的終端,就會產生用戶進程,例如tty1~6登錄的會顯示在這裡,其中的pts指的是

遠程登錄終端,例如vnc登錄的,其中的WHAT列裡的w指的是這個用戶正在寫操作,上面的操作則會吧用戶1給踢下即關閉界面。

2.工作管理

指令:jobs是查看後台進程的狀態信息,進程要在後台有運行的條件是:

第一條指如果沒有使用ctrl+z或者&來把進程放到後台,則這個進程只能在存在於當前終端下,在其他終端是看不到的。第二條指的是放入後台的進程需要能運行一段時間的,像ls &放進後台後因為其是一下執行完的,導致使用jobs查詢的結果是停止的,所以沒有意義,第三個指的是放入後台的進程不能與用戶有讀寫之類的交互操作,

放入後台的兩種方法:通過 & 把命令放入後台;輸入指令後按 ctrl +z 快捷鍵,放到後台;例子:

下面的是舉例什麼樣的進程放到後台會停止,什麼樣的會運行,例子如下:

這裡的前面有個有‘---’、‘+’ 這個加代表最近一個放到後台的工作,也是工作恢復默認恢復的工作.' ---'號代表倒數第二個放入到後台的工作,top本來是三秒更新一次進程狀況的,可是放到後台後卻停止了,原因是因為其有人機交互,人可以輸入指令。並且 vim 指令也是停止的,因為其需要人輸入內容,故有交互。其中的find / -name abc 指令指的是查找所有的abc文件

其中的jobs指令的例子:

其中加了-l 指輸出工作的pid。

注意:ctrl+z是把程序放到後台,如果一直使用這個指令把一直刷屏的進程放到後台,則會是電腦運行速度變慢,因為太多程序了。

接著就是如何把關於進程的恢復,其有#bg %工作號 把後台暫停的工作恢復到後台執行

注意:後台恢復執行的命令,是不能喝前台有交互的,否則不能恢復到後台執行。

接著就是將後台暫停的工作恢復到前台執行,其為# fg%工作號,例子:

4.需要把命令放到後台脫離終端運行,

因為,當我們通過某個終端打開某些進程時,並且這個進程可能是停止的(例如有交互的進程)或者在後台運行的,其實按照上面的方法放進的進程時跟當前終端綁定的,即當當前終端關閉系統會發出一個signhup信號來關閉這些進程,但又不影響其他終端的進程,所以我們就需要一些方法來使的即使我們關閉當前終端,但是被放進後台的進程仍在運行。這種方法有下面幾種:

其中第一個文件是系統啟動的時候會第一個加載,所以比較推崇的方法是第一個跟第三個,第一個優先,這樣就不用每次啟動系統後手動放到後台。例子:

4.linux下的程序編寫與編譯

首先要安裝有gcc,其中的make要與Makefile文件搭配----其只是封裝了gcc,使用make只是可以每次節省編譯時間,就是沒修改的文件,make就會忽略對其的編譯,相當於我們vs裡的rebuild按鈕。其中當我們按用指令:gcc -v 和 cc -v都可以查詢編譯器的版本,其中gcc是cc升級版。gcc是比較智能的編譯器,在我們使用函數前如果沒有聲明該函數,其也不會報錯,它會在編譯的時候自動加載這個函數聲明。一般程序編寫我們要使用vi編輯器來編寫。

其中的makefile文件是:

其中的要執行編譯後的文件,直接在當前目錄輸入輸入./a.out,執行當前目錄的a.out文件,“./”意思是當前目錄,還有就是其 指令裡的的默認的生成文件是a.out, 不過我們也可以指定生成其他名字的文件,其後綴等都可以隨意改例如改為.l等。例如:

vi編輯器的使用方法如下:

a.當在一個.c文件編寫時想把其一部分函數分到新的.c文件裡,

b.則輸入“ :sq max.c” 則會分出一個文件,使用" set nu"指令則打開行號,

c.要把部分文件剪切出來則是把光標放到函數開頭那一行,接著輸入剪切的函數,然後就輸入dd,則可以把內容剪切到剪切板上,

d.要上下文件夾移動光標,則使用組合鍵,ctrl+w+箭頭上或箭頭下,

c.按p鍵直接粘貼,

d.按“ :wqa”則表示全部保存退出

例子:

這裡在max.c裡沒有聲明max函數,但是由於gcc的智能性,則其不會報錯,不過良好的編程應當是先聲明後使用,否則會導致出錯。這裡可以在max.c裡把其包含到頭文件裡。

使用gcc編譯出來的文件是一種二進制的機器碼,我們使用vi等打開來是亂碼的。所以當有多個源文件是我們可以使用gcc把其先編譯好,相當於一個靜態庫(當我們使用ls指令來查看其用戶權限是,可以看到起是可讀可寫當不可執行,因為在c語言只有main函數的的文件才是可以被執行的),這樣子就可以很節省編譯時間,只需把改動的文件進行編譯就行,為了讓其他人能看到我們寫的函數的作用,則只是就加入了一個.h的頭文件,別人就可以通過.h文件來查明函數作用,完整點就把這些頭文件包含到main函數的源文件裡,例子:

注意,這是編譯時需要把max.o、min.o、hello.c文件拿來一起編譯,否則會報錯,注意編寫靜態文件max.o是要使用的gcc格式為:gcc -c max.c -o max.o,否則會報錯。當我們要刪除所有的.o文件時使用這種方法最好:rm *.o 則是刪除所有的文件。

但是當我們進行編寫的是大型的工程項目時,我們則需要用一種更方便的方法來出,則是使用makefile文件來編寫,它也能做到自動識別已有的.o文件,只要其沒改動,則編譯器不會對其源碼進行編譯,這就給我們節省了很多時間,其編寫內容如下:

注意:gcc那一行需要2個tab鍵(但是不能是8個空格,本來自身的一個tab鍵是包含4個空格,所以要兩個tab鍵),(自己測試的例子不知道為啥出錯了,老是提示不夠8位,待解決,後來解決了:原來自己的gcc開頭的兩個tab鍵是被轉換成了空格鍵,一般沒被轉換的tab鍵敲一下是自動有4個空格的,防止被轉換的方法是可以手動,

即“ctrl + v + i”後再點擊[tab]鍵即可插入一個tab鍵,此時可以看到gcc那一行的代碼邊色了,證明輸入的是正確的)。其正確的文檔如下:

它的意思大概就是:生成hello.out文件需要max.o min.o hello.c文件,並且其是通過指令gcc max.o min.o hello.c生成的。下面是我們如何使用makefile文件;

3.系統資源查看--其是查看系統健康狀況的重要指令

vmstat 【刷新延時 刷新次數】 例子:

其中的第一個procs是進程信息字段, memory是內存信息字段,其參數如下:

其中的cache是緩存,用來加速數據從硬盤裡讀取。buffer是緩沖加速數據寫入。網上的內存條有DDR3 1600 指的是其理論讀取速度是1600Mbit/s。普通硬盤理論是能達到兩三百兆,但是實際能達到三四十兆就很不錯了。還有固態硬盤能達到六七十兆就不錯了。下面的是swap的各個作用,其是能加速數據讀存的,所以我們一定能多分配給swap多點空間就多點,這樣則能大大的加快我們的電腦性能,

開機內核自檢,這一步我們能知道我們的cpu的型號等等信息,如下:

還有就是我們要查看我們的內存使用情況可以使用free指令,其如下:

3.系統定時任務,其指令有:

在windows裡有個叫任務計劃程序的附件,其是能定時開啟某個軟件的,我們在linux下的是使用定時任務,這個在http(阿帕奇服務器)上比較常見,因為服務器上的很多任務,我們需要在晚上比較少人的時候關掉,或者在半夜少人的時候對某些軟件自行解壓,減輕服務器白天的負擔。但是有個功能一般不推薦,就是自動重啟,就怕服務器重啟失敗,導致服務器沒法用,一把推薦人工重啟。下面介紹的是:

A、at一次性定時任務

使用指令:chkconfig --list | grep atd 查詢服務器是否安裝 使用指令:service atd restart 查看at服務的啟動。at的訪問控制,加在deny的用戶是無法使用at的

at的使用樣式:

使用例子1:

其中的hello.sh裡添加的內容是:

#!/bin/bash

echo "hello world " >> /root/hello.log

其中的.log是指日志的意思,其中有個chmod的指令,其是為了給這個文件執行權限。at在root哪行輸入完成後按回車,接著按ctrl+d,進行保存退出。atq是查詢指令。

例子2:

Copyright © Linux教程網 All Rights Reserved