命令:pwd
- 查看當前目錄
命令:cd
- 定位當前目錄為weblogic目錄下
cd /home/weblogic
-將目錄返回至上一級
cd ..
--將目錄返回至上二級
cd ../..
用戶相關
- 用戶列表文件:/etc/passwd
- 用戶組列表文件:/etc/group
- 查看系統中有哪些用戶:cut -d : -f 1 /etc/passwd
- 查看可以登錄系統的用戶:cat /etc/passwd | grep -v /sbin/nologin | cut -d : -f
- 查看用戶操作:w命令(需要root權限)
- 查看某一用戶:w 用戶名
- 查看登錄用戶:who
- 查看用戶登錄歷史記錄:last
命令:man
- 功能:man 對你熟悉或不熟悉的命令提供幫助解釋
- 格式:
man [命令]
# eg:
man ls
#就可以查看ls相關的用法
注:按q鍵或者ctrl+c退出,在linux下可以使用ctrl+c終止當前程序運行。
命令:ls
- ls 查看目錄或者文件的屬*,列舉出任一目錄下面的文件
eg: ls /usr/man
- 命令:
ls -l
相當于ll
命令:cp
- 功能:用于拷貝文件
格式:CP [選項] 源文件或目錄 目的文件或目錄
- 選項說明:
-
-b
同名,備分原來的文件 -
-f
強制覆蓋同名文件 -
-r
按遞歸方式保留原目錄結構復制文件
#eg:
cp -r /tmp/a /root/a
# 記得有空格
cp filename1 filename2
# 把filename1拷貝成filename2
cp 1.c netseek/2.c
# 將1.c拷到netseek目錄下命名為2.c
命令:mv
- 功能:移動文件或者文件夾
- 格式:
mv [選項] 源文件或目錄 目標文件或目錄
-b :若需覆蓋文件,則覆蓋前先行備份。
-f :force 強制的意思,如果目標文件已經存在,不會詢問而直接覆蓋;
-i :若目標文件 (destination) 已經存在時,就會詢問是否覆蓋!
-u :若目標文件已經存在,且 source 比較新,才會更新(update)
-t : --target-directory=DIRECTORY move all SOURCE arguments into DIRECTORY,即指定mv的目標目錄,該選項適用于移動多個源文件到一個目錄的情況,此時目標目錄在前,源文件在后。
# eg:
mv -f 1.txt /home/path/
命令:rm
- 功能: rm 刪除文件和目錄
- 格式:
rm [選項] path to <文件>
-d --directory 刪除可能仍有數據的目錄 (只限超級用戶)
-f --force 略過不存在的文件,不顯示任何信息
-i --interactive 進行任何刪除操作前必須先確認
-r/R --recursive 同時刪除該目錄下的所有目錄層
-v --verbose 詳細顯示進行的步驟
--help 顯示此幫助信息并離開
--version 顯示版本信息并離開
# eg:
rm 1.c //將1.c這個文件刪除
#刪除所有rb語言程序檔;刪除前逐一詢問確認 :
rm -i *.rb
#將 Finished 子目錄及子目錄中所有檔案刪除 :
rm -r Finished
#將 Finished 子目錄及子目錄中所有檔案刪除,并且不用一一確認 :
rm -rf Finished
命令:cd
- 功能:改變當前目錄
命令:pwd
- 功能:查看當前所在目錄完整路徑
eg: pwd //查看當前所在目錄路徑
cd netseek //進入netseek這個目錄
cd //退出當前目錄
命令:cat
- 功能:將某個文件的內容全部顯示出來。
- 格式:
cat [filename]
cat>1.c //就可以把代碼粘帖到1.c文件里。
命令:more
- 功能:將文件一部分打印出來,知道填滿當前屏幕,按
j
繼續顯示,q
退出
命令:chmod
- 功能:修改文件夾、文件權限
- 格式:點擊查看
命令:touch
- 功能:一般用作新建文件
- 格式:
touch [文件名]
touch test.txt
命令:clear
- 功能:清空當前屏幕
命令:date
- 功能:顯示系統時間
命令:su
- 功能: 在不退出登陸的情況下,切換到另外一個人的身份,需要輸入身份密碼
- 格式:
su [用戶名]
其中su - [用戶名]
是完全切換為用戶環境
su root
用法: su -l 用戶名(如果用戶名缺省,則切換到root狀態)
eg:su -l netseek (切換到netseek這個用戶,將提示輸入密碼)
命令:whoami
,whereis
,which
,id
- 功能:
//whoami:確認自己身份
//whereis:查詢命令所在目錄以及幫助文檔所在目錄
//which:查詢該命令所在目錄(類似whereis)
//id:打印出自己的UID以及GID。(UID:用戶身份唯一標識。GID:用戶組身份唯一標識。每一個用戶只能有一個唯一的UID和 GID)
eg: whoami //顯示你自已登陸的用戶名
whereis bin 顯示bin所在的目錄,將顯示為:/usr/local/bin
which bin
命令:grep,find
- grep:文本內容搜索;find:文件或者目錄名以及權限屬主等匹配搜索
eg: grep success * /*查找當前目錄下面所有文件里面含有success字符的文件
命令:kill
- 可以殺死某個正在進行或者已經是dest狀態的進程
eg; ps ax
命令:history
- 用戶用過的命令
eg: history //可以顯示用戶過去使用的命令
命令: !!
- 執行最近一次的命令
命令:mkdir
eg: mkdir netseek //創建netseek這個目錄
命令:tar
- 解壓命令
eg: tar -zxvf nmap-3.45.tgz //將這個解壓到nmap-3.45這個目錄里
命令:vi 或者 vim
- 編輯文件
- 教程
vi filename.txt(文件)
esc :wq --保存退出
esc :q! --不保存退出
命令:df
查看服務器磁盤空間使用情況
df -hl
估算目錄dir已經使用的磁盤空間
du -sh dir
查看當前正在運行的程序進程
ps -ef|grep java/weblogic/tomcat(程序名稱)
查看該進程號所屬目錄
pwdx 1158(進程號)
強制殺死該進程
kill -9 1158(進程號)
將文件夾打成壓縮包
tar -zcvf /root/filename_$(date +%Y-%m-%d).tar.gz /home/weblogic/files
解壓壓縮包到當前目錄
tar -zxvf filename.tar.gz
查看當前目錄下的nohup.out動態輸出(如查看weblogic后臺日志)
tail -f nohup.out
將系統日期修改為:2011年5月27日(需要用root用戶修改,其它用戶默認只能查看日期,沒修改權限)
date -s 05/27/2011
將系統時間修改為:10點24(需要用root用戶修改,其它用戶默認只能查看日期,沒修改權限)
date -s 10:24:00
將系統時間修改為:2月5日9點30(年份保持修改前的年份)
date 02050930
查看系統CPU運行情況
top
查看服務器內存使用情況
free -g
查看端口占用情況
netstat -anp
給文件所有(a)用戶分配所有權限
chmod a+x filename(文件或者文件夾)
把home目錄下的weblogic目錄的擁有者改為weblogic用戶
chown weblogic /home/weblogic
把home目錄下的weblogic目錄的所屬組改為weblogic組
chgrp weblogic /home/weblogic
兩個linux互傳輸文件
scp /root/test/filename.zip[weblogic@221.123.191.158:/home/weblogic/test/](mailto:weblogic@221.123.191.158:/home/weblogic/test/)
- 重啟服務器(用root用戶登錄)
reboot - 檢測端口是否開放(在windows cmd中執行)
telnet 192.168.1.128 1521 - 添加定時任務命令(-l是查看)
crontab -e
- 添加定時任務(每天晚上11執行)
00 23 * * * /root/backup_nohup.sh
- pkill:踢出已經登錄的用戶
- Usage:pkill -kill -t [ttyname]
notes:一般地,先使用“who”查看在線用戶有哪些,緊接著使用“who am i”確認自己的身份,最后使用“pkill”踢出用戶;
關于日志分析:
dmesg:輸出內核環緩沖區內容;其中的內容存放在日志文件“/var/log/dmesg”中;保存了內核初始化硬件、模塊的信息;內核將各種消息存放在此;
-c:顯示完Ring Buffer中的內容后,清空Ring Buffer;
-r:顯示原生的消息,不要去掉日志級別;
-s:指定Ring Buffer的大小,默認值根據內核版本而不同;
-n:指定顯示到Console的日志的級別,共有8種,在“kernel.h”中做了宏對應;
Usage:dmesg [-c] [-r] [-n level] [-s bufsize]
notes:一般地,我們是直接使用“dmesg”命令,不加參數,之后使用“grep”進行篩選;常用來診斷某個服務配置錯誤,某個硬件工作不正常等問題;當然,開機過程中的信息也在里面包含著;
/var/log/secure:只要牽涉到“需要輸入賬號口令”的軟件,登錄時(不管登錄成功與否)的信息都會記錄在此;包括系統的login、gdm、su、sudo、ssh、telnet等;
/var/log/mesages:幾乎系統發生的錯誤信息(或者是重要的資訊)都會記錄在此;如果系統發生莫名其妙的錯誤時,這個文件時一定要查閱的日志文件之一;
Troubleshooting流程:
根據經驗處理:一些常見問題的處理,要么在頭腦里知道處理方法;要么有個印象,去查詢以往的筆記;
閱讀提示信息:發現一個問題時,最有效的分析入手點是閱讀屏幕上的提示信息,根據提示信息分析問題產生的可能原因;
查閱日志:當屏幕上的信息不夠充足的時候,可以關注日志信息,使用“tail”確定出發生問題時以及之后的日志;日志的格式一般是一條條記錄,里面包含了“發生時間、日志級別、產生程序、簡要說明”,據此,可以使用grep結合時間、產生程序的名字進行篩選;
上網搜尋:以日志中的“簡要說明”為關鍵字進行搜索,找到相應處理方法后,記錄到筆記中;
尋求身邊的人:網上也找不到時,可以詢問這一方面的專家,并做好記錄;
尋求開發團隊:一些時候,當對系統一點都不熟悉時,產生了問題可以直接聯系開發團隊;在郵件中描述清楚“需求,操作過程,產生的問題”;
官方手冊:最權威的系統說明書;對于一些軟件來說,是個最好的選擇;
README和DOC:安裝前、安裝后都可以查詢軟件自帶的README和DOC套件;尤其是README中經常包含一些URL,可以訪問這些URL以獲取更多的信息;
關于/proc目錄分析:
/proc目錄:內核提供的一個虛擬文件系統,位于內存中,保存著系統運行時的很多參數;用來進行內核(內核模塊)和進程的溝通;在系統運行時,可以通過這個接入點向內核傳遞參數,改變內核的一些設置,人為干涉內核的運作;
加載proc文件系統:mount -t proc proc /proc;
編輯器處理:雖然是虛擬文件系統,但是,可以使用編輯器例如”cat、nl、vi“等對其中的文件進行編輯,進行編輯時,這些文件才會被”憑空“地創建出來;這也是為什么使用”ls -l“看到此目錄下存在許多文件大小為0的文件的原因;
目錄結構:包含有文件和目錄
/proc/cpuinfo:包含有CPU的信息
/proc/meminfo:系統運行時內存信息
/proc/mounts:顯示已經掛載的文件系統的信息
/proc/devices:顯示系統中可以使用的設備
/proc/filesystems:顯示系統所支持的文件系統類型
/proc/diskstats:系統磁盤的相關信息
/proc/modules:顯示出系統已經加載的內核模塊
/proc/version:顯示系統版本信息
/proc/cmdline:顯示系統啟動時追加給系統的命令行參數
/proc/sys/:與內核交流的接入點
/proc/net/:網卡設備信息
/proc/fs/:文件系統信息
/proc/driver/:設備驅動信息
/proc/bus/:系統總線信息
/proc/irq/:系統中斷資源信息
/proc/ipmi/:ipmi設備信息
/proc/scsi/:SCSI設備信息
數字目錄:系統運行中的每一個進程的pid編號,目錄內包含了關于對應進程的一些非常有用的信息,如進程使用的工作目錄等;
查看系統資源占用:
lsof:列出系統當前打開的資源;Linux系統中一切均為文件,故而全是文件之間的交互,使用lsof可以觀察某個進程使用的文件有哪些;
-c:列出具有指定名稱的進程所打開的系統資源,如,“-c init”;
-p:列出具有指定進程號的進程鎖打開的系統資源,如,“-p 1”;
+d:顯示某個目錄下被進程打開的文件,如,“+d /usr/bin/”;
+D:級聯顯示某個目錄下被進程打開的文件,如,“+D /usr/bin/”;
-d:顯示使用著指定fd的進程,如,“-d 4”;
-i:用以顯示符合條件的的進程的情況,如,“-i :80”;
notes:一般地,當我們在使用“umount”卸載文件系統時,系統提示busy,那么,極有可能是文件系統被某些進程在使用著,這時,可以使用“lsof +D /media/”等命令查看占用進程,待關閉那些進程后,然后繼續卸載工作;另外,對于一些日志文件,一不小心刪除了的話,可以及時通過lsof查閱后進行恢復,這個原理是利用內存中的fd信息進行重定向;
COMMAND:表示進程的名字;
PID:對應進程的進程號;
USER:進程的所有者;
FD:文件描述符,APP通過FD來識別文件,和文件打交道;cwdAPP啟動的目錄,當前工作的目錄,除非APP對其進行更改,txt程序代碼,數值后的W~寫鎖;
TYPE:REG文件,DIR目錄;CHR字符設備,BLK塊設備;UNIX套接字,FIFO先進先出隊列,IPv4~網際協議;
DEVICE:指定磁盤的名稱;
SIZE:文件大小;
NODE:索引節點,也就是文件在磁盤上的標識;
NAME:文件的具體名稱;
strace:用戶態的進程不能直接訪問系統硬件,必須先由用戶態轉為內核態,然后進行系統調用,最后才能訪問系統硬件資源;而這個strace則可以追蹤這種來自于用戶態進程在使用系統硬件時的系統調用,并且包含有參數,返回值,執行消耗的時間等;
Usage:strace [-dDffhiqrtttTvVxx] [-a column] [-e expr] ... [-o file] [-p pid] ... [-s strsize] [-u username] [-E var=val] [command [arg ...]]-
notes:一般地,可以使用它來觀察程序工作時都處理了哪些文件,這個功能最為常用;
p:后接進程號,跟蹤具有指定進程號的進程的系統調用;
-c:統計出每一系統調用的執行時間、次數、出錯的次數等;
-d:輸出strace關于標準錯誤的調試信息;
-f:跟蹤由fork調用所產生的子進程;
-ff:如果提供”-o filename“,則所有進程的跟蹤結果輸出到相應的filename.pid中,pid是各進程的進程號;
-F:嘗試跟蹤vfork調用,在-f時,vfork調用不被跟蹤;
-i:輸出系統調用的入口指針;
-q:禁止輸出關于脫離的消息;
-r:打印出關于每一個系統調用的相對時間;
-t:在輸出中的每一行前加上時間信息;
-tt:同上,只不過是微秒級時間;
-T:顯示每一調用所耗的時間;
-v:輸出所有的系統調用,像一些關于環境變量、狀態等調用由于使用頻繁,默認不輸出;
-X:以十六進制形式輸出非標準字符串;
-XX:所有字符串以十六進制形式輸出;
-a:設置返回值的輸出位置,默認為40,如,”-a 50“;
-e:指定一個表達式,用來控制如何跟蹤,如,”-e trace=open,close“;
-e trace=$set,只跟蹤指定的系統調用,默認為all;
-e trace=file,只跟蹤有關文件操作的系統調用;
-e trace=process,只跟蹤有關進程控制的系統調用;
-e trace=network,只跟蹤與網絡有關的所有系統調用;
-e trace=signal,只跟蹤所有與系統信號有關的系統調用;
-e trace=ipc,只跟蹤所有與進程通訊有關的系統調用;
-e raw=set,將指定的系統調用參數以十六進制顯示;
關于內核:
內核模塊:Linux系統的內核鏡像是盡可能小的,但是為了擴展功能,內核允許在運行時直接向內核地址空間內插入代碼運行,這些代碼(數據、函數入口、函數出口等)被組合成一個二進制的鏡像,即所謂的的Linux系統模塊;這些模塊一般被插入,是會實時生效的;內核模塊的位置一般均位于”/lib/modules/uname -r
/kernel“目錄下,且以*.ko的方式存在;
modinfo:顯示指定模塊的具體信息
-a:顯示模塊的開發作者;
-d:顯示模塊的描述信息;
-l:顯示模塊的傳播授權信息;
-p:顯示模塊所支持的所有的類型的參數;
-f:后接一個用戶自己定義的字符串,可以通過此字符串獲取內核中指定模塊ELF段中的值,其中,包含模塊的信息;
Usage:modinfo [-0][-F field][-k kernelversion][-b basedir] module...
notes:一般地,我們直接使用”modinfo module_name“的格式,并且不加任何關于modinfo的參數,以獲取關于模塊的所有信息;
lsmod:友好化地顯示內核中已經加載的內核模塊,讀取了”/proc/modules“文件中的信息;
Usage:lsmod
notes:一般地,內核中加載的模塊并不是很多, 所以我們直接使用”lsmod“列出所有在內核中已經加載的模塊;當然,在寫腳本時,一般地,我們是結合grep進行篩選的;
insmod:最簡單的一個裝載內核模塊的工具;
-f:不檢查目前kernel版本與編譯模塊時的kernel版本是否一致,進行強制插入;
-k:將模塊設置為自動卸載;
-m:輸出模塊的裝載信息;
-o:指定模塊的名稱,也可以使用模塊文件的文件名,如,”insmod -o ext4.ko“;
-p:測試模塊是否能夠正確地載入到kernel中;
-s:將所有信息記錄在系統記錄文件中;
-v:執行時顯示詳細的信息;
-x:不要匯出模塊的外部符號;
-X:匯出模塊的所有外部符號,此為預設值;
Usage:insmod [ options ] [ filename ] [ module options... ]
notes:一般地,我們直接使用”insmod ext4.ko“的形式裝載模塊;但是,insmod不能解決依賴性問題;
rmmod:移除內核中的指定模塊;
-f:強制卸載內核模塊,這樣做可能引起系統崩潰,一般地,不建議使用這個選項;另外,這個選項的支持需要在編譯內核時開啟”Forced Module Removal“選項;
-v:卸載內核模塊時打印出詳細信息;
-s:將錯誤信息輸入到syslog服務,而非打印到stderr;
-w:通常,系統不允許移除正在使用的模塊,使用參數將會將該模塊迅速孤立起來,直到其不再被訪問和使用;
Usage: rmmod [-fhswvV] modulename ...
notes:一般地,我們先使用lsmod和grep檢索出待卸載的模塊,然后直接使用”rmmod modulename“移除模塊即可,如果提示正在被使用,則加上f參數 處理即可;
depmod:分析可加載模塊的依賴性,生成依賴關系文件”modules.dep“和映射文件;此命令會讀取”/lib/modules/”version“/“目錄下的所有模塊信息,并檢查每個模塊導出的symbol和需要的symbol,然后據此生成一個依賴關系列表,默認地,該列表寫入到”/lib/modules/”version“/modules.dep“中;如果,命令中的filename有指定的話,則會僅檢查這些指定的模塊(并不常用);如果命令中提供了version參數,則會使用version所指定的目錄生成依賴,而不是當前內核的版本(uname -r);
-b:如果你的模塊不在”/lib/modules/version“目錄下,可以指定目錄,然后生成依賴;
-e:和-F選項一起使用,當一個模塊需要的symbol在其他模塊里面沒有提供時,做出報告,正常情況下,模塊沒有提供的symbol都在內核中有提供;
-F:提供一個System.map文件(在編譯內核時生成),允許-e選項報告出”unresolved symbol“;
-n:將結果”modules.dep“和各種映射文件輸出到stdout,而不是寫到模塊目錄下;
-a:探測所有模塊,這個選項是默認的,如果直接使用”depmod“這種形式;
-A:檢查是否有模塊比modules.dep中的模塊新,若沒有,則退出不重新生成文件;
Usage:depmod [-n -e -v -q -r -u -w] [-F kernelsyms] module1.ko module2.ko ...
notes:一般地,我們直接使用”depmod“這種形式即可,先進行依賴關系的處理,然后使用”modprobe“進行加載;
modprobe:加載或者移除內核模塊;可以智能地處理依賴性問題;使用”modprobe“時,需要一個最新的”modules.dep“文件,可以用”depmod“生成;模塊自動加載啊打發愛的色放啊
-v:輸出詳細信息;
-C:重載默認配置文件(/etc/modprobe.conf~RHEL6.x之前,或者/etc/modprobe.d/*);
-c:輸出配置文件并退出;
-n:可以和-v一起使用,調試時非常有用;
-q:靜默模式,一般modprobe裝載或者移除一個模塊時,若沒有找到則會提示錯誤,使用了該選項后,會忽略指定的模塊,并不提示任何錯誤信息;
-f:強制操作,常和”--force-vermagic、--force-modversion“一起使用;
-l:列出所有模塊;
-a:插入命令行中的所有模塊;
-r:移除模塊;有時需要強制性操作,這時,多加上”--force“參數;
-s:將錯誤信息寫入syslog中;
Usage:modprobe [ -v ] [ -V ] [ -C config-file ] [ -n ] [ -i ] [ -q ] [ -b ] [ -o modulename ] [ modulename ] [ module parameters... ]
notes:一般地,我們先使用”depmod“生成最新的依賴關系,然后使用”modprobe ext4(.ko)“的形式插入模塊,有時由于版本問題,還會使用”--force-modversion“參數;