Linux日知錄(常用問題筆記)

0)序言

日有一知,當有一錄,自09年來,工作所需,接觸開源平臺,對Linux常有涉獵,其間問題,記錄在案,雖爲敝帚,不敢自珍,所記條目,並未嚴格整理,但願於後來者有所裨益.

 

1)常用

查看某個命令的路徑

which:查看某個命令的路徑,該命令在PATH變量配置的路徑中尋找命令,並給出第一個查詢結果返回

 

查看用戶信息的幾種方法

finger

id

groups

 

刪除目錄

目錄爲空,可以用 rmdir 刪除 如果目錄不爲空,可以用rm -rf 刪除

 

創建符號鏈接(快捷方式)

ln -s {target-filename} {symbolic-filename}

For example create softlink for /webroot/home/httpd/test.com/index.php as /home/vivek/index.php, enter the following command:
ln -s /webroot/home/httpd/test.com/index.php /home/vivek/index.php
ls -l

 

查看系統啓動日誌

dmesg | more

 

grep

忽略大小寫

grep -i

 

隨機產生網卡地址

#!/bin/sh
exec 2>/dev/null
dd if=/dev/urandom bs=1 count=6 | od -t x1 | sed '2d;s/^0\+ //;s/ /:/g'

 

添加path變量的三種方法

1)修改/etc/profile文件,此修改對全局用戶有效

2)修改.bashrc文件,可以精確到用戶(只對當前用戶有效)

3)直接在shell下加入變量,shell退出則失效

 

按照時間順序列出文件

ls –t

 

按照時間逆序列出文件(新文件在後)

ls –rt (r 代表reverse意,可以逆轉所有排序)

 

ls在當前目錄下查找某個文件,但不列出子文件夾中的內容

ls –d "pattern"

 

拷貝一個目錄下的所有文件

cp -R

 

修改fstab後如何不重啓加載所有文件系統

mount –a

 

移動文件夾

mv src dest

 

查看linux版本

1. 查看內核版本命令:
  1) [root@q1test01 ~]# cat /proc/version
   Linux version 2.6.9-22.ELsmp ([email protected]) (gcc version 3.4.4 20050721 (Red Hat 3.4.4-2)) #1 SMP Mon Sep 19 18:00:54 EDT 2005
  2) [root@q1test01 ~]# uname -a
  Linux q1test01 2.6.9-22.ELsmp #1 SMP Mon Sep 19 18:00:54 EDT 2005 x86_64 x86_64 x86_64 GNU/Linux
  3) [root@q1test01 ~]# uname -r
  2.6.9-22.ELsmp
  2. 查看linux版本:
  1) 登錄到服務器執行 lsb_release -a ,即可列出所有版本信息,例如:
  [[email protected] ~]# [root@q1test01 ~]# lsb_release -a
  LSB Version: :core-3.0-amd64:core-3.0-ia32:core-3.0-noarch:graphics-3.0-amd64:graphics-3.0-
  ia32:graphics-3.0-noarch
  Distributor ID: RedHatEnterpriseAS
  Description: Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
  Release: 4
  Codename: NahantUpdate2
  注:這個命令適用於所有的linux,包括Redhat、SuSE、Debian等發行版。
  2) 登錄到linux執行cat /etc/issue,例如如下:
  [root@q1test01 ~]# cat /etc/issue
  Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
  Kernel \r on an \m
  3) 登錄到linux執行cat /etc/redhat-release ,例如如下:
  [root@q1test01 ~]# cat /etc/redhat-release
  Red Hat Enterprise Linux AS release 4 (Nahant Update 2)
  注:這種方式下可以直接看到具體的版本號,比如 AS4 Update 1
  4)登錄到linux執行rpm -q redhat-release ,例如如下:
  [root@q1test01 ~]# rpm -q redhat-release
  redhat-release-4AS-3
  注:這種方式下可看到一個所謂的release號,比如上邊的例子是3
  這個release號和實際的版本之間存在一定的對應關係,如下:
  redhat-release-3AS-1 -> Redhat Enterprise Linux AS 3
  redhat-release-3AS-7.4 -> Redhat Enterprise Linux AS 3 Update 4
  redhat-release-4AS-2 -> Redhat Enterprise Linux AS 4
  redhat-release-4AS-2.4 -> Redhat Enterprise Linux AS 4 Update 1
  redhat-release-4AS-3 -> Redhat Enterprise Linux AS 4 Update 2
  redhat-release-4AS-4.1 -> Redhat Enterprise Linux AS 4 Update 3
  redhat-release-4AS-5.5 -> Redhat Enterprise Linux AS 4 Update 4
  另:第3)、4)兩種方法只對Redhat Linux有效。

 

2)啓動相關

如何自動mount

添加開機啓動後自動mount的文件系統,可以通過在fstab中添加項完成,比如添加一個windows的共享連接

 

修改fstab後如何不重啓加載所有文件系統

mount –a

 

添加一個需要在啓動時運行的服務:

方法一:在rc3.d中創建一個link

方法二:在rc.local中加入啓動項

 

init.d,rc[X].d 目錄關係

在這個目錄下的檔案都是連結檔,均指向到 /etc/rc.d/init.d 這個目錄下,而這個 /etc/rc.d/init.d 目錄則是以 Linux 的 rpm 安裝方法時,設定一些服務的啓動目錄。舉個例子來說,如果你要重新啓動 sendmail 的話,而且你的 sendmail 是以 rpm 來安裝的,那麼下達 /etc/rc.d/init.d/sendmail restart 就可以直接啓動 sendmail 囉!所以你即可知道 /etc/rc.d/init.d 裏面檔案的主要功能!因此,當你的 run-level 內的 scripts 要啓動哪寫服務呢,呵呵!就將檔案連結到該 init.d 目錄下的檔案並加以啓動即可囉!也就是說『當你以 文字模式 ( run-level=3 ) 啓動 Linux 時,你的系統在經過 BIOS、 MBR、 Kernel、 init、/etc/rc.d/rc.sysinit 之後,就會進入 /etc/rc.d/rc3.d 來啓動一些服務』囉!不過,需要注意的是,在 rc3.d (或其它目錄下 rc0.d ~ rc6.d )目錄中 S 開頭的檔案爲執行該服務, K 爲開頭的檔案則是殺掉該服務的意思。那麼那些數字代表的意義爲何?那就是啓動的順序啦!例如S12syslog 會比S90crond 更早被執行呢!那麼爲什麼要有這些順序呢?這是有原因的!例如您的主機有要啓動 WWW 好了,那麼您的網絡設定應該要先啓動纔對吧!所以囉,如果 WWW 先啓動,才驅動網絡,那麼 WWW 自然就一定起不來啦!所以各項服務的啓動順序也是相當重要的!目前 Mandrake 當中,可以使用 chkconfig 來設定開機要啓動的服務選項呢!

 

3)性能相關

查看內存信息

cat /proc/meminfo 查看內存信息

 

查看系統磁盤的用量

df 命令可以

df –h ,使得展現結果易於人閱讀帶單位,比如將15176390,寫爲15G

 

4)目錄權限

-rwxr-xr-x 1 root root 512 11月 5 08:08 net.lo
drwxr-xr-x 2 root root 48 9月 6 13:06 vmware
當執行ls -l 或 ls -al 命令後顯示的結果中,最前面的第2~10個字符是用來表示權限。第一個字符一般用來區分文件和目錄:
    d:表示是個目錄,事實上在ext2fs中,目錄是個特別的文件。
    -:表示這是個普通的文件。
    l: 表示這是個符號鏈接文件,實際上他指向另一個文件。
    b、c:分別表示區塊設備和其他的外圍設備,是特別類型的文件。
    s、p:這些文件關係到系統的
數據結構
和管道,通常非常少見到。
下面周詳介紹一下權限的種類和設置權限的方法。
二、一般權限
第2~10個字符當中的每3個爲一組,左邊三個字符表示所有者權限,中間3個字符表示和所有者同一組的用戶的權限,右邊3個字符是其他用戶的權限。這三個一組共9個字符,代表的意義如下:
r(Read,讀取):對文件而言,具有讀取文件內容的權限;對目錄來說,具有
瀏覽
目 錄的權限。
w(Write,寫入):對文件而言,具有新增、修改文件內容的權限;對目錄來說,具有刪除、移動目錄內文件的權限。
x(eXecute,執行):對文件而言,具有執行文件的權限;對目錄了來說該用戶具有進入目錄的權限。
-:表示不具有該項權限。

 

 

5)軟件安裝

tar.gz的通用安裝步驟

tar –xzf:解壓縮

./configuration:生成make文件,一般通過prefix參數來配置目標路徑

make:編譯

make install:安裝

查找用rpm安裝的***程序集路徑

rpm –qa | grep ***

查看是否安裝某軟件包

rpm –q 包名稱

查找用rpm安裝的***程序集路徑

rpm –qa | grep ***

使用apt安裝

sudo apt install apache2 mysql5

相關介紹

The Advanced Packaging Tool, or APT, is a free user interface that works with core libraries to handle the installation and removal of software on the Debian GNU/Linux distribution and its variants.[2] APT simplifies the process of managing software on Unix-like computer systems by automating the retrieval, configuration and installation of software packages, either from binary files or by compiling source code.[2]

 

6)網絡相關

查看本機服務端口

netstat –tln

查看某端口對應的程序

lsof –i: 80,或者netstat –anp | grep 端口

關閉防火牆

/etc/rc.d/init.d/iptables stop

打開防火牆

/etc/rc.d/init.d/iptables start

查看當iptable前配置

:iptables –L

抓包與包分析

:tcpdump –i eth1 host XXX.XXX.XXX.XXX and port 80

其他命令如下

tcpdump 的抓包保存到文件的命令參數是-w xxx.cap
抓eth1的包
tcpdump -i eth1 -w /tmp/xxx.cap
抓 192.168.1.123的包
tcpdump -i eth1 host 192.168.1.123 -w /tmp/xxx.cap
抓192.168.1.123的80端口的包
tcpdump -i eth1 host 192.168.1.123 and port 80 -w /tmp/xxx.cap
抓192.168.1.123的icmp的包
tcpdump -i eth1 host 192.168.1.123 and icmp -w /tmp/xxx.cap
抓192.168.1.123的80端口和110和25以外的其他端口的包
tcpdump -i eth1 host 192.168.1.123 and ! port 80 and ! port 25 and ! port 110 -w /tmp/xxx.cap
抓vlan 1的包
tcpdump -i eth1 port 80 and vlan 1 -w /tmp/xxx.cap
抓pppoe的密碼
tcpdump -i eth1 pppoes -w /tmp/xxx.cap
以100m大小分割保存文件, 超過100m另開一個文件 -C 100m
抓10000個包後退出 -c 10000
後臺抓包, 控制檯退出也不會影響:
nohup tcpdump -i eth1 port 110 -w /tmp/xxx.cap &
抓下來的文件可以直接用ethereal 或者wireshark打開。 wireshark就是新版的ethereal

在Linux的系統下如何才能修改IP信息

以前總是用ifconfig修改,重啓後總是得重做。如果修改配置文件,就不用那麼麻煩了~

A、修改ip地址

即時生效:

# ifconfig eth0 192.168.0.20 netmask 255.255.255.0

啓動生效:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

B、修改default gateway

即時生效:

# route add default gw 192.168.0.254

啓動生效:

vi /etc/sysconfig/network-scripts/ifcfg-eth0

C、修改dns

修改/etc/resolv.conf

修改後可即時生效,啓動同樣有效

D、修改host name

即時生效:

# hostname fc2

啓動生效:

修改/etc/sysconfig/network

新啓動網絡配置

/etc/init.d/network restart

注意:修改機器名後,一般需要修改hosts(/etc/hosts)文件,添加機器名對應的ip

前提: Redhat 系統

ip, 掩碼:

編輯 /etc/sysconfig/network-script/ifcfg-eth0
IPADDR=192.168.0.1
NETMASK=255.255.255.0

網關:

編輯 /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=xx
GATEWAY=192.168.0.100
DNS:

編輯 /etc/resolv.conf
NAMESERVER=202.96.209.5
注意:上述IP地址都要改成與你的網絡配置相對應的IP地址。

 

7)VI

vim:undo和redo

:u(撤銷操作數)

Ctrl+R

vi查找:

命令狀態輸入/pattern2search,繼續查找直接按n

vi粘貼:p

vi剪切:[number]dd或者d[number]d,,number表示要剪切幾行

vi拷貝:[number]yy,number是行數

移動到段尾首尾{}

Shift+g移動到文檔末尾

d l 刪除當前字符(與x命令功能相同)
d 0 刪除到某一行的開始位置
d ^ 刪除到某一行的第一個字符位置(不包括空格或TA B字符)
d w 刪除到某個單詞的結尾位置
d 3 w 刪除到第三個單詞的結尾位置
d b 刪除到某個單詞的開始位置
d W 刪除到某個以空格作爲分隔符的單詞的結尾位置
d B 刪除到某個以空格作爲分隔符的單詞的開始位置

 

8)常用目錄作用

/bin 存放使用者最長用的命令,如:cp、ls、cat,等等。
/boot 啓動linux時使用的一些核心文件。
/dev 是device(設備)的縮寫,這個目錄下是所有linux的外圍設備。 D:\document\Chat\MyIM\MyIM\bin\Release
/etc 這個目錄用來存放系統管理所需要的配置文件和子目錄。
/home 用戶的主目錄,比如說有個用戶叫wang,那他的目錄就是/home/wang也可以用~wang來表示。
/lib 這個目錄是存放着系統最基本的動態連接庫,幾乎所有的應用程序都須用這些共享庫。
/lost+found 這個目錄平時是空的,當系統不正常關機後,這裏就是一些無家可歸文件的避難所。
/mnt 這個目錄是空的,系統提供這個目錄是讓用戶臨時掛接別的文件系統。
/proc 這個目錄是一個虛擬目錄,它是系統內存映射,我們可以直接通過訪問這個目錄來獲取系統信息。也就是說,這個目錄的內容不在硬盤上而是在內存中。
/root 系統管理員(root)的主目錄,作爲系統的擁有者的特權。
/sbin s就是super user的意義,也就是說這裏存放的是系統管理員使用的管理程序。
/tmp 這個目錄是存放一些臨時文件的地方。
/usr 我們用到的應用程序的文件幾乎都存放這個目錄下:/usr/X11R6存放X_Window的目錄;/usr/bin存放着許多應用程序;/usr /sbin給超級用戶使用的一些管理程序就放在這個裏面;/usr/include開發和編譯應用程序所需的頭文件;/usr/lib存放一些常用的動態連接共享庫和靜態歸檔案庫;/usr/local這是提供給一般用戶的/usr目錄,在這裏安裝軟件最合適。/usr/man存放幫助文檔。/usr /src開放的源代碼就存在這個目錄下。
/var 這個目錄存放那些不斷擴充的東西,爲了保持usr的相對穩定,那些才、經常被修改的目錄可以放在這個目錄下,如/var/log日誌文件。

 

9)其他

關於輸入輸出">" "<"的意義

cat x y 1> hold 2>&1

結果就是將標準+錯誤輸出到hold;

cat x y 2>&1 1> hold 則是將錯誤輸出重定向到標準輸出,而將標準定向到hold。所以錯誤輸出不會進入hold,因爲被定向到標準輸出。

賦值關係

(1) 1 = hold , 2 += 1;

(2) 2 += 1 , 1 = hold。

 

Shell腳本相關

shift:將命令行變量列表的第一個變量刪除,第二個變量變爲第一位,可理解爲變量列表頭指針移動一位

daemon 語句 和& 符號可以將程序變爲後臺輸出

 

10)虛擬機安裝Linux的一些問題

虛擬機安裝花屏調整分辨率

VitualPC有時安裝Linux後,進入圖形界面會產生花屏,此時需要跳轉到命令行模式,調整Xwin的參數,方法如下

啓動時,Linux會在加載各啓動項前,提示通過鍵入'I'是否進入交互加載模式(interactive)模式,此時鍵入I,進入交互模式,逐一手動允許系統項,禁止系統啓動xwin

進入命令行模式後,進入/etc/X11/目錄,修改X11配置文件中的分辨率,色深等,修改完成後重新啓動即可

 

Linux新版本??內核在裝入VirtualPC虛擬機時會出現鼠標不能捕獲的問題,可以通過修改grub.conf中內核參數來修正

定位到kernel

在其行末尾添加 i8042.noloop

kernel /vmiluz******* ro root=LABEL=/ *** i8042.noloop

 

Windows 2008遠程桌面,消除只允許一個用戶登錄限制

http://vanderbiest.org/blog/2010/08/16/multiple-rdp-sessions-in-windows-2008-r2/

 

 

 

12)CollnetSVN 1.1.0 x86 Linux 安裝

下載CollnetSVN文件

cp 到安裝目錄

切換用戶到一個普通用戶su somebody(一定不能是root,如果實在沒有用戶,可以用adduser 添加一個,再用passwd username 去修改這個用戶的密碼)

tar –zxf 解壓縮

用剛纔這個普通用戶的身份運行csvn/bin/csvn start 以及 csvn/bin/csvn-httpd start(一定不能用root)

可以將csvn-httpd添加到啓動項,方法是ln –s /csvn/bin/csvn-httpd S99csvn_httpd,重啓系統就能看到啓動時加載此服務

 

11)httpd

apache配置轉發

<VirtualHost *:80>
    ProxyPreserveHost On
    ServerAdmin [email protected]
    ServerName search.cd-host.net
    DefaultLanguage zh-CN
    AddDefaultCharset utf-8
    ProxyPass /  http://www.missworld.cn:8888/
    ProxyPassReverse /  http://www.missworld.cn:8888/
</VirtualHost>

 

啓動light httpd自帶的fastcgi:spawn

/usr/local/webserver/php/bin/spawn-fcgi -a 127.0.0.1 -p 10080 -C 64 -u www -f /usr/local/webserver/php/bin/php-cgi

 

朱燚的技術博客,轉載請註明出處

http://yizhu2000.cnblogs.com

http://blog.csdn.net/yizhu2000

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章