當前位置:首頁 » 操作系統 » linux常見問題

linux常見問題

發布時間: 2022-09-05 22:04:06

1. linux發生問題怎麼處理

我們都是人而不是神,出現問題很常見啦,首先,建議你看懂報錯的內容,會查看一些log file 文件,比如/usr/share/doc 這個目錄是大多數安裝在系統中的軟體包會包含的一些文檔,其次,或許真的難以解決了,可以去各大社區去瘋狂的提問,等等
比如:
酷學園認論區 http://phorum.study-area.org
鳥哥癿私房菜館認論區 http://phorum.vbird.org
telnet://bbs.sayya.org

2. 如何建立linux ssh信任的方法與常見問題

在Linux伺服器之間建立信任關系,是很多線上服務系統的基礎性工作,這樣能便於程序在多台伺服器之間自動傳輸數據,或者方便用戶不輸入密碼就可以在不同的主機間完成登錄或者各種操作。

網上關於建立Linux信任關系(ssh trust)的中文文章有一些,但是寫得都不太詳細,這里匯總了方方面面的資料,把多機信任關系建立方法說說清楚(文/陳運文)

一 建立信任關系的基本操作

基本場景是想從一台Server伺服器直接登錄另一台,或者將Server伺服器的數據不需密碼驗證直接拷貝至Client伺服器,以下我們簡稱Server伺服器為S(待發送的數據文件在這台伺服器上),Client服務為C,信任關系的最簡單操作方法如下:

1 在S伺服器上,進入當前用戶根目錄下的隱藏目錄 .ssh,命令如下:

cd ~/.ssh

(註:目錄名前的點好」.」表示該文件夾是一個特殊的隱藏文件夾,ls命令下默認是看不到的,通過 ls –a 命令觀察到)

2 生成S伺服器的私鑰和公鑰:

ssh-keygen -t rsa

(註:rsa是一種加密演算法的名稱,此處也可以使用dsa,關於rsa和dsa演算法的介紹可見本文後半章節)

ssh-keygen生成密鑰用於信任關系生成

-此時會顯示Generating public/private key pair. 並提示生成的公鑰私鑰文件的存放路徑和文件名,默認是放在 /home/username/.ssh/id_rsa 這樣的文件里的,通常不用改,回車就可以

然後Enter passphrase(empty for no passphrase): 通常直接回車,默認不需要口令

Enter same passphrase again: 也直接回車

然後會顯式密鑰fingerprint生成好的提示,並給出一個RSA加密協議的方框圖形。此時在.ssh目錄下ls,就可以看到生成好的私鑰文件id_rsa和公鑰文件id_rsa.pub了

以下是各種補充說明:

注1:如果此時提示 id_rsaalready exists,Overwrite(y/n) 則說明之前已經有人建好了密鑰,此時選擇n 忽略本次操作就行,可以直接用之前生成好的文件;當然選y覆蓋一下也無妨

注2:公鑰用於加密,它是向所有人公開的(pub是公開的單詞public的縮寫);私鑰用於解密,只有密文的接收者持有。

3 在Server伺服器上載入私鑰文件

仍然在.ssh目錄下,執行命令:

ssh-add id_rsa

系統如果提示:Identity added: id_rsa (id_rsa) 就表明載入成功了

下面有幾個異常情況處理:

–如果系統提示:could not open a connection to your authentication agent

則需要執行一下命令:

ssh-agent bash

然後再執行上述的ssh-add id_rsa命令

–如果系統提示id_rsa: No such file or directory

這是系統無法找到私鑰文件id_rsa,需要看看當前路徑是不是不在.ssh目錄,或者私鑰文件改了名字,例如如果建立的時候改成 aa_rsa,則這邊命令中也需要相應改一下

-如果系統提示 command not found,那肯定是你命令敲錯字元了J

-提示Agent admitted failure to sign using the key,私鑰沒有載入成功,重試ssh-add

-注意id_rsa/id_rsa.pub文件不要刪除,存放在.ssh目錄下

4 把公鑰拷貝至Client伺服器上

很簡單,例如 scp id_rsa.pub [email protected]:~

5 ssh登錄到Client伺服器上,然後在Client伺服器上,把公鑰的內容追加到authorized_keys文件末尾(這個文件也在隱藏文件夾.ssh下,沒有的話可以建立,沒有關系)

cat id_rsa.pub >> ~/.ssh/authorized_keys

以下是各種補充說明,遇到問題時可以參考:

注1:這里不推薦用文件覆蓋的方式,有些教程直接scp id_rsa.pub 到Client伺服器的authorized_keys文件,會導致之前建的其他信任關系的數據被破壞,追加到末尾是更穩妥的方式;

注2: cat 完以後,Client伺服器上剛才拷貝過來的id_rsa.pub文件就不需要了,可以刪除或移動到其它地方)

注3:ssh-keygen 命令通過-b參數可以指定生成的密鑰文件的長度,如果不指定則默認為1024,如果ssh-keygen –b 4096(最長4096),則加密程度提高,但是生成和驗證時間會增加。對一般的應用來說,默認長度已經足夠勝任了。如果是rsa加密方式,那麼最短長度為768 byte

注4:authorized_keys文件的許可權問題。如果按上述步驟建立關系後,仍然要驗證密碼,並且沒有其他報錯,那麼需要檢查一下authorized_keys文件的許可權,需要作下修改: chmod g-w authorized_keys

OK,現在試試在Server端拷貝一個文件到Client伺服器,應該無需交互直接就傳過去了。

但是此時從Client傳數據到Server伺服器,仍然是需要密碼驗證的。如果需要兩台伺服器間能直接互傳數據,則反過來按上述步驟操作一下就可以了

二 刪除伺服器間信任關系的方法

如果想取消兩台伺服器之間的信任關系,直接刪除公鑰或私鑰是沒有用的,需要在Client伺服器上,打開 ~/.ssh/ authorized_keys 文件,找到對應的伺服器的公鑰欄位並刪除

每個段落的開頭是ssh-rsa字樣,段尾是Server伺服器的帳號和ip(如下圖紅框),需要細心的找一下後刪除整段

密鑰文件內容和刪除Linux伺服器間信任關系的方法

三 各種可能遇到的情況和處理方法

–提示 port 22: Connection refused

可能的原因:沒有正確安裝最新的openssh-server,安裝方法如下

sudo apt-get install openssh-server

不支持apt安裝的,可以手工下載:

wget ftp.ssh.com/pub/ssh/ssh-3.2.9.1.tar.gz

–關於目錄和文件的許可權設置

.ssh目錄的許可權必須是700,同時本機的私鑰的許可權必須設置成600:

chmod 600 id_rsa

否則ssh伺服器會拒絕登錄

四 關於RSA和DSA加密演算法

在ssh-keygen命令中,-t參數後指定的是加密演算法,可以選擇rsa或者dsa

RSA 取名自演算法的三位提出者Ron Rivest, Adi Shamir, and Leonard Adleman的姓名首字母,作為一種非對稱加密演算法,RSA的安全性基於及其困難的大整數分解(兩個素數的乘積的還原問題)。關於RSA演算法原理的文章很多,感興趣的朋友可以找來讀一讀。

DSA = Digital Signature Algorithm,基於有限域離散對數難題,是Schnorr和ElGamal簽名演算法的變種,一般用於數字簽名和認證,被美國標准局(NIST)採納為數字簽名標准DSS(Digital Signature Standard),based on discrete logarithms computation.

DES = Digital Encryption Standard. Obsolete standard.

RSA演算法好在網路容易實現密鑰管理,便進行數字簽名,演算法復雜,加/解速度慢,採用非對稱加密。在實際用於信任關系建立中,這兩種方法的差異很微小,可以挑選其一使用。

五 關於SSH協議的介紹

SSH全稱Secure SHell,顧名思義就是非常安全的shell的意思,SSH協議是IETF(Internet Engineering Task Force)的Network Working Group所制定的一種協議。SSH的主要目的是用來取代傳統的telnet和R系列命令(rlogin,rsh,rexec等)遠程登陸和遠程執行命令的工具,實現對遠程登陸和遠程執行命令加密。防止由於網路監聽而出現的密碼泄漏,對系統構成威脅。

ssh協議目前有SSH1和SSH2,SSH2協議兼容SSH1。目前實現SSH1和SSH2協議的主要軟體有OpenSSH和SSH Communications Security Corporation公司的SSH Communications 軟體。前者是OpenBSD組織開發的一款免費的SSH軟體,後者是商業軟體,因此在linux、FreeBSD、OpenBSD、NetBSD等免費類UNIX系統種,通暢都使用OpenSSH作為SSH協議的實現軟體。因此,本文重點介紹一下OpenSSH的使用。需要注意的是OpenSSH和SSH Communications的登陸公鑰/私鑰的格式是不同的,如果想用SSH Communications產生的私鑰/公鑰對來登入到使用OpenSSH的linux系統需要對公鑰/私鑰進行格式轉換。

第一次登陸後,ssh就會把登陸的ssh指紋存放在用戶home目錄的.ssh目錄的know_hosts文件中,如果遠程系統重裝過系統,ssh指紋已經改變,你需要把 .ssh 目錄下的know_hosts中的相應指紋刪除,再登陸回答yes,方可登陸。請注意.ssh目錄是開頭是」.」的隱藏目錄,需要ls –a參數才能看到。而且這個目錄的許可權必須是700,並且用戶的home目錄也不能給其他用戶寫許可權,否則ssh伺服器會拒絕登陸。如果發生不能登陸的問題,請察看伺服器上的日誌文件/var/log/secure。通常能很快找到不能登陸的原因。

六 關於ssh_config和sshd_config文件配置的說明

/etc/ssh/ssh_config:

Host *

選項「Host」只對能夠匹配後面字串的計算機有效。「*」表示所有的計算機。

ForwardAgent no

「ForwardAgent」設置連接是否經過驗證代理(如果存在)轉發給遠程計算機。

ForwardX11 no

「ForwardX11」設置X11連接是否被自動重定向到安全的通道和顯示集(DISPLAY set)。

RhostsAuthentication no

「RhostsAuthentication」設置是否使用基於rhosts的安全驗證。

RhostsRSAAuthentication no

「RhostsRSAAuthentication」設置是否使用用RSA演算法的基於rhosts的安全驗證。

RSAAuthentication yes

「RSAAuthentication」設置是否使用RSA演算法進行安全驗證。

PasswordAuthentication yes

「PasswordAuthentication」設置是否使用口令驗證。

FallBackToRsh no

「FallBackToRsh」設置如果用ssh連接出現錯誤是否自動使用rsh。

UseRsh no

「UseRsh」設置是否在這台計算機上使用「rlogin/rsh」。

BatchMode no

「BatchMode」如果設為「yes」,passphrase/password(互動式輸入口令)的提示將被禁止。當不能互動式輸入口令的時候,這個選項對腳本文件和批處理任務十分有用。

CheckHostIP yes

「CheckHostIP」設置ssh是否查看連接到伺服器的主機的IP地址以防止DNS欺騙。建議設置為「yes」。

StrictHostKeyChecking no

「StrictHostKeyChecking」如果設置成「yes」,ssh就不會自動把計算機的密匙加入「$HOME/.ssh/known_hosts」文件,並且一旦計算機的密匙發生了變化,就拒絕連接。

IdentityFile ~/.ssh/identity

「IdentityFile」設置從哪個文件讀取用戶的RSA安全驗證標識。

Port 22

「Port」設置連接到遠程主機的埠。

Cipher blowfish

「Cipher」設置加密用的密碼。

EscapeChar ~

「EscapeChar」設置escape字元。

/etc/ssh/sshd_config:

Port 22

「Port」設置sshd監聽的埠號。

ListenAddress 192.168.1.1

「ListenAddress」設置sshd伺服器綁定的IP地址。

HostKey /etc/ssh/ssh_host_key

「HostKey」設置包含計算機私人密匙的文件。

ServerKeyBits 1024

「ServerKeyBits」定義伺服器密匙的位數。

LoginGraceTime 600

「LoginGraceTime」設置如果用戶不能成功登錄,在切斷連接之前伺服器需要等待的時間(以秒為單位)。

KeyRegenerationInterval 3600

「KeyRegenerationInterval」設置在多少秒之後自動重新生成伺服器的密匙(如果使用密匙)。重新生成密匙是為了防止用盜用的密匙解密被截獲的信息。

PermitRootLogin no

「PermitRootLogin」設置root能不能用ssh登錄。這個選項一定不要設成「yes」。

IgnoreRhosts yes

「IgnoreRhosts」設置驗證的時候是否使用「rhosts」和「shosts」文件。

IgnoreUserKnownHosts yes

「IgnoreUserKnownHosts」設置ssh daemon是否在進行RhostsRSAAuthentication安全驗證的時候忽略用戶的「$HOME/.ssh/known_hosts」

StrictModes yes

「StrictModes」設置ssh在接收登錄請求之前是否檢查用戶家目錄和rhosts文件的許可權和所有權。這通常是必要的,因為新手經常會把自己的目錄和文件設成任何人都有寫許可權。

X11Forwarding no

「X11Forwarding」設置是否允許X11轉發。

PrintMotd yes

「PrintMotd」設置sshd是否在用戶登錄的時候顯示「/etc/motd」中的信息。

SyslogFacility AUTH

「SyslogFacility」設置在記錄來自sshd的消息的時候,是否給出「facility code」。

LogLevel INFO

「LogLevel」設置記錄sshd日誌消息的層次。INFO是一個好的選擇。查看sshd的man幫助頁,已獲取更多的信息。

RhostsAuthentication no

「RhostsAuthentication」設置只用rhosts或「/etc/hosts.equiv」進行安全驗證是否已經足夠了。

RhostsRSAAuthentication no

「RhostsRSA」設置是否允許用rhosts或「/etc/hosts.equiv」加上RSA進行安全驗證。

RSAAuthentication yes

「RSAAuthentication」設置是否允許只有RSA安全驗證。

PasswordAuthentication yes

「PasswordAuthentication」設置是否允許口令驗證。

PermitEmptyPasswords no

「PermitEmptyPasswords」設置是否允許用口令為空的帳號登錄。

AllowUsers admin

「AllowUsers」的後面可以跟著任意的數量的用戶名的匹配串(patterns)或user@host這樣的匹配串,這些字元串用空格隔開。主機名可以是DNS名或IP地址。

3. 今天啟動LINUX系統,沒有啟動起來,不知道是什麼故障

linux系統無法啟動的解決辦法
導致linux無法啟動的原因有很多,智能職涯bigdata-job總結常見的原因有如下幾種:
1.文件系統配置不當,比如/etc/inittab文件、/etc/fstab文件等配置錯誤或丟失,導致系統錯誤,無法啟動。
2.非法關機,導致root文件系統破壞,也就是linux根分區破壞,系統無法正常啟動
3.Linux內核崩潰,從而無法啟動
4.系統引導程序出現問題,比如grub丟失或者損壞,導致系統無法引導啟動。
5.硬體故障,比如主板、電源、硬碟等出現問題,導致linux無法啟動。
從這些常見的故障可知,導致系統無法啟動的主要有兩個問題,硬體原因和操作系統原因,對於硬體出現的問題,只需通過更換硬體設備,即可解決,而對於操作系統出現的問題,雖然出現的問題可能千差萬別,不過在多數情況下都可以用相對簡單統一的一些方法來恢復系統,下面我們就針對上面提出的幾個問題,結合Redhat Linux系統環境,給出一些常用的、普遍的解決問題的方法。
1./etc/fstab文件丟失,導致系統無法啟動
/etc/fstab文件存放了系統中文件系統的相關信息,如果正確的配置了該文件,那麼在linux啟動時,系統會讀取此文件,自動掛載linux的各個分區,如果此文件配置錯誤,或者丟失,就會導致系統無法啟動,具體的故障現象是在檢測mount partition時出現:
starting system logger
此後系統啟動就停止了。
針對這個問題,我們的第一思路就是想辦法恢復/etc/fstab這個文件的信息,只要恢復了此文件,系統就能自動掛載每個分區,正常啟動。可能很多讀者首先想到的是將系統切換到單用戶模式下,然後手動掛載分區,最後結合系統信息,重建/etc/fstab文件。
但是這種方法是行不通的,因為fatab文件丟失導致linux無法掛載任何一個分區,即使linux還能切換到單用戶下,那麼此時的系統也只是一個read-only的文件系統,無法向磁碟寫入任何信息。
我們介紹另外一個方法,就是利用linux rescue修復模式登錄系統,進而獲取分區和掛載點信息,重構/etc/fstab文件。
這里以rhel5為例,首先將系統第一章光碟放入光碟機,設置BOIS從光碟機啟動,這樣系統就從光碟機引導,然後在boot後輸入:linux rescue,接著系統自動開始引導,下面進入網路配置界面,這里是選擇是否啟用網路,由於系統已經無法啟動,我們已經在linux系統上進行操作了,啟用網路與否都無所謂。這里選擇不啟用。下面到了最關鍵的步驟了,修復模式會自動將系統的所有分區掛載到/mnt/sysimage目錄下,選擇「Continue」,則修復環境進入到read-write狀態下,可以對分區進行讀寫操作,選擇「Read-Only」,修復環境進入到只讀模式,由於我們要重建fstab文件到/etc目錄下,因此選擇「Continue」進入可讀寫模式下。下面是一個友情提示界面,由於fstab文件丟失,修復模式找不到任何可掛載的分區,從這里可知,修復模式在這里也讀取/etc/fstab文件,回車,進入下一步。下面就進入了修復環境下,可以進行操作了。上面詳細演示了如何進入linux的修復模式,其實很多情況下,linux無法啟動時,都可以通過這個方式登錄系統進行修復和更改操作。

4. linux 編譯內核幾個常見問題解決方法

第一次把自己編譯的驅動模塊載入進開發板,就出現問題,還好沒花費多長時間,下面列舉出現的問題及解決方案
1:出現insmod: error inserting 'hello.ko': -1 Invalid mole format
法一(網上的):是因為內核模塊生成的環境與運行的環境不一致,用linux-2.6.27內核源代碼生成的模塊,可能就不能在linux-2.6.32.2內核的linux環境下載入,需要在linux-2.6.27內核的linux環境下載入。
a.執行 uname -r //查看內核版本
b.一般出錯信息被記錄在文件/var/log/messages中,執行下面命令看錯誤信息
# cat /var/log/messages |tail
若出現類似下面:
Jun 4 22:07:54 localhost kernel:hello: version magic '2.6.35.6-45.fc14.i686.PAE
' should be '2.6.35.13-92.fc14.i686.PAE'
則把 Makefile里的KDIR :=/lib/moles/2.6.35.6-45.fc14.i686.PAE/build1 改為
KDIR :=/lib/moles/2.6.35.13-92.fc14.i686.PAE/build1 //改成自己內核源碼路徑
(這里的build1是一個文件鏈接,鏈接到/usr/src/kernels/2.6.35.6-45.fc14.i686.PAE和13-92的)
然並卵,我的fedora 14 /usr/src/kernels下並沒有2.6.35.13-92.fc14.i686.PAE,只有2.6.35.13-92.fc14.i686,雖然不知道兩者有什麼區別,但改成2.6.35.13-92.fc14.i686還是不行,照樣這個問題,還好後來在看教學視頻的到啟發
法二:改的還是那個位置
KDIR :=/opt/FriendlyARM/linux-2.6.32.2 //把這里改成你編譯生成kernel的那個路徑
all:
$ (MAKE) -C $ (KDIR) M = $ (PWD) moles ARCH=arm CROSS_COMPILE=arm-linux- //加這句
2. [70685.298483] hello: mole license 'unspecified' taints kernel.
[70685.298673] Disabling lock debugging e to kernel taint
方法:在模塊程序中加入: MODULE_LICENSE("GPL");
3. rmmod: chdir(2.6.32.2-FriendlyARM): No such file or directory 錯誤解決
方法:lsmod 可查看模塊信息
即無法刪除對應的模塊。
就是必須在/lib/moles下建立錯誤提示的對應的目錄((2.6.32.2)即可。
必須創建/lib/moles/2.6.32.2這樣一個空目錄,否則不能卸載ko模塊.
# rmmod nls_cp936
rmmod: chdir(/lib/moles): No such file or directory
但是這樣倒是可以卸載nls_cp936,不過會一直有這樣一個提示:
rmmod: mole 'nls_cp936' not found
初步發現,原來這是編譯kernel時使用make moles_install生成的一個目錄,
但是經測試得知,rmmod: mole 'nls_cp936' not found來自於busybox,並不是來自kernel
1).創建/lib/moles/2.6.32.2空目錄
2).使用如下源碼生成rmmod命令,就可以沒有任何提示的卸載ko模塊了[luther.gliethttp]
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#include <errno.h>
int main(int argc, char *argv[])
{
const char *modname = argv[1];
int ret = -1;
int maxtry = 10;
while (maxtry-- > 0) {
ret = delete_mole(modname, O_NONBLOCK | O_EXCL);//系統調用sys_delete_mole
if (ret < 0 && errno == EAGAIN)
usleep(500000);
else
break;
}
if (ret != 0)
printf("Unable to unload driver mole \"%s\": %s\n",
modname, strerror(errno));
}
3).把生成的命令復制到文件系統
# arm-linux-gcc -static -o rmmod rmmod.c
# arm-linux-strip -s rmmod
# cp rmmod /nfs/
cp /nfs/rmmod /sbin
代碼如下:
proc.c
[html] view plain
<span style="font-size:18px;">#include <linux/mole.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/proc_fs.h> /* Necessary because we use the proc fs */
#define procfs_name "proctest"

MODULE_LICENSE("GPL");
struct proc_dir_entry *Our_Proc_File;
int procfile_read(char *buffer,char **buffer_location,off_t offset, int buffer_length, int *eof, void *data)
{ int ret;
ret = sprintf(buffer, "HelloWorld!\n");
return ret;
}

int proc_init()
{ Our_Proc_File = create_proc_entry(procfs_name, 0644, NULL);
if (Our_Proc_File == NULL) {
remove_proc_entry(procfs_name, NULL);
printk(KERN_ALERT "Error: Could not initialize /proc/%s\n",procfs_name);
return -ENOMEM; }
Our_Proc_File->read_proc = procfile_read;//
// Our_Proc_File->owner = THIS_MODULE;
Our_Proc_File->mode = S_IFREG | S_IRUGO;
Our_Proc_File->uid = 0;
Our_Proc_File->gid = 0;
Our_Proc_File->size = 37;
printk("/proc/%s created\n", procfs_name);
return 0;
}
void proc_exit()
{ remove_proc_entry(procfs_name, NULL);
printk(KERN_INFO "/proc/%s removed\n", procfs_name);
}
mole_init(proc_init);
mole_exit(proc_exit);</span></span></span></span></span>
[html] view plain
<span style="font-size:18px;">

ifneq ($(KERNELRELEASE),)
obj-m :=proc.o
else
KDIR :=/opt/FriendlyARM/linux-2.6.32.2
#KDIR :=/lib/moles/2.6.35.13-92.fc14.i686.PAE/build1
PWD :=$(shell pwd)
all:
$(MAKE) -C $(KDIR) M=$(PWD) moles ARCH=arm CROSS_COMPILE=arm-linux-
clean:
rm -f *.ko *.o *.mod.o *.mod.c *.symvers
endif</span></span></span></span></span>
make後生成proc.ko,再在開發板上insmod proc.ko即可
執行 dmesg 就可以看到 產生的內核信息啦

5. linux的問題

一、 如何建立多用戶

提醒大家一句,別一直使用root用戶,因為root用戶在系統中有著至高無上的權力,一不小心就可能破壞系統。比如我們想刪除/temp目錄下的文件卻將命令不小心輸成「rm
/
temp(在『/』後多了一個空格)」,那麼就極可能刪去根目錄下的所有文件。再者,「Linux是一個真正意義上的多任務、多用戶系統」,不體會一下Linux的特色豈不可惜。為了方便自己和別人使用,就在Linux系統下多建幾個用戶吧。

輸入「adser newuser」,回車,屏幕對命令沒有一點兒反應,錯啦?不,實際上,系統已接受了新用戶。你應該接著輸入命令 「passwd
newuser」,屏幕將提示輸入口令,再次輸入確認, 一個新的用戶就增加成功,真簡單。馬上登錄試一試吧。

Linux提供了六個虛擬控制台,用ALT+F1~F6切換(在X-window下用CRTL+ALT+F1~F6切換),每個控制台均可以用不同的用戶登錄,運行不同的程序。趕快為家人和朋友建個用戶吧。

二、在Linx命令行下依次運行:

cd/

tar xzvf rmp-2.3.11.tar.gz

cd rpm-2.3.11

./configure

make

make install

mkdir /var/local /var/local/lib /var/local/lib/rpm /var/lib/rpm

這樣,你就完成了RPM的安裝,以後便可以在網上或光碟上尋找軟體的RPM安裝版。然後使用RPM進行安裝,RPM的使用方法很簡單:

1. 用RPM安裝軟體包 :rpm -ivh 軟體文件名

例如 rpm -ivh fvwm95-2.0.43a.chinese-1.i386.rpm 屏幕上就會輸出該軟體包的名稱和安裝的進度條:

fvwm95 ###############

當進度條走到底,中文fvwm95(一種X-Window的界面)就安裝完了,再運行X-Window,啊,全中文的fvwm95就在我的眼前。

2. 用RPM反安裝軟體包:rpm -e 軟體名

例如:rpm -e fvwm95

3. 用RPM升級軟體包:rpm -Uvh 軟體升級版文件名

例如:rpm -Uvh
fvwm95-2.1.0a.chinese-1.i386.rpm,RPM自動反安裝原來的老版本,將升級版的軟體安裝入系統。怎麼樣,不難吧!

三、如何安裝Linux的應用軟體

對於普通用戶,安裝或升級軟體可以用Red
Hat公司的軟體包安裝與管理工具RPM。使用後你就可以輕松安裝軟體、升級軟體和卸載軟體並查詢軟體信息。

如果你安裝的是Red Hat Linux,那麼你就可以使用RPM了,如果不是,你可以先安裝RPM。方法如下:

1. 下載RPM軟體包: ftp://ftp.redhat.com/pub/code/rpm/rpm-2.3.11.tar.gz

四 、如何在Windows系統中查看Linux的文件

通過使用裝載命令mount,我們能夠在Linux中輕松地查閱、使用Windows的文件。俗話說有來有往嘛,我們當然也希望在Windows中能看到Linux的文件。可是Windows可不像Linux那麼友好,並未備有與Linux溝通的工具,怎麼辦呢?別急,網路上有個小工具叫Linuxdos,不到500K,運行在Windows下,專用於查看Linux的文件。運行之後,你可以選擇驅動器,然後它就像資源管理器一樣列出Linux的文件系統。

五、如何漢化Linux

Linux的母語是英文,所以滿屏幕都是「英國老鼠」,用起來特不方便,如果想輸入中文更沒轍。不過現在的中國軟體人員可謂人才輩出,已經為Linux的漢化提供了全面的解決方案。

1.中文模擬終端chdrv

首先,總得讓Linux能顯示中文吧!chdrv是在命令行下的中文模擬終端,也就是說,只要你裝上了它,你就可以在Linux的命令行狀態下顯示和輸入漢字了。chdrv啟動後在tty7(用Ctrl+Alt+F7)建立一個虛擬終端,用戶在tty7上登錄後就可以使用它提供的中文支持。tty1到tty6不會受到它的影響。

如果你能找到RPM格式的安裝包,就可以輕松地使用RPM安裝程序安裝它。否則你可以到ftp://ftp.ihep.ac.cn/pub/chinese/system分別取得
chdrv 的已編譯的chdrvbin-0.23.gb.tar.gz和字體文件chdrvfont.tar.gz。然後用root登錄,依次執行以下命令:

tar xvzf chdrvbin-0.23.gb.tar.gz 將編譯好的chdrv解壓到chdrv-0.23.gb目錄

mv chdrvfont.tar.gz chdrv-0.23.gb/ 將字體文件移到chdrv-0.23.gb目錄

cd chdrv-0.23.gb 進入此目錄

./installbin 運行安裝文件

2.中文輸入伺服器xcin

如果你常在X-Window中使用Linux,一定試試用XCIN來解決中文輸入的問題。XCIN 是Xwindow Chinese
INput的縮寫,是一個在X-Window模式下運行的中文輸入系統,安裝它後,X-Window的所有終端都將提供中文服務。

你可從ftp://ftp.ihep.ac.cn/pub/chinese/system/xcingb-2.2.tar.gz取得GB碼版的XCIN文件包。然後

用root登錄,依次執行以下命令:

tar xzvf xcingb-2.2.tar.gz 解壓縮

cd xcingb-2.2 進入目錄

./configure 修改安裝選項

make 編譯

make install 安裝

同樣,如果你能找到該軟體的RPM安裝版,可以用RPM來安裝。

到此為止,我們已經介紹了在命令行下和X-Window中使用中文的方法。可是在文本編輯軟體中依然只能顯示中文,卻無法輸入漢字。要解決這個問題必須自己動手修改兩個地方:

1) 為不同shell設置

若使用Bash Shell:在 /etc/profile 增加下面的內容:

stty cs8 -istrip

stty pass8

export LANG=C

export LC_CTYPE=iso-8859-1

若使用Tcsh Shell:在 /etc/csh.login 或 /etc/csh.cshrc 增加設定如下:

stty cs8 -istrip

stty pass8

setenv LANG C

setenv LC_CTYPE iso-8859-1

2) 在自己主目錄下的.inputrc文件中增加下面的內容:

set convert-meta off

set output-meta on

3.中文的窗口管理器 C-fvwm95

fvwm95就像是Linux英文Win95,中國的Linux用戶一直期望有一天能在中文的窗口下使用Linux。這一願望現在終於成為現實。中國科學院高能物理研究所計算中心的於明儉先生將fvwm95作了漢化,我們終於可以將fvwm95上那些討厭的英文換成漢字了!大家可以到ftp.ihep.ac.cn/pub/chinese/packages/中下載漢化了的fvwm95的源代碼。它所用的字型檔也可以在ftp.ihep.ac.cn/pub/chinese/fonts/pcf/中取得。下載文件中附帶了安裝說明。

4.下載BluePoint Linux Star Preview(藍點預覽版)

藍點預覽版基於Red Hat,內含:中文內核(kernel);控制台中文顯示/輸入;中文Xserver(CXWIN
0.6),X的中文顯示/輸入;漢化Message和相應庫文件,經過中文化和本地化處理的NLS message和庫文件。

a. 中文內核

1. 性能卓越, 內核實現中文支持,佔用資源極少,速度極快.

2. 多語言支持, 同屏顯示多內碼(GB/BIG5).

3. 兼容性極好,內核兼容上層應用程序,最徹底的解決辦法.

4. 支持高解析度, 完全取決與用戶自己的硬體限制.

5. 支持各種字體,支持簡繁字體共14種.

6. 熱鍵切換語言環境(GB/BIG5/EN).

b. 中文Xserver

1. 兼容性好,至少95%的純西文應用軟體可以支持中文處理.

2. 內置輸入和顯示支持,使用非常方便,無須另外安裝輸入模塊.

3. TTF字型檔支持.

4. 支持GB/BIG5內碼.

c. 漢化Message和相應庫文件

1. 提示中文化,開機、關機和常用軟體的消息提示全部中文顯示。

如果需要安裝中文xwindow和輸入法,則需要下載star-cxwin.tar.gz. 如果需要安裝中文控制台及語言環境,
則需要下載star-zhcon.tar.gz 如果需要在控制台上使用24點陣漢字型檔, 請下載star-font24.tar.gz
注意:別忘了下載Install安裝腳本! 在安裝前請仔細閱讀README和 常見問題問答!

安裝方法

1) 創建一個目錄, 將所有下載來的文件放在裡面.

2) 以root身份執行安裝腳本: # bash Install

3) 安裝腳本會先檢查系統的配置,還會自動搜索TTF字型檔, 接下來就是對舊配置文件 進行備份, 最後

開始安裝.

4) 完成安裝, 如果安裝了中文控制台環境, 則需要重新啟動.

六、如何設置音效卡

不用我說,這可是十分要緊的工作!不過如果你安裝了RED HAT Linux,則這項工作就簡單了!

用root登錄系統,運行/usr/sbin/sndconfig。出現選擇音效卡類型的畫面。一般音效卡可以選取Sound Blaster 。

選完音效卡後再設置有關的資源。用TAB鍵結合方向鍵作出選擇後,按OK,如果聽到Linus(Linux的創始人)說話的聲音,就說明音效卡設置成功了。真像老式DOS游戲的音效卡設置……

6. 假如Linux卡住了怎麼解決

Linux系統卡死了解決辦法:
一.
1、按 Ctrl-Alt-F1(F1-F6 一般來說都可以),然後等一會兒,就會切換到 tty,也就是所謂的文字界面。

2、這個時候需要用用戶名密碼登入。注意,可能鍵盤輸入的速度比較慢,不過應該還是可以忍受的。

3、下面在提示符後面輸入 top 回車,這時會看到一張動態的表,上面列出了耗用資源最多的進程。

4、觀察它刷新一兩次,按q退出,然後輸入 kill ,其中的 PID 你可以在 top 裡面看到。這個時候應該會快了不少,如果你發現沒有成功結束掉,就再輸入 kill -KILL ,這次基本上就沒問題了。
二.
1、大家在鍵盤上找,可以找到一個叫做「Sys Rq」的鍵,在台機的鍵盤上通常與 Prt Sc 共鍵,在筆記本可能在其他位置,如 Delete。

2、以台機為例,要使用這種方法需要按住 Alt-Print(Sys Rq),然後依次按下 reisub 這幾個鍵,按完 b 系統就會重啟。更多Linux知識可參考《Linux就該這么學》。

7. 關於linux的問題

鏈接缺乏目標文件

set_msq這個函數在哪個.o文件裡面?編譯的時候加上這個
否則就報錯
總結經驗如下:
undefined reference error錯誤的原因是:
1. 沒有指定對應的庫(.o/.a/.so) 使用了庫中定義的實體,但沒有指定庫(-lXXX)或者沒有指定庫路徑(-LYYY),會導致該錯誤,
2. 連接庫參數的順序不對 在默認情況下,對於-l 使用庫的要求是越是基礎的庫越要寫在後面,無論是靜態還動態
3. gcc/ld 版本不匹配 gcc/ld的版本的兼容性問題,由於gcc2 到 gcc3大版本的兼容性存在問題(其實gcc3.2到3.4也一定程度上存在這樣的問題) 當在高版本機器上使用低版本的機器就會導致這樣的錯誤, 這個問題比較常見在32位的環境上, 另外就在32位環境不小心使用了64位的庫或者反過來64位環境使用了32位的庫.
4. C/C++相互依賴和鏈接 gcc和g++編譯結果的混用需要保證能夠extern "C" 兩邊都可以使用的介面,在我們的64位環境中gcc鏈接g++的庫還需要加上 -lstdc++,具體見前文對於混合編譯的說明
5. 運行期報錯 這個問題基本上是由於程序使用了dlopen方式載入.so, 但.so沒有把所有需要的庫都鏈接上,具體參加上文中對於靜態庫和動態庫混合使用的說明

8. Linux分區問題

怎麼分區要看你裝linux用來干什麼了
個人學習,建議硬碟分出10g來,完全安裝也夠用了就,分區也不用搞那麼多,有\,swap也就行了。
架設伺服器的話,就需要用上你全部的硬碟了,分區也該適當的分清楚點了。

針對不同階段不同水平的linux使用者,給出比較合理的分區方案以供大家參考.

一.linux新人

對於這類linux sir 他們往往是對linux比較好奇,剛剛聽說這個系統,對這個系統沒有任何感性的了解.在這種情況下,他們安裝linux的目的通常是滿足一下好奇心或者是求異的心理,(和當初的我一樣).對於linux能給他們帶來什麼,到底有什麼用,他們沒有明確的目標,也許今天剛剛裝上去,明天就覺得linux是一灘難用的垃圾,於是就跑到他們心愛的Windows系統下去了.

他們即要嘗嘗鮮又不肯馬上輕易舍棄心愛的Windows.所以,對於這樣剛剛接觸linux系統的新人,沒有必要花很多心思去考慮如何把硬碟分區分得合理和高效.對於這些用戶,只需要滿足一下兩點:

1.windows 無論如何要保留著,而且在分區的時候不能破壞原來的系統.

2.確保linux 能裝上並且可以運行.

所以不能破壞原來的分區來重新給整塊硬碟分區,所以常用的方案是採用現有的Windows分區來裝linux系統. 通常使用windows中的最後一個盤,即最後一個分區來安裝linux系統.

假設原來Windows系統中有6個分區: C,D,E,F,G,H通常的建議是把最後一個分區作為安裝linux的根分區.linux完全安裝需要5G左右的空間(指目前比較流行的Redhat8 Redhat9等).千萬不要驚訝linux為何會耗費掉這么多空間,其實linux系統本身並不大,而且可以十分靈活的定製,小到幾M,大到幾G的空間上都可以裝上不同用途,不同性能的linux系統.之所以完全安裝要費5G的空間,是應為這5G中除了基本的系統外還包括了各種的資料庫,OFFICE套件,各種應用程序,各種伺服器程序,各種的桌面管理器等,花幾十塊錢買一套linux系統,你就不必要再花錢買任何常規軟體了. 是不是要把這5G的東西全部裝上呢?

對於初學者,如果硬碟空間不緊張的話我建議全部都裝上,以免今後在安裝其他軟體的時候遇到各種煩人的動態庫倚賴問題和找不到在教材上看到的命令的問題,而初學者又不知道如何裝上那些他們在系統安裝的時候沒有裝上的軟體,這樣就會浪費很多時間走很多彎路.就我而言,我第一次裝linux的時候是裝的Redhat7.1,由於空間不多,(更多原因是抱著Microsoft Windows不放),所以只分了1G的空間給linux,結果又什麼都不懂,在安裝的時候才發現默認安裝空間不夠,結果在不知道KDE是什麼,GNOME是什麼,X是什麼的情況下把KDE和GNOME都勾掉了,只甚下一個X,當我興致勃勃的按書上寫的輸入startx 命令後,屏幕上只出現了一個黑色的X一個灰色的背景,和一個閃著提示符的xterm,不知道該如何才好,胡亂在xterm中敲了一個DOS明令dir,結果被我瞎帽遇到死耗子,還真輸出了些信息.最後不得不重新分了一個比較大的區再把KDE和GNOME裝上.

因此,這里建議初學者第一次裝的時候把所有東西都裝上,以免遇到各種問題,linux不像Windows,它十分的靈活,但是正因為這一點,它也十分麻煩,如果對它沒有一定的了解是很難駕馭它的,所以為了避免麻煩,建議你把所有的東西都裝上,在安裝的時候選擇全部.假如硬碟空間比較緊張,至少也要把安裝程序默認的那些東西裝上,估計會花費不到2G的空間.也可以不選擇"定製",直接選工作站安裝方式.等到將來對系統有了一定的了解,知道了自己的需求,明白了哪些東西是自己想要的,哪些對自己來說是多餘的的時候就可以根據自己的需求重新劃分分區,選擇軟體安裝了. 具體的分區方案如下:

在Windows下把最後一個盤用分區工具刪除,如果最後一個盤空間太小的話就把最後兩個都刪除.刪除後硬碟上就有了多於的空間,就可以開始安裝系統了,一般來說安裝linux需要兩個分區,一個是裝系統文件的跟分區(/),一個是作為虛擬內存的交換分區(swap),這是和Windows不同的,需要注意.所以,我們可以現在Windows下藉助Windows下的分區工具,在剛剛騰出來的空間上建立兩個分區,前面一個根分區,後面一個交換分區,交換分區不用很大,按照官方的說法,虛擬內存應該是實際內存的兩倍大小,或者是在32M和實際內存兩倍這兩個值中選較大值,這是針對內存十分少的老機器的.但是在實際應用中分實際內存的兩倍大小顯然有點浪費,就如我有256M內存,160M 的交換分區,實際使用中swap只用掉3~5M,即使在使用VMware等及費內存的軟體時,swap的耗費量也只有60M,所以分100~200M的swap已經足夠了,不閉按照官方文檔說的分2倍的實際內存大小,如果你有512M內存難道你真的要分1G的交換分區嗎?

注意,如果交換分區的大小小於內存兩倍,安裝程序會有警告,只要忽略警告繼續安裝就可以了,個別版本的linux在交換分區小於實際內存兩倍的情況下,安裝程序將不能通過,比如TURBO linux 6.0 這種情況下可以暫時分一個大點的分區,等裝好後再把分區刪除,劃個小分區掛上.如果發現裝好後交換分區不夠用了也別急,你可以手工再建立交換文件,這將在後面說明.

分區分好後別急著格式化,linux有自己的文件系統,大部分版本的linux都不能裝在Windows的FAT或者NTFS分區上.所以你要做的只是重新啟動系統,啟動電腦,放入安裝光碟,安裝程序會幫你格式化你分出的兩個分區.其中的安裝細節不在本文討論范圍之內,隨便買一本入門教材上面都說的很清楚.

二.linux中級用戶

對於這些linux Sir ,他們已經學會了linux的基本操作,學會了如何安裝軟體,常用linux命令等,也知道了linux系統的基本結構和linux跟文件系統下各個目錄的意義並且知道了光碟上那麼多東西哪些是自己需要的,哪些是自己可能一輩子都不會用到的.於是就想著開始自己定製系統劃分出比較合理的分區大小和數目.下面我想以我目前的硬碟劃分情況為列,給這些linux進階用戶給一個我自認為比較合理的分區方案.

下面是我的硬碟分區情況(我有兩個硬碟,但是系統主要裝在第一個,第二個只用來拷貝數據,裝裝實驗性系統等)

Disk /dev/hda: 255 heads, 63 sectors, 2491 cylinders
Units = cylinders of 16065 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hda1 * 1 392 3148708+ 83 Linux
/dev/hda2 393 589 1582402+ 83 Linux
/dev/hda3 590 981 3148740 7 HPFS/NTFS
/dev/hda4 982 2491 12129075 f Win95 Ext'd (LBA)
/dev/hda5 982 1504 4200966 83 Linux
/dev/hda6 1505 2027 4200966 b Win95 FAT32
/dev/hda7 2028 2289 2104483+ 83 Linux
/dev/hda8 2290 2420 1052226 83 Linux
/dev/hda9 2421 2471 409626 83 Linux
/dev/hda10 2472 2491 160618+ 82 Linux swap

Disk /dev/hdb: 128 heads, 63 sectors, 1023 cylinders
Units = cylinders of 8064 * 512 bytes

Device Boot Start End Blocks Id System
/dev/hdb1 * 1 520 2096608+ b Win95 FAT32
/dev/hdb2 521 910 1572480 83 Linux
/dev/hdb3 911 986 306432 83 Linux
/dev/hdb4 987 1023 149184 83 Linux
[root@gucuiwen root]#

掛裝點和空間使用情況:

[root@gucuiwen root]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/hda1 3.0G 2.0G 839M 71% /
/dev/hda2 1.5G 990M 531M 66% /mnt/hda2
/dev/hda5 3.9G 2.8G 986M 75% /mnt/hda5
/dev/hda6 4.0G 1.6G 2.4G 40% /mnt/hda6
/dev/hda7 2.0G 1.2G 745M 62% /home
/dev/hda8 1011M 176M 784M 19% /mnt/hda8
/dev/hdb1 2.0G 1.8G 207M 90% /mnt/hdb1
/dev/hdb2 1.5G 185M 1.1G 14% /mnt/hdb2
none 125M 0 124M 0% /dev/shm
/dev/hda9 387M 180M 188M 49% /var

我把第一個硬碟分了三個主分區,以便在安裝多套系統的時候互不影響.至於為什麼要分三個主分區,我在<充份利用多個主分區安裝多套系統>一文中已經說過.其好處是很多的.詳見:

http://go.6to23.com/gucuiwen/linux

我的硬碟雖然只有2OG,但是我卻分了9個分區,這也是為了管理方便經過多次劃分後做出的選擇. 首先我把linux的跟(/)裝在第一個主分區hda1.這個分區大小為3G,這上麵包括:
/boot
/bin
/dev
/etc
/lib
/sbin
/usr

還有空目錄和掛裝點:
/opt
/mnt
/initrd
/var
/home
/proc
/misc

由於/boot /bin /dev /etc /lib /sbin 下的東西都比較小,沒有必要單獨劃分分區掛裝他們,事實上把這些目錄單獨劃分區掛裝反而不利,應為這些目錄中放著系統啟動時的關鍵信息和文件,系統啟動之初卻只掛裝上/分區,因此,萬一其中的某一個分掛裝失敗系統將不能正常啟動.比如/etc目錄中存放著系統軟的硬體配置信息,包括分區的掛裝點分區類型等配置信息,系統啟動的時候需要讀取這些信息,如果把/etc單獨放在一個小的分區上,系統啟動的時候到哪裡去讀分區的掛裝點信息呢?類似的/sbin /dev等必需放在根分區上. 只有/boot中存放的是系統內核和引導工具,某些情況下為了解決一些老主板不支持大硬碟的情況下,才單獨在硬碟1024柱面以內分一個小分區裝/boot的內容.不過目前的主板大多不存在這個問題.另外/usr下的內容一般不經常改變,因此,我也把它放在/目錄上.可以看出,我是把所有文件大小不經常變化的,不會引起文件系統碎的所有東西裝在/分區上面.

另外,我分了2G的空間存放我自己平時下載的圖片和資料以及軟體等.掛裝在了/home目錄,重裝系統的時候不動這個分區,就算格式化也只格掉 / 分區, /var 和swap分區,其他分區上的內容都可以保留,在裝系統的時候再掛裝到系統里.

我的第二個主分區hda2暫時放著些臨時文件,平時主要是用來裝一些實驗性的系統的,比如出了一個新的linux版本,我就把它裝在這個分區里體驗,而swap /home可以和原來那套系統公用.

我的第三個主分區大小3G,我裝了WIN2K系統,由於現在Windows系統使用的比較少了,(主要是給沒有電腦的同學用)所以只分派了兩個區,一個安裝系統和常規的軟體,就是第三個主分區 hda3,文件系統格式為NTFS.另外一個是一個邏輯分區hda6大小為4G,文件系統為FAT32,主要用來零時性的裝裝電影啊音樂啊,虛擬光碟印象GHOST印象文件等.這兩個區在Windows下分別顯示為C盤和D盤.

下面說說其他的幾個邏輯分區:

分區設備名 掛裝點 文件系統 大小 作用
/dev/hda5 /mnt/hda5 ext3 4G 存放音樂,電影等大而固定不變的文件
/dev/hda6 /mnt/hda6 FAT32 4G Windows下的D盤
/dev/hda7 /home ext3 2G 我的文檔,下載的軟體,書籍,圖片等
/dev/hda8 /mnt/hda8 ext3 1G 編譯大型軟體用的零時分區.
/dev/hda9 /var ext3 400M 系統中經常變化大小的日誌文件.
/dev/hda10 swap swap 160M 交換分區

對於已經進階的linux用戶,你可能不原意把硬碟分的那麼細,甚至不分/home, /usr, /usr/local 但是/var是無論如何都應該分一下的.因為系統的所有日誌文件,PID文件,RPM資料庫文件等等,這些大小經常發聲變化的文件都放在這個目錄下,所以這個目錄是最容易產生碎片的.如果不單獨分一個分區而混在/一起的話,很容易弄亂/文件系統,使系統性能下將,特別是一個多用戶環境和一個對外服務的網站主機系統,更應該如此,對於個人用戶這個分區有300~500M就可以了.

還有/tmp也是一個文件大小經常變化的目錄,但是對於個人用戶來說,裡面內容很少,單獨分一個區也沒必要,但和/分區混在一起又總覺得有一種"一滴鼻涕毀一鍋粥"的感覺.我的解決方案是把原來的 /tmp目錄刪除,而作一個到 /var/tmp目錄的鏈接,就像系統本身就有的 /usr/tmp目錄一樣. 還有 /root 目錄大小也經常發生變化,我也把他刪除,作了一個到 /var/root的鏈接,這樣,系統中所有大小經常變化,易引起文件系統碎片的東西就全歸到 /var 分區上,這就叫"爛也只爛一個蘋果",以後可以只整理 /var 分區.

如何整理呢?通常我用一種最簡單的辦法:

用單用戶模式啟動系統 LILO: linux single 如果是用GRUB引導,在啟動時按字母 a,然後追加內核參數 linux single (這種模式不掛裝除/以外的其他文件系統,因此可以安全的對其他分區操作.) 然後刪掉一些你認為沒用的日誌文件,再把/var 全考到其他地方去,接下來刪除原來/var 下的所由內容,最後把剛才復制的 /var 分區下的內容拷貝回去,經過這么搬動一次後,文件系統上的碎片就可以消除.ext3本來是一個碎量很少的優秀文件系統,據說比NTFS還要少的多,因此沒有必要經常這么做.

這里要提醒一點,把/tmp目錄刪除鏈接到 /var/tmp目錄後一定要把/var/tmp目錄的許可權設置為 777否則普通用戶將無法啟動X.

如下圖:

[root@gucuiwen /]# ll
total 189
drwxr-xr-x 2 root root 4096 2月 3 02:21 bin
drwxr-xr-x 3 root root 4096 2月 2 18:36 boot
drwxr-xr-x 20 root root 118784 2月 11 20:10 dev
drwxr-xr-x 59 root root 4096 2月 11 20:10 etc
drwxr-xr-x 22 root root 4096 2月 10 16:53 home
drwxr-xr-x 2 root root 4096 6月 22 2001 initrd
drwxr-xr-x 7 root root 4096 2月 6 23:29 lib
drwx------ 2 root root 16384 2月 3 01:54 lost+found
drwxr-xr-x 2 root root 4096 8月 27 2002 misc
drwxr-xr-x 12 root root 4096 2月 8 20:57 mnt
drwxr-xr-x 2 root root 4096 8月 24 1999 opt
dr-xr-xr-x 73 root root 0 2月 12 2004 proc
lrwxrwxrwx 1 root root 10 2月 2 18:29 root -> /var/root/
drwxr-xr-x 2 root root 8192 2月 6 23:29 sbin
lrwxrwxrwx 1 root root 9 2月 2 18:29 tmp -> /var/tmp/
drwxr-xr-x 17 root root 4096 2月 2 20:16 usr
drwxr-xr-x 23 root root 1024 2月 7 21:57 var
drwxr-xr-x 8 root root 4096 2月 6 23:25 www
[root@gucuiwen /]# ll -d /var/tmp
drwxrwxrwt 14 root root 1024 2月 12 01:04 /var/tmp
[root@gucuiwen /]#

當然由於很多用戶還舍棄不下Windows系統,並且大部份時間都在用Windows系統,所以可以把我格式化成ext3格式的 hda5 hda7等分區格式化成fat32文件系統,這樣在Windows和linux下都可以很方便的使用這些分區,兩者兼顧.這里的方案也只是一個範例,用戶可以根據自己硬碟的實際大小來劃分.

三.系統管理員和網站管理員

對於這些用戶,我想也不必要多說了,他們通常都是玩轉系統的老手,把linux系統把玩的隨心所欲,拿捏的恰到好處,他們總能根據實際需求定製出一個完美的方案.

對於一個伺服器上的系統 /var /tmp /usr /home等目錄是肯定要單獨分區的,對於大型的站點,每天的系統日誌都有好幾百M,單獨分一個幾G大的/var分區甚至單獨分派一個硬碟都是不為過的./tmp下的文件也不會像個人用戶的系統那樣只有幾M的文件,所以對於一個伺服器系統,分一個/tmp分區或者單獨掛一個硬碟是每個系統管理員都會做的事情.除了這些目錄外通常還需要分一個/usr/local分區,因為伺服器上通常需要安裝大量的軟體.

對於大型的FTP伺服器,HTTP伺服器和代理伺服器等,通常還要單獨劃出分區分區或者分派硬碟來存放文件.這些內容對於初學者來說不會遇到,所以就不多說了.

附: linux 分區的常見問題

1.只有一個分區可以裝linux嗎?

完全可以,linux的虛擬內存並不一定要單獨分一個swap分區,也可以像Windows系統那樣,在系統所在的分區劃出空間來做虛擬內存.只是單獨分出一個分區來作swap的話性能比在系統分區上劃空間做swap要好.對於某些版本的linux,如果沒有swap分區,安裝程序會不允許安裝,對於這些版本,可以先劃一個大的區或暫時用一個沒有用的Windows分區做swap,騙過安裝程序,然後再裝.

2.如何在一個分區上劃出空間來做swap?

選一個有足夠空間的分區用如下命令:

#dd if=/dev/zero of=swapfile bs=1k count=50000

這樣就得到了一個大小為50M的連續文件(作swap的文件必需連續) 然後把這個50M的文件"格式化"成swap文件:

#mkswap swapfile

最後啟用這個swap文件

#swapon swapfile

用free命令查看一下,是不是 swap多了50M呢? 可以把這個命令寫進 /etc/rc.d/rc.local 中,讓系統啟動的時候自動開啟swap.

如果是把整個分區做swap可以這樣:
#mkswap /dev/hda? (?為具體的分區號)
#swapon /dev/hda?

3.linux最多支持多少個swap分區?

16個 (新版的可能支持更多)

4.如何備份linux系統?

專業的網站和多用戶系統通常用磁帶機等專用備份設備,對於個人用戶最簡單的辦法是直接拷貝一份到空的分區上,等原系統壞了就用備份系統,給內核添加root=?參數就可以啟動備份系統.比如你把系統備份在 /dev/hda6上,給內核參數 LILO:linux root=/dev/hda6 就可以啟動備份系統,也可以直接寫進lilo.conf,達到兩套linux系統共存一塊硬碟同時使用的目的.另外目前最新版本的GHOST已經可以支持EXT3文件系統的備份.

5.如何"格式化"一個分區?

其實,我們通常所說的"格式化",真正的含義是創建文件系統,"格式化"的最初的意思是我們平時說的"低級格式化".只有"低級格式化"才是真正的"格式化",而平時大家說的"格式化"或者"高級格式化"只是創見文件系統,由於微軟的系統里一直不區分這兩個概念的含義,所以謊言重復一千遍就成了真理,把"創見文件系統"統一說成了"格式化".

在linux系統里可以用 mkfs (make filesysge 創建文件系統) 來"格式化"一個分區.

#mkfs -t ext2 /dev/hda1

#mkfs.ext2 /dev/hda1
把 /dev/hda1"格式化"成ext2格式
#mkfs -t ext3 -c /dev/hda1

#mkfs.ext3 -c /dev/hda1
把 /dev/hda1"格式化"成ext3格式,並監查硬碟壞塊
#mkfs -t vfat /dev/hda1

#mkfs.vfat /dev/hda1
把 /dev/hda1"格式化"成FAT32格式
#mkfs -t msdos /dev/hda1

#mkfs.msdos /dev/hda1
把 /dev/hda1"格式化"成FAT16或FAT12格式(具體由容量決定)
#mkfs -t minix /dev/hda1

#mkfs.minix /dev/hda1
把 /dev/hda1"格式化"成minix格式
對於軟盤可以這樣:
# fdformat /dev/fd0H1440 (注意,這里真正的格式化,即所謂的低級格式化)
#mkfs.msdos /dev/df0

9. linux的相關問題

1 test -d
文件測試

test命令也可以用於檢查文件的狀態

-e 文件存在則為真

-r 文件存在並且可讀則為真

-w 文件存在並且可寫則為真

-x 文件存在並且可執行則為真

-s 文件存在並且至少有一個字元則為真

-d 文件存在並且為目錄則為真

-f 文件存在並且為普通文件則為真

-c 文件存在並且為字元型文件則為真

-b 文件存在並且為塊特殊文件則為真

-a並且 -o或者 !非
2 能為myfile1更新時間的命令____touch
3 linux中的歸檔解檔命令____tar
4 編譯是優先順序的取值范圍是:______,默認的優先順序是____
中進程的優先極是由進程的nice值決定的,值越小,優先順序越高

5 linux中標准設備文件有哪些.分別用什麼符號表示.
----------------------------------------------------------------------
主設備號 設備類型
次設備號=文件名 簡要說明
----------------------------------------------------------------------

0 未命名設備(例如:掛載的非設備)
0 = 未空設備號保留

1 char 內存設備
1 = /dev/mem 直接存取物理內存
2 = /dev/kmem 存取經過內核虛擬之後的內存
3 = /dev/null 空設備。任何寫入都將被直接丟棄,任何讀取都將得到EOF。
4 = /dev/port 存取 I/O 埠
5 = /dev/zero 零位元組源,只能讀取到無限多的零位元組。
7 = /dev/full 滿設備。任何寫入都將失敗,並把errno設為ENOSPC以表示沒有剩餘空間。
8 = /dev/random 隨機數發生器。完全由用戶的輸入來產生隨機數。
如果用戶停止所有動作,則停止產生新的隨機數。
9 = /dev/urandom 更快,但是不夠安全的隨機數發生器。盡可能由用戶的輸入來產生隨機數,
如果用戶停止所有動作,則把已經產生的隨機數做為種子來產生新的隨機數。
10 = /dev/aio 非同步 I/O 通知介面
11 = /dev/kmsg 任何對該文件的寫入都將作為 printk 的輸出

1 block RAM disk
0 = /dev/ram0 第1個 RAM disk (initrd只能使用ram0)
1 = /dev/ram1 第2個 RAM disk
...
200 = /dev/ram200 第200個 RAM disk

4 char TTY(終端)設備
0 = /dev/tty0 當前虛擬控制台
1 = /dev/tty1 第1個虛擬控制台
...
63 = /dev/tty63 第63個虛擬控制台

4 block 如果根文件系統以是以只讀方式掛載的,那麼就不可能創建真正的設備節點,
此時就使用該設備作為動態分配的主(major)設備的別名
0 = /dev/root

5 char 其他 TTY 設備
0 = /dev/tty 當前 TTY 設備
1 = /dev/console 系統控制台
2 = /dev/ptmx 所有 PTY master 的復用器

7 char 虛擬控制台捕捉設備(這些設備既允許讀也允許寫)
0 = /dev/vcs 當前虛擬控制台(vc)的文本內容
1 = /dev/vcs1 tty1 的文本內容
...
63 = /dev/vcs63 tty63 的文本內容
128 = /dev/vcsa 當前虛擬控制台(vc)的文本/屬性內容
129 = /dev/vcsa1 tty1 的文本/屬性內容
...
191 = /dev/vcsa63 tty63 的文本/屬性內容代碼:
7 block 回環設備(用一個普通的磁碟文件來模擬一個塊設備)
對回環設備的綁定由 mount(8) 或 losetup(8) 處理
0 = /dev/loop0 第1個回環設備
1 = /dev/loop1 第2個回環設備
...

8 block SCSI 磁碟(0-15)
0 = /dev/sda 第1個 SCSI 磁碟(整個磁碟)
16 = /dev/sdb 第2個 SCSI 磁碟(整個磁碟)
32 = /dev/sdc 第3個 SCSI 磁碟(整個磁碟)
...
240 = /dev/sdp 第16個 SCSI 磁碟(整個磁碟)

分區表示方法如下(以第3個 SCSI 磁碟為例)
33 = /dev/sdc1 第1個分區
34 = /dev/sdc2 第2個分區
...
47 = /dev/sdc15 第15個分區
對於Linux/i386來說,分區1-4是主分區,5-15是邏輯分區。

9 block Metadisk(RAID)設備
0 = /dev/md0 第1組 metadisk
1 = /dev/md1 第2組 metadisk
...
metadisk 驅動用於將同一個文件系統分割到多個物理磁碟上。

10 char 非串口滑鼠,各種雜項設備和特性
1 = /dev/psaux PS/2滑鼠
131 = /dev/temperature 機器內部溫度
134 = /dev/apm_bios APM(高級電源管理) BIOS
135 = /dev/rtc 實時時鍾(Real Time Clock)
144 = /dev/nvram 非易失配置 RAM
162 = /dev/smbus 系統管理匯流排(System Management Bus)
164 = /dev/ipmo Intel的智能平台管理(Intelligent Platform Management)介面
173 = /dev/ipmikcs 智能平台管理(Intelligent Platform Management)介面
175 = /dev/agpgart AGP圖形地址重映射表(Graphics Address Remapping Table)
182 = /dev/perfctr 性能監視計數器
183 = /dev/hwrng 通用硬體隨機數發生器
184 = /dev/cpu/microcode CPU微代碼更新介面
186 = /dev/atomicps 進程狀態數據的原子快照
188 = /dev/smbusbios SMBus(系統管理匯流排) BIOS
200 = /dev/net/tun TAP/TUN 網路設備(TAP/TUN以軟體的方式實現了網路設備)
TAP模擬了乙太網幀(第二層),TUN模擬了IP包(第三層)。
202 = /dev/emd/ctl 增強型 Metadisk RAID (EMD) 控制器
220 = /dev/mptctl Message passing technology (MPT) control
223 = /dev/input/uinput 用戶層輸入設備驅動支持
227 = /dev/mcelog X86_64 Machine Check Exception driver
228 = /dev/hpet HPET driver
229 = /dev/fuse Fuse(用戶空間的虛擬文件系統)
231 = /dev/snapshot 系統內存快照
232 = /dev/kvm 基於內核的虛構機(基於AMD SVM和Intel VT硬體虛擬技術)

11 block SCSI CD-ROM 設備
0 = /dev/scd0 第1個 SCSI CD-ROM
1 = /dev/scd1 第2個 SCSI CD-ROM
...代碼:

13 char 核心輸入設備
32 = /dev/input/mouse0 第1個滑鼠
33 = /dev/input/mouse1 第2個滑鼠
...
62 = /dev/input/mouse30 第31個滑鼠
63 = /dev/input/mice 所有滑鼠的統一
64 = /dev/input/event0 第1個事件隊列
65 = /dev/input/event1 第2個事件隊列
...
95 = /dev/input/event1 第32個事件隊列

21 char 通用 SCSI 設備(通常是SCSI光碟機)
0 = /dev/sg0 第1個通用 SCSI 設備
1 = /dev/sg1 第2個通用 SCSI 設備
...

29 char 通用幀緩沖(frame buffer)設備
0 = /dev/fb0 第1個幀緩沖設備
1 = /dev/fb1 第2個幀緩沖設備
...
31 = /dev/fb31 第32個幀緩沖設備

30 char iBCS-2 兼容設備
0 = /dev/socksys 套接字訪問介面
1 = /dev/spx SVR3 本地 X 介面
32 = /dev/inet/ip 網路訪問介面
33 = /dev/inet/icmp
34 = /dev/inet/ggp
35 = /dev/inet/ipip
36 = /dev/inet/tcp
37 = /dev/inet/egp
38 = /dev/inet/pup
39 = /dev/inet/udp
40 = /dev/inet/idp
41 = /dev/inet/rawip

此外,iBCS-2 還需要下面的連接必須存在
/dev/ip -> /dev/inet/ip
/dev/icmp -> /dev/inet/icmp
/dev/ggp -> /dev/inet/ggp
/dev/ipip -> /dev/inet/ipip
/dev/tcp -> /dev/inet/tcp
/dev/egp -> /dev/inet/egp
/dev/pup -> /dev/inet/pup
/dev/udp -> /dev/inet/udp
/dev/idp -> /dev/inet/idp
/dev/rawip -> /dev/inet/rawip
/dev/inet/arp -> /dev/inet/udp
/dev/inet/rip -> /dev/inet/udp
/dev/nfsd -> /dev/socksys
/dev/X0R -> /dev/null代碼:
36 char Netlink 支持
0 = /dev/route 路由, 設備更新, kernel to user
3 = /dev/fwmonitor Firewall packet 復制

59 char sf 防火牆模塊
0 = /dev/firewall 與 sf 內核模塊通信

65 block SCSI 磁碟(16-31)
0 = /dev/sdq 第17個 SCSI 磁碟(整個磁碟)
16 = /dev/sdr 第18個 SCSI 磁碟(整個磁碟)
32 = /dev/sds 第19個 SCSI 磁碟(整個磁碟)
...
240 = /dev/sdaf 第32個 SCSI 磁碟(整個磁碟)

66 block SCSI 磁碟(32-47)
0 = /dev/sdag 第33個 SCSI 磁碟(整個磁碟)
16 = /dev/sdah 第34個 SCSI 磁碟(整個磁碟)
32 = /dev/sdai 第35個 SCSI 磁碟(整個磁碟)
...
240 = /dev/sdav 第48個 SCSI 磁碟(整個磁碟)

89 char I2C 匯流排介面
0 = /dev/i2c-0 第1個 I2C 適配器
1 = /dev/i2c-1 第2個 I2C 適配器
...

98 block 用戶模式下的虛擬塊設備(分區處理方式與 SCSI 磁碟相同)
0 = /dev/ubda 第1個用戶模式塊設備
16 = /dev/udbb 第2個用戶模式塊設備
...

103 block 審計(Audit)設備
0 = /dev/audit 審計(Audit)設備

128-135 char Unix98 PTY master

這些設備不應當存在設備節點,而應當通過 /dev/ptmx 介面訪問。

136-143 char Unix98 PTY slave
這些設備節點是自動生成的(伴有適當的許可權和模式),不能手動創建。
方法是通過使用適當的 mount 選項(通常是:mode=0620,gid=<"tty"組的gid>)
將 devpts 文件系統掛載到 /dev/pts 目錄即可。
0 = /dev/pts/0 第1個 Unix98 PTY slave
1 = /dev/pts/1 第2個 Unix98 PTY slave
...代碼:
153 block Enhanced Metadisk RAID (EMD) 存儲單元(分區處理方式與 SCSI 磁碟相同)
0 = /dev/emd/0 第1個存儲單元
1 = /dev/emd/0p1 第1個存儲單元的第1個分區
2 = /dev/emd/0p2 第1個存儲單元的第2個分區
...
15 = /dev/emd/0p15 第1個存儲單元的第15個分區

16 = /dev/emd/1 第2個存儲單元
32 = /dev/emd/2 第3個存儲單元
...
240 = /dev/emd/15 第16個存儲單元

180 char USB 字元設備
96 = /dev/usb/hiddev0 第1個USB人機界面設備(滑鼠/鍵盤/游戲桿/手寫版等人操作計算機的設備)
...
111 = /dev/usb/hiddev15 第16個USB人機界面設備

180 block USB 塊設備(U盤之類)
0 = /dev/uba 第1個USB 塊設備
8 = /dev/ubb 第2個USB 塊設備
16 = /dev/ubc 第3個USB 塊設備
...

192 char 內核 profiling 介面
0 = /dev/profile Profiling 控制設備
1 = /dev/profile0 CPU 0 的 Profiling 設備
2 = /dev/profile1 CPU 1 的 Profiling 設備
...

193 char 內核事件跟蹤介面
0 = /dev/trace 跟蹤控制設備
1 = /dev/trace0 CPU 0 的跟蹤設備
2 = /dev/trace1 CPU 1 的跟蹤設備
...

195 char Nvidia 圖形設備(比如顯卡)
0 = /dev/nvidia0 第1個 Nvidia 卡
1 = /dev/nvidia1 第2個 Nvidia 卡
...
255 = /dev/nvidiactl Nvidia 卡控制設備

202 char 特定於CPU模式的寄存器(model-specific register,MSR)
0 = /dev/cpu/0/msr CPU 0 的 MSRs
1 = /dev/cpu/1/msr CPU 1 的 MSRs
...

203 char CPU CPUID 信息
0 = /dev/cpu/0/cpuid CPU 0 的 CPUID
1 = /dev/cpu/1/cpuid CPU 1 的 CPUID
...代碼:
===================================================================
這部分詳細說明一些應該或可能存在於 /dev 目錄之外的文件。
鏈接最好使用與這里完全相同的格式(絕對路徑或相對路徑)。
究竟是使用硬鏈接(hard)還是軟連接(symbolic)取決於不同的設備。

必須的鏈接
必須在所有的系統上都存在這些連接:
鏈接 目標 鏈接類型 簡要說明
/dev/fd /proc/self/fd symbolic 文件描述府
/dev/stdin fd/0 symbolic 標准輸入文件描述府
/dev/stdout fd/1 symbolic 標准輸出文件描述符
/dev/stderr fd/2 symbolic 標准錯誤文件描述符
/dev/nfsd socksys symbolic 僅為 iBCS-2 所必須
/dev/X0R null symbolic 僅為 iBCS-2 所必須
[注意] /dev/X0R 是 <字母 X>-<數字 0>-<字母 R>

推薦的鏈接
推薦在所有的系統上都存在這些連接:
鏈接 目標 鏈接類型 簡要說明
/dev/core /proc/kcore symbolic 為了向後兼容
/dev/ramdisk ram0 symbolic 為了向後兼容
/dev/ftape qft0 symbolic 為了向後兼容
/dev/bttv0 video0 symbolic 為了向後兼容
/dev/radio radio0 symbolic 為了向後兼容
/dev/i2o* /dev/i2o/* symbolic 為了向後兼容
/dev/scd? sr? hard 代替 SCSI CD-ROM 的名字

本地定義的鏈接
下面的鏈接很可能需要根據機器的實際硬體配置創建其中的一部分甚至全部。
這些鏈接僅僅是為了迎合習慣用法,它們既非必須也非推薦。
鏈接 目標 鏈接類型 簡要說明
/dev/mouse mouse port symbolic 當前滑鼠
/dev/tape tape device symbolic 當前磁帶
/dev/cdrom CD-ROM device symbolic 當前CD-ROM
/dev/cdwriter CD-writer symbolic 當前CD-writer
/dev/scanner scanner symbolic 當前掃描儀
/dev/modem modem port symbolic 當前數據機
/dev/root root device symbolic 當前根文件系統所在設備
/dev/swap swap device symbolic 當前swap所在設備

/dev/modem 不應當用於能夠同時支持呼入和呼出的modem,因為往往會導致鎖文件問題。
如果存在 /dev/modem ,那麼它應當指向一個恰當的主 TTY 設備。

對於SCSI設備,
/dev/tape 和 /dev/cdrom 應該分別指向"cooked"設備 /dev/st* 和 /dev/sr* ;
而 /dev/cdwriter 和 /dev/scanner 應當分別指向恰當的 /dev/sg* 。

/dev/mouse 可以指向一個主串列 TTY 設備、一個硬體滑鼠、
或者一個對應滑鼠驅動程序的套接字(例如 /dev/gpmdata)。

套接字和管道
持久套接字和命名管道可以存在於 /dev 中。常見的有:

/dev/printer socket lpd 本地套接字
/dev/log socket syslog 本地套接字
/dev/gpmdata socket gpm 滑鼠多路復用器(multiplexer)
/dev/gpmctl socket (LFS-LiveCD中出現)
/dev/initctl fifo pipe init 監聽它並從中獲取信息(用戶與 init 進程交互的通道)

掛載點
以下名稱被保留用於掛載特殊的文件系統。
這些特殊的文件系統只提供內核界面而不提供標準的設備節點。

/dev/pts devpts PTY slave 文件系統
/dev/shm tmpfs 提供對 POSIX 共享內存的直接訪問
請參考

10. Linux系統工程師面試題附答案

一、簡答題

1.如何將本地80埠的請求轉發到8080埠,當前主機IP為192.168.16.1,其中本地網卡eth0:

答:# iptables -t nat -A PREROUTING -d 192.168.16.1 -p tcp --dport 80 -j DNAT --to 192.168.16.1:8080

或 者:# iptables -t nat -A PREROUTING -i eth0 -d 192.168.16.1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080

2.什麼是NAT,常見分為那幾種,DNAT與SNAT有什麼不同,應用事例有那些?

SNAT,DNAT,MASQUERADE都是NAT。

MASQUERADE是SNAT的一個特例。

SNAT是指在數據包從網卡發送出去的時候,把數據包中的源地址部分替換為指定的IP,這樣,接收方就認為數據包的來源是被替換的那個IP的主機。

MASQUERADE是用發送數據的網卡上的IP來替換源IP,因此,對於那些IP不固定的場合,比如撥號網路或者通過dhcp分配IP的情況下,就得用MASQUERADE。

DNAT,就是指數據包從網卡發送出去的時候,修改數據包中的目的IP,表現為如果你想訪問A,可是因為網關做了DNAT,把所有訪問A的數據包的目的IP全部修改為B,那麼,你實際上訪問的是B

因為,路由是按照目的地址來選擇的,因此,DNAT是在PREROUTING鏈上來進行的,而SNAT是在數據包發送出去的時候才進行,因此是在POSTROUTING鏈上進行的。

3.包過濾防火牆與代理應用防火牆有什麼區別,能列舉幾種相應的產品嗎?

4.iptables是否支持time時間控制用戶行為,如有請寫出具體操作步驟。

5.說出你知道的幾種linux/unix發行版本。

Redhat、CentOS、Fedora、SuSE、Slackware、Gentoo、Debian、Ubuntu、FreeBSD、Solaris、SCO、AIX、HP…

6.列出linux常見打包工具並寫相應解壓縮參數(至少三種)

7.計劃每星期天早8點伺服器定時重啟,如何實現?

8.列出作為完整郵件系統的軟體,至少二類。

9,當用戶在瀏覽器當中輸入一個網站,說說計算機對dns解釋經過那些流程?註:本機跟本地dns還沒有緩存

答:

a.用戶輸入網址到瀏覽器;

b.瀏覽器發出DNS請求信息;

c.計算機首先查詢本機HOST文件,看是否存在,存在直接返回結果,不存在,繼續下一步;

d.計算機按照本地DNS的順序,向合法dns伺服器查詢IP結果;

e.合法dns返回dns結果給本地dns,本地dns並緩存本結果,直到TTL過期,才再次查詢此結果;

f.返回IP結果給瀏覽器;

g.瀏覽器根據IP信息,獲取頁面;

10,我們都知道,dns既採用了tcp協議,又採用了udp協議,什麼時候採用tcp協議?什麼時候採用udp協議?為什麼要這么設計?

答:這個題需要理解的東西比較的多,分一下幾個方面

a,從數據包大小上分:UDP的最大包長度是65507個位元組,響應dns查詢的時候數據包長度超過512個位元組,而返回的只要前512個位元組,這時名字 解釋器通常使用TCP從發原來的請求。

b,從協議本身來分:大部分的情況下使用UDP協議,大家都知道UDP協議是一種不可靠的協議,dns不像其它的使用UDP的Internet應用 (如:TFTP,BOOTP和SNMP等),大部分集中在區域網,dns查詢和響應需要經過廣域網,分組丟失和往返時間的不確定性在廣域網比區域網上更 大,這就要求dns客戶端需要好的重傳和超時演算法,這時候使用TCP。

11,一個EXT3的文件分區,當使用touch test.file命令創建一個新文件時報錯,報錯的信息是提示磁碟已滿,但是採用df -h命令查看磁碟大小時,只使用了,60%的磁碟空間,為什麼會出現這個情況,說說你的理由。

答:兩種情況,一種是磁碟配額問題,另外一種就是EXT3文件系統的設計不適合很多小文件跟大文件的一種文件格式,出現很多小文件時,容易導致inode 耗盡了。

12,我們都知道FTP協議有兩種工作模式,說說它們的大概的一個工作流程?

FTP兩種工作模式:主動模式(Active FTP)和被動模式(Passive FTP)

在主動模式下,FTP客戶端隨機開啟一個大於1024的埠N向伺服器的21號埠發起連接,然後開放N+1號埠進行監聽,並向伺服器發出PORT N+1命令。

伺服器接收到命令後,會用其本地的FTP數據埠(通常是20)來連接客戶端指定的埠N+1,進行數據傳輸。

在被動模式下,FTP客戶端隨機開啟一個大於1024的埠N向伺服器的21號埠發起連接,同時會開啟N+1號埠。然後向伺服器發送PASV命令,通 知伺服器自己處於被動模式。伺服器收到命令後,會開放一個大於1024的埠P進行監聽,然後用PORT P命令通知客戶端,自己的數據埠是P。客戶端收到命令後,會通過N+1號埠連接伺服器的埠P,然後在兩個埠之間進行數據傳輸。

總的來說,主動模式的FTP是指伺服器主動連接客戶端的數據埠,被動模式的.FTP是指伺服器被動地等待客戶端連接自己的數據埠。

被動模式的FTP通常用在處於防火牆之後的FTP客戶訪問外界FTp伺服器的情況,因為在這種情況下,防火牆通常配置為不允許外界訪問防火牆之後主機,而只允許由防火牆之後的主機發起的連接請求通過。

因此,在這種情況下不能使用主動模式的FTP傳輸,而被動模式的FTP可以良好的工作。

13.編寫個shell腳本將當前目錄下大於10K的文件轉移到/tmp目錄下

Q:主要是考察awk 這些的用法

#/bin/sh

#Programm :

# Using for move currently directory to /tmp

for FileName in `ls -l |awk ‘$5>10240 {print $9}’`

do

mv $FileName /tmp

done

ls -la /tmp

echo “Done! ”

14.apache有幾種工作模式,分別介紹下其特點,並說明什麼情況下採用不同的工作模式?

apache主要有兩種工作模式:prefork(apache的默認安裝模式)和worker(可以在編譯的時候加參數–with-mpm- worker選擇工作模式)

熱點內容
bilibili不能緩存 發布:2024-05-21 03:31:14 瀏覽:617
解壓剃發 發布:2024-05-21 03:16:27 瀏覽:641
伺服器怎麼連接到電腦顯示屏上 發布:2024-05-21 02:38:21 瀏覽:286
織夢安裝資料庫連接失敗 發布:2024-05-21 02:37:45 瀏覽:259
python編程入門經典pdf 發布:2024-05-21 02:31:45 瀏覽:7
arm編譯添加驅動 發布:2024-05-21 02:02:28 瀏覽:476
安卓設置頁面是怎麼 發布:2024-05-21 01:32:51 瀏覽:521
學生成績管理系統資料庫設計 發布:2024-05-21 01:14:41 瀏覽:43
我的世界什麼指令直接出現伺服器 發布:2024-05-21 01:10:00 瀏覽:397
星等演算法 發布:2024-05-21 00:53:06 瀏覽:509