aix的系統備份命令是mksysb, make system backup ,有點類似 ghost.
aix5.3支持微分區技術,所謂微分區就是1臺機器上裝多個OS(操作系統),把這臺機器上的cpu資源進行劃分,然后分配給每一個os使用,最小粒度是0.1個cpu.有點類似vmware軟件.讓一個機器跑多個操作系統.這項技術早在ibm的大機上就已經實現了.只不過最近才在小機和pc機器上發布.
TIVOLI是系統管理軟件.
關閉aix的命令:shutdown ->正常關機,關閉所有服務. halt -> 相當于直接關閉電源.
重啟aix:shutdown -Fr
查看出錯信息:errpt errpt -a | more -> 分頁顯示 errpt -a > /tmp/err01 輸出到文件.
清除錯誤信息:errclear 0
smit 用鼠標操作 smitty 用鍵盤來操作,一般用smitty為好.
ping -f 全速ping ,利用所有的服務器資源來ping,如果是多個服務器ping一個ip,可以把機器ping死.
幾個關于磁盤的名詞:
lv: logical volume 邏輯卷
pv: physical volume 物理卷
vg: volume group 卷組
pp: physical partition 物理分區
lp: logical partition 邏輯分區
pv對應的是物理硬盤或者是磁盤陣列上劃分的lun,一個vg最多可以有1016個pp.
pv的上面是vg,一個vg可以包含多個pv.
vg的上面是lv,lv如果不作任何處理就是裸設備,也可以作成文件系統.
lv被分為多個lp,默認情況下,lp與pp是一一對應的,也可以做成一對多的.這樣就相當于用多個pp來作raid0備份.
lsdev -C | grep disk 可以查看物理磁盤的硬件信息
lspv 查看pv的信息 -p hdisk0 查看具體數據存放的位置:例如,數據在第m到n個pp上面.
lsvg 查看vg的信息 -l vg的列表 -c 被使用的vg -l rootvg 查看rootvg的詳情.
lslv -m lv1 查看lv1 的lp與pp的映射.
getlvcv -AT lv1 看到lv1的控制信息.
fsck -y /dev/newlv 檢查lv.
smit vg 可以管理vg
smit lv 管理lv
varryonvg rootvg 激活rootvg卷組,varryoffvg newvg 使newvg卷組脫機.
nbpi:number of bytes per inode 每個i節點擁有的字節數,這個參數越小,文件系統的可用的inode越多.如果inode用完,即使有剩余空間,系統也會報空間不夠.此時要調小nbpi的值.一般是4k
df -k 中iused 指的是i節點的使用情況.
設置從cd啟動,bootlist -m normal cd0
啟動時按ESC+1或者F1,可以進入啟動菜單.選擇啟動方式.
用smitty crfs 創建完文件系統以后還要mount.
/etc/filesystems 文件記錄文件系統的信息.如想把某個lv映射到不同的文件系統路徑上面,可以直接修改這個文件.
用logform /dev/testloglv 將lv格式化成jfs的log的格式.
file 文件名 可以看某個文件的信息,包括文件類型,可執行文件,文本文件,等等.
uname -a 可以看到os的信息.
fsck 檢查文件系統的信息,在umount的時候是準確的, 相當于windows的磁盤掃描.
碎片整理 smitty jfs
lsfs /root 顯示文件系統的屬性
各個組件的關系:
lsps -a 查看page space的使用情況
vgda:vg description area 每個vg的頭部存放vg的描述信息,
如果包含2個pv,那么第一個pv會在頭部和另一個位置存放2個vgda,第2個pv也會存放一個.
如果包含3個pv,那么每個pv上都有1個vgda.
vg的信息在odm中也會存儲,但必須和vgda中的信息一致,否則無法varryonvg,有下面4個命令來管理odm中的vg信息.
importvg:從vgda中讀取信息到odm中
exportvg:從odm中刪除vg信息
varryonvg:激活(online)vg
varryoffvg:卸載(offline)vg
修改vg的factor,這樣可以將vg的max pp 從默認的1016 增大1倍,到2032,但由于vgda的總大小不變,這些信息都是記錄到里面的.所以vg的最大文件數要減小1倍,實際上是個等式:max pp * max file = 固定的一個值,factor增大,實際上是max pp * factor,max file / factor.具體做法:chvg -t 2 rootvg 修改factor為2.vgda
用cfgmgr,來刷新,來認出新assign的hdisk.
cfgmgr -v 檢查新設備,新硬件.
-i /dev/cd0 從光盤自動安裝新硬件驅動.
當作雙機時,2個服務器server1 和 server2 來連接同一個盤陣,server1對磁盤分配一個pvid,當第一次切換到server2時,要用ckdev命令來讀出server1配置的pvid.系統是通過pvid來識別pv的.
ckdev -l hdisk1 -a pv = clear 清除pvid
ckdev -l hdisk1 -a pv = yes 新置pvid
lsdev 查看物理設備
lsdev -C 顯示所有設備狀態
rmdev -l cd0 邏輯刪除 cd0
mkdev -l cd0 安裝cd0
rmdev -d -l cd0 刪除cd0設備驅動
查看cpu的信息
lsattr -El proc0
lsdev -C | grep proc
查看內存的信息
lsattr -El mem0
查看光驅的信息
lsattr -El cd0
查看硬盤的信息
lsattr -El hdisk0
lscfg -vp | more 分頁看全部硬件信息
prtconf | more 列出硬件信息
查看誰在使用cdrom fuser /cdrom -k 直接殺掉用戶進程
telnet的登陸信息存放在/etc/motd文件中.
想查看最近有誰登陸,用last命令.
查看登錄失敗的信息: /etc/security/failedlogin
存放用戶密碼的文件:/etc/security/passwd
用戶登錄需要運行的腳本:
1 /etc/profile
2 /etc/environment 在這個文件中設置中文環境,LANG=zh_CN
3 用戶profile ,分2種情況:
如果是命令行登錄,則運行/home/user/.profile
如果是圖形登錄,則運行 /home/user/.dtprofile 需要將次文件中,#DTSOURCEPROFILE=TRUE 的# 去掉,否則還是使用.profile.
在/dev下面有2種設備,一種是block設備,一種是char(字符)設備.這取決于不同的應用.
vmstat的某些行的解釋:
vmstat->faults->cs: user calls 用戶調用的次數
cpu->wa: >40 說明io繁忙
kthr: kernel thread
kthr->r 在運行隊列中等待執行的進程
b 正在等待io的進程
memory->avm:active vitual memory 物理內存+使用的虛擬內存,以4k為單位.
page->re:是pin 和 pout 的總和.
sr:search的內存塊數.
fr:釋放的內存塊數.
每次作page out時,系統要搜索物理內存以找到可以釋放的塊,sr和fr分別代表搜索的和通過搜索找到的可以釋放的塊 數.如果2者很接近,說明內存中有很多用于file cache,內存的數量是夠用的.如果fr/sr的值很小,說明內存不夠.
tty:代表終端
iostat:
%tm_act 實際transaction的百分比
tps 每秒發生的次數
kbps 每秒的速率
名詞:thrasing: 應用程序頻繁交換,導致paging過多.
/usr/samples/kernel/vmtune -f 120 -F 128
-f 120 代表minfree mem < 120 時要進行page out
-F 128 代表maxfree mem > 128 時要進行page in
-p -P 也跟page out 有關,具體不清楚,還需明確.
sar->avque:平均的請求數
對文件系統作監視:filemon
filemon -o /tmp/a.txt -O all -v
運行之后系統會一直監視文件系統的使用情況并記錄日志,-T 64000 是使用的buffer cache,在大型系統上,這個值可以調大.
運行一段時間后,要停掉filemon,使用trcstop 或者 kill -9 進程.
從a.txt中可以看到使用最頻繁的文件等信息,有些類似statspack的報告.
對于后綴是Z的文件用uncompress來解壓縮. uncompress a.tar.Z
用strings 命令來看2進制文件
如何調大page space,直接設置對應lv的大小.如果對應lv的vg空間不夠的話,可以向vg中加硬盤.
dd的用法:dd if=/dev/rnewfs of=/dev/rcopyfs bs=1024 count=10240
bs: block size 塊大小,1024字節
count: block count 塊的數量
if是input file ,of 是output file
將任務切換到后臺執行: ctrl+z ,然后 bg+回車
查看后臺執行的程序:jobs
把后臺執行的程序切換到前臺執行:fg %n n是后臺的job 編號
ip抓包工具:iptrace 和 tcpdump
iptrace -a a.out
停止iptrace:kill -9
tcpdump -i en1 -w a.out a.out 是輸出文件
把進程與cpu綁定:bindprocessor -U 進程號 cpuid
bindprocessor -U 12345 0
odm庫:
env | grep obj
ODMDIR=/etc/objrepos 這是odm庫的存儲路徑
在disk0上生成引導區
bosboot -a -d /dev/hdisk0
用kdb 查看os 的 dump
ethernet channel 把2個網卡綁定到1個ip,可以作網絡負載均衡.
crontab 設置定時任務
crontab -l list the crontab
crontab -e edit the crontab
crontab的格式:分鐘 小時 月中的天數 月份 星期 命令
minute:
0 到 59
hour:
0 到 23
day_of_month:
1 到 31
month:
1 到 12
weekday:
星期日到星期六的 0 到 6 時
要在每星期日上午 2 時運行 fwlogmgmt 命令,請將下列各行添加至 crontab 文件底部:
0 2 * * 0 /usr/bin/fwlogmgmt -1
發送郵件,aix和redhad linux 都默認安裝了smtp郵件服務,可以直接給internet發郵件.
mail -s "test mail"
haochunpeng@ninetowns.com
< $ORACLE_BASE/admin/$ORACLE_SID/bdump/alert$ORACLE_SID.log
mail -s "test mail"
haochunpeng@ninetowns.com
<<EOF
******** MAIL CONTENT *******
FJLADSFJLAKHFGAL
FJALDSKFJA
FASLJFLASF
*****************************
EOF
有了crontab和mail,就可以定時監控數據庫,然后把報告發送郵件到管理員的信箱.
kill -9 9 是kill命令傳送的一個信號,一共15個信號可以發送.
/etc/ftpusers 限制登錄ftp的用戶,誰在這個文件里面,誰就登不進去.
網絡服務 /etc/inetd.conf 刷新 refresh src -d
lslpp -l | grep http 查看安裝的軟件
檢查瓶頸:
利用vmstat iostat 查看總體情況,ps aux 可以看到具體進程占用資源的情況.
如果是io瓶頸,可以利用filemon -o /tmp/a.txt -O all; sleep 10;trcstop 來查看io資源的使用情況.
辨別僵尸進程:ps -ef pid 那列是 defunc的為僵尸進程.
幾個不錯的aix網站:
http://www.douzhe.com
http://www.xfocus.net/articles/200208/433.html
前一天貝貝媽媽讓我準備的發言稿,可是在昨天上午的電話里面LP說不準備采納我寫的,她自己已經準備了一份了,郁悶。
晚上我6點才趕到家,貝貝媽媽已經開始出發去幼兒園了。于是我匆匆吃過晚飯,拉著貝貝去湊熱鬧。貝貝和我說家長會不能帶小孩去的。我告訴他沒關系,我們在幼兒園玩,不進教室。
帶著我買的奧特曼飛機,貝貝在操場上的各個滑梯滑了n次,我們就開始往教室門口蹭了。上了樓梯,到了自己教室門口,貝貝賴著不肯往前走了,呵呵。過了一會,他壯著膽子靠近了一點,然后“啪啪啪啪”的大步跑過教室前的走廊,我心中一笑,仿佛看到了自己童年的影子。跟上去和他在前面的一個活動空間一起玩。
家長會開了近2個小時,比別的班級結束的晚,看來貝貝的老師還是比較認真負責的。我們在樓梯上等到了貝貝媽媽,然后高高興興的一起回家了。
貝貝媽媽說,家長會上老師多次表揚了貝貝。優點是:有禮貌,守紀律,愛學習,還有想象力和創造力比較豐富,這一點我特別欣賞。需要提高的是:動手能力。我也覺得在家里太嬌慣貝貝了,今后要讓他自己的事情自己做。
希望貝貝快快樂樂成長。^^
教孩子禮貌待人
各位老師和家長,我是貝貝的媽媽,今日很高興能在這次家長會上,和大家一起交流和探討關于對孩子進行文明禮貌教育的話題。
作為每個父母,都希望自己的孩子能夠從小養成講文明、懂禮貌的好習慣。文明禮貌的行為習慣是從小開始長期實踐而形成的。如何對孩子進行文明和禮貌教育,我認為著重從以下三個方面開展:
一、父母的言行和思維在孩子成長過程中起到關鍵的影響作用
小孩子的求知欲是非常強的,因此孩子的成長過程也是一個學習的過程。孩子對于一個環境從陌生到熟悉的認可過程,其實就是一種習慣的養成過程,這個環境是指孩子身邊的一切事物。孩子在和外界環境的接觸過程中,會不斷主動或者被動的接受一些言論、行為和思想。而作為與孩子關系最為密切的父母,則更應在自己的言行舉止方面做到誠實守信、禮貌待人,用文明的思想灌輸給子女,給孩子起到模范表率作用。久而久之,我們的孩子才會看在眼里,學在心里,并把父母的這種行為意識加上自己的理解作為一個定式記憶在自己的腦海中。而且會把這個思維定式作為一種潛意識在合適的場合表達出來。因此,我認為父母的意識形態對孩子的表率作用在孩子的成長過程中尤為重要。
在日常生活中,我們在貝貝的爺爺奶奶家里的時間比較多,大家經常在一起吃飯聊天和做游戲的場合也比較多。我和貝貝的爸爸對長輩都是很尊重的,貝貝也在這種氛圍中也慢慢養成尊敬長輩的好習慣。為了讓孩子能夠正確理解我們的一些做法,我們會在適當的時機和貝貝解釋為什么要在待人接物中文明禮貌的原因,貝貝會耐心地聽我們說,還會問一些為什么的問題,理解后就會知道怎么做是正確的,怎么做是錯誤的。此外,我們有時會通過講故事的方法,加強孩子思維能力的培養。當講到某個環節,讓貝貝判斷出故事中某個小動物或者小朋友應該怎么做,或者對貝貝說如果是你,你會怎么做。
二、及時發現并糾正孩子的一些不好的做法
.........................................................................
三、在集體生活中培養文明禮貌的習慣
..........................................................................
最后和大家分享一下我在一個早期教育節目中的收獲, 兒童最佳智力結構是記憶力,注意力,觀察力,想象力,思維能力和操作能力這六方面的能力。其中思維能力是核心。我們有些家長只注重孩子記憶力的訓練,如記憶和背誦一些唐詩等等,而忽視了其他方面的鍛煉和開發,缺乏想像力和創造力、動手能力,造成智力結構失衡發展,這是對孩子教育中的一個誤區。
Struts和JSF/Tapestry都屬于表現層框架,這兩種分屬不同性質的框架,后者是一種事件驅動型的組件模型,而Struts只是單純的MVC模式框架,老外總是急吼吼說事件驅動型就比MVC模式框架好,何以見得,我們下面進行詳細分析比較一下到底是怎么回事?
首先事件是指從客戶端頁面(瀏覽器)由用戶操作觸發的事件,Struts使用Action來接受瀏覽器表單提交的事件,這里使用了Command模式,每個繼承Action的子類都必須實現一個方法execute。
在struts中,實際是一個表單Form對應一個Action類(或DispatchAction),換一句話說:在Struts中實際是一個表單只能對應一個事件,struts這種事件方式稱為application event,application event和component event相比是一種粗粒度的事件。
struts重要的表單對象ActionForm是一種對象,它代表了一種應用,這個對象中至少包含幾個字段,這些字段是Jsp頁面表單中的input字段,因為一個表單對應一個事件,所以,當我們需要將事件粒度細化到表單中這些字段時,也就是說,一個字段對應一個事件時,單純使用Struts就不太可能,當然通過結合JavaScript也是可以轉彎實現的。
而這種情況使用JSF就可以方便實現,
<h:inputText id="userId" value="#{login.userId}"> <f:valueChangeListener type="logindemo.UserLoginChanged" /> </h:inputText> |
#{login.userId}表示從名為login的JavaBean的getUserId獲得的結果,這個功能使用struts也可以實現,name="login" property="userId"
關鍵是第二行,這里表示如果userId的值改變并且確定提交后,將觸發調用類UserLoginChanged的processValueChanged(...)方法。
JSF可以為組件提供兩種事件:Value Changed和 Action. 前者我們已經在上節見識過用處,后者就相當于struts中表單提交Action機制,它的JSF寫法如下:
<h:commandButton id="login" commandName="login"> <f:actionListener type=”logindemo.LoginActionListener” /> </h:commandButton> |
從代碼可以看出,這兩種事件是通過Listerner這樣觀察者模式貼在具體組件字段上的,而Struts此類事件是原始的一種表單提交Submit觸發機制。如果說前者比較語言化(編程語言習慣做法類似Swing編程);后者是屬于WEB化,因為它是來自Html表單,如果你起步是從Perl/PHP開始,反而容易接受Struts這種風格。
- 在JMS的Connection Factories 中新建一個連接工廠
- 在Stores中新建一個存儲空間,可以為jdbc或者file類型
- 在Servers中新建一個Server
- 展開剛才創建的DemoJMSServer,新建一個Destinations,其中有2種類型,queue:點對點方式,topic:廣播方式給所有的MDB
- 在jb中新建一個MDB,transaction type:bean ,Destination type:javax.jms.Queue,在Destination name中輸入剛才在weblogic的jms里面建立的目標名稱,Pool properties的Maximum pool size:10
- 在onMessage方法中加入代碼
public?void?onMessage(Message?msg)
{?
try?
{
??????TextMessage?TMS?=?(TextMessage)?msg;
??????String?a1?=?TMS.getText();
??????String?b1?=?a1;
??????System.out.println("Message?getted?Is?:"?+?a1?+?">>>>>>>>>>>OK");
??????Context?context?=?new?InitialContext();
??????Object?ref?=?context.lookup("Sess");? //session bean的本地接口
??????SessHome?sessHome?=?(SessHome)?PortableRemoteObject.narrow(ref,?SessHome.class);
??????sessHome.create().insTableAa11(a1,?b1);
??????//這是通過Session?Bean的insTableAa11調用EntityBean的ejbHomeEjbInsertAa11
??????//功能其是很簡單,插入Aa11表一條記錄(a1,a1)
????}
????catch?(Exception?ex)?
{
??????ex.printStackTrace();
????}
}
- deploy這個消息驅動Bean
- new一個MDBTestClient class
package?bmpsessmdb;
import?java.util.*;
import?javax.jms.*;
import?javax.naming.*;
public?class?MDBTestClient?
{
????public?final?static?String
??????JNDI_FACTORY?=?"weblogic.jndi.WLInitialContextFactory";
??public?final?static?String?URL?=?"t3://127.0.0.1:7001";
??private?static?final?String?QUEUE_CONNECTION_FACTORY?=
??????"DemoJMSConnectionFactory";
??private?static?final?String?QUEUE?=?"DemoJMSQueue";
??private?static?InitialContext?getInitialContext(String?url)?throws
??????NamingException?
{
????Hashtable?env?=?new?Hashtable();
????env.put(Context.INITIAL_CONTEXT_FACTORY,?JNDI_FACTORY);
????env.put(Context.PROVIDER_URL,?url);
????return?new?InitialContext(env);
??}
??public?static?void?main(String[]?args)?throws?Exception?
{
????Context?ctx?=?getInitialContext(URL);
????QueueConnectionFactory?qConnFact?=
????(QueueConnectionFactory)?ctx.lookup(QUEUE_CONNECTION_FACTORY);
????QueueConnection?qConn?=?qConnFact.createQueueConnection();
????QueueSession?qSess?=?qConn.createQueueSession(false,
??????????????????????????????????????????????????Session.AUTO_ACKNOWLEDGE);
????Queue?q?=?(Queue)?ctx.lookup(QUEUE);
????QueueSender?qSend?=?qSess.createSender(q);
????TextMessage?txtMsg?=?qSess.createTextMessage("songtx3");
????System.out.println("Sending?a?message?to?queue");
????qSend.send(txtMsg);
????//---------------------------------------------------------//
????txtMsg?=?qSess.createTextMessage("songtx4");
????System.out.println("Sending?a?message?to?queue");
????qSend.send(txtMsg);
????//---------------------------------------------------------//
????qConn.close();
????System.exit(0);
??}
}
- 運行測試,over
1.為每個模塊準備一個配置文件,如:
? struts-config.xml(缺省配置文件),
? struts-config-customer.xml,
? struts-config-order.xml
每個配置文件的寫法可以參照struts-config.xml
2.配置web.xml文件
















3.準備各個模塊所需的ActionForm、Action和JSP等資源
在多模塊間進行全局轉發
struts-config.xml:








首先定義了tomcat-users.xml 中的內容,主要設置了用戶和角色













然后在application中的web.xml中對應的<web-app>中增加如下設置





















這樣就好了,登錄這個web應用會有個驗證窗口彈出,輸入用戶名abc和密碼abc后就能正常訪問了。
在weblogic8.1中的配置比較麻煩,首先在web.xml的<web-app>中增加上面一段代碼后,還要加上這一段



然后新建一個weblogic.xml 內容如下











進入weblogic的console,在mydomain-security-realms中新建一個realm
name: wxdsRealm
check roles and policies for: web applications and ejbs protected in dd
展開wxdsRealm,
在providers中configure a new default adjudicator... 默認創建
在auditors中創建一個缺省auditor
然后創建一個缺省的authentication,authorizers, cred mappers 和role mapper 等等
最后可以在testing中測試一下 validate this security realm... 看是否successful
在groups中定義一個group name: wxds_group
在users中configure a new user
name: jyds password:11111111
把剛才建立的wxds_group 增加進來
把Security中的Default Realm設置為wxdsRealm, 最后Apply就ok啦。
Databases and JDBC Drivers
This page lists the most current information about databases and some of their JDBC drivers that can be used for import data or extract XML schema from database structure features. Information about what file(s) to load in the Preferences->Database->JDBC Drivers as well as information about driver classes and URL formats are also provided. An extensive list of JDBC drivers is also available at JDBC?section at Sun?Microsystems.
Oracle 10.2.0.1.0: Oracle JDBC Driver 10.1.0.2.0

![]() |
![]() |
![]() |
![]() |
![]() |

?
DB2 8.2: IBM DB2 JDBC Universal Driver 2.3.63

![]() |
![]() |
![]() |

?
SQL Server 2000 - 8.00.2039: SQL Server Driver 2.2.0040

![]() |
![]() |
![]() |

?
Sybase ASE 12.5.3: jConnect 6.0 Build 25308

![]() |
![]() |
![]() |

?
Informix 9.40: Informix 2.21.JC6

![]() |
![]() |
![]() |

?
MySQL 4.1.12: mysql-connector-java-3.1.8

![]() |
![]() |
![]() |

?
MySQL 5.0.2: mysql-connector-java-3.1.5-gamma

![]() |
![]() |
![]() |

?
PostgeSQL 7.4.8: PostgreSQL 7.4.4 JDBC2 with SSL

![]() |
![]() |
![]() |

?
MaxDB 7.4.3: SAP DB JDBC Driver 7.4.4

![]() |
![]() |
![]() |

?
FrontBase 3.6.21: FBJDriver 2.4.7

![]() |
![]() |
![]() |

?
Sybase ASA 9.0.2.2452: jConnect 6.0 Build 25308

![]() |
![]() |
![]() |

?
JDataStore 6.7.25 Embedded: DataStore Driver 6.0

![]() |
![]() |
![]() |

?
JDataStore 6.7.25 Server: DataStore Driver 6.0

![]() |
![]() |
![]() |

?
Cache 5.0 Server: InterSystems Cache JDBC 5.0

![]() |
![]() |
![]() |

兒童最佳智力結構是記憶力, 注意力, 觀察力, 想象力, 思維能力和操作能力. 其中思維能力是核心.
我們有些家長只注重記憶力,如記憶和背誦一些唐詩等等,而忽視了其他方面的鍛煉和開發,缺乏想像力和創造力、動手能力,造成智力結構失衡發展.這是我們需要注意的.