史萊姆論壇

史萊姆論壇 (http://forum.slime.com.tw/)
-   作業系統操作技術文件 (http://forum.slime.com.tw/f128.html)
-   -   linux和windows雙系統搭建 (http://forum.slime.com.tw/thread172039.html)

psac 2006-04-04 08:47 AM

linux和windows雙系統搭建
 
何在裝有windows的基礎上裝Linux,是不是移除其中的一個分區即可

我的硬碟40G,共分了五個區,格式都是FAT32,其中C碟裝了win2003,比如說我想在D碟上裝Linux,是不是移除這個分區即可,把Linux安裝光碟放在光碟安裝,到要分區的時候,它會自動識別D碟並要求把D碟分區並格式化,而不損害到除了D碟的其它的分區。我特別怕把硬碟的其它資料弄丟,所以裝Linux特別謹慎,請各位耐心的給我解答一下,先謝謝啦



linux和windows雙系統搭建



雖然Linux越來越受人關注,用戶越來越多,但對於我們普通的各位來說,一般是不會用它來替代Windows的,而是讓兩個系統共存,一個用來套用、娛樂,一個用來教學。但是眾所周知,Linux向來就是Windows的冤家,讓他們和睦相處,不出問題也非易事,下面筆者就以Redhat Linux 9.0和Windows XP為例對二者共存涉及的一些問題作些說明:

一. 安裝
1.首先假設你已經安裝好了Windows XP,並且分區格式是FAT32;

2.進行安裝Redhat之前的籌備工作:用一些分區工具(如PQmagic)在你的硬碟上騰出一些可用空間(指尚未劃分的空間,既沒有指定文件系統,又沒有分配磁碟代號),空間的大小根據你選項的Redhat的安裝方式來定,一般5G就足夠了;

3.用Redhat 的安裝光碟啟始系統,根據提示先後組態完語言、鍵盤、滑鼠、昇級檢查、安裝檔案類型頁面;

4.進入磁牒分區設定頁面後,選項「自動分區」,在接下來的頁面中選項「儲存所有分區,使用可用空間」;點擊「下一步」之後安裝程序會為你新增好Linux系統所需的各個分區(包括一個/boot分區,一個根分區,和一個交換區);一般無需修改直接進入後面的設定即可;

註:在磁牒分區設定頁面你會看到一個列表框,裡面是你硬碟的列表——
Linux用來標幟硬碟的方法與Windows不同,如果你用的是IDE硬碟,那麼你的第一塊硬碟就被標幟為/dev/hda 第二塊為/dev/hdb 依此類推;而且第一塊硬碟的第一個分區被標幟為/dev/hda1第二個分區則為/dev/hda2依此類推;如果是SCSI硬碟則是/dev/sda, /dev/sdb的形式。

5.接下來就是兩冤家共存的關鍵所在——啟始程序設定頁面,安裝程序為你提供了兩種用來啟始系統的程序——GRUB和LILO,預設值是GRUB;無須另改啟始程序,選用GRUB,並且選「組態進階選項」;進入下一步進階選項頁面。

註:GRUB(GRand Unified Bootloader)是一個功能強大的啟始程序。GRUB 能夠通過連鎖載入機剖迪忠?珒烹ndows——GRUB載入Windows的啟始程序,然後Windows的啟始程序再載入Windows。
LILO (Linux LOader) 是用於 Linux 的靈活多用的啟始裝程序。它並不依賴於某一特定文件系統,能夠從軟碟和硬碟啟始 Linux 內核映像,甚至還能夠啟始其它作業系統。

6.在進階選項的頁面,確定安裝位置選項了硬碟分區表(MBR);

7.按照提示完成以後頁面的設定,重啟後你就可以看到一個漂亮的啟始介面,選項不同的 列項可以分別進入兩個作業系統!

[--NTFS--]
如果你的Windows XP系統使用的是NTFS分區,就麻煩一些,因為無論是Linux還是GRUB都不能理解NTFS;上面說到的幾步都一樣,只是在第6步要選項「啟始分區的第一個扇區」,並且記下安裝位置的標幟(這裡以/dev/hda9為例)另外在安裝的最後要按提示做一張啟始軟碟;這樣安裝完成之後你才能進入 Linux,需要進行以下幾步:
1.用軟碟啟始進入Linux;

2.插入一張空白軟碟;

3.在shell中輸入:

mount -t msdos /dev/fd0 /mnt
dd if=/dev/hda9 of=/mnt/bootrec bs=512 count=1
umount /mnt

4.重啟進入Windows XP,把軟碟上的bootrec檔案拷貝到C碟,修改boot.ini文件,在[operating systems]段中加上 C:\bootrec="Linux" 這樣一行
修改後的boot.ini形如:

[boot loader]
timeout=30
default=multi(0)disk(0)rdisk(0)partition(1)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(1)\WINDOWS="Microsoft Windows XP Professional" /fastdetect
C:\bootrec="Linux"


5.重啟後會出現選項表單,選項Linux 列項即可進入Linux。


二. 共享文件

1.Linux 下共享Windows FAT32分區中的文件
很簡單,使用mount指令即可,
基本形式如下:

mount –t vfat /dev/hda1 /mnt/windows

使用前要先建立好/mnt/windows 目錄
並且確定你要掛載的windows分區所對應的Linux標幟,可以執行hwbrowser硬體瀏覽器檢視驗證。
不過你可能會發現,掛載過來的windows分區中的中文檔案名無法正常顯示;
解決方法如下:
開啟/etc/fstab 文件(該檔案中描述了在系統啟動時自動掛載的內容)
增加如下一行:

/dev/hda1 /home/pogge/winc vfat defaults,iocharset=gb2312,umask=0 0 0

其中/dev/hda1 為你要掛載的windows分區的linux標幟,/home/pogge/winc
為掛載位置,一定要先建好/home/pogge/winc 目錄



2.Linux下共享Windows NTFS分區中的文件
Linux的內核中尚未加入NTFS的支持(以後的內核版本可能會加入),但有些個別版本的Linux已經加入了對NTFS的支持,比如Mandrake。
開源社區中有一個Linux NTFS 項目組,你可以用該群組開發的模組為Redhat Linux 9.0 加入NTFS支持。該項目組的網站是http://linux-ntfs.sourceforge.net/;
此外還有一些在Linux下訪問NTFS的第三方軟體。
限於篇幅,筆者就不對此問題詳細敘述了,如果將來有機會的話可以寫個關於這個問題的專題。



3.Windows下共享Linux分區中的文件
Microsoft是不可能在系統中提過對Linux文件系統的支持的,儘管Linux有對Windows的支持!所以只好借助第三方軟體了;
explore2fs 是一個免費的關於圖形介面的在Windows中訪問Linux ext2 或ext3分區的軟體。
下載下來後解壓縮後直接執行explore2fs.exe即可得到一個類似windows檔案總管的一個介面,使用起來非常簡單,在此不再贅述。


三. 重裝Windows XP後恢復Linux啟始

通常下Linux的啟始程序GRUB裝在MBR中,而重裝Windows時,有可能會重寫MBR
導致GRUB丟失掉。
不過恢復起來也很簡單
1. 用Redhat安裝光碟啟動後按F5
2. 輸入linux rescue [Enter] 進入救援模式
3. 在救援模式組態完,並將你的linux系統掛載在臨時目錄/mnt/sysimage 中後輸入chroot /mnt/sysimage 改變根分區的位置
4. 輸入/sbin/grub-install /dev/hda [Enter] 重新將GURB寫入MBR中
5. 輸入exit [Enter] exit [Enter] 結束重啟即可看到GRUB啟始介面

如果沒有啟始光碟就用先前做得啟始軟碟進入Linux直接做第4步即可
如果GRUB 裝在了啟始分區的第一個扇區上
只需參照[--NTFS--] 小節中的5個步驟即可。


http://www.cublog.cn/opera/showart.p...11391&id=88130

psac 2006-04-29 01:32 AM

XP下,硬碟安裝LINUX之雙系統全攻略

買不起燒錄機,看不起軟式磁碟機,支持正版不反對盜版,有破解不用註冊的....相信像我這樣的窮學生還不在少數.下面就講一下怎麼樣在XP下硬碟安裝LINUX.
<先在windows下,劃出至少5G的可用空間供安裝LINUX用,可以下載一個硬碟分區大師)
(一):首先要從紅旗的官網下載LINUX的光碟映像.(我以5.0 finalbeta為例)位址是:
第一張安裝碟 http://www.redflag-linux.com/xiazai/xiazai.php?id=1400
第二張安裝碟:http://www.redflag-linux.com/xiazai/xiazai.php?id=1401
下載完了一定要驗證 md5 否則安裝會出現問題.下面是一個MD5的驗證工具.只要 把下載完的映像拖放到視窗就會自動檢驗.得出的驗證碼和紅旗網站上的一樣才能使用!
MD5:第一張:87a59684a65f2782f52d84ffdbc7119b
第二張:7a6ac671d1739c5cfccc44a162b82d7b
(二):解壓第一張的dosutils文件到一個FAT32的分區下,此為linux安裝的啟始文件,
要在DOS下執行裡面的autoboot.bat.才能執行安裝.dos不認NTFS.
進入DOS.方法很多,如.98.2000的安裝碟,都原有的了MS-DOS,如果你像我一樣.窮的連這盜版盤也買不起了,那我推薦大家用虛擬軟式磁碟機vfloppy進DOS!(好多地方都可以下載的到,如SKYCD.COM)進入DOS.進入剛才解壓出的那個dostils文件,執行機制autoboot.bat 系統便開始執行安裝.

psac 2006-07-02 03:56 PM

寫給Linux新手:入門精彩問答全集匯總

網路無關篇

0001 修改主機名(bjchenxu)

vi /etc/sysconfig/network,修改HOSTNAME一行為"HOSTNAME=主機名"(沒有這行?那就新增這一行吧),然後執行命令 " hostname 主機名"。一般還要修改/etc/hosts文件中的主機名。這樣,無論你是否重啟,主機名都修改成功。


0002 Ret Hat Linux啟動到文字界面(不啟動xwindow)(bjchenxu)

vi /etc/inittab

id:initdefault:

x=3:文本方式 x=5:圖形方式


0003 linux的自動升級更新問題(hutuworm,NetDC)

對於redhat,在http://www.redhat.com/corp/support/e...成安裝。

升級除kernel外的rpm: up2date -u

升級包括kernel在內的rpm: up2date -u -f


由於Red Hat Network SSL證書過期,所以應在rhn_register || up2date 之前先執行一行script以更新證書:

wget -q -O - https://rhn.redhat.com/help/new-cert.sh | /bin/bash


Debian跟別的發行版還是有很大的差別的,用Debian做服務器維護更加方便;紅帽的升級其實挺麻煩的,當然,如果你交錢給紅帽的話,服務是會不一樣的。

Debian下升級軟件:

apt-get update

apt-get upgrade

前提:配置好網路和/etc/apt/sources.list,也可以用apt-setup設置。


0004 windows下看linux分區的軟件(bjchenxu)

Paragon.Ext2FS.Anywhere.2.5.rar和explore2fs-1.00-pre4.zip


0005 mount用法(sakulagi,sxsfxx)

fat32的分區 mount -o codepage=936,iocharset=cp936 /dev/hda7 /mnt/cdrom

ntfs的分區 mount -o iocharset=cp936 /dev/hda7 /mnt/cdrom

iso文件 mount -o loop /abc.iso /mnt/cdrom

軟碟 mount /dev/fd0 /mnt/floppy

USBFLASH碟 mount /dev/sda1 /mnt/cdrom

所有/etc/fstab內容 mount -a

可以指定文件格式"-t 格式", 格式可以為vfat, ext2, ext3等.

訪問DVD mount -t iso9660 /dev/dvd /mnt/cdrom或mount -t udf /dev/dvd /mnt/cdrom

注意:dvd的格式一般為iso9660或udf之一


0006 在vmware的LINUX中使用本機硬碟的FAT分區(bjchenxu)

將本機的FAT分區共享,然後在VMWARE中使用SMBFS掛上。可以將如下的行放到/etc/fstab中:

//win_ip/D$ /mnt/d smbfs defaults,auto,username=win_name,password=win_pass,codepage=936,iocharest=gb2312 0 0

其中win_ip是你的windows的IP地址;

D$是你的windows裡面共享的D盤的共享名;

/mnt/d是要將該分區mount到linux的目錄;

win_name和win_pass是你的WINDOWS裡面可以讀取該分區的用戶,比如你的管理員名和密碼。

如果你執行了/etc/rc.d/init.d/netfs,那麼在啟動的時候就會自動掛載這個分區。


0007.a 刪除名為-a的文件(bjchenxu)

rm ./-a

rm -- -a 告訴rm這是最後一個選項,參見getopt

ls -i 列出inum,然後用find . -inum inum_of_thisfile -exec rm '{}' \;


0007.b 刪除名為\a的文件(bjchenxu)

rm \\a


0007.c 刪除名字帶的/和『\0'文件(bjchenxu)

這些字元是正常文件系統所不允許的字元,但可能在文件名中產生,如unix下的NFS文件系統在Mac系統上使用

1.解決的方法,把NFS文件系統在掛到不過濾'/'字元的系統下刪除含特殊文件名的文件。

2.也可將錯誤文件名的目錄其它文件移走,ls -id 顯示含該文件目錄的inum,umount 文件系統,

clri清除該目錄的inum,fsck,mount,check your lost+found,rename the file in it.

最好是通過WINDOWS FTP過去就可以刪除任何文件名的文件了!


0007.d 刪除名字帶不可見字元的文件(bjchenxu)

列出文件名並轉儲到文件:ls -l >aaa

然後編輯文件的內容加入rm命令使其內容成為刪除上述文件的格式:

vi aaa

[rm -r *******

]

把文件加上執行權限 chmod +x aaa

執行 $aaa


0007.e 刪除文件大小為零的文件(bjchenxu)

rm -i `find ./ -size 0`

find ./ -size 0 -exec rm {} \;



find ./ -size 0 | xargs rm -f &



for file in * #自己定義需要刪除的文件類型

do

if [ ! -s ${file} ]

then

rm ${file}


echo "rm $file Success!"

fi

done


0008 redhat設置滾輪滑鼠(mc1011)

進入X後,選擇滑鼠的配置,選擇wheel mouse(ps/2)就可以了,

如果滑鼠表現異常,重啟電腦即可。

(或者su, vi /etc/X11/XF86Config, 把PS/2 改成 ImPS/2)


0009 加裝xwindow(bjchenxu)

用linux光碟啟動,選擇升級,然後單獨選擇包,安裝即可


0010 刪除linux分區(bjchenxu)

做一張partition magic的啟動軟碟,啟動後刪除. 或者用win2000的啟動光碟啟動,然後刪除.


0011 如何退出man(bjchenxu)

q


0012 不編譯內核,mount ntfs分區(bjchenxu,hutuworm)

原裝rh8,未升級或編譯內核

1. 上google.com搜索並下載 kernel-ntfs-2.4.18-14.i686.rpm

2. rpm -ivh kernel-ntfs-2.4.18-14.i686.rpm

3. mkdir /mnt/c

4. mount -t ntfs /dev/hda1 /mnt/c



Read only: linux-ntfs.sourceforge.net/ Read/Write:www.jankratochvil.net/project/captive/ 0013 tar 分卷壓縮和合併(WongMokin)

以每卷500M為例

tar分卷壓縮:tar cvzpf - mytarfile.tar.gz | split -d -b 500m

tar多卷合併:cat x* > mytarfile.tar.gz


0014 使用lilo/grub時找回忘記了的root口令(bjchenxu)

三種辦法:

1.在系統進入單用戶狀態,直接用passwd root去更改

2.用安裝光碟啟始系統,進行linux rescue狀態,將原來/分區掛接上來,作法如下:

cd /mnt

mkdir hd

mount -t auto /dev/hdaX(原來/分區所在的分區號) hd

cd hd

chroot ./


passwd root

這樣可以搞定

3.將本機的硬碟拿下來,掛到其他的linux系統上,採用的辦法與第二種相同

rh8中

一. lilo

1. 在出現 lilo: 提示時鍵入 linux single

畫面顯示 lilo: linux single

2. Enter鍵可直接進入linux命令行

3. #vi /etc/shadow

將第一行,即以root開頭的一行中root:後和下一個:前的內容刪除,

第一行將類似於

root::......

儲存

4. #reboot重啟,root密碼為空

二. grub

1. 在出現grub畫面時,用上下鍵選中你平時啟動linux的那一項(別選dos喲),然後按e鍵

2. 再次用上下鍵選中你平時啟動linux的那一項(類似於kernel /boot/vmlinuz-2.4.18-14 ro root=LABEL=/),然後按e鍵

3. 修改你現在見到的命令行,加入single,結果如下:

kernel /boot/vmlinuz-2.4.18-14 single ro root=LABEL=/

4. Enter鍵返回,然後按b鍵啟動,即可直接進入linux命令行

5. #vi /etc/shadow

將第一行,即以root開頭的一行中root:後和下一個:前的內容刪除,

第一行將類似於

root::......

儲存

6. #reboot重啟,root密碼為空


0015 使ctrl + alt + del失效(bjchenxu)

vi /etc/inittab

將ca::ctrlaltdel:/sbin/shutdown -t3 -r now這行註釋掉,就可以了


0016 如何看出redhat的版本是7還是8(hutuworm)


cat /proc/version或者cat /etc/redhat-release或者cat /etc/issue


0017 文件在哪個rpm中(無雙)

www.rpmfind.net上搜,或者rpm -qf 文件名得到


0018 把man或info的訊息存為文本文件(bjchenxu)

以 tcsh 為例:

man tcsh | col -b > tcsh.txt

info tcsh -o tcsh.txt -s


0019 利用現存兩個文件,產生一個新的文件(bjchenxu)

1. 取出兩個文件的並集(重複的行只保留一份)

2. 取出兩個文件的交集(只留下同時存在於兩個文件中的文件)

3. 刪除交集,留下其他的行

1. cat file1 file2 | sort | uniq

2. cat file1 file2 | sort | uniq -d

3. cat file1 file2 | sort | uniq -u


0020 設置com1口,讓超級終端通過com1口進行登入(bjchenxu)

確認有/sbin/agetty,編輯/etc/inittab,新增

7:2345:respawn:/sbin/agetty /dev/ttyS0 9600

9600bps是因為聯路由器預設一般都是這種速率,也可以設成

19200、38400、57600、115200

修改/etc/securetty,新增一行:ttyS0,確保root用戶能登入

重啟機器,就可以拔掉滑鼠鍵盤顯示器(啟動時最好還是要看看輸出訊息)了


0021 刪除目錄下所有文件包括子目錄(bjchenxu)

rm -rf 目錄名


0022 檢視系統訊息(bjchenxu)

cat /proc/cpuinfo - CPU (i.e. vendor, Mhz, flags like mmx)

cat /proc/interrupts - 中斷

cat /proc/ioports - 設備IO連接阜

cat /proc/meminfo - 記憶體訊息(i.e. mem used, free, swap size)

cat /proc/partitions - 所有設備的所有分區

cat /proc/pci - PCI設備的訊息

cat /proc/swaps - 所有Swap分區的訊息

cat /proc/version - Linux的版本號 相當於 uname -r

uname -a - 看系統內核等訊息


0023 去掉多餘的Enter鍵符(bjchenxu)

sed 's/^M//' test.sh > back.sh, 注意^M是敲ctrl_v ctrl-m得到的

或者 dos2unix filename


0024 切換X桌面(lnx3000)

如果你是以圖形登入方式登入linux,那麼點擊登入界面上的session(任務)即可以選擇gnome和kde。如果你是以文本方式登入,那執行switchdesk gnome或switchdesk kde,然後再startx就可以進入gnome或kde。

(或者vi ~/.xinitrc,新增或修改成exec gnome-session 或exec startkde,

然後用startx啟動X)


0025 通用的音效卡驅動程式(lnx3000)

OSS www.opensound.com/ ALSA www.alsa-project.org/

0026 改變redhat的系統語言/字元集(beming/mc1011)

修改 /etc/sysconfig/i18n 文件,如

LANG="en_US",xwindow會顯示英文界面,

LANG="zh_CN.GB18030",xwindow會顯示中文界面。

還有一種方法

cp /etc/sysconfig/i18n $HOME/.i18n

修改 $HOME/.i18n 文件,如

LANG="en_US",xwindow會顯示英文界面,

LANG="zh_CN.GB18030",xwindow會顯示中文界面。

這樣就可以改變個人的界面語言,而不影響別的用戶

(Debian不支持GB18030(RH的zysong字庫是有版權的)

現在好像沒有Free的GBK和GB18030字庫

vi .bashrc

export LANG=zh_CN.GB2312

export LC_ALL=zh_CN.GB2312)


0027 把螢幕設置為90列(bjchenxu)

stty cols 90


0028 使用md5sum文件(bjchenxu)

md5sum isofile > hashfile, 將 md5sum 檔案與 hashfile 檔案內容比對, 驗證雜湊值

是否一致 md5sum –c hashfile


0029 一次解壓多個zip文件(bjchenxu)

unzip "*",注意引號不能少


0030 看pdf文件(bjchenxu)

使用xpdf或者安裝acrobat reader for linux


0031 查找權限位為S的文件(bjchenxu)

find . -type f \( -perm -04000 -o -perm -02000 \) -exec ls -lg {} \;


0032 裝中文輸入法(bjchenxu)

以redhat8為例,xwindow及其終端下的不用說了吧,預設就安裝了,用ctrl-space呼出。

現在討論純console,請下載zhcon.gnuchina.org/download/src/zhcon-0.2.1.tar.gz,

放在任一目錄中,tar xvfz zhcon-0.2.1.tar.gz, cd zhcon-0.2.1, ./configure,

make, make install。安裝結束,要想使用,請執行zhcon,想退出,執行exit。


0033 把彈出的光碟收回來(beike)

#eject -t


0034 cd光碟做成iso文件(弱智)

cp /dev/cdrom xxxx.iso


0035 快速觀看開機的硬體檢測(弱智)

dmesg | more


0036 檢視硬碟的使用情況(bjchenxu)

df -k 以K為單位顯示

df -h 以人性化單位顯示,可以是b,k,m,g,t..


0037 檢視目錄的大小(bjchenxu)

du -sh dirname

-s 僅顯示總計

-h 以K、M、G為單位,提高訊息的可讀性。KB、MB、GB是以1024為換算單 位, -H以1000為換算單位。


0038 查找或刪除正在使用某文件的工作行程(wwwzc)

fuser filename

fuser -k filename


0039 安裝軟件(bjchenxu)

rpm -ivh aaa.rpm

tar xvfz aaa.tar.gz; cd aaa; ./configure; make; make install


0040 字元模式下設置/刪除環境變數(bjchenxu)

bash下

設置:export 變數名=變數值

刪除:unset 變數名

csh下

設置:setenv 變數名 變數值

刪除:unsetenv 變數名


0041 ls如何看到隱藏文件(即以.開頭的文件)(雙眼皮的豬)

ls -a

l. (適用於redhat)


0042 rpm中的文件安裝到哪裡去了(bjchenxu)

rpm -qpl aaa.rpm


0043 使用src.rpm(bjchenxu)

rpmbuild --rebuild *.src.rpm


0044 vim中顯示顏色或不顯示顏色(bjchenxu)

首先確保安裝了vim-enhanced包,然後,vi ~/.vimrc; 如果有syntax on,則顯示顏色,syntax off,則不顯示顏色


0045 linux是實時還是分時操作系統(bjchenxu)

分時


0046 make bzImage -j的j是什麼意思(wind521)

-j主要是用在當你的系統硬體資源比較大的時候,比較富裕的時候,用這個可以來加快編譯的速度,如-j 3


0047 源碼包怎麼沒有(bjchenxu)

你沒有安裝源代碼,你把你光碟上rpm -i *kernel*source*.rpm裝上,就可以看到你的源代碼了。


0048 修改系統時間(bjchenxu,laixi781211,hutoworm)

date -s 「2003-04-14 cst」,cst指時區,時間設定用date -s 18:10

修改後執行clock -w 寫到CMOS

hwclock --systohc

set the hardware clock to the current system time


0049 開機就mount上windows下的分區(bjchenxu)

自動將windows的d盤掛到/mnt/d上,用vi打開/etc/fstab,加入以下一行

/dev/hda5 /mnt/d vfat defaults,codepage=936,iocharset=cp936 0 0

注意,先得手工建立一個/mnt/d目錄


0050 linux怎麼用這麼多記憶體(bjchenxu)

為了提高系統性能和不浪費記憶體,linux把多的記憶體做了cache,以提高io速度


0051 FSTAB 最後的配置項裡邊最後兩個數位是什麼意思(lnx3000)

第一個叫fs_freq,用來決定哪一個文件系統需要執行dump操作,0就是不需要;

第二個叫fs_passno,是系統重啟時fsck程式檢測磁碟的順序號

1 是root文件系統,2 是別的文件系統。fsck按序號檢測磁碟,0表示該文件系統不被檢測

dump 執行ext2的文件系統的備份操作

fsck 檢測和修復文件系統


0052 linux中讓用戶的密碼必須有一定的長度,並且符合複雜度(eapass)

vi /etc/login.defs,改PASS_MIN_LEN


0053 linux中的翻譯軟件(bjchenxu,hutoworm)

星際譯王 xdict

console下還有個dict工具,通過DICT協議到dict.org上查11本字典,例如:dict RTFM


0054 不讓顯示器休眠(bjchenxu)

setterm -blank 0

setterm -blank n (n為等待時間)


0055 用dat查詢昨天的日期(gadfly)

date --date='yesterday'


0056 xwindow下如何截屏(bjchenxu)

Ksnapshot或者gimp


0057 解壓小全(bjchenxu,noclouds)

tar -I或者bunzip2命令都可以解壓.bz2文件

tar xvfj example.tar.bz2

tar xvfz example.tar.gz

tar xvfz example.tgz

tar xvf example.tar

unzip example.zip

tar -jvxf some.bz,就是把tar的zvxf 改成jvxf

zip/tar rh8下有一個圖形界面的軟件file-roller可以做這件事。另外可以用unzip *.zip解開zip文件,unrar *.rar解開rar文件,不過unrar一般系統不自帶,要到網上下載。

# rpm2cpio example.rpm │ cpio -div

# ar p example.deb data.tar.gz | tar zxf -

Alien提供了.tgz, .rpm, .slp和.deb等壓縮格式之間的相互轉換: sourceforge.net/projects/alien sEx提供了幾乎所有可見的壓縮格式的解壓接頭:sourceforge.net/projects/sex 0058 在多級目錄中查找某個文件的方法(青海湖)

find /dir -name filename.ext

du -a | grep filename.ext

locate filename.ext


0059 不讓普通用戶自己改密碼(myxfc)

[root@xin_fc etc]# chmod 511 /usr/bin/passwd

又想讓普通用戶自己改密碼

[root@xin_fc etc]# chmod 4511 /usr/bin/passwd


0060 顯示卡實在配不上怎麼辦(win_bigboy)

http://www.redflag-linux.com/ ,下了xfree86 4.3安裝就可以了.


0061 超強刪除格式化工具(弱智)

比PQMagic安全的、建立刪除格式化的小工具:sfdisk.exe for msdos www.wushuang.net/soft/sfdisk.zip 0062 如何讓xmms播放列表裡顯示正確的中文(myxfc)

-*-*-*-*-*-iso8859-1,-misc-mingliu-medium-r-normal--12-*-*-*-*-*-gbk-0,*-r-

把這個東西完全拷貝到你的字體裡面

操作方法:

右鍵單擊xmms播放工具的任何地方

會看到一個"選項",然後選擇"功能設定"選擇"fonts"

然後把上面的字體完整的拷貝到"播放清單"和 "user x font


0063 redhat linux中播放mp3文件(hehhb)

原帶的xmms不能播放MP3(無聲),要安裝一個RPM包:rpm -ivh xmms-mp3-1.2.7-13.p.i386.rpm。打開xmms,ctl-p,在font欄中先在上半部的小框內打勾,再選擇 「fixed(misc) gbk-0 13」號字體即可顯示中文歌曲名。在音頻輸出插件中選擇 "開放音頻系統驅動程式 1.2.7 [lioOSS.so],即可正常播放MP3文件。


0064 安裝中文字體(hehhb)

先下載 freshair.netchina.com.cn/~George/sm.sh (參考文獻:www.linuxeden.com/edu/doctext.php?docid=2679) mingliu18030.ttc在微軟網站可下載,http://www.microsoft.com/china/windows2000/downloads/18

030.asp 它是個msi文件,在 mswindows中安裝用的,裝好後在windows目錄下的fonts

目錄裡面就可以找到它。把mingliu.ttc,mingliu18030.ttc,tahoma.ttf,tahomabd.ttf

拷貝到/usr/local/temp,然後下載的shell文件也放到這個目錄裡,然後打開終端

cd /usr/local/temp

chmod 755 sm.sh

./sm.sh


0065 裝載windows分區的FAT32、FAT16文件系統(hehhb)

以root身份進入KDE,點擊桌面上的「起點」圖示,在/mnt目錄下建立如下資料夾:c,d,e,f,g,usb.分別用作windows下各分區和usb閃盤。

用文本編輯器打開/etc/fstab 文件.加入如下:

/dev/hda1 /mnt/c vfat iocharset=gb2312,umask=0,codepage=936 0 0

/dev/hda5 /mnt/d vfat iocharset=gb2312,umask=0,codepage=936 0 0

/dev/hda6 /mnt/e vfat iocharset=gb2312,umask=0,codepage=936 0 0

/dev/hda7 /mnt/f vfat iocharset=gb2312,umask=0,codepage=936 0 0

/dev/hda8 /mnt/g vfat iocharset=gb2312,umask=0,codepage=936 0 0

/dev/cdrom /mnt/cdrom udf,iso9660 noauto,iocharset=gb2312,owner,kudzu,ro 0 0

/dev/sda1 /mnt/usb vfat iocharset=gb2312,umask=0,codepage=936 0 0

存盤退出. 重新啟動後即可正常訪問FAT32或FAT16格式分區,解決顯示WINDOWS分區下和光碟中文文件名亂碼

問題.其中共六列,每列用Tab鍵分開。注意此方法只能mount上Fat 分區格式.sda1是閃盤。


我的Fedora3的iocharset=utf8,其他一樣,不用codepage


0066 在X下使用五筆和拼音,區位輸入法(hmkart)

http://www.fcitx.org/上下載fcitx的rpm包安裝即可


0067 在Linux下如何解壓rar文件(hmkart) http://www.linuxeden.com/download/so...php?softid=883 下載rar for Linux 3.2.0,解壓開後make

然後可以用unrar e youfilename.rar解壓rar文件


0068 硬碟安裝後怎麼新增/刪除rpm包(sakulagi)

redhat-config-packages --isodir=

可以指定iso文件所在的目錄


0069 字元下控制音量(grub007,天外閒雲)

使用aumix。另外,要儲存oss的音量大小,步驟為:

1、用aumix將音量調整為你們滿意的音量

2、用root用戶進入/usr/lib/oss下(oss的預定安裝目錄)

3、執行./savemixer ./mixer.map

4、ok,以後oss開啟之後就是你在第一步調整的音量了。

ps:閱讀該目錄下的README可以得到更多的有用訊息。


0070 用dd做iso(grub007)

dd if=/dev/cdrom of=/tmp/aaa.iso


0071 刪除幾天以前的所有東西(包括目錄名和目錄中的文件)(shally5)

find . -ctime +3 -exec rm -rf {} \;



find ./ -mtime +3 -print|xargs rm -f -r


0072 用戶的crontab在哪裡(hutuworm)

/var/spool/cron/下以用戶名命名的文件


0073 以不同的用戶身份執行程式(bjchenxu)

su - username -c "/path/to/command"

有時候需要執行特殊身份的程式, 就可以讓su來做


0074 如何清空一個文件(bjchenxu)

> filename


0075 為什麼OpenOffice下不能顯示中文(allen1970)

更改字體設置

tools->options->font replacement

Andale Sans UI -> mingliu

0076 如何備份Linux系統(Purge)

Symantec Ghost 7.5以後的版本支持Ext3 native複製


0077 linux上的partition magic(wwwzc)

Linux下一個有用的分區工具: parted

可以實時修改分區大小, 刪除/建立分區.


0078 /proc/sys/sem中每項代表什麼意思? (sakulagi)

/proc/sys/sem內容如下

250 32000 32 128

這4個參數依次為SEMMSL(每個用戶擁有信號量最大數量),SEMMNS(系統信號量最大數量),SEMOPM(每次semop系統調用操作數),SEMMNI(系統信號量集最大數量)


0079 Grub 啟始表菜單裡 bigmem smp up 都是什麼意思?(lnx3000)

smp: (symmetric multiple processor)對稱多處理器模式

bigmem: 支持1G 以上記憶體的優化內核

up:(Uni processor) 單處理器的模式


0080 Oracle的安裝程式為什麼顯示亂碼?(lnx3000)

現在Oracle的安裝程式對中文的支持有問題,只能使用英文界面來安裝,在執行runinstaller之前,執行:export LANG=C;export LC_ALL=C


0081 linux下文件和目錄的顏色代表什麼(sakulagi,弱智)

藍色表示目錄;綠色表示可執行文件;紅色表示壓縮文件;淺藍

色表示鏈接文件;灰色表示其它文件;紅色閃爍表示鏈接的文件有問題了;黃色是設備文件,包括block, char, fifo。

用dircolors -p看到預設的顏色設置,包括各種顏色和「粗體」,下劃線,閃爍等定義。


0082 檢視有多少活動httpd的腳本(bjchenxu)

#!/bin/sh

while (true)

do

pstree |grep "*\[httpd\]0101 linux中燒錄iso的方法(hutuworm) 方法一:使用xcdroast,選擇製作光碟,選擇ISO文件,燒錄! 參見http://www.xcdroast.org/xcdr098/faq-a15.html#17 方法二:找燒錄機的命令: cdrecord --scanbus 輸出結果為: 0,0,0 0) 'ATAPI ' 'CD-R/RW 8X4X32 ' '5.EZ' Removable CD-ROM 燒錄的命令: cdrecord -v speed=8 dev=0,0,0 hutuworm.iso 0102 螢幕變花時怎麼辦(雙眼皮的豬) 當您一不小心cat了一個並不是文本的文件的時候,這時螢幕會變花,那麼您可以按兩下"Enter"鍵,再敲"reset",那麼螢幕就恢復正常了.... 0103 卸載軟件包時如何得知具體包名(diablocom) 大家知道刪除軟件包的命令是rpm -e XXX,但是當我們不知道這個XXX的確切拼寫時,可以用rpm -q -a查詢所有安裝的軟件包或者用rpm -qa |grep xxxx查詢出名字 0104 使用記憶體作linux下的/tmp資料夾(yulc) 在/etc/fstab中加入一行: none /tmp tmpfs default 0 0 或者在/etc/rc.local中加入 mount tmpfs /tmp -t tmpfs -o size=128m 註:size=128m 表示/tmp最大能用128m 不管哪種方式,只要linux重啟,/tmp下的文件全部消失 0105 用ls只列出目錄(yulc) ls -lF | grep ^d ls -lF | grep /$ ls -F | grep /$ 0106 在命令行下列出本機IP地址,而不是得到網卡訊息(yulc) ifconfig |grep "inet" |cut -c 0-36|sed -e 's/[a-zA-Z: ]//g' hostname -i 0107 修改/etc/profile或者$HOME/.profile文件後如何立即生效(peter333) #source /etc/profile (或者source .profile) 0108 bg和fg的使用(bjchenxu) 輸入ctrl+z,當前一個任務會被掛起並暫停, 同時螢幕上返回工作行程號,此時用 "bg %工作行程號",會把這個工作行程放到後台執行,而用" fg %工作行程號 "就能讓這個工作行程放到前台來執行。另外,job命令用來檢視當前的被bg的工作行程 0109 ctrl+s與ctrl+q(bjchenxu) ctrl-s用來暫停向終端發送資料的,螢幕就像死了一樣,可以用ctrl-q來恢復 0110 目錄統計腳本(bjchenxu) 儲存成total.sh,然後用total.sh 絕對路徑,就能統計路徑下目錄的大小了代碼: #!/bin/sh du $1 --max-depth=1 | sort -n|awk '{printf "%7.2fM ----> %s\n",$1/1024,$2}'|sed 's:/.*/\([^/]\{1,\}\)$:\1:g' 0111 grep不顯示本身工作行程(bjchenxu) #ps -aux|grep httpd|grep -v grep grep -v grep可以取消顯示你所執行的grep本身這個工作行程,-v參數是不顯示所列出的工作行程名 0112 刪除目錄中含輸入關鍵字的文件(WongMokin) find /mnt/ebook/ -type f -exec grep "在此輸入關鍵字" {} \; -print -exec rm {} \; 0113 讓cron中的任務不回饋訊息, 本例5分鐘檢查一次郵件(WongMokin) 0-59/5 * * * * /usr/local/bin/fetchmail > /dev/null 2>&1 0114 在當前目錄下解壓rpm文件(bjchenxu) cat kernel-ntfs-2.4.20-8.i686.rpm | rpm2cpio | pax -r 0115 合併兩個Postscript或PDF文件(noclouds) $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pswrite \ -sOutputFile=bar.ps -f foo1.ps foo2.ps $ gs -q -dNOPAUSE -dBATCH -sDEVICE=pdfwrite \ -sOutputFile=bar.pdf -f foo1.pdf foo2.pdf 0116 去掉apache的manual目錄中的所有.en的後綴名(bjchenxu) 進入到manual目錄代碼:find ./ -regex .*\.en|awk -F. '{ printf "mv %s.%s.%s.%s %s.%s.%s\n",$1,$2,$3,$4,$1,$2,$3}'|sh 0117 如何起多個X(noclouds) startx預定以display :0.0起第一個X,通過傳遞參數給Xserver可以起多個X: # startx -- :1.0 # startx -- :2.0 ... 然後用Ctrl-Alt-F7/F8...切換。 0118 讓一個程式在退出登入後繼續執行(noclouds,bjchenxu) # # disown 或者是 nohup command & 0119 看Linux啟動時螢幕的顯示訊息(bjchenxu) 在啟動完後用命令dmesg檢視 0120 讓vi不響鈴(sakulagi) echo "set vb t_vb=" >> ~/.vimrc 0121 讓fedora開機後自動login(dzho002) 1) rpm -ihv autologin-1.0.0-7mdk.i586 rpm 2) 建立文件 /etc/sysconfig/autologin 在裡面加上一行. USER = root 0122 如何配置讓哪些服務啟動(天外閒雲,q1208c) 方法1 執行ntsysv或者setup命令,進入表菜單進行配置方法2 chkconfig --list 顯示服務 chkconfig name on/off 打開/關閉「name」服務 0123 安全刪除linux(天外閒雲) 步驟1 Dos下使用fdisk /mbr或者用win2000/xp的光碟啟動進入故障恢復控制台,使用命令fixmbr 步驟2 格式化linux分區為windows分區即可。 0124 用grub啟始進文本界面(天外閒雲) 進入grub之後,按a,輸入 空格 3 就可以啟始進入文本界面,但是不修改系統的執行級,只在當次有效。 0125 先測試patch是否執行正常,暫不將更改應用到kernel(jiadingjun) patch --dry-run 0126 redhat和debian上的文件安裝刪除用法(NetDC) 刪除一個軟件包: rpm -e dpkg -r 顯示一個軟件包的內容: rpm -qvl dpkg -c 顯示所有已經安裝的軟件包: rpm -qvia dpkg -l 印表一個包的訊息: rpm -qpi dpkg -I 檢驗包characteristics: rpm -Va debsums -a 檢驗一個文件屬於哪個包: rpm -qf dpkg -S 安裝新軟件包: rpm -Uvh dpkg -i 0127 如何使新用戶首次登入後強制修改密碼(貓小) #useradd -p '' testuser; chage -d 0 testuser 0128 日誌維護工具logrotate(hotbox) 在/etc/logrotate.conf中配置,作用:定義log文件達到預定的大小或時間時,自動壓縮log文件 0129 Linux中預定的管理員叫什麼(bjchenxu) root 0130 如何產生一個長度固定(例如文件長度為1M)字節的空文件,即每個字節的值全為0x00(sakulagi) dd if=/dev/zero of=/tmp/zero_file bs=1024 count=1024 0131 系統重啟後時間不是北京時間了(uuhs_hiei) 執行:date -u "月日時分" 即可修改,注意小時必須使用北京時間減去8 0132 查找當前目錄下文件並更改延伸名(零二年的夏天) 更改所有.ss文件為.aa # find ./ -name "*.ss" -exec rename .ss .aa '{}' \;quot;|sed 's/.*-\([0-9][0-9]*\)\*\[httpd\]$/\1/'

sleep 3

done


0083 如何新增一塊硬碟(好好先生)

一、關機,物理連接硬碟

如果是IDE硬碟,注意主、從盤的設置;如果是SCSI硬碟,注意選擇一個沒有被使用的ID號。

二、開機,檢查硬碟有沒有被linux檢測到

dmesg |grep hd*(ide硬碟)

dmesg |grep sd*(SCSI硬碟)

或者 less /var/log/dmesg

如果你沒有檢測到你的新硬碟,重啟,檢查連線,看看bios有沒有認出它來。

三、分區

你可以使用fdisk,Sfdisk或者parted(GNU分區工具,linux下的partition magic)

四、格式化

mkfs

五、修改fstab

vi /etc/fstab


0084 linux下怎麼看分區的卷標啊 (q1208c)

e2label /dev/hdxn, where x=a,b,c,d....; n=1,2,3...


0085 RH8,9中安裝後如何新增新的語言包(好好先生)

一.8.0中

1.放入第一張光碟

2.cd /mnt/cdrom/Redhat/RPMS

3.rpm -ivh ttfonts-ZH_CN-2.11-29.noarch.rpm(簡體中文,你可以用tab鍵來補齊後面的部分,以免輸入有誤)

4.rpm -ivh ttfonts-ZH_TW-2.11-15.noarch.rpm(繁體中文)

如果你還想裝日文、韓文,試試第二張光碟上的ttfonts*.rpm.

二.9.0中

9.0不在第一張盤上,在第三張盤上.rpm包名分別為:

ttfonts-zh_CN-2.12-1.noarch.rpm(簡體中文)

ttfonts-zh_TW-2.11-19.noarch.rpm (繁體中文)



0086 終端下抓屏(tsgx)

cat /dev/vcsX >screenshot 其中,X表示第X個終端

還可以執行script screen.log,記錄螢幕訊息到screen.log裡。一會記錄到你exit為此。這也是抓屏的好方法。

這是在debian的cookbook上看到的。在RH9上能用。沒有在其它的系統上測試過。


0087 讓一個程式在退出登入後繼續執行(NetDC)

#nohup 程式名 &


0088 man命令不在路徑中,如何檢視非標準的man文件(bjchenxu)

nroff -man /usr/man/man1/cscope.1 | more


0089 以不同的用戶身份執行程式(bjchenxu)

su - username -c "/path/to/file"

有時候需要執行特殊身份的程式...就可以讓su來做...


0090 編輯/etc/inittab後直接生效(bjchenxu)

#init q


0091 讓linux連續執行幾個命令,出錯停止(bjchenxu)

command1 && command2 && command3


0092 如何將grub安裝到mbr(bjchenxu, NetDC)

grub> root (hd0, 0)

grub> setup (hd0)

也可以用#grub-install /dev/hda來安裝grub。


0093 安裝時把grub(lilo)寫到linux分區的啟始區還是主啟始扇區(MBR)(bjchenxu)

如果你想電腦一啟動就直接進入操作系統啟動表菜單就把grub(lilo)寫到MBR上,如果寫到linux分區的啟始區則要用啟始盤啟始。建議寫到 MBR,方便點,至於說寫到MBR不安全,該怎麼解釋呢?每裝一次win98,MBR都會被修改一次,大家覺得有什麼不安全的嗎?


0094 如何讓多系統共存(bjchenxu)

98系統的話用lilo(grub)啟始,2k/nt則使用osloader啟始多系統


0095 如何在圖形界面和控制台(字元界面)之間來回切換(bjchenxu)

a.圖形界面到控制台:Ctr+Alt+Fn(n=1,2,3,4,5,6)。

b.各控制台之間切換:Alt+Fn(n=1,2,3,4,5,6)。


c.控制台到圖形:Alt+F7


0096 Redhat linux常用的命令(bjchenxu)

<1>ls:列目錄。

用法:ls或ls dirName,參數:-a顯示所有文件,-l詳細列出文件。

<2>mkdir:建目錄。

用法:mkdir dirName,參數:-p建多級目錄,如:mkdir a/b/c/d/e/f -p

<3>mount:掛載分區或鏡像文件(.iso,.img)文件。

用法:

a. 磁碟分區:mount deviceName mountPoint -o options,其中deviceName是磁碟分區的設備名,比如/dev/hda1,/dev/cdrom,/dev/fd0,mountPoint 是掛載點,它是一個目錄,options是參數,如果分區是linux分區,一般不用-o options,如果是windows分區那options可以是iocharset=cp936,這樣windows分區裡的中文文件名就能顯示出來了。用例:比如/dev/hda5是linux分區,我要把它掛到目錄a上(如沒目錄a那就先mkdir a),mount /dev/hda5 a,這樣目錄a裡的東西就是分區hda5里的東西了,比如hda1是windows分區,要把它掛到b上,mount /dev/hda1 b -o iocharset=cp936。

b.鏡像文件:mount fileName mountPoint -o loop,fileName是鏡像文件名(*.iso,*.img),其它的不用說了,跟上面一樣。用例:如我有一個a.iso光碟鏡像文件,mount a.iso a -o loop,這樣進入目錄a你就能瀏覽a.iso的內容了,*.img文件的用法一樣。

<4>find:查找文件。

用法:find inDir -name filename,inDir是你要在哪個目錄找,filename是你要找的文件名(可以用通配符),用通配符時filename最好用單引號引起來,否則有時會出錯,用例:find . -name test*,在當前目錄查找以test開頭的文件。

<5>grep:在文件裡查找指定的字元串。

用法:grep string filename,在filename(可用通配符)裡查找string(最好用雙引號引起來)。參數:-r在所有子目錄裡的filename裡找。用例:grep hello *.c -r在當前目錄下(包括子目錄)的所有.c文件裡查找hello。

<5>vi:編輯器。

用法:vi filename。filename就是你要編輯的文本文件。用了執行vi filename後,你可能會發現你無法編輯文本內容,不要著急,這是因為vi還沒進入編輯狀態,按a或i就可以進入編輯狀態了,進入編輯狀態後你就可以編輯文本了。要退出編輯狀態按Esc鍵就可以了。以下操作均要在非編輯狀態下。查找文本:輸入/和你要查找的文本並Enter鍵。退出:輸入: 和q並Enter鍵,如果你修改了文本,那麼你要用:q!Enter鍵才能退出。儲存:輸入: wEnter鍵,如果是只讀文件要用: w!。儲存退出:輸入: wqEnter鍵,如果是只讀就: wq!Enter鍵。取消:按u就可以了,按一次就取消一步,可按多次取消多步。複製貼上去一行文本:把游標移到要複製的行上的任何地方,按yy(就是連按兩次 y),把游標移到要貼上去地方的上一行,按p,剛才那行文本就會被插入到游標所在行的下一行,原來游標所在行後面所有行會自動下移一行。複製貼上去多行文本:跟複製一行差不多,只是yy改成先輸入要複製的行數緊接著按yy,後面的操作一樣。把游標移到指定行:輸入:和行號並Enter鍵,比如移到123行:123Enter鍵,移到結尾:$Enter鍵。


0097 linux文本界面下如何關閉pc喇叭(labrun)

將/etc/inputrc中的set bell-style none 前的#去掉,或echo "set bell-style none" >> ~/.bashrc


0098 重裝windows導致linux不能啟始的解決辦法(好好先生)

如果沒有重新分區,拿linux啟動碟(或者第一張安裝光碟)啟始,進入rescue模式。首先找到原來的/分區mount在什麼地方。redhat通常是 /mnt/sysimage. 執行"chroot /mnt/sysimage". 如果是grub,輸入grub-install /dev/hd*(根據實際情況);如果是lilo,輸入lilo -v,然後重新啟動。如果分區有所改變,對應修改/etc/lilo.conf和/boot/grub/grub.conf然後再執行上述命令。


0099 為什麼裝了LINUX後win2K很慢(lnx3000,好好先生)

老問題了,你在2000是不是能看見Linux的邏輯盤,但不能訪問?

在磁碟管理裡,選中這個盤,右擊->更改"驅動器名和路徑"->"刪除"就可以了,注意不是刪除這個盤!


0100 將linux發佈版的iso文件燒錄到光碟的方法(bjchenxu)

借用windows中的nero軟件,選擇映像文件燒錄,選擇iso文件,燒錄即可!



回復: GOJYO 時間: Sun Nov 14 13:39:03 2004





___FCKpd___0


回復: GOJYO 時間: Sun Nov 14 13:52:40 2004





0001 讓apache的預定字元集變為中文(bjchenxu)

vi httpd.conf,找到 AddDefaultCharset ISO-8859-1 一行

apache版本如果是1.*,改為 AddDefaultCharset GB2312

如果是2.*,改為 AddDefaultCharset off

然後執行/etc/init.d/httpd restart重啟apache即可生效。


0002 永久更改ip(bjchenxu)

ifconfig eth0 新ip

然後編輯/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip


0003 從Linux上遠端顯示Windows桌面(lnx3000)

安裝rdesktop包


0004 手動新增預定網關(bjchenxu)

以root用戶,執行: route add default gw 網關的IP

想更改網關

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

更改GATEWAY

2 /etc/init.d/network restart


0005 redhat 8.0上msn和qq(bjchenxu)

下載Gaim 0.58版:

gaim-0.58-2.i386.rpm

下載QQ插件 for gcc2.9版:

libqq-0.0.3-ft-0.58-gcc296.so.gz

將下載的文件放入/temp目錄,然後將系統中已有的Gaim刪除,即在終端仿真器中鍵入命令:rpm -e gaim。

開始安裝

打開終端仿真器,繼續執行下列命令安裝Gaim 0.58版,即:

cd /temp         (進入temp目錄)

rpm -ivh gaim-0.58-2.i386.rpm (安裝軟件)

當安裝成功後,你就可以在GNOME或KDE桌面建立Gaim圖示了。

繼續安裝QQ插件,即鍵入命令:

gunzip libqq-0.0.3-ft-0.58-gcc296.so.gz (解壓縮文件)

cp libqq-0.0.3-ft-0.58-gcc296.so /usr/lib/gaim (複製插件到gaim庫目錄中)

軟件設置

首次啟動Gaim 0.85版時,會出現的登入界面。先選擇「插件」,在插件交談視窗中點擊「載入」,分別將libmsn.so和libqq-0.0.3-ft-0.58- gcc296.so文件裝入,確認後關閉。然後再選擇「所有帳號」,在出現的帳號編輯器中繼續點擊「增加」,當出現的修改帳號網頁面時,我們就可以輸入自己的QQ或MSN號了,登入名填寫QQ號碼或MSN郵箱,密碼填寫對應的QQ或MSN密碼,Alias填寫自己的暱稱,協議選擇相應的QQ或MSN,其他的設置按預定的即可。當全部設置完成後就可以登入使用了。

由於MS對msn的協議經常升級,導致linux上的gaim和msn插件必須升級,目前尚無萬無一失的解決方案,請見諒


0006 查出22連接阜現在執行什麼程式(bjchenxu)

lsof -i :22

0007 檢視本機的IP,gateway, dns(bjchenxu)

IP:

以root用戶登入,執行ifconfig。其中eth0是第一塊網卡,lo是預定的設備

Gateway:

以root用戶登入,執行netstat -rn,以0.0.0.0開頭的一行的Gateway即為預定網關

也可以檢視/etc/sysconfig/network文件,裡面有指定的地址!

DNS:

more /etc/resolv.conf,內容指定如下:

nameserver 202.96.69.38

nameserver 202.96.64.38


0008 RH8.0命令行下改變ping 的TTL值(cgweb,lnx)

方法1(重啟後有效):

#sysctl -w net.ipv4.ip_default_ttl=N

(N=0~255),若N>255,則ttl=0

方法2(重啟後無效):

#echo N(N為0~255) > /proc/sys/net/ipv4/ip_default_ttl


0009 開啟LINUX的IP轉發(houaq)

編輯/etc/sysctl.conf, 例如,將

net.ipv4.ip_forward = 0

變為

net.ipv4.ip_forward = 1

重啟後生效,用sysctl -a檢視可知


0010 mount局域網上其他windows機器共享出的目錄(bjchenxu)

mount -t smbfs -o username=guest,password=guest //machine/path /mnt/cdrom


0011 允許|禁止root通過SSH登入(Fun-FreeBSD)

修改sshd_configermitRootLogin no|yes


0012 讓root直接telnet登入(bjchenxu,platinum)

方法1:

編輯/etc/pam.d/login,去掉

auth required /lib/security/pam_securetty.so 這句話

方法2:

vi /etc/securetty

新增

pts/0

pts/1

...


0013 在linux接adsl設備(wind521)

需要一個運轉正常的Linux + 至少一塊網卡 + 寬帶設備已經申請完畢,同時已經開通。目前市場上大概有幾種ADSL設備,他們工作的方式有一些細微的差別。

就是通過虛擬撥號來完成上網的這一過程,也就是利用pppoe設備來進行虛擬撥號的叫作全向貓,就是一種加電後自動的進行撥號的工作,然後留給我們的接頭是 RJ45,大連地區一般留給我們的網關都是10.0.0.2,這種設備最容易對付,最後是直接分配給用戶一個固定的IP,相對大家來說也比較容易對付

1.第一種需要進行撥號:

這幾種設備都是通過eth接頭與電腦進行通訊的,所以先將硬體設備的連接作好,尤其是寬帶貓的,一定要確認無誤(否則一會兒要不去可不算我的事情)

然後啟動系統,確認系統上是否安裝rp-pppoe這個軟件(通過rpm -qa|grep pppoe來查找),如沒有安裝的用戶,在光碟裡或是到網上去down一個來,安裝上後,以root用戶執行adsl-setup,這樣就進入了adsl 的資料的設定狀態,要求輸入申請寬帶的用戶名以及其他一些訊息,確認沒有問題,接受直至最後(裡面都是E文,但是一看即能懂,比較簡單,有關一個防火牆的設置,我一般都不用,選0,大家可以具體考慮)。

配置完成後,以root用戶執行adsl-start,這樣將進行adsl的撥號工作,正常就會一下上線,如有什麼具體問題,去看一下日誌(/var/log/messages)裡面告訴你什麼了。

停掉adsl,執行adsl-stop就可以了(很簡單的)

2.另外兩種比較容易對付:

全向貓:只要將你的網卡的IP設置成一個10網段的IP,然後網關指到全向貓的IP,上(10.0.0.2),基本上不有太大的問題

 固定IP:就像配置本機兒的網卡一樣,將IP,網關,DNS都按申請來的填寫上就可以搞定了


0014 讓linux自動同步時間(shunz)

vi /etc/crontab

加上一句:

00 0 1 * * root rdate -s time.nist.gov


0015 linux的網上資源有哪些(bjchenxu)

國外 lwn.net/ http://www.tldp.org/ www.yolinux.com/(flying-dance big big pig) www.justlinux.com/ http://www.linuxtoday.com/ www.linuxquestions.org/ http://www.fokus.gmd.de/linux/ www.linux-tutorial.info/ http://public.www.planetmirror.com/ www.freebsdforums.org/forums/ http://www.netfilter.org/documentation/ www-106.ibm.com/developerworks/linux/ 國內 www.fanqiang.com/ http://www.linuxsir.com/ www.chinaunix.net/ http://www.linuxfans.org/(deadcat) www.linuxeden.com/ http://www.linuxforum.net/ www.linuxaid.com.cn/ http://freesoft.online.sh.cn/ www-900.ibm.com/developerWorks/cn/linux/index.shtml http://www.neweasier.com/software.html http://www.blueidea.com/bbs/archivec...?id=635906(sqh) http://westlinux.ywzc.net/(onesun)


0016 改變sshd的連接阜(bjchenxu)

在/etc/ssh/sshd_config中加入一行:Port 2222,/etc/init.d/sshd restart重啟守護工作行程


0017 改變telnet的連接阜(bjchenxu)

將/etc/services文件中telnet對應的連接阜號21改為你想要的值,/etc/init.d/xinetd restart重啟守護工作行程


0018 終端模式有問題(sakulagi)

export TERM=vt100


0019 模仿超級終端,LINUX裡什麼程式連接路由器和交換機(alstone)

minicom


0020 ssh上來能不能不自動斷線(wind521)

那是timetou的設置,修改TMOUT變數值


0021 用什麼工具做入侵檢測(bjchenxu)

snort


0022 Linux下檢測程式記憶體洩漏的工具(bjchenxu)

cchecker或是efence庫都可以


0023 linux下如何監視所有通過本機網卡的資料(bjchenxu)

tcpdump iptraf


0024 為什麼root執行好多命令都說command not found(bjchenxu)

你是telnet上來,然後su成root的吧,改改你的su命令格式,應該是su - root


0025 關閉用戶的POP3權限(tiansgx)

把POP3的連接阜關了就可以了。 在文件/etc/services中找到這一行 pop-3 110/tcp 把這一行前加個'#',把它註釋掉就可以了。


0026 linux下播放flash動畫(myxfc)

linux下播放flash動畫用這個東西,不會造成瀏覽器的關閉(其他的插件不好用)

首先下載flash播放動畫在linux的插件 http://www.collaborium.org/onsite/jo...h_linux.tar.gz tar zxvf flash_linux.tar.gz

打開包之後,會看到Linux資料夾

在linux文件頰裡有兩個文件libflashplayer.so 和shockwaveflash.class,把這兩個文件拷貝到你的瀏覽器裡的插件裡(瀏覽器不一樣,插件的位置可能也不一樣)

/usr/lib/mozilla-1.0.1/plugins,就可以了


0027 鎖定wu-ftp用戶目錄(wangla)

編輯ftpaccess文件

restricted-uid *

這一句很重要,限制了ftp用戶在自己的目錄裡。


0028 服務器怎麼不讓telnet(知秋一葉)

服務器上必須啟動telnet服務 && 服務器的防火牆優先級應該設為低


0029 防止任何人使用su命令成為root(xiaohu0)

1.vi /etc/pam.d/su

auth sufficient /lib/security/pam_rootok.so debug

auth required /lib/security/pam_wheel.so group=wheel

2.在/etc/pam. d/su配置文件中定義了wheel組.


0030 如何使lynx瀏覽器能夠瀏覽中文網頁(Ghost_Vale)

瀏覽簡體中文網頁就的修改如下設置

Save options to disk: [X]

Display and Character Set

Display character set : [Chinese________________________]

Assumed document character set(!): [iso-8859-1______]

CJK mode (!) : [ON_]

然後移到最下面的 Accept Changes 按下 Enter 儲存就可以了

當然你的系統要支持簡體中文才可以


0031 網卡啟動了,卻上不了網,怎麼辦?(Slock)

trace一下,看看到底是在那一塊被阻住的。

1.Ping自己

2.Ping網關

3.Ping DNS

4.trace DNS

If All=ok

then nslookup www.sina.com.cn

Ping sina's address

Tra sina' address

基本上就可以知道結果了


0032 在redhat9下配samba,win2000能訪問,win98不能訪問?(squall2003)

如果是wind98必需修改註冊表:HKEY_LOCAL_MACHINE/system/correntcontrolset/services/Vxd/VNETSUP下建個D值:EnablePlainTextpasswd,鍵值1


0033 如何得到網卡的MAC地址(bjchenxu,hutuworm)

arp -a | awk '{print $4}'

ifconfig eth0 | head -1 | awk '{print $5}'


0034 如何得到網卡的IP地址(mb)

ifconfig eth0 |awk '/inet addr/ {split($2,x,":");print x[2]}'

0035 如何修改Linux機器所在的工作組(hutuworm)

vi /etc/samba/smb.conf,修改workgroup = 一行,將組名寫在後面。


0036 一塊網卡如何綁定兩個ip(linuxloveu)

#cd /etc/sysconfig/network-scripts

#cp ifcfg-eth0 ifcfg-eth0:1

#vi ifcfg-eth0:1

修改IP和設備名

Debian下一個網卡綁定多個ip的方法(NetDC)

修改/etc/network/interfaces

auto eth0

iface eth0 inet static

address 172.16.3.123

netmask 255.255.255.0

network 172.16.3.0

broadcast 172.16.3.255

gateway 172.16.3.1


auto eth0:1

iface eth0:1 inet static

address 10.16.3.123

netmask 255.255.0.0

network 10.16.0.0

broadcast 10.16.255.255

修改/etc/network/ifstate

lo=lo

eth0=eth0

eth0:1=eth0:1

然後/etc/init.d/networking restart就可以了。

一個網卡綁定多ip另一法(hotbox)

在/etc/sysconfig/network-scripts/下創建一個文件:ifcfg-ethX-rangeX ("X"為網卡號)

文件內容:

IPADDR_START=

IPADDR_END=

CLONENUM=0

可以有256個ip


0037 一個ip如何綁定兩塊網卡(hutuworm)

假設192.168.0.88是ip,192.168.0.1是網關:

/sbin/modprobe bonding miimon=100 mode=1

/sbin/ifdown eth0

/sbin/ifdown eth1

/sbin/ifconfig bond0 192.168.0.88

/sbin/ifenslave bond0 eth0 eth1

/sbin/route add default gw 192.168.0.1


0038 192.168.1.0/24(雙眼皮的豬)

它與192.168.1.0/255.255.255.0是等價的,只是表示方式不同....


0039 linux下清空arp表的命令(NetDC)

#arp -d -a(適用於bsd)

for HOST in `arp | sed '/Address/d' | awk '{ print $1}'` ; do arp -d $HOST; done


0040 使用ntp協議從服務器同步時間(NetDC)

ntpdate NTP-SERVER 例:ntpdate 172.16.2.1


0041 host命令的用法(bjchenxu)

host能夠用來查詢域名,它還能得到更多的訊息

host -t mx example.com可以查詢出example.com的MX記錄,以及處理mail的host的名字

host -l example.com會返回所有註冊在example.com下的域名

host -a example.com則會顯示這個主機的所有域名訊息.


0042 立刻讓LINUX支持NAT(platinum)

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -t nat -I POSTROUTING -j MASQUERADE


0043 rh8.0下rcp的用法設置(zhqh1)

只對root用戶生效

1、在雙方root用戶根目錄下建立.rhosts文件,並將雙方的hostname加進去.在此之前應在雙方的/etc/hosts文件中加入對方的IP和hostname

2、把rsh服務啟動起來,redhat預定是不啟動的。方法:用執行ntsysv命令,在rsh選項前用空格鍵選中,確定退出。 然後執行:service xinetd restart即可。

3、到/etc/pam.d/目錄下,把rsh文件中的auth required /lib/security/pam_securetty.so一行用「#」封掉即可。


0044 在ethX設備上,使LINUX支持網路廣播功能(預定是不支持的)(platinum)

ip route add 255.255.255.255 dev ethX


0045 路由設置手冊(NetDC)

檢視路由訊息:

netstat -rn

route -n

手工增加一條路由:

route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

手工刪除一條路由:

route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

好了,下面到了重要的了,讓系統啟動的時候自動啟用路由設置。

在redhat中新增一條路由,修改文件/etc/sysconfig/static-routes

any net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

在debian中新增一條路由,


方法一:修改/etc/network/interfaces

代碼:

auto eth0

iface eth0 inet static

address 172.16.3.222

netmask 255.255.0.0

network 172.16.0.0

broadcast 172.16.255.255

gateway 172.16.2.1

up route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

down route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

方法二:在/etc/network/if-up.d目錄下建立一個簡單的腳本文件,如static-route$(記得以$符號結尾,要不有個run-parts會跑出來告訴你一些東西)腳本最簡單的就好啦,如:

代碼:

#!/bin/bash

route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1

嘿嘿,你也可以猜到/etc/network/目錄下的其他目錄的作用了吧。

發覺在debian中這個route的設置其實只是它的那些配置文件的一個比較簡單的應用而已,你完全可以做更複雜的應用。


0046 利用ssh複製文件(platinum)

假如A、B都有SSH服務,現在在A的SSH裡

1、從A複製B(推過去)

scp -rp /path/filename username@remoteIP:/path

2、從B複製到A(拉過來)

scp -rp username@remoteIP:/path/filename /path

如果其中一個不是LINUX系統,可以在WINDOWS上用SecureFX軟件


0047 samba3.0中文顯示問題的解決辦法(linuxzfp)

在samba 3.0的配置文件中(/usr/samba/smb.conf)的[global]中加入下面兩句:

dos charset=cp936

unix charset=cp936

重啟服務

/etc/init.d/smb restart


0048 臨時修改網卡MAC地址的方法

關閉網卡:/sbin/ifconfig eth0 down

然後改地址:/sbin/ifconfig eth0 hw ether 00:AA:BB:CCD:EE

然後啟動網卡:/sbin/ifconfig eth0 up


0049 conntrack 表滿的處理方法(cgweb)

前段時間配置的iptables+squid做的proxy server ,一直工作正常。今天我上控制台上發現

Jun 18 12:43:36 red-hat kernel: ip_conntrack: table full, dropping packet.

Jun 18 12:49:51 red-hat kernel: ip_conntrack: table full, dropping packet.

Jun 18 12:50:57 red-hat kernel: ip_conntrack: table full, dropping packet.

Jun 18 12:57:38 red-hat kernel: ip_conntrack: table full, dropping packet.


IP_conntrack 表示連接跟蹤資料庫(conntrack database),代表NAT機器跟蹤連接的數目,連接跟蹤表能容納多少記錄是被一個變數控制的,它可由內核中的ip- sysctl函數設置。每一個跟蹤連接表會佔用350字節的內核存儲空間,時間一長就會把預定的空間填滿,那麼預定空間時多少?我以redhat為例在記憶體為64MB的機器上時4096,記憶體為128MB是 8192,記憶體為256MB是16376,那末就能在/proc/sys/net/ipv4/ip_conntrack_max裡檢視、設置。

例如:增加到81920,可以用以下命令:

echo "81920" > /proc/sys/net/ipv4/ip_conntrack_max


那樣設置是不會儲存的,要重啟後儲存可以在/etc/sysctl.conf中加:

net.ipv4.ip_conntract_max =81920

按照此方法改變後一切正常,要是在滿了可以加大其值.

程式開發篇

0001 linux下除錯core文件(bjchenxu)

gdb

:出錯產生core dump的可執行程式。

: core dump的文件名,預設是「core」


0002 gcc abc.c得到的a.out不能執行(bjchenxu)

./a.out


0003 c++ 編譯時為什麼出錯訊息說cout沒定義(bjchenxu)

include頭文件完後加入 using namespace std;


0004 新編譯產生的gcc ,使用的標準連接庫都在/usr/local/lib 下了,但使用的預設的連接路徑是 /usr/lib 怎樣新增?(除了在每次編譯時 增加 -L /usr/local/lib 以外)(sakulagi, hutuworm)

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib

寫到~/.bash_profile裡面。

增加一種簡便辦法:

將/usr/local/lib加入/etc/ld.so.conf,然後執行一次ldconfig


0005 RH9下GCC的安裝(一起走過的日子,hutuworm)

三種方法選一:

(1)利用CD上rpm安裝

CD-1:compat-gcc-7.3-2.96.118.i386.rpm

CD-1:compat-gcc-c++-7.3-2.96.118.i386.rpm

CD-1:libgcc-3.2.2-5.i386.rpm

CD-2:compat-gcc-g77-7.3-2.96.118.i386.rpm

CD-2:compat-gcc-java-7.3-2.96.118.i386.rpm

CD-2:compat-gcc-objc-7.3-2.96.118.i386.rpm

CD-2:gcc-3.2.2-5.i386.rpm

CD-2:gcc-c++-3.2.2-5.i386.rpm

CD-2:gcc-g77-3.2.2-5.i386.rpm

CD-2:gcc-gnat-3.2.2-5.i386.rpm

CD-2:gcc-java-3.2.2-5.i386.rpm

CD-2:gcc-objc-3.2.2-5.i386.rpm

比如碰到系統提示:

warning : gcc-3.2.2-5.i386.rpm : V3 DSA signature :MOKEY key ID db42a60e

error : Failed dependencies :

binutils >=2.13.90.0.18-9 is needed by gcc-3.2.2-5

glibc-devel >=2.3.2-11.9 is needed by gcc-3.2.2-5...

就先安裝glibc-devel包,依此類推

(2)更好的方法就是在X-window下選「主表菜單」──>「系統設置」──>「新增/刪除應用程式」──>「開發工具」中的gcc並安裝它

(3) up2date gcc便可自動解決dependency問題


0006 shell腳本為何無法執行(GOD_Father)

第一,腳本權限要為可執行 #chmod +x test.sh

第二,腳本所在的目錄在環境變數PATH中,或者直接執行 #./test.sh


----------------------------經典圖書篇--------------------------

0001 GNU/Linux高階網路應用服務指南(bjchenxu)

linuxaid網站

機械工業出版社

優點:又全又精,全都是實戰之作

缺點:針對版本較低,為redhat 6.2


0002 Linux Apache Web Server管理指南(Linux Apache Web Server Administration)(bjchenxu)

Charles Aulds 馬樹奇/金燕譯

電子工業出版社

優點:目前我還沒有發現哪個關於apache的問題這本書沒有講過

缺點:針對1.3.x,最新的針對2.0.*的英文版已出,中文版待出


0003 Linux內核情景分析(bjchenxu)

毛德操/胡希明

浙江大學出版社

優點:太透徹了,沒法不懂

缺點:還是版本問題,內核更新太快了,不過還是必讀


0004 Unix環境高階編程(bjchenxu)

Richard Stevens

機械工業出版社

優點:博大精深

缺點:初學者是很難理解的,否則怎麼叫《高階編程》呢?


0005 編程精粹--Microsoft編寫優質無錯c程式秘訣(bjchenxu)

Steve Maguire

電子工業出版社

優點:不說了,作者是微軟的資深工程師

缺點:很難找了,1994年出的


0006 Understanding the Linux Kernel, 2nd Edition(hutuworm)

Daniel P. Bovet & Marco Cesati

O'Reilly出版社

讀了這本書之後,你就會明白在什麼情況下Linux具有最佳的性能,以及它如何面對挑戰,在各種環境中提供工作行程調度、文件訪問和記憶體管理時的優良的系統響應。作者通過解釋其重要性來引入每一個題目,並將內核操作與Unix程式員和用戶熟悉的系統調用或實用程式聯繫起來。


0007 UNIX操作系統教程(英文版)(弱智)

Syed Mansoor Sarwar等

機械工業出版社

特點:淺顯易懂,著重unix基礎概念和整體理解,順便複習英語。

另外:機械工業出版社已經出版了中文版,名稱:UNIX 教程


0008 UNIX編程環境(弱智)

Brian W.Kernighan, Rob Pike 陳向群等譯

機械工業出版社

特點:淺顯,深入淺出講解如何使用UNIX及各種工具,簡單介紹Unix編程環境;對比「UNIX環境高階編程」,此書適合新手入門。


0009 The Art of UNIX Programming(hutuworm)

Eric Steven Raymond catb.org/~esr/writings/taoup/html/ 優點: E.S. Raymond的經典著作


0010 unix網路編程--卷一 套接頭API和X/Open傳輸接頭API(slg1972)

Richard Stevens

清華大學出版社

優點:詳細地講解unix網路的編程


0011 unix網路編程--卷二 工作行程間通訊(slg1972)

Richard Stevens

清華大學出版社

優點:詳細講解unix的工作行程之間,線程之間的關係,及各種不同標準的工作行程編程的異同


0012 unix網路編程--卷三 應用程式(slg1972, hutuworm)

未出,因為Richard Stevens大師英年早逝,再也不可能完成這計劃中的第三卷了。據說其未竟稿可能由Gary R. Wright整理續寫出來,但是自大師駕鶴以來一直杳無音信


0013 基於C++ CORBA高階編程(slg1972)

Michi Henning,Steve Vinoski

清華大學出版社

優點:中間件的好書,通向corba應用的必備資料。


0014 unix linux網管通鑒(odin_free)

電子版的,包括本版精華

優點:我見過關於unix知識最全面、最實用的chm文檔,相當於一個小型網站,裡面支持全文檢索,推薦所有還沒有的兄弟姐妹們下載


0015 www.chinaoy.com(aomin5555)

不錯,挺全的,圖書下載的好網址:

redhat linux9.0 官方入門指南

·redhat linux9.0 官方安裝指南

·redhat linux9.0 官方定制設置手冊

·redhat linux基礎教程

·Linux 參考大全

·清華論壇linux精華

·Linux系統管理員指南中文手冊

·Linux網站建設和維護全攻略

·redhat linux8.0 安裝手冊

·Linux環境database管理員指南


0016 Linux Advanced Routing & Traffic Control(hutuworm)

專門講LINUX IPROUTE2的書,大概100頁左右,www.lartc.org

中文版在:http://www.lartc.org/LARTC-zh_CN.GB2312.pdf


0017 Debian User強烈推薦看的書(NetDC)

Debian Reference (Debian參考手冊) qref.sourceforge.net/ 簡體中文版的pdf文檔。 qref.sourceforge.net/Debian/reference/reference.zh-cn.pdf 0018 Advanced Bash-Scripting Guide(hutuworm)

An in-depth exploration of the art of shell scripting.

Mendel Cooper. . www.tldp.org/LDP/abs/abs-guide.pdf 優點:是Bash編程的聖經,而且該書作者不斷在更新其內容,一兩個月就會翻新一個版本,值得一讀,一讀再讀。


----------------------------mysql相關篇--------------------------

0001 mysql的資料庫存放在什麼地方(bjchenxu)

1. 如果使用rpm包安裝,應該在/var/lib/mysql目錄下,以資料庫名為目錄名

2. 如果源碼安裝在/usr/local/mysql中,應該在/usr/local/mysql/var中,以資料庫名為目錄名


0002 從mysql中匯出和匯入資料(bjchenxu)

匯出資料庫

mysqldump 資料庫名 > 文件名

匯入資料庫

mysqladmin create 資料庫名


mysql 資料庫名 < 文件名


0003 忘了mysql的root口令怎麼辦(bjchenxu)

# service mysql stop

# mysqld_safe --skip-grant-tables &

# mysqladmin -u user password 'newpassword''

# mysqladmin flush-privileges


0004 快速安裝php/mysql(bjchenxu)

確保使用系統自帶的apache,從安裝光碟中找出所有以mysql及php-mysql開頭的rpm包,然後執行#rpm -ivh mysql*.rpm php-mysql*.rpm; mysql_install_db; service mysql start

來源:www.chinaunix.net 

psac 2006-07-06 03:34 PM

新手必讀:關於Linux 你所不了解的六個事實
耳邊不時地聽別人提起它,但似乎仍然難以建立起確切的印象?這就是Linux,一種開放原始碼作業系統!它很誘人,因為它功能強大而且免費。同時,它也令新手望而生畏,因為它通常比Windows難以安裝和配置。

現在是解決這些問題的理想時機。由於微軟Windows Vista消費版推出時間延後,預計人們今年全年仍將保持對Linux的興趣。微軟不能按計畫推出新的作業系統,可能對年底PC銷售旺季蒙上陰影。也許這是主流媒體發現這種已推出近15年的軟體進行的這個「革命」的一個原因。

因此,如果你曾經想嘗試Linux,但常常在最後一刻臨陣退縮,那麼現在我們找出了六個有用的事實,可能會消除你的擔憂,幫助你下定決心。

(1) Linux到底有多少種版本?

顯然,很多。據網站DistroWatch.com上的清單,至少有350個版本,本月該網站的讀者把Ubuntu評為最受歡迎的版本。Ubuntu最近獲得了昇陽電腦(Sun Microsystems)執行長Jonathan Schwartz的支援。

透過贏得大量普通用戶的支援,Ubuntu似乎獲得了合法性。用戶為其建立的網上資源包括一個部落格、菜鳥快捷指南和一個更為高級的使用手冊。Ubuntu的身世不凡,它的開發工作得到了南非網際網路企業家Mark Shuttleworth的資助。

另一個比較受歡迎的版本是SUSE,可以透過Novell贊助的OpenSUSE.org計畫免費獲得,或者透過Novell獲得帶有終端用戶支援的收費版本。SUSE最初是由SUSE Linux開發的,自從2004年該公司被Novell收購以後,就大力向企業用戶推銷。從那時起,Novell就把自己定位成另一個Red Hat。外界普遍把Red Hat視為企業Linux市場中的領導者。

其它較受歡迎的Linux版本包括Mandriva、Debian和Fedora。

對於那些不想為安裝工作大費周章的人來說,最簡單的途徑可能是選擇Linspire。與該軟體同名的公司是由億萬富翁Michael Robertson創立的,他是透過早期網際網路下載服務MP3.com起家的。Robertson把Linspire定位成消費者友好的、可替代Windows的系統,而且成本比Windows低得多,只需要50美元,並搭配了許多的驅動程式和應用程式。

(2) Linux可以提供哪些應用程式?LAMP是什麼?

賦予Linux PC存在理由的開放原始碼應用程式,以及你開展工作所需要的東西,這就是OpenOffice.org。

OpenOffice.org基於Sun公司的StarOffice,被定位成可以免費替代Microsoft Office的一套軟體。它配備了文字處理、電子表單軟體、簡報和繪圖程式。OpenOffice與許多Linux版本搭配在一起,包括來自Red Hat和Novell的版本。對於想自己定製的人來說,可以採用一些CD-ROM版本,但最簡單的方法是從網上下載。雖然OpenOffice是重要的Linux應用軟體,但存在與MS Office文件格式相容性的問題。

其它免費的、但名氣較小的Linux辦公室套裝軟體括GNOME Office和KOffice。

如果想上網瀏覽,Mozilla公司的Firefox和與之配套的Thunderbird郵件客戶端是比較安全的選擇。甚至可以從CD上獲得這些軟體。Konqueror也是一種受歡迎的瀏覽器,與許多版本的Linux搭配在一起。

LAMP經常出現,指的是套裝軟體「堆疊」。與Linux一起,LAMP包含Apache Web伺服器和MySQL資料庫。「P」在不同的場合可分別代表PHP、Perl或Python語言。但是,除了Linux作業系統本身以外,對所有這些程式感興趣的是程式開發者,而不是普遍的個人電腦使用者。

(3) 怎樣才能聽音樂?

對於許多家庭用戶來說,完成了文字處理之後,最重要的應用程式就是音樂播放器。RealPlayer因植基於Windows系統而聞名,是Linux提供的少數主要播放器之一。

Linux RealPlayer基於開放原始碼的Helix播放器,可提供下載。另一種免費播放器是KDE集團的amaroK。

然而,到哪裏去購買音樂也是個難題。iTunes、Yahoo Music和Urge都不是執行在Linux之下。至於Rhapsody,用戶可以獲得這種服務的一個子集,但不能上網購買音樂,而且不能在Linux機器上安裝Rhapsody的完整版。最令人煩惱的是,如果不持續搜索,就難以精確地確定該服務的哪些部份在工作和哪些部份不在工作。Rhapsody客戶服務部門也在試圖對該問題加以解釋。

少數幾個被設置成可以在Linux下執行的是MP3tunes.com,這是一個每首音樂88美分的一個線上音樂商店,是由上述的Michael Robertson建立的。如果你喜歡獨樹一幟的藝人,則Mindawn服務可能適合你。Mindawn上面你聽過的音樂不多,它避開了數位著作權管理(DRM)問題,以FLAC格式提供下載。熟悉內幕的PC音樂發燒友喜歡FLAC格式。

在PC上儲存MP3的用戶也經常在PC上儲存家庭的數位照片,Google的Picasa影像管理和共享軟體剛剛在Linux上發佈。

(4) 「桌面」環境如何?

一定要明白,當Linux人士說「桌面」的時候,不是指你的桌面,指的是你的電腦用戶介面(UI)。考慮到Linux歷史上形成的DIY文化,其UI最初都是來自基本的作業系統的單獨的元素,這毫不奇怪。現在,幾乎所有的Linux版本都提供一個或兩個主要桌面環境:Gnome或KDE。從概念上來看,桌面源於X Window系統,這是來自Unix world的20世紀80年代的GUI。

在目前的開發階段,Gnome和KDE的區別可能主要不在技術方面,據說KDE具有Windows味較濃的附件,而Gnome的速度較快。Gnome受益於它與Linux GNU Project之間的關係。Linux GNU Project在1984年由免費軟體提倡者Richard Stallman創立。KDE代表「K Desktop Environment」,一般認為比較適合於新手。

Gnome比較謹慎,似乎不提供經過整理的清單。許多Linux銷售商允許你從中任選一個,主要Linux廠商Red Hat和Novell也是如此,盡管二者都是Gnome Foundation的成員。有些版本確實傾向於某一種桌面。例如,Ubuntu提供Gnome,而Slackware則配備KDE。

(5) Linux在哪個領域更受青睞,伺服器還是桌上型電腦?

答案是伺服器領域。Linux在桌上型電腦領域的發展沒有達到其支援者所期望的程度。據著名分析師Rob Enderle,也許Linux在桌上型電腦領域也許永遠也不會成為主流。他表示,Linux難以打敗微軟。

據最權威的估計,桌上型電腦領域使用Linux的佔總體PC的比例一直徘徊在3%以下。但是,這沒有挫傷Linux忠貞支援者的信心。他們預測,Linux即將在桌上型電腦得到更廣泛的應用。

除了多數廠商可以利用Windows賺更多的錢這一事實以外,許多用戶沒有信心採用Linux還有兩個主要原因。最重要的是,Windows屬於「一次購足」式的作業系統。它提供幾乎所有用戶所需要的全部驅動程式,而且只需要點選幾次滑鼠、等待半個小時和輸入令人討厭的授權碼之後就能開始操作。

但是,盡管Linux是免費的東西,但安裝Linux通常比較麻煩,多數常用PC的用戶都難以應付。比較明顯的問題是,Linux環境下的驅動程式仍然不容易尋找,而且也不能做到即插即用。但這種情況在不斷改善,因此Linux支援者繼續保持信心。他們普遍相信,隨著驅動程式和應用程式獲得性問題的解決,用戶自然會出現。

令人感到意外的是,Linux似乎在電腦用戶通常不太注意的一個領域取得了顯著進展。這就是嵌入式領域,Linux正被用於驅動從智慧電話到數位錄像機等設備。Linux出現在多種嵌入平台之中。例如,Sony即將推出的Playstation 3將採用Linux,顯然是為了鼓勵年輕的開發人員為其遊戲機創作遊戲。Linux也在銷售點終端市場站穩了腳。例如一款戴在手腕上的重量較輕的Linux電腦。

(6) 說了一堆,但沒有給多少建議。我該如何開始?

一個比較「痛苦」的快捷方法是從閱讀《Test Driving Linux》開始。這是David Brickner所寫的一本書,包括一張CD,使你可以在Windows電腦中啟動Llinx,不會破壞Windows安裝。但不利之處在於,該書中的Linux就像書名所說的那樣,是「試駕」,只能從CD上執行,不會永久地把Linux安裝在你的硬碟上。

如果你準備長期試用Linux,請回到上面的問題(1),或者回到發行者名單。

從網上找一個版本比進行實際安裝更容易。即使分析最簡單的提供免費下載Linux服務的網頁,也讓人感到頭疼。最有效的下載方法是抓住一個ISO圖像,這是一個可以直接燒錄到CD-ROM上面的一個文件;多數光碟製作程式都有這個功能。用於製作Ubuntu安裝CD的ISO圖像在此。把本頁面下拉到接近底部,就會看到OpenSUSE啟動CD的ISO圖像。這裏還有其它14個Linux版本的ISO圖像,包括Knoppix、Red Hat、Fedora、FreeBSD和Slackware。你可以下載Novell Linux Desktop 9的評測版。

如果你根本不想走下載這條路,可以選擇用光碟,雖然來源不多。有一種Debian CD售價為10美元。最簡單的方法是到LinuxWorld Expo逛一逛,可以找到許多免費CD-ROM。

當你準備好安裝Linux時,我可以提供的最重要建議是:你不太可能在多數指南的最前面看到,就是不要把Linux安裝在Windows XP所在的同一個硬碟上。為什麼?因為Windows難以與其它作業系統共存,它可能會決定罷工。另外,如果你的Linux CD對磁碟進行格式化,你可能會刪掉整個Windows。

最好利用第二個硬碟,並在試驗Linux期間拔掉裝有Windows的硬碟。當然,如果你如果你想把Linux安裝在一台沒有作業系統的舊機器上,不必考慮上述警告。

對於未來的用戶還有一條建議,就與嘗試Linux的其它用戶多聯繫。這說起來容易,做起來難。出於某些原因,Linux專家似乎經常免不了滿嘴學究腔調。

當然,如果你很清楚的知道你打算使用哪種版本,就不必透過這些管道解惑了。

(Alexander Wolfe)

psac 2006-07-07 11:54 PM

Linux之ODBC安裝、配置和編程

Linux之ODBC安裝、配置和編程

本文主要內容是介紹ODBC的簡單原理,以及如何在Linux/Unix下進行ODBC的安裝、配置與編程。

一、 ODBC原理

ODBC 是Open Database Connect 即開放資料庫互連的簡稱,它是由Microsoft 公司於1991 年提出的一個用於訪問資料庫的統一界面標準,是應用程式和資料庫系統之間的中間件。它通過使用相應應用平台上和所需資料庫對應的驅動程式與應用程式的交互來實現對資料庫的操作,避免了在應用程式中直接呼叫與資料庫相關的操作,從而提供了資料庫的獨立性。

ODBC 主要由驅動程式和驅動程式管理器組成。驅動程式是一個用以支持ODBC 函數呼叫的模塊,每個驅動程式對應於相應的資料庫,當應用程式從基於一個資料庫系統移植到另一個時,只需更改應用程式中由ODBC 管理程式設定的與相應資料庫系統對應的別名即可。驅動程式管理器可鏈接到所有ODBC 應用程式中,它負責管理應用程式中ODBC 函數與DLL 中函數的綁定。

ODBC 使用層次的方法來管理資料庫,在資料庫通信結構的每一層,對可能出現依賴資料庫產品自身特性的地方,ODBC 都引入一個公共接頭以解決潛在的不一致性,從而很好地解決了基於資料庫系統應用程式的相對獨立性,這也是ODBC 一經推出就獲得巨大成功的重要原因之一。

從結構上分,ODBC 分為單束式和多束式兩類。

1. 單束式驅動程式
單束式驅動程式介於應用程式和資料庫之間,像中介驅動程式一樣資料提供一個統一的資料訪問方式。
當用戶進行資料庫操作時,應用程式傳遞一個ODBC 函數呼叫給ODBC 驅動程式管理器,由ODBC API 判斷該呼叫是由它直接處理並將結果返回還是送交驅動程式執行並將結果返回。
由上可見,單束式驅動程式本身是一個資料庫引擎,由它直接可完成對資料庫的操作,儘管該資料庫可能位於網路的任何地方。
2. 多束式驅動程式
多束式驅動程式負責在資料庫引擎和客戶應用程式之間傳送命令和資料,它本身並不執行資料處理操作而用於遠端操作的網路通信協議的一個界面。
前端應用程式提出對資料庫處理的請求,該請求轉給ODBC 驅動程式管理器,驅動程式管理器依據請求的情況,就地完成或傳給多束驅動程式,多束式驅動程式將請求翻譯為特定廠家的資料庫通信接頭(如Oracle 的SQLNet)所能理解的形式並交於接頭去處理,接頭把請求經網路傳送給服務器上的資料引擎,服務器處理完後把結果發回給資料庫通信接頭,資料庫接頭將結果傳給多束式ODBC 驅動程式,再由驅動程式將結果傳給應用程式。

很多程式員已經體會到了在Windows平台下的ODBC的益處,而在Linux/Unix下進行資料庫編程的時候卻不得不根據不同的資料庫來選擇特有的API進行編程,一旦資料庫發生了改變,所有與這些API相關的程式都必須進行修改。其實在Linux/Unix下現在也有了自己的ODBC,可以使我們的資料庫編程就像在Windows平台下一樣簡單。

下面我們開始介紹Linux/Unix下的ODBC:

二、 Linux/Unix下ODBC的安裝:

方法一:
先下載最新的unixODBC源碼包(http://www.unixodbc.org/unixODBC-2.2...述命令:

tar zxvf unixODBC-2.2.1.tar.gz
cd unixODBC-2.2.1
./configure --prefix=/usr/local/unixODBC-2.2.1 --includedir=/usr/include --libdir=/usr/lib -bindir=/usr/bin --sysconfdir=/etc
make
make install

安裝成功後,unixODBC所需的頭文件都被安裝到了/usr/inlucde下,編譯好的庫文件安裝到了/usr/lib下,與unixODBC相關的可執行文件安裝到了/usr/bin下,配置文件放到了/etc下。

方法二:
下載rpm包進行安裝,我們這裡以Red Hat 7.3為例:
unixODBC-2.2.0-5 RPM for i386(安裝包及源碼包)
ftp://speakeasy.rpmfind.net/linu ... BC-2.2.0-5.i386.rpm、ftp://ftp.rpmfind.net/linux/redh ... DBC-2.2.0-5.src.rpm)
unixODBC-devel-2.2.0-5 RPM for i386
ftp://speakeasy.rpmfind.net/linu ... el-2.2.0-5.i386.rpm)
直接將unixODBC-2.2.0-5.i386.rpm和unixODBC-devel-2.2.0-5.i386.rpm裝入系統就可以了,命令如下:

rpm -ivh unixODBC-2.2.0-5.i386.rpm
rpm -ivh unixODBC-devel-2.2.0-5.i386.rpm

安裝好以後,所需的各個部分與上面所列的位置相同。

三、 Linux/Unix下ODBC的配置:

執行ODBCConfig程式(在/usr/bin下)

和Windows下的ODBC設置視窗是不是很像?我想大家都能看懂吧。

第一步:安裝資料庫的ODBC驅動程式
Drivers這一欄中用來設置資料庫的驅動程式,點擊Add按鈕


Name一欄填入資料庫驅動的名稱,Description是資料庫驅動的描述,Driver是用來選擇資料庫驅動程式的,Setup是用來選擇資料庫驅動安裝程式的,如果你是按照上述安裝方法安裝的,這些程式都放在/usr/lib下,下面是資料庫驅動程式的列表:
資料庫 資料庫驅動程式 資料庫驅動安裝程式
TXT libodbctxt.so libodbctxtS.so
NNTP libnn.so libodbcnnS.so
MiniSQL libodbcmini.so libodbcminiS.so
PostgreSQL libodbcpsql.so libodbcpsqlS.so
MySQL (註釋) libodbcmyS.so
Sybase/MS SQL (註釋) libtdsS.so
Oracle (註釋) liboraodbcS.so

註釋:
MySQL、Sybase/MS SQL和Oracle的資料庫驅動可以在下列網址找到:
MySQL          http://www.unixodbc.org/myodbc.html
Sybase/MS SQL      http://www.freetds.org
Oracle           http://www.easysoft.org

MySQL的驅動程式MyODBC-2.50.39-4 RPM for i386以及源碼包:
ftp://speakeasy.rpmfind.net/linu ... -2.50.39-4.i386.rpm
ftp://ftp.redhat.com/pub/redhat/ ... C-2.50.39-4.src.rpm

選擇好驅動程式之後,點擊"√"儲存退出。

第二步:設置DSN
DSN分為User DSN、System DSN和File DSN三種,我們以System DSN為例。選中System DSN一欄以後,點擊Add…

列表中會列出你已經安裝好的資料庫驅動程式,我這裡只裝了MySQL和PostgreSQL,然後選擇你所要使用的驅動程式,然後點擊OK

我這裡使用的是MySQL的資料庫驅動,不同的資料庫,這個視窗的內容會有所不同。Name是資料源的名稱,Description是描述,Server可以選擇服務器,如果本機啟動了MySQL就可以選擇localhost,如果Port和Socket有特殊要求,再根據實際情況進行修改,Database是用來選擇資料庫的,下拉表菜單不一定包含所有的資料庫,你可以把自己已經創建好的資料庫名稱填寫在這裡。都配置好之後,點擊"√"儲存退出。

這樣Linux/Unix下的ODBC資料源就已經設置好了,大家還可以在ODBCConfig程式的Status欄中檢視ODBC的使用情況,在Advanced欄中設置是否做日誌或者啟動連接池,在About欄中,有一個Linux/Unix ODBC的示意圖,在Credits按鈕中可以看到所有開發者的名字的列表。 ODBCConfig程式中所有有關資料庫驅動程式的訊息被放在odbcinst.ini(在/etc下)文件中,有關DSN的訊息被放在odbc.ini(在/etc下)文件中,大家有興趣的話,可以自己去觀察一下。

第三步:使用DataManager程式瀏覽資料庫
執行DataManager程式之後就可以檢視Drivers、System DSN和User DSN這幾項內容,,在瀏覽資料庫的時候,可以在右面的SQL欄中輸入SQL語句,然後點擊人形按鈕就可以執行SQL語句,執行結果會在Results一欄中顯示出來

第四步:使用isql程式檢視資料庫
unixODBC還提供了命令台下檢視資料庫的程式,這就是isql,用法如下:

isql DSN [UID [PWD]] [options]

DSN 資料源名稱
UID 用戶ID
PWD 用戶密碼

Options:
-b 批處理,沒有提示字元的模式
-dx 設置列之間的分隔符為x
-w 將查詢結果輸出為HTML格式
-c 第一行輸出列名
--version 輸出isql的版本號

四、 Linux/Unix下ODBC的編程:

1、使用unixODBC提供的ODBC API進行編程:
在進行編程之前,我們來看一下ODBC API中的常用資料類型與我們在C語言中使用的資料類型的對應關係:
類型標識符 ODBC資料類型 C資料類型
SQL_C_CHAR SQLCHAR * unsigned char *
SQL_C_SSHORT SQLSMALLINT short int
SQL_C_USHORT SQLUSMALLINT unsigned short int
SQL_C_SLONG SQLINTEGER long int
SQL_C_FLOAT SQLREAL float
SQL_C_DOUBLE SQLDOUBLE, SQLFLOAT double
SQL_C_BINARY SQLCHAR * unsigned char *
SQL_C_TYPE_DATE SQL_DATE_STRUCT struct tagDATE_STRUCT {SQLSMALLINT year; SQLUSMALLINT month; SQLUSMALLINT day; } DATE_STRUCT;
SQL_C_TYPE_TIME SQL_TIME_STRUCT struct tagTIME_STRUCT {SQLUSMALLINT hour; SQLUSMALLINT minute; SQLUSMALLINT second; } TIME_STRUCT;

我們這裡使用的資料庫名稱為test(DSN),這個DSN使用的用戶名是root,密碼為空,表的名稱是web,字段情況如下:
>
字段名 資料類型
id integer
name char(40)
size integer

第一:設定ODBC環境控制碼並設置參數
首先我們需要聲明一個ODBC環境控制碼(SQLHENV),它可以用來獲得有關的ODBC環境訊息,我們需要呼叫SQLAllocHandle ( SQL_HANDLE_ENV, SQL_NULL_HANDLE, &V_OD_Env )來獲得這個控制碼,V_OD_Env就是要分配的SQLHENV類型的環境控制碼。
分配好控制碼之後,你給它需要設定所使用的ODBC版本,你可以呼叫SQLSetEnvAttr ( V_OD_Env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0 ),SQL_ATTR_ODBC_VERSION是存放你定義的ODBC版本號的變數,SQL_OV_ODBC3則說明你的程式使用的是ODBC 3.0。

第二:設定連接控制碼並設置超時參數
我們需要聲明一個連接控制碼(SQLHDBC),用來存放資料庫連接訊息的,呼叫SQLAllocHandle ( SQL_HANDLE_DBC, V_OD_Env, &V_OD_hdbc )獲得連接控制碼,V_OD_hdbc就是要分配的SQLHDBC類型的連接控制碼。
分配好之後,我們可以呼叫SQLSetConnectAttr ( V_OD_hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER *)5, 0 )來設定連接超時參數。

第三:連接資料庫
呼叫SQLConnect ( V_OD_hdbc, (SQLCHAR*) "Test", SQL_NTS, (SQLCHAR*) "root", SQL_NTS, (SQLCHAR*) "", SQL_NTS )連接我前面提到的資料庫,需要設定三個參數,就是資料庫名稱、用戶名和密碼(因為我的資料庫密碼為空,所以這裡的密碼也為空),後面的SQL_NTS的位置應該寫入這些參數的長度,如果寫的是SQL_NTS就是讓SQLConnect來決定參數的長度。

第四:分配SQL語句的控制碼並進行查詢:
需要聲明一個SQL語句的控制碼(SQLHSTMT),用來存放SQL語句訊息的,呼叫SQLAllocHandle ( SQL_HANDLE_STMT, V_OD_hdbc, &V_OD_hstmt )來獲得這個控制碼,V_OD_hstmt就是我們要分配的SQLHSTMT類型的SQL語句控制碼。

我們的查詢語句是:

SELECT name, id FROM web ORDER BY id

執行這條查詢語句之後,查詢結果可能有很多行,但每行只有兩列,分別對應name和id,它們的資料類型為integer和char*,在ODBC中的資料類型標識符為SQL_C_ULONG和SQL_C_CHAR。我們需要先聲明這樣的兩個變數來存貯查詢結果:

SQLINTEGER V_OD_id;
char V_OD_buffer[200];

然後我們需要使用SQLBindCol函數把查詢結果和我們定義的變數進行綁定:

SQLBindCol(V_OD_hstmt,1,SQL_C_CHAR, &V_OD_buffer,150,&V_OD_err);
SQLBindCol(V_OD_hstmt,2,SQL_C_ULONG,&V_OD_id,150,&V_OD_err);

這裡的V_OD_err是用來存放錯誤訊息編號的變數,類型也是SQLINTEGER。
接下來,我們呼叫SQLExecDirect來進行查詢:

SQLExecDirect ( V_OD_hstmt, "SELECT dtname,iduser FROM web order by iduser", SQL_NTS );

我們可以用SQLNumResultCols ( V_OD_hstmt, &V_OD_colanz )來獲得結果的列數,也可以用SQLRowCount( V_OD_hstmt, &V_OD_rowanz )來獲得結果的條數,V_OD_colanz和V_OD_rowanz分別存儲相應的結果,類型分別為SQLSMALLINT和SQLINTEGER。
在讀取結果之前,我們需要呼叫SQLFetch ( V_OD_hstmt )語句,這個語句可以用來獲得第一條結果也可以用來都下一條,有點像next的感覺。然後我們就可以在V_OD_id和V_OD_buffer裡面獲得每條記錄的結果了。

第五:關於關閉連接和釋放控制碼
關閉資料庫的連接,呼叫SQLDisconnect ( V_OD_hdbc )就可以了,但在關閉資料庫之前需要先釋放SQL語句的控制碼,而且在關閉資料庫之後應該釋放連接控制碼和ODBC環境控制碼,語句如下(按正常的順序):

SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt);
SQLDisconnect(V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);

第六:關於上述情況中的錯誤訊息處理
我們需要定義兩個變數:

long V_OD_erg;
SQLINTEGER V_OD_err;

SQLAllocHandle、SQLSetEnvAttr、SQLSetConnectAttr、SQLConnect、SQLExecDirect、SQLNumResultCols和SQLRowCount的呼叫結果都可以用V_OD_erg來存儲,V_OD_err可以獲得SQLBindCol中的錯誤訊息。

第七:獲得本機的DSN訊息
我們可以在聲明SQLHENV控制碼之後,使用SQLDataSources函數來獲得本機的DSN訊息。程式如下:

void OD_ListDSN(void)
{
char l_dsn[100],l_desc[100];
short int l_len1,l_len2,l_next;

l_next=SQL_FETCH_FIRST;
while( SQLDataSources(V_OD_Env,l_next,l_dsn, sizeof(l_dsn),
&l_len1, l_desc, sizeof(l_desc), &l_len2) == SQL_SUCCESS)
{
printf("Server=(%s) Beschreibung=(%s)
",l_dsn,l_desc);
l_next=SQL_FETCH_NEXT;
}
}

l_next變數是用來指定我們所要獲得的DSN的類別:
SQL_FETCH_FIRST 設定SQLDataSources()函數找到第一個可用的資料源(可以是User DSN,也可以是Systerm DSN)
SQL_FETCH_FIRST_USER 設定SQLDataSources()函數找到第一個User DSN
SQL_FETCH_FIRST_SYSTEM 設定SQLDataSources()函數找到第一個System DSN
SQL_FETCH_NEXT 找到下一個資料源,至於資料源類型則要根據前面的定義

到這裡,我們在Unix的C語言下面進行ODBC編程已經講完,上述ODBC API需要引用以下幾個頭文件(這些文件已經安裝到/usr/include下了):

#include <sql.h>
#include <sqlext.h>
#include <sqltypes.h>

另外如果大家使用GTK進行編程,由於到目前為止GTK還沒有加入專門處理資料庫的部件,所以大家可以在GTK中呼叫上述的ODBC API即可。

這裡附上例程供大家參考學習:

/* odbc.c
testing unixODBC
*/
#include <stdlib.h>
#include <stdio.h>
#include <odbc/sql.h>
#include <odbc/sqlext.h>
#include <odbc/sqltypes.h>

SQLHENV V_OD_Env; // Handle ODBC environment
long V_OD_erg; // result of functions
SQLHDBC V_OD_hdbc; // Handle connection

char V_OD_stat[10]; // Status SQL
SQLINTEGER V_OD_err,V_OD_rowanz,V_OD_id;
SQLSMALLINT V_OD_mlen,V_OD_colanz;
char V_OD_msg[200],V_OD_buffer[200];


int main(int argc,char *argv[])
{
// 1. allocate Environment handle and register version
V_OD_erg=SQLAllocHandle(SQL_HANDLE_ENV,SQL_NULL_HANDLE,&V_OD_Env);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
printf("Error AllocHandle
");
exit(0);
}
V_OD_erg=SQLSetEnvAttr(V_OD_Env, SQL_ATTR_ODBC_VERSION, (void*)SQL_OV_ODBC3, 0);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
printf("Error SetEnv
");
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
exit(0);
}
// 2. allocate connection handle, set timeout
V_OD_erg = SQLAllocHandle(SQL_HANDLE_DBC, V_OD_Env, &V_OD_hdbc);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
printf("Error AllocHDB %d
",V_OD_erg);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
exit(0);
}
SQLSetConnectAttr(V_OD_hdbc, SQL_LOGIN_TIMEOUT, (SQLPOINTER *)5, 0);
// 3. Connect to the datasource "web"
V_OD_erg = SQLConnect(V_OD_hdbc, (SQLCHAR*) "Test", SQL_NTS,
(SQLCHAR*) "root", SQL_NTS,
(SQLCHAR*) "", SQL_NTS);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
printf("Error SQLConnect %d
",V_OD_erg);
SQLGetDiagRec(SQL_HANDLE_DBC, V_OD_hdbc,1,
V_OD_stat, &V_OD_err,V_OD_msg,100,&V_OD_mlen);
printf("%s (%d)
",V_OD_msg,V_OD_err);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
exit(0);
}
printf("Connected !
");
V_OD_erg=SQLAllocHandle(SQL_HANDLE_STMT, V_OD_hdbc, &V_OD_hstmt);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
printf("Fehler im AllocStatement %d
",V_OD_erg);
SQLGetDiagRec(SQL_HANDLE_DBC, V_OD_hdbc,1, V_OD_stat,&V_OD_err,V_OD_msg,100,&V_OD_mlen);
printf("%s (%d)
",V_OD_msg,V_OD_err);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
exit(0);
}
SQLBindCol(V_OD_hstmt,1,SQL_C_CHAR, &V_OD_buffer,150,&V_OD_err);
SQLBindCol(V_OD_hstmt,2,SQL_C_ULONG,&V_OD_id,150,&V_OD_err);

V_OD_erg=SQLExecDirect(V_OD_hstmt,"SELECT dtname,iduser FROM web order by iduser",SQL_NTS);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
printf("Error in Select %d
",V_OD_erg);
SQLGetDiagRec(SQL_HANDLE_DBC, V_OD_hdbc,1, V_OD_stat,&V_OD_err,V_OD_msg,100,&V_OD_mlen);
printf("%s (%d)
",V_OD_msg,V_OD_err);
SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt);
SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
exit(0);
}
V_OD_erg=SQLNumResultCols(V_OD_hstmt,&V_OD_colanz);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt);
SQLDisconnect(V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
exit(0);
}
printf("Number of Columns %d
",V_OD_colanz);
V_OD_erg=SQLRowCount(V_OD_hstmt,&V_OD_rowanz);
if ((V_OD_erg != SQL_SUCCESS) && (V_OD_erg != SQL_SUCCESS_WITH_INFO))
{
printf("Number of RowCount %d
",V_OD_erg);
SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt);
SQLDisconnect(V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
exit(0);
}
printf("Number of Rows %d
",V_OD_rowanz);
V_OD_erg=SQLFetch(V_OD_hstmt);
while(V_OD_erg != SQL_NO_DATA)
{
printf("Result: %d %s
",V_OD_id,V_OD_buffer);
V_OD_erg=SQLFetch(V_OD_hstmt);
} ;
SQLFreeHandle(SQL_HANDLE_STMT,V_OD_hstmt);
SQLDisconnect(V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_DBC,V_OD_hdbc);
SQLFreeHandle(SQL_HANDLE_ENV, V_OD_Env);
return(0);
}

2.QT下進行ODBC編程
QT 3.0提供了Data Table、Data Browser和Data View三個與資料庫相關的控件。你可以在QT的Project設置你要連接的資料庫,Driver一欄中選擇QODBC3即可,其它選項你一看就明白了。上述的三個資料庫控件的使用方法可以參見QT中相應文檔,也很好使用的。

參考資料:

1. 微軟的ODBC主頁:http://www.microsoft.com/data/odbc/;
2. UnixODBC的主頁:http://www.unixodbc.org;
3. FreeODBC的主頁:http://www.jepstone.net/FreeODBC/;
4. EasySoft的主頁:http://www.easysoft.com;
5. TrollTech的QT 3.0文檔主頁:http://doc.trolltech.com/3.0/

psac 2006-07-08 12:01 AM

用rsync修復不完整的Linux光碟映像文件

1、光碟映像下載過程中的驗證碼問題存在的原因;

  有時是因為下載工具不支持所致使,比如有些下載工具不支持大於2G的文件,所以會出現本來是3G的文件,結果他就下載了2G,文件的不完整導致驗證碼的不一致;另外一方面有時我們選擇的下載地址所提供的文件有問題,也會導致下載的file.iso與官方所提供的驗證碼不一致;

  舉例:

  比如,我們在Fedora 官方看到的Fedora Core 5.0 的SHA1驗證碼如下:

  ed9a852cf77250c3ae111c621d350af5c0b0a29b FC-5-i386-DVD.iso

  當我們在某個FTP下載後發現與官方的不一致,結果完全不能安裝使用;這時我們是重新下載,還是找一種辦法來解決?答案當然是找辦法來解決;所以我們這時引入了rsync 這個工具;

  2、用rsync工具同步解決映像不完整問題;

  大家都知道rsync 最主要的功能就是同步備份和鏡像功能,前提是得有rsync服務器;我所說的意思是rsync並不能同步ftp服務器上的內容,我想這個大家應該明白;目前大多數Linux發行版都有rsync服務器,我們就可以利用rsync服務器上的源來同步不完整的光碟映像;

  當然也能用rsync下載rsync服務器上的文件,我們用rsync的同步修復功能來解決我們所面對的問題,說實在的這個功能真的不錯;

  2.1 尋找Linux發行版的rsync服務器;

  因為rsync 並不能同步ftp和web服務器上的映像文件,所以我們根本沒有能力用光碟映像所處的FTP或WEB服務器上的地址;我們得找有類似下面的地址;

  rsync://mirrors.kernel.org

  只有在rsync服務器上找到我們所需要的映像才能行,尋找的辦法是去官方發行版所提供的服務器列表上去找;

  2.2 rsync 進入服務器的方法;

  比如我通過wget下載的FC-5-i386-DVD.iso有問題,我想用rsync 來同步解決;所以首先就要找擁有FC-5-i386-DVD.iso的rsync服務器;於是我到Fedora.redhat.com 的下載列表中尋找 ,發現 rsync://mirrors.kernel.org 上有這個文件;所以我們先要進入這台服務器;請不要把地址後面的/省略,這樣不會列出服務器或服務器目錄中的文件;

  [root@localhost beinan]# rsync rsync://mirrors.kernel.org/

  mirrors All mirror sites debian Debian Linux distribution mirror redhat RedHat mirror fedora Fedora - RedHat community project fedora.us fedora.us - Additional stuff for Fedora centos CentOS - An Enterprise-class Linux distribution opensuse OpenSUSE - Novell's community project

  我們發現在這個服務器上有fedora的鏡像;所以我們一級一級的進去;執行下面的命令;

  [root@localhost beinan]# rsync rsync://mirrors.kernel.org/fedora/ drwxr-xr-x 4096 2005/02/03 08:05:26 . drwxr-xr-x 4096 2006/03/17 00:41:43 core drwxr-sr-x 4096 2006/03/18 03:05:05 extras

  …… ……

  [root@localhost beinan]# rsync rsync://mirrors.kernel.org/fedora/core/5/i386/iso/ drwxr-xr-x 4096 2006/03/15 13:39:03 . -rw-r——r—— 3253669888 2006/03/15 12:49:55 FC-5-i386-DVD.iso -rw-r——r—— 687235072 2006/03/15 12:47:10 FC-5-i386-disc1.iso -rw-r——r—— 700618752 2006/03/15 12:48:05 FC-5-i386-disc2.iso -rw-r——r—— 721016832 2006/03/15 12:50:35 FC-5-i386-disc3.iso -rw-r——r—— 720910336 2006/03/15 12:51:46 FC-5-i386-disc4.iso -rw-r——r—— 387753984 2006/03/15 12:52:16 FC-5-i386-disc5.iso -rw-r——r—— 79122432 2006/03/15 12:31:59 FC-5-i386-rescuecd.iso -rw-r——r—— 671 2006/03/15 13:38:25 SHA1SUM

  我們發現了FC-5-i386-DVD.iso,這時我們要進行下一個過程,同步文件;

2.3 用rsync 同步文件的語法;

  首先我們要進入本機機存放以前下載好,但有問題的 FC-5-i386-DVD.iso的目錄(還是接著前面的例子),然後再執行類似下面的命令;

  命令格式如下:

  rsync -vzP 映像文件的rsync地址 你以前下載下來的文件

  比如我以前下載的 FC-5-i386-DVD.iso的有問題,這時我想用rsync 同步來修正,所以我把FC-5-i386-DVD.iso文件放入了一個名為fc5iso的目錄中;

  [root@localhost beinan]# cd fc5

  [root@localhost fc5]# ls -la drwxr-xr-x 2 root root 136 2006-03-26 04:05 . drwxr-xr-x 20 beinan beinan 472 2006-03-26 03:56 ……

  -rwxr-xr-x 1 beinan beinan 2276458496 2006-03-26 03:47 FC-5-i386-DVD.iso

  然後執行;

  [root@localhost fc5]#rsync -vzP rsync://mirrors.kernel.org/fedora/core/5/i386/iso/FC-5-i386-DVD.iso FC-5-i386-DVD.iso

  可能要等幾分鐘才相關的訊息出現,也會出現下載提示之類的;如果有下載之類的訊息,就不必管他了,這說明已經正常工作了;我們有的只是等待;如果我們再看一下這個目錄都有什麼,我們就明白了。rsync的原理是先從本機已存的文件中下載,然後對照服務器的文件,如果已經下載的文件不完整,他就從服務器上下載;如果有錯誤的,就修正;他會先產生一個臨時文件,也就類似下面的…… ……

  [root@localhost fc5]# ls -la ls -la總用量 5253889 drwxr-xr-x 2 root root 136 2006-03-26 04:05 . drwxr-xr-x 20 beinan users 472 2006-03-26 03:56 ……

  -rwxr-xr-x 1 root root 2276458496 2006-03-26 03:47 FC-5-i386-DVD.iso -rwx—— 1 root root 3103522816 2006-03-26 08:59 .FC-5-i386-DVD.iso.SI37yU

  等完成後,會有類似下面這樣的提示,然後rsync會自動刪除。file臨時文件,更新 FC-5-i386-DVD.iso.

  FC-5-i386-DVD.iso 3253669888 100% 164.78kB/s 5:21:22 (1, 100.0% of 1)

  wrote 381831 bytes read 953051797 bytes 48730.35 bytes/sec total size is 3253669888 speedup is 3.41

  經過這個簡單的過程,我們就把有問題的文件同步更新了。然後我們再來檢測文件的完整性;這樣就可以修正存在問題的文件,是不是能行,只有嘗試了才知道;

  注意:同步文件時,要有大一點的空間;因為同步的過程中,rsync會創建一個和你下載文件同等大小的臨時文件;

  3、rsync 的版本簡說;

  rsync有Windows版本,Linux大多發行版都有自帶,安裝上就OK了;不過我得說一下Windows版本;下載客戶端就行;

 


所有時間均為台北時間。現在的時間是 07:58 AM

Powered by vBulletin® 版本 3.6.8
版權所有 ©2000 - 2024, Jelsoft Enterprises Ltd.

『服務條款』

* 有問題不知道該怎麼解決嗎?請聯絡本站的系統管理員 *


SEO by vBSEO 3.6.1