linux命令備忘
分類: linux-命令2012-09-06 07:16 1234人閱讀 評論(0) 收藏 舉報
links -dump your.html html2txt
lynx --dump your.html html2txt
ldconfig是一個動態鏈接庫管理命令
爲了讓動態鏈接庫爲系統所共享,還需運行動態鏈接庫的管理命令--ldconfig
ldconfig 命令的用途,主要是在默認搜尋目錄(/lib和/usr/lib)以及動態庫配置文件/etc/ld.so.conf內所列的目錄下,搜索出可共享的動態鏈接庫(格式如前介紹,lib*.so*),進而創建出動態裝入程序(ld.so)所需的連接和緩存文件.緩存文件默認爲 /etc/ld.so.cache,此文件保存已排好序的動態鏈接庫名字列表.
ldconfig通常在系統啓動時運行,而當用戶安裝了一個新的動態鏈接庫時,就需要手工運行這個命令.
ldconfig命令行用法如下:
ldconfig [-v|--verbose] [-n] [-N] [-X] [-f CONF] [-C CACHE] [-r ROOT] [-l] [-p|--print-cache] [-c FORMAT] [--format=FORMAT] [-V] [-?|--help|--usage] path...
ldconfig可用的選項說明如下:
(1) -v或--verbose : 用此選項時,ldconfig將顯示正在掃描的目錄及搜索到的動態鏈接庫,還有它所創建的連接的名字.
(2) -n : 用此選項時,ldconfig僅掃描命令行指定的目錄,不掃描默認目錄(/lib,/usr/lib),也不掃描配置文件/etc/ld.so.conf所列的目錄.
(3) -N : 此選項指示ldconfig不重建緩存文件(/etc/ld.so.cache).若未用-X選項,ldconfig照常更新文件的連接.
(4) -X : 此選項指示ldconfig不更新文件的連接.若未用-N選項,則緩存文件正常更新.
(5) -f CONF : 此選項指定動態鏈接庫的配置文件爲CONF,系統默認爲/etc/ld.so.conf.
(6) -C CACHE : 此選項指定生成的緩存文件爲CACHE,系統默認的是/etc/ld.so.cache,此文件存放已排好序的可共享的動態鏈接庫的列表.
(7) -r ROOT : 此選項改變應用程序的根目錄爲ROOT(是調用chroot函數實現的).選擇此項時,系統默認的配置文件 /etc/ld.so.conf,實際對應的爲 ROOT/etc/ld.so.conf.如用-r /usr/zzz時,打開配置文件 /etc/ld.so.conf時,實際打開的是/usr/zzz/etc/ld.so.conf文件.用此選項,可以大大增加動態鏈接庫管理的靈活性.
(8) -l : 通常情況下,ldconfig搜索動態鏈接庫時將自動建立動態鏈接庫的連接.選擇此項時,將進入專家模式,需要手工設置連接.一般用戶不用此項.
(9) -p或--print-cache : 此選項指示ldconfig打印出當前緩存文件所保存的所有共享庫的名字.
(10) -c FORMAT 或 --format=FORMAT : 此選項用於指定緩存文件所使用的格式,共有三種: ld(老格式),new(新格式)和compat(兼容格式,此爲默認格式).
(11) -V : 此選項打印出ldconfig的版本信息,而後退出.
(12) -? 或 --help 或 --usage : 這三個選項作用相同,都是讓ldconfig打印出其幫助信息,而後退出.
解壓縮命令
bzip2 -d xxx.tar.bz2
tar -xvf xxx.tar
tar -jxcf xxx.tar.bz2
開/關防火牆
iptables
1) 重啓後生效:
開啓: chkconfig iptables on
關閉: chkconfig iptables off
2) 即時生效,重啓後失效:
開啓: service iptables start
關閉: service iptables stop
//
在開啓了防火牆時,做如下設置,開啓相關端口,
修改/etc/sysconfig/iptables 文件,添加以下內容:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
修改文件/目錄所有者
chown user:group xxx [-R]
查看CPU信息
cat /proc/cpuinfo
時間戳轉換格式化時間
date -d '1970-01-01 UTC 1 seconds'
查看磁盤信息
df -lh
fdisk -l
du * -sh
Dmesg
dmesg 是一個顯示內核緩衝區系統控制信息的工具;比如系統在啓動時的信息會寫到/var/log/
注:dmesg 工具並不是專門用來查看硬件芯片組標識的工具,但通過這個工具能讓我們知道機器中的硬件的一些參數;因爲系統在啓動的時候,會寫一些硬件相關的日誌到 /var/log/message* 或
/var/log/boot* 文件中;
如果我們用這個工具來查看一些硬件的信息;這個工具信息量太大,的確需要耐心;
[root@panda ~]# dmesg
[root@panda ~]# dmesg -c 注:清理掉緩衝區,下次開機的時候還會自動生成;
Linux命令:dmesg
功能說明:顯示開機信息。
語 法:dmesg [-cn][-s <緩衝區大小>]
補充說明:kernel會將開機信息存儲在ring buffer中。您若是開機時來不及查看信息,可利用dmesg來查看。開機信息亦保存在/var/log目錄中,名稱爲dmesg的文件裏。
參 數:
-c 顯示信息後,清除ring buffer中的內容。
-s<緩衝區大小> 預設置爲8196,剛好等於ring buffer的大小。
-n 設置記錄信息的層級。
實用工具dmesg顯示內核環緩衝區(kernel-ring buffer),內核將各種消息存放在這裏。在系統引導時,內核將與硬件和模塊初始化相關的信息填到這個緩衝區中。內核環緩衝區中的消息對於診斷系統問題通常非常有用。在運行dmesg時,它顯示大量信息。通常通過less或grep使用管道查看dmesg的輸出,這樣可以更容易找到待查信息。
例如,如果發現硬盤性能低下,可以使用dmesg來檢查它們是否運行在DMA模式:
$ dmesg | grep DMA
...
ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:DMA, hdb:DMA
ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:DMA, hdd:DMA
...
上面幾行可以說明每個IDE設備正在什麼模式下運行。如果以太網連接出現問題,那麼可以在dmesg日誌中搜索eth:
$ dmesg | grep eth
forcedeth.c: Reverse Engineered nForce
ethernet driver. Version 0.49.
eth0: forcedeth.c: subsystem: 0147b:1c00
bound to 0000:00:04.0
eth0: no IPv6 routers present
如果一切正常,那麼dmesg顯示每個網卡的硬件配置信息。如果某項系統服務未能得到正確的配置,dmesg日誌很快就填滿錯誤消息,這是診斷故障的良好起點。
應用:
kernel中寫日誌
printk(KERN_INFO "kd_msg message.\n");
查看來自內核輸出(最新5行)
$ dmesg | tail -5
修改程序so搜索路徑
export LD_LIBRARY_PATH=/root/xxx/lib
rm `find . -name *.dat`
find . -name *.dat -print -exec rm {} \;
find / -name httpd.conf [-print]
//從文件內容查找匹配指定字符串的行:
$ grep "被查找的字符串" 文件名
從文件內容查找與正則表達式匹配的行:
$ grep –e “正則表達式” 文件名
查找時不區分大小寫:
$ grep –i "被查找的字符串" 文件名
查找匹配的行數:
$ grep -c "被查找的字符串" 文件名
從文件內容查找不匹配指定字符串的行:
$ grep –v "被查找的字符串" 文件名
從根目錄開始查找所有擴展名爲.log的文本文件,並找出包含”ERROR”的行
find / -type f -name "*.log" | xargs grep "ERROR"
執行jar包
java -jar xxx.jar "arg1" "arg2"
ld命令
掛載內存
mount tmpfs /home/jichl/xxx -t tmpfs -o size=1024M
查看端口使用情況
netstat -ntlpa
修改用戶xxx密碼
passwd xxx
ps命令
ps axf
前面介紹的兩個命令都是用於查看當前系統用戶的情況,下面就來看看進程的情況,這也是本章的主題.要對進程進行監測和控制, 首先必須要了解當前進程的情況,也就是需要查看當前進程,而ps命令就是最基本同時也是非常強大的進程查看命令.使用該命令可以確定有哪些進程正在運行和運行的狀態、進程是否結束、進程有沒有殭屍、哪些進程佔用了過多的資源等等.總之大部分信息都是可以通過執行該命令得到的.
ps命令最常用的還是用於監控後臺進程的工作情況,因爲後臺進程是不和屏幕鍵盤這些標準輸入/輸出設備進行通信的,所以如果需要檢測其情況,便可以使用ps命令了.
ps [選項]
下面對命令選項進行說明∶
-e顯示所有進程.
-f全格式.
-h不顯示標題.
-l長格式.
-w寬輸出.
a顯示終端上的所有進程,包括其他用戶的進程.
r只顯示正在運行的進程.
x顯示沒有控制終端的進程.
O[+|-] k1 [,[+|-] k2 [,…]] 根據SHORT KEYS、k1、k2中快捷鍵指定的多級排序順序顯示進程列表.對於ps的不同格式都存在着默認的順序指定.這些默認順序可以被用戶的指定所覆蓋.其中“+”字符是可選的,“-”字符是倒轉指 定鍵的方向.
最常用的三個參數是u、a、x.
查看線程
ps H -eo user,pid,ppid,tid,time,%cpu,cmd --sort=%cpu
rpm命令.
rpm -ivh xxxx.i386.rpm
//安裝所有依賴文件包
rpm -ivh --aid xxx.i386.rpm
rpm -qa glibc
1、查詢
#rpm -q bash (查詢系統中bash是否安裝)
#rpm -qa (查詢系統中已安裝的所有的rpm包,q,question,查詢;a, all)
#rpm -qa | grep -i qq (以qq爲關鍵字查詢)
#rpm -qi bash (i,information,查詢系統中bash的詳細信息)
#rpm -ql bash (l,list 查看系統中已安裝軟件包中所包括的文件列表)
#rpm -qf bash (查看系統中文件所屬的軟件包)
#rpm -qpi bash-3.0-19.2.i386.rpm 或者
#rpm -qpl bash-3.0-19.2.i386.rpm (查詢指定rpm包文件中的詳細信息)
------------------------------------------------------------------------
#rpm -i linuxqq-1.0-preview2008.i386.rpm (安裝過程無提示)
#rpm -ivh linuxqq-1.0-preview2008.i386.rpm (安裝過程有提示)
#rpm -Uvh linuxqq-1.0-preview2008.i386.rpm (升級、覆蓋安裝,安裝過 程有提示)
#rpm --force -ivh (強制安裝)
------------------------------------------------------------------------
先查看將要卸載的軟件在系統中的名字:
#rpm - qa | grep -i qq
linuxqq-1.0-Preview2008
根據系統提示的軟件包名字卸載:
#rpm -e linuxqq-1.0-previw2008 (不能添加後綴.rpm)
scp命令.
在Linux下遠程使用scp拷貝文件
SSH提供了一些明令和shell用來登錄遠程服務器。在默認情況下它不允許你拷貝文件,但是還是提供了一個"scp"命令。
假定你想把本地計算機當前目錄下的一個名爲"dumb"的文件拷貝到遠程服務器www.35.com上你的家目錄下。而且你在遠程服務器上的帳號名爲"jichl"。可以用這個命令:
scp dumb [email protected]:.
把文件拷貝回來用這個命令:
scp [email protected]:dumb .
"scp"調用SSH進行登錄,然後拷貝文件,最後調用SSH關閉這個連接。
如果在你的"~/.ssh/config"文件中已經爲www.35.com做了這樣的配置:
Host *fbc
HostName www.35.com
User jichl
ForwardAgent yes
那麼你就可以用"fbc"來代替"[email protected]",命令就簡化爲"scp dumb fbc:."。
"scp"假定你在遠程主機上的家目錄爲你的工作目錄。如果你使用相對目錄就要相對於家目錄。
用"scp"命令的"-r"參數允許遞歸地拷貝目錄。"scp"也可以在兩個不同的遠程主機之間拷貝文件。
關於SSH的詳細信息,可以參考http://www.linuxaid.com.cn/engineer/brimmer/html/ssh.htm
scp user@host:/path/to/files local_file_name
拷貝到遠程
scp local_file_name user@host:/path/to/files
拷貝目錄到遠程
scp -r local_file_name user@host:/path/to/files
跟蹤程序的系統調用
strace -p pid
tail -f /xxx/xxx.log
tail -n 100 /xxx/xxx.log
tar 命令.
1.將當前目錄下所有.txt文件打包並壓縮歸檔到文件this.tar.gz,我們可以使用
tar czvf this.tar.gz ./*.txt
2.將當前目錄下的this.tar.gz中的文件解壓到當前目錄我們可以使用
tar xzvf this.tar.gz ./
tar -cvf /home/www/p_w_picpaths.tar /home/www/p_w_picpaths 僅打包,不壓縮
tar -zcvf /home/www/p_w_picpaths.tar.gz /home/www/p_w_picpaths 打包後,以gzip壓縮
tar xvf filename.tar -C /specific dir
查看linux版本.
幾種查看linux版本信息的方法
1. uname -a
2. cat /proc/version
3. cat /etc/issue
4. lsb_release -a
vncserver.
[root@linux root]# vncserver
You will require a password to access your desktops.
Password: ---第一次輸入密碼
Verify: ---第二次輸入
New ‘X’ desktop is linux:1 -- 注意Linux下是登錄VNC還要加這個number(例,在viewer端輸入 IP:1)
更改密碼 vncpasswd
修改/root/.vnc/xstartup文件
#twm &
gnome-session &
關閉
killall Xvnc
vncserver -kill :x (X爲編號)
vncserver -geometry 1400x840
vncconfig &
安裝rz sz
yum install lrzsz
壓縮文件使用較少磁盤空間,並且比未壓縮的大文件下載速度要快。在 Red Hat Linux 中,你可以使用的文件壓縮工具有:gzip、bzip2、和 zip。
推薦你使用 bzip2 壓縮工具,因爲它提供了最大限度的壓縮,並且可在多數類似 UNIX 的操作系統上找到。gzip 壓縮工具也可以在類似 UNIX 的操作系統上找到。如果你需要在 Linux 和其它操作系統如 MS Windows 間傳輸文件,你應該使用 zip,因爲該命令與 Windows 上的壓縮工具最兼容。
壓縮工具 文件擴展名 解壓工具
gzip .gz gunzip
bzip2 .bz2 bunzip2
zip .zip unzip
表 14-1. 壓縮工具
按照約定俗成,用 gzip 來壓縮的文件的擴展名是 .gz;用 bzip2 來壓縮的文件的擴展名是 .bz2;用 zip 壓縮的文件的擴展名是 .zip。
用 gzip 壓縮的文件可以使用 gunzip 來解壓;用 bzip2 壓縮的文件可以使用 bunzip2 來解壓;用 zip 壓縮的文件可以使用 unzip 來解壓。
bzip2 和 bunzip2
要使用 bzip2 來壓縮文件,在 shell 提示下鍵入以下命令:
bzip2 filename
文件即會被壓縮並被保存爲 filename.bz2。
要擴展壓縮的文件,鍵入以下命令:
bunzip2 filename.bz2
filename.bz2 文件會被刪除,而繼之以 filename。
你可以使用 bzip2 命令同時處理多個文件和目錄,方法是將它們逐一列出,並用空格間隔:
bzip2 filename.bz2 file1 file2 file3 /usr/work/school
上面的命令把 file1、file2、 file3、以及 /usr/work/school 目錄的內容(假設這個目錄存在)壓縮起來,然後放入 filename.bz2 文件中。
gzip 和 gunzip
要使用 gzip 來壓縮文件,在 shell 提示下鍵入以下命令:
gzip filename
文件即會被壓縮,並被保存爲 filename.gz。
要擴展壓縮的文件,鍵入以下命令:
gunzip filename.gz
filename.gz 會被刪除,而繼之以 filename。
你可以使用 gzip 命令同時處理多個文件和目錄,方法是將它們逐一列出,並用空格間隔:
gzip -r filename.gz file1 file2 file3 /usr/work/school
上面的命令把 file1、file2、 file3、以及 /usr/work/school 目錄的內容(假設這個目錄存在)壓縮起來,然後放入 filename.gz 文件中。
zip 和 unzip
要使用 zip 來壓縮文件,在 shell 提示下鍵入下面的命令:
zip -r filename.zip filesdir
在這個例子裏,filename.zip 代表你創建的文件,filesdir 代表你想放置新 zip 文件的目錄。-r 選項指定你想遞歸地(recursively)包括所有包括在 filesdir 目錄中的文件。
要抽取 zip 文件的內容,鍵入以下命令:
unzip filename.zip
你可以使用 zip 命令同時處理多個文件和目錄,方法是將它們逐一列出,並用空格間隔:
zip -r filename.zip file1 file2 file3 /usr/work/school
上面的命令把 file1、file2、 file3、以及 /usr/work/school 目錄的內容(假設這個目錄存在)壓縮起來,然後放入 filename.zip 文件中。
tar 文件是幾個文件和(或)目錄在一個文件中的集合。這是創建備份和歸檔的佳徑。
tar 使用的選項有:
*
-c — 創建一個新歸檔。
*
-f — 當與 -c 選項一起使用時,創建的 tar 文件使用該選項指定的文件名;當與 -x 選項一起使用時,則解除該選項指定的歸檔。
*
-t — 顯示包括在 tar 文件中的文件列表。
*
-v — 顯示文件的歸檔進度。
*
-x — 從歸檔中抽取文件。
*
-z — 使用 gzip 來壓縮 tar 文件。
*
-j — 使用 bzip2 來壓縮 tar 文件。
要創建一個 tar 文件,鍵入:
tar -cvf filename.tar directory/file
在以上的例子中,filename.tar 代表你創建的文件,directory/file 代表你想放入歸檔文件內的文件和目錄。
你可以使用 tar 命令同時處理多個文件和目錄,方法是將它們逐一列出,並用空格間隔:
tar -cvf filename.tar /home/mine/work /home/mine/school
上面的命令把 /home/mine 目錄下的 work 和 school 子目錄內的所有文件都放入當前目錄中一個叫做 filename.tar 的新文件裏。
要列出 tar 文件的內容,鍵入:
tar -tvf filename.tar
要抽取 tar 文件的內容,鍵入:
tar -xvf filename.tar
這個命令不會刪除 tar 文件,但是它會把被解除歸檔的內容複製到當前的工作目錄下,並保留歸檔文件所使用的任何目錄結構。譬如,如果這個 tar 文件中包含一個叫做 bar.txt 的文件,而這個文件包含在 foo/ 目錄中,那麼,抽取歸檔文件將會導致在你當前的工作目錄中創建 foo/ 目錄,該目錄中包含 bar.txt 文件。
請記住,tar 默認不壓縮文件。要創建一個使用 tar 和 bzip 來歸檔壓縮的文件,使用 -j 選項:
tar -cjvf filename.tbz file
按照約定俗成,用 bzip2 壓縮的 tar 文件具有 .tbz 擴展名。不過,有時用戶使用 tar.bz2 擴展名來歸檔他們的文件。
以上命令創建了一個歸檔文件,然後將其壓縮爲 filename.tbz 文件。如果你使用 bunzip2 命令爲 filename.tbz 文件解壓,filename.tbz 文件會被刪除,繼之以 filename.tar 文件。
你還可以用一個命令來擴展並解除歸檔 bzip tar 文件:
tar -xjvf filename.tbz
要創建一個用 tar 和 gzip 歸檔並壓縮的文件,使用 -z 選項:
tar -czvf filename.tgz file
按照約定俗成,使用 gzip 來壓縮的 tar 文件具有 .tgz 擴展名。
這個命令創建歸檔文件 filename.tar,然後把它壓縮爲 filename.tgz 文件(文件 filename.tar 不被保留)。如果你使用 gunzip 命令來給 filename.tgz 文件解壓,filename.tgz 文件會被刪除,並被替換爲 filename.tar。
你可以用單個命令來擴展 gzip tar 文件:
tar -xzvf filename.tgz
#linux find 時間段2011-08-01 00:00至2011-10-31-23-59的文件
# touch -t 201108010000 start
# touch -t 201110312359 end
# find . -newer start ! -newer end
shell打印隨機數
for i in {1..300};
do
a=$RANDOM
b=10000000
printf "%.20f\n" `echo "$a/$b"|bc -l`
done;
#以下是在機器Client的root和機器Server的root之間建立安全信任關係
#1.在機器Client上root用戶執行ssh-keygen命令,生成建立安全信任關係的證書。
[root@Client root]# ssh-keygen -b 1024 -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): <-- 直接輸入回車
Enter same passphrase again: <-- 直接輸入回車
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
49:9c:8a:8f:bc:19:5e:8c:c0:10:d3:15:60:a3:32:1croot@Client
#注意:在程序提示輸入passphrase時直接輸入回車,表示無證書密碼。上述命令將生成私鑰證書id_rsa和公鑰證書id_rsa.pub,存放在用戶home目錄的.ssh子目錄中。
#2.將公鑰證書id_rsa.pub複製到機器Server的root家目錄的.ssh子目錄中,同時將文件名更換爲authorized_keys。
#注意:把兩機器的id_rsa.pub中的數據都拷貝到A的/root/.ssh/authorized_keys文件中,一行表示一條;
#3.結果
[root@Client root]# scp -p text [email protected]:/root/
text 100% |**************************| 19 00:00
sort 和 uniq
shell多線程
sh 1.sh &
sh 2.sh &
wait
do xxx
shell四則運算
1:使用 expr 外部程式
#注意:符號(+、-、*、/)與數字之間要有空格
2:使用 $(( )),例如r=$(( 4 + 5 ))
#注意:=號前後要沒有空格
3:使用 $[ ],例如r=$[ 4 + 5]
#注意:=號前後要沒有空格
4:使用let命令,例如r=$[x + y]
#注意:符號(+、-、*、/)與數字之間要沒有空格,=號前後要沒有空格
加法
r=`expr 4 + 5`
r=$(( 4 + 5 ))
r=$[ 4 + 5 ]
let r=4+5
減法
r=`expr 40 - 5`
r=$(( 40 - 5 ))
r=$[ 40 - 5 ]
let r=40-5
乘法
r=`expr 4 \* 5`
r=$(( 4 * 5 ))
r=$[ 4 * 5 ]
let r=4*5
除法
r=`expr 40 / 5`
r=$(( 40 / 5 ))
r=$[ 40 / 5 ]
let r=40/5
求餘數
r=$[ 100 % 43 ]
let r=100%43
乘冪
如2的3次方
r=$(( 2 ** 3 ))
r=$[ 2 ** 3 ]
let r=2**3
bc -l 20小數精度
a=0.2; b=0.2; printf "%.2f\n" `echo "$a+$b" | bc`
cat | openssl base64 -d |gunzip
cat | openssl base64 -d | iconv -f gbk -t utf-8
openssl base64 -in xxx
tmpwatch 1 /tmp/