1、首先在電腦上打開虛擬機。然后打開Linux系統(tǒng),進入到主目錄。
成都創(chuàng)新互聯(lián)始終堅持【策劃先行,效果至上】的經營理念,通過多達10多年累計超上千家客戶的網站建設總結了一套系統(tǒng)有效的全網整合營銷推廣解決方案,現(xiàn)已廣泛運用于各行各業(yè)的客戶,其中包括:垃圾桶等企業(yè),備受客戶好評。
2、然后在主目錄中創(chuàng)建一個students目錄。命令:mkdir students。
3、然后進入到students目錄中。再創(chuàng)建兩個目錄fuzhi1,fuzhi2。
4、然后進入到fuzhi1目錄中。用touch命令創(chuàng)建一個6.JPG文件。
5、然后用cp命令將6.JPG文件移動到fuzhi2目錄中。命令為cp 6.JPG ~/students/fuzhi2。
6、然后用cd ~/students/fuzhi2命令進入到fuzhi2目錄中。用ls命令檢查JPG文件成功復制到fuzhi2目錄。這樣說明文件的復制操作成功。
tee用于把命令結果打印在屏幕上并同時保存到文件。
tee用法
描述:從標準輸入中讀取并同時寫入到標準輸出和指定的文件上
選項:
-a,--append:不覆蓋,而是追加輸出到指定的文件中
-i,--ignore-interrupts:忽略中斷信息
若指定的輸出文件為'-',則再次輸出到標準輸出上
實例:
tee Example.txt #將標準輸入中輸入的內容同時輸出到Example.txt和標準輸出上
實踐:
例如 ifconfig | tee ifconfig.log
查看iconfig.log
注:
標準輸入一般有鍵盤和其它文件,標準輸出有屏幕等。tee只能進行標準輸入的輸出,對于錯誤輸入是不能輸出的。
在調試腳本時,想要每個命令的執(zhí)行過程都輸出到屏幕或者文件中,以便后續(xù)查看,如何操作呢?首先腳本第一行要寫為“#!/bin/b.sh -x”,這樣會把每個命令的執(zhí)行記錄都輸出到屏幕,若還要輸出到指定文件,要用到tee,但tee只能進行標準輸入,對于標準輸入和錯誤輸入要用到下式:
./filename.sh 21 | tee output.log? ?或者直接 bash -x ./filename.sh?21 | tee output.log
今天調試一個bash,要把屏幕的輸出結果存到log文件中,開始輸入$bash -x ./test.sh log 結果發(fā)現(xiàn)log里只存放了程序的執(zhí)行結果,后來在cu的一篇帖子里?tid=264380highlight=bash得到了啟發(fā),bash -x的調試信息是輸出到2號流中的,所以解決方案為bash -x ./test.sh 21 | tee log 想起以前要存放執(zhí)行make的結果時也遇到類似問題,總結如下:
1、管道符的“I”的作用只是把前一個程序的標準輸出流(stdout)的數(shù)據(jù)作為后一個程序的標準輸入流stdin的數(shù)據(jù),如不進行重定向,則其他輸出流的信息是無法傳給后面的程序的
2、屏幕得到的信息不一定是從程序的標準輸出來的,也包括標準錯誤輸出流stderr中的信息
3、有些程序(特別是象bash、make這樣執(zhí)行了其他程序的程序)的設計者為了省事,把一些正常情況的信息也放在stderr中輸出(即使程序本身并無錯誤),而stdout用來輸出被調用程序的執(zhí)行時信息,造成了用戶的誤解簡單編寫了一下腳本,通過ssh登陸在命令行下運行正常,可是將腳本添加到crontab中就不正常。想記錄一下輸出信息,分析一下錯誤原因。將腳本通過使用info.log 重定向輸出,結果發(fā)現(xiàn)一些在命令行下可以看到的文本信息沒有記錄到info.log文件中,研究了一下,那些輸出估計是輸出到了標準錯誤上。
研究了一下通常添加命令后面幾個輸出含義
■ /dev/null 輸出到空設備,表示丟掉輸出信息。
■ 21將輸出到標準錯誤的信息輸出到標準輸出設備(通常是屏幕)有3個默認的i/o,
■ 0是標準輸入,一般是鍵盤
■ 1是標準輸出,一般是屏幕
■ 2是標準錯誤,有時候屏幕上可以看到,但是重定向的文件中看不到的就是它了
在linux系統(tǒng)下用vim打開大小幾個G、甚至幾十個G的文件時,是非常慢的。
這時,我們可以利用下面的方法分割文件,然后再打開。
1、查看/導出文件的前多少行
上面命令的意思是:把big.log文件前10000行的數(shù)據(jù)寫入到temp.log文件中。
2 、查看文件的后多少行
上面命令的意思是:把big.log文件后10000行的數(shù)據(jù)寫入到temp.log文件中。
3 、查看文件的幾行到幾行
上面命令的意思是:把big.log文件第10到10000行的數(shù)據(jù)寫入到temp.log文件中。
4 、根據(jù)查詢條件導出
5、 實時監(jiān)控文件輸出(查看日志時經常會用到)
linux內核之模塊參數(shù)及導出符號
1. 模塊參數(shù)
用 “module_param (參數(shù)名,參數(shù)類型,參數(shù)讀 / 寫權限) ” 為模塊定義一個參數(shù),例如下列代碼定義了 1 個整型參數(shù)和 1 個字符指針參數(shù):
1 static char *book_name = "dissecting Linux Device Driver";
2 module_param(book_name, charp, S_IRUGO);
3 static int book_num = 4000;
4 module_param(book_num, int, S_IRUGO);
在裝載內核模塊時,用戶可以向模塊傳遞參數(shù),形式為 “insmode 模塊名 參數(shù)名 = 參數(shù)值,如果不傳遞,參數(shù)將使用模塊內定義的缺省值。參數(shù)類型可以是 byte 、 short 、 ushort 、 int 、 uint 、 long 、 ulong 、 charp (字符指針)、 bool 或 invbool (布爾的反),在模塊被編譯時會將 module_param 中聲明的類型與變量定義的類型進行比較,判斷是否一致。模塊被加載后,在 /sys/module/ 目錄下將出現(xiàn)以此模塊名命名的目錄。在此模塊的目錄下還將出現(xiàn) parameters 目錄,其中包含一系列以參數(shù)名命名的文件節(jié)點,這些文件的權限值就是傳入module_param ()的 “參數(shù)讀 / 寫權限” ,而文件的內容為參數(shù)的值。
insmod命令加載模塊后,通過查看 “/var/log/messages” 日志文件可以看到內核的輸出:
# tail -n 2 /var/log/messages
tail -n 2表示輸入文件的最后2行
2. 導出符號
Linux 的 “/proc/kallsyms” 文件對應著內核符號表,它記錄了符號以及符號所在的內存地址。模塊可以使用如下宏導出符號到內核符號表中:
EXPORT_SYMBOL( 符號名 );
EXPORT_SYMBOL_GPL( 符號名 );
導出的符號可以被其他模塊使用,只需使用前聲明一下即可。 EXPORT_SYMBOL_GPL ()只適用于包含 GPL許可權的模塊。
如果符號名是“e_symbol”,從 “/proc/kallsyms” 文件中找出 e_symbol 的相關信息:
# grep e_symbol /proc/kallsyms
8000af1c t e_symbol [export_symb]