可以在 loader prompt 時輸入
代碼:
set hint.apic.0.disabled=1
掛載光碟 ISO 檔
$ mkdir /mnt/5.2.1-RELEASE
$ mdconfig -a -t vnode -f /home/ftp/pub/ISO-IMAGES/FreeBSD/5.2.1-RELEASE/5.2.1-RELEASE-i386-disc1.iso -u 1
$ mount_cd9660 /dev/md1 /mnt/5.2.1-RELEASE
如有問題 (例:找不到 /dev/md1 或 mount 失敗)
請確定有將以下兩項編入核心
代碼:
device md # Memory "disks"
options CD9660 # ISO 9660 Filesystem
如 options CD9660 未編入核心
可直接執行 kldload cd9660.ko 後就可以 mount 了
記錄畫面中的所有顯示出的訊息 (以 make world 為例)
$ script /var/tmp/mw.out
Script started, output file is /var/tmp/mw.out
$ make world
… compile, compile, compile …
$ exit
Script done, …
刪除 path 路徑以下,所有 .php 文件每個行尾的 ^M 符號
$ find /path -name "*.php" | xargs -n 1 perl -pi -e "s/\r//g"
利用 pw 指令來增加/變換 user 的 group
例:帳號 abcd 所屬群組 abcd
變換帳號 abcd 的預設群組為 staff (當然得要先有 staff 這個群組)
$ pw user mod -n abcd -g staff
$ groups abcd
staff
變換帳號 abcd 的預設群組為 office,並加入到 www,mysql,squid 三群組中
$ pw user mod -n abcd -g office -G www,mysql,squid
$ groups abcd
office www mysql squid
不變換預設群組,只將帳號 abcd 加入到 office,staff,game,software 四群組中
$ pw user mod -n abcd -G office,staff,game,software
$ groups abcd
abcd www mysql squid
將帳號 abcd 維持在預設群組中,並從其它附屬的群組中移除
$ pw user mod -n abcd -G ""
$ groups abcd
abcd
用 postfix 本機測試寄信到自行假設的假 domain
/etc/hosts 中加入
192.168.1.100 aaa.bbb
然後在 /usr/local/etc/postfix/main.cf 最後加入
ignore_mx_lookup_error = yes
disable_dns_lookups = yes
重新載入 postfix 設定檔
postfix reload
就可以寄信給 test@aaa.bbb 囉...
註1:disable_dns_lookups = yes 包含 ignore_mx_lookup_error = yes
本例中,可以直接用 disable_dns_lookups = yes 選項解決無法寄信的問題
註2:
如果沒有設定 ignore_mx_lookup_error = yes (如果對方沒有設定 mx 可以用這個解決)
May 14 13:35:31 test postfix/smtp[99813]: D60AC40260: to=
如果是一個完全假造的 domain,請加上 disable_dns_lookups = yes
May 14 13:42:02 test postfix/smtp[99844]: 249754026C: to=
後記:
在一個正常服務的 mail server 中,最好是不要加上 disable_dns_lookups = yes
否則他就不會去參考 resolv.conf 的設定,直接只參照 /etc/hosts 的設定值
這樣收信都沒問題....但是有許多的郵件都會寄送不出去
dmesg
/var/log/dmesg.today
/var/log/dmesg.yesterday
這兩個檔案會記錄兩天內在 consol 上出現有關硬體的訊息
指令 dmesg 僅會秀出 /var/log/dmesg.today 的訊息
而開機時的硬體訊息會保持在
/var/run/dmesg.boot
所以如果開機很多天了,要查本機相關的硬體訊息
最好是直接看 /var/run/dmesg.boot 的內容
MAKEDEV
FreeBAD 5.x 之後已經沒有 MAKEDEV,請改用 devfs
pkg_create 製作套件備份
代碼:
$ pkg_create -c amavisd -b amavisd-20020531_1 /tmp/amavisd-20020531_1.tgz
-c 註解
-b 套件名稱
tcpdump 的使用
監控 fxp0 這一張網卡上
來源 IP是 192.168.129.80 目的 IP 是192.168.129.82 並且目的 port 是 25 的封包
代碼:
$ tcpdump -npi fxp0 src host 192.168.0.80 and dst host 192.168.0.82 and dst port 25
註:
-n 是指以數字顯示 取代 domain 及協定,必須寫在 -i 之前
-p 是指不要讓網卡進入混雜模式 (promiscuous mode),必須寫在 -i 之前
-i 是指網卡
src host 是指來源位置
src port是指來源埠號
dst host 是指目的位置
dst port是指目的埠號
變更 FreeBSD 的 perl 版本
在 FreeBSD 4.x 版中...perl 是與系統一併安裝
到了 FreeBSd 5.x 才在安裝時把它分離出來
如果你使用 FreeBSD 4.x 的 OS
它的 perl 版本是比較舊的 5.0.x.x 的版本
我們可以透過 ports 來安裝較新的版本
不過在安裝完成之後,
還要使用 use.perl 這個指令才能讓系統使用新版的 perl
當然這個指令還能讓我們從新版本換回舊版本
以防止新版本的 perl 發生問題時,可以後悔
(其實新舊版本會同時存在於系統中)
代碼:
# use.perl
Usage:
/usr/local/bin/use.perl port -> /usr/bin/perl is the perl5 port
/usr/local/bin/use.perl system -> /usr/bin/perl is the system perl
所以我們使用下面的指令來讓系統使用 ports 安裝的版本
代碼:
#use.perl port
如果要換回舊版本
代碼:
#use.perl system
註:
1. 執行 use.perl port 時 /usr/bin/perl 會變成連結到 /usr/local/bin/perl 的 soft link
2. 執行 use.perl system 時 /usr/bin/perl 會換回原來系統安裝時的二進制檔案
SoftUpdates 提高檔案系統效能
從 FreeBSD 4.x 開始,ufs 檔案格式加入了一種叫做 SoftUpdates 的技術,可提高檔案系統的效能。除了 / 根目錄外,所有的 ufs slice 都建議打開 SoftUpdate,這樣對於提高系統整體校能很有好處。
雖然 / 根目錄也是 ufs slice,但是在 FreeBSD 文件的說明中有提到,在 / 根目錄打開 SoftUpdates 會造成系統不穩定。由於 / 根目錄的內容不需要經常變化,不打開 SoftUpdates 也不會影響到效能。
SoftUpdates 可以隨時透過 tunefs(8) 來打開或關閉。
如果要改變 / 根目錄的 SoftUpdates 狀態
請先進入 single-user-mode
代碼:
# tunefs -n disable /
如果是要改變其它掛載點的 SoftUpdates 狀態
請先 umount 該掛載點
代碼:
# umount /home
# tunefs -n enable /dev/ad0s2e
直接下 mount 指令,你可以看到那些掛載的 slice 是有開啟 SoftUpdates 的
# mount
代碼:
/dev/ad0s1a on / (ufs, local)
/dev/ad0s2e on /home (ufs, local, soft-updates)
/dev/ad0s2f on /usr (ufs, local, soft-updates)
/dev/ad0s1f on /var (ufs, local, soft-updates)
procfs on /proc (procfs, local)
而在初安裝 FreeBSD 的設定 label 步驟中,打開 SoftUpdates 會將檔案系統顯示為 utfs+s
掛載 Samba 或 Windows 所分享出來的檔案系統 (smbfs)
指令:mount_smbfs -I 主機IP //登入帳號@主機IP或名稱/分享目錄 /掛載點
例:
mount_smbfs -I 192.168.0.200 //jackie@192.168.0.200/sharefolder /mount/point
mount_smbfs -I 192.168.1.10 //ryan@192.168.1.10/ryan /mount/ryan
如果你是要掛載 Windows 所分享出來的目錄
則上述主機IP或名稱的部份
一定要使用網芳名稱才能被掛載
例:
mount_smbfs -I 192.168.1.10 //ryan@fileserver/AVCD /mount/AVCD
mount_smbfs -I 192.168.129.68 //administrator@jackie/mp3 /mount/mp3
後記:發現不用 -I 也可以直接掛載 Windows 的 share folder
轉貼自 http://phorum.study-area.org/viewtopic.php?t=21220
如果要修改掛上去的權限 可以用
mount_smbfs -f 664 -d 755 -L zh_TW.Big5 //user_name@netbios_name/folder /mnt
-f :修改檔案權限
-d:修改目錄權限
tcsh 環境變數
按兩下 Tab 顯示出可用的指令
代碼:
set autolist
讓 tcsh 在 idle 30 分鐘後,自動 logout
代碼:
set autologout = 30
FreeBSD 預設 rm、cp、mv 都沒有確認的提示
所以如果你要 rm 一個檔案,那它就直接刪了
這是一個很危險的動作,由其是常常用 root 工作的人
請在自己家目錄的 .cshrc 中加入以下三行,這樣會比較保險
代碼:
alias rm rm -i # 刪除確認
alias cp cp -i # 拷貝確認
alias mv mv -i # 搬移確認
讓你環境變數不管怎麼設定,vi 都能顯示中文
代碼:
alias vi 'env LC_CTYPE=en_US.ISO8859-1 vi'
alias mutt 'env LC_CTYPE=zh_TW.Big5 mutt'
For Screen 的設定
/usr/local/etc/screenrc 或 ~/.screenrc 中設定可加入
代碼:
bindkey ^f screen -t [ssh]test@backup ssh test@backup.idv.tw
sorendition rg
hardstatus alwayslastline "%{.w} %c:%s | %Y.%m.%d | %{gb} %w %{= dd} "
shell tcsh
screen -t "AAAA"
可以把該 screen session 定 Label 為 AAAA 以做識別
說明:
1. bindkey ^f screen -t [ssh]test@backup ssh test@backup.idv.tw
代表按下 Ctrl + f 可以執行後面的指令
2. sorendition rg
screen 訊息的文字及背景顏色
r 紅色 w 白色 g 綠色 b 藍色 .....
3. hardstatus 這一行表示在執行 screen 時,最後一行一直顯示時間及不同 session 的訊息
例如:
17:31 | 03.12.2003 | 0 tcsh 1* [ssh]test@backup
4. shell tcsh
表示 screen 中預設使用 tcsh
讓 screen 在提示字元後面顯示目前的 screen 數
例:
test@www[/home/test](0)
test@www[/home/test](1)
在 ~/.cshrc 中加入下面的文字
代碼:
if ( ! $?WINDOW ) then
set prompt = "%n@%m[%/] "
else
set prompt = "%n@%m[%/]($WINDOW) "
endif
設定時區
先到 /usr/share/zoneinfo/ 裏面找到你所在地區的檔案
再以 root 執行
代碼:
# tzsetup /usr/share/zoneinfo/Asia/Taipei
Is this machine's CMOS clock set to UTC?
要設定為格林威治時間嗎?==> NO
Use the default `/usr/share/zoneinfo/Asia/Taipei' zone?
設定為臺北時間嗎?==> YES
最後校時 (請先安裝 ntp)
代碼:
# ntpdate clock.stdtime.gov.tw
時間格式說明
CST => China time 中原標準時間 (GMT+8)
GMT => 格林威治標準時間
美國是有實施日光節約時間的國家
所以現在是 PDT, MDT, CDT, EDT
Pacific Time, Mountain Time, Central Time, Eastern Time
Chicago 應該是 Central time 吧
新增使用者
代碼:
# adduser -v <== 使用參數 v 可以知道建立帳號時的較細部流程及注意事項
/etc/adduser.conf: No such file or directory <== 出現這一行代表你可能是第一次新增使用者
Use option ``-silent'' if you don't want to see all warnings and questions.
Check /etc/shells
Check /etc/master.passwd
Check /etc/group
User ``test'' has gid 1091 but a group with this gid does not exist.
User ``cvsup'' has gid 908 but a group with this gid does not exist.
User ``cvsupin'' has gid 909 but a group with this gid does not exist.
Usernames must match regular expression:
[^[a-z0-9_][a-z0-9_-]*$]:
..... 以下略
rc.conf Configuration
代碼:
#--- rc.conf ---#
ifconfig_fxp0="inet 172.16.16.1 netmask 255.255.255.0"
#ifconfig_fxp0="DHCP" #設定成 dhcp client 自動分配 ip
defaultrouter="172.16.16.254"
hostname="test.abcd.com.tw"
sshd_enable="YES"
syslogd_enable="YES"
syslogd_flags="-ss"
# 註:-s 是啟用安全模式,不記錄遠端傳送過來的 log
# 如果 -ss 是關閉 port,而且也禁止將 log 傳送到遠端的電腦。
sendmail_enable="NO"
# 註:NO 是僅提供 localhost 的 mail 功能,如果要完全關閉 sendmail 要用 NONE
inetd_enable="NO"
# 註:4.4-Release 版之後的 FreeBSD 預設 /etc/initd.conf 中的所有服務都是 # 註解掉的
# 如果你確定你的 Server 不提供 inetd 服務,可以加上這行
tcp_drop_redirect="YES"
# Don't allow remote OS fingerprinting of your box
icmp_drop_redirect="YES"
# 註:防止 DoS 攻擊,最好把 ICMP 重導向的封包丟棄
icmp_log_redirect="YES"
# 註:將丟棄的 ICMP 重導向封包 log 記錄下來
clear_tmp_enable="YES"
# 開機時清除 /tmp 的內容
icmp_bmcastecho="NO"
# 不回應 broadcast ping 封包
fsck_y_enable="YES"
# 註:do fsck -y if the initial preen fails
update_motd="NO"
# 註:update version info in /etc/motd (or NO)
named_enable="YES"
# 提供 DNS 的服務
ntpdate_enable="YES"
ntpdate_flags="clock.stdtime.gov.tw"
# 開機自動校時
keyrate="fast"
# 重覆按下按鍵的速度
郵件設定
如果想把寄到主機中某一個帳號的信件全部直接刪除
(刪除的意思是指不佔用磁碟空間,而且寄信者以為信件已安全寄達給收件者,但實際上是被系統刪掉了)
以 mailtest 這個帳號舉例:
請修改 aliases
在 aliases 中加入
代碼:
mailtest: /dev/null
重新建立 aliases.db
代碼:
# postalias aliases
即可生效
保存畫面中的資訊
有的時候你在執行某些程式時,畫面會出現一大堆訊息
等程式執行完後,你捲動畫面卻只能看到一小部份的訊息文字
現在就是教你如何把畫面中出現的訊息記錄下來
代碼:
# telnet tw.yahoo.com 80 | tee /tmp/yahoo.log
Trying 202.1.237.21...
Connected to vip1.tw.tpe.yahoo.com.
Escape character is '^]'.
GET / HTTP/1.0 <=== 這裏按兩下 Enter
HTTP/1.1 200 OK
Date: Fri, 26 Dec 2003 03:02:04 GMT
P3P: policyref="http://p3p.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi S
AMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Cache-Control: private
Connection: close
Content-Type: text/html
........ 以下網頁內容省略 ..........
#
這樣你就可以在 /tmp/yahoo.log 中看到所有在畫面中出現的訊息囉....
註:在某些程式中所輸入的指令並不會出現在所導出的文字檔案中
下面就是文字檔的前幾行,並不包含上面標示成紅色的文字
因為紅色的文字是在 telnet 連線下所輸入,並不會被導出到檔案中
代碼:
Trying 202.1.237.21...
Connected to vip1.tw.tpe.yahoo.com.
Escape character is '^]'.
HTTP/1.1 200 OK
Date: Fri, 26 Dec 2003 03:02:04 GMT
P3P: policyref="http://p3p.yahoo.com/w3c/p3p.xml", CP="CAO DSP COR CUR ADM DEV TAI PSA PSD IVAi IVDi CONi TELo OTPi OUR DELi S
AMi OTRi UNRi PUBi IND PHY ONL UNI PUR FIN COM NAV INT DEM CNT STA POL HEA PRE GOV"
Cache-Control: private
Connection: close
Content-Type: text/html
排程相關技巧
FreeBSD系統預設的排程目錄
/etc/periodic/daily/
/etc/periodic/monthly/
/etc/periodic/weekly/
可看到系統預設排程的執行時間
less /etc/crontab
當然我們也可以把自己要執行的排程
寫到這個檔案中,系統便會自動執行
Postfix
查詢 postfix 設定檔 main.cf 可用的參數
代碼:
# postconf -d
查詢 postfix 的版本
代碼:
# postconf mail_version
讓 User Unknown 時,Postfix 回 550 error code
代碼:
soft_bounce = no
註:如果設定成 soft_bounce = yes,User Unknown 會回 450,造成對方持續重 try
ssh 相關
一行 ssh 指令直接完成登入、su、下命令
代碼:
# ssh -t david@abc.test.tw 'su root -c "vi /etc/hosts"'
秀出 routing table
代碼:
# netstat -rn
Routing tables
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 192.168.129.254 UGSc 1 38974 lnc0
172.16.16/24 link#2 UC 2 0 lnc1
172.16.16.100 00:0c:29:a7:cb:e7 UHLW 1 6165 lnc1 917
172.16.16.150 00:0c:29:d3:f8:1f UHLW 1 884 lnc1 924
192.168.129 link#1 UC 5 0 lnc0
192.168.129.80 00:07:e9:13:a0:d4 UHLW 2 10052 lnc0 1094
192.168.129.81 00:0c:29:80:37:f0 UHLW 0 160 lo0
192.168.129.83 00:90:4b:00:6b:65 UHLW 1 1032 lnc0 607
192.168.129.253 00:90:fb:81:1f:ba UHLW 0 0 lnc0 1090
192.168.129.254 00:10:d1:01:be:30 UHLW 1 0 lnc0 452