1. linux 中OProfile、gprof高級分析手段
OProfile可以幫助用戶識別諸如模塊的佔用時間、循環的展開、高速緩存的使用率低、低效的類型轉換和冗餘操作、錯誤預測轉移等問題。它收集有關處理器事件的信息,其中包括TLB的故障、停機、存儲器訪問以及緩存命中和未命中的指令的攫取數量。
OProfile支持兩種采樣方式:基於事件的采樣(Event Based)和基於時間的采樣(Time Based)。基於事件的采樣是OProfile只記錄特定事件(比如L2緩存未命中)的發生次數,當達到用戶設定的定值時Oprofile就記錄一下〈采一個樣)。這種方式需要CPU內部有性能計數器(Performace Counter)。基於時間的采樣是OProfile藉助OS時鍾中斷的機制,在每個時鍾中斷,OProfile都會記錄一次(采一次樣)。引入它的目的在於,提供對沒有性能計數器的CPU的支持,其精度相對於基於事件的采樣要低,因為要藉助OS時鍾中斷的支持,對於禁用中斷的代碼,OProfile不能對其進行分析。OProfile在Linux上分兩部分,一個是內核模塊(oprofile.ko),另一個是用戶空間的守護進程( oprofiled)。前者負責訪問性能計數器或者注冊基於時間采樣的函數,並將采樣值置於內核的緩沖區內。後者在後台運行,負責從內核空間收集數據,寫入文件。其運行步驟如下:1)初始化opcontrol--init 2)配置opcontrol--setup--event=... 3)啟動opcontrol--start 4)運行待分析的程序xxx 5)取出數據 6)分析結果opreport-1./xxx
用GNU gprof可以列印出程序運行中各個函數消耗的時間,以幫助程序員找出眾多函數中耗時最多的函數;還可產生程序運行時的函數調用關系,包括調用次數,以幫助程序員分析程序的運行流程。GNU gprof的實現原理:在編譯和鏈接程序的時候(使用-pg編譯和鏈接選項),gcc在應用程序的每個函數中都加入名為mcount (_mcount或_mcount,依賴於編譯器或操作系統)的函數,也就是說應用程序里的每一個函數都會調用mcount,而mcount會在內存中保存一張函數調用圖,並通過函數調用堆棧的形式查找子函數和父函數的地址。這張調用圖也保存了所有與函數相關的調用時間、調用次數等的所有信息。
2. Linux下的C/C++語言測試工具有哪些
這個很多啊。
黑盒白盒。像TestDirector,測試管理工具
TestComplete 和 QTP都是自動化測試工具
內存問題測試工具:BoundsChecker
TestMarker:性能測試工具
做測試簡單的依靠工具是不行的,要經常上一些測試論壇去交流。最好找個師傅學習軟體測試,還要經常與開發人員交流,與管理層交流,與外部交流。
3. 如何使用oprofile對軟體做profiling
一. Oprofile簡介
Profiling是對不同性能特徵的數據的形式化總結或分析,它通常以圖形和表的形式出現。它提供為特定的處理器事件收集的采樣百分數或數量,比如cache miss rate、TLB miss rate等等。一般來說,主要目的是為了找出軟體中的性能瓶頸,然後有針對性的優化以提升軟體的整體性能。
Oprofile 是用於 Linux 的若干種評測和性能監控工具中的一種。它可以工作在不同的體系結構上,包括ARM, PowerPC, MIPS, IA32, IA64 和 AMD Athlon等等。它的開銷很小,從Linux 2.6 版起,它被包含進了Linux內核中。
Oprofile可以收集有關處理器事件的信息,幫助用戶識別諸如循環的展開、cache的使用率低、低效的類型轉換和冗餘操作、錯誤預測轉移等問題。Oprofile是一種細粒度的工具,可以為指令集或者為函數、系統調用或中斷處理常式收集采樣。Oprofile 通過取樣來工作。使用收集到的評測數據,用戶可以很容易地找出性能問題。
通過監察CPU的hardware events,oprofile可以在運行狀態下對整個Linux系統進行profiling。Profiling的對象可以是Linux kernel (包括moles和interrupt handlers), shared libraries或者應用程序。
從0.9.8版本開始,oprofile支持Perf_events profiling mode模式。應用程序operf被用來控制profiling過程;而在legacy mode下,是通過opcontrol腳本和oprofiled daemon來完成的。Operf不再象legacy mode那樣需要OProfile kernel driver,它直接和Linux Kernel Performance Events Subsystem打交道。使用operf,就可以用普通用戶的身份來profiling用戶的應用程序了,當然如果需要對整個系統來profiling的時候還是需要root許可權的。
如果硬體不支持OProfile使用performance counters,OProfile就只能工作在Timer Mode下了。Timer Mode只能在legacy profiling mode下使用,即只能通過opcontrol腳本來控制。
Oprofile的優勢:
Ÿ 比較低的運行開銷
Ÿ 對被profiling的對象影響很小
Ÿ 可以profiling中斷服務程序(interrupt handlers)
Ÿ 可以profiling應用程序和shared libraries
Ÿ 可以profiling dynamically compiled (JIT) code
Ÿ 可以對整個系統做profiling
Ÿ 可以觀察CPU內部的細節,例如cache miss rate
Ÿ 可以多源代碼做annotation
Ÿ 可以支持instruction-level的profiling
Ÿ 可以生成call-graph profiles
不過OProfile也不是萬能的,它也有自己的局限性:
Ÿ 只能在x86, ARM, 和PowerPC架構上生成call graph profiles
Ÿ 不支持100%精確的instruction-level profiling
Ÿ 對dynamically compiled (JIT) code profiling的支持還不完善。
無論如何,Oprofile的功能都比gprof要強很多,代價是配置起來會比較麻煩。
二. 編譯Oprofile
首先最好在Linux kernel裡面選中Oprofile driver,以獲得全面的支持。因為筆者使用的是Xilinx Linux pre-built 14.7,所以這里下載的是linux-xlnx-xilinx-v14.7.tar.gz
解壓縮後,用以下命令調出Linux kernel的配置界面:
export ARCH=arm
export CROSS_COMPILE=arm-xilinx-linux-gnueabi-
make xilinx_zynq_defconfig
make xconfig 或者make menuconfig
在配置界面上將以下兩項勾上:
General setup --->
[*] Profiling support
<*> OProfile system profiling
然後make uImage即可生成新的uImage,用來替換Xilinx Linux pre-built 14.7中的Linux kernel image。同時我們也需要vmlinux來檢查profiling的結果。
Oprofile需要popt, bfd, liberty庫,要在嵌入式單板上使用這些庫,需要手工完成交叉編譯。
針對popt 1.7,用以下命令完成編譯:
./configure --prefix=/home/wave/xilinx/oprofileprj/rootfs --host=arm-xilinx-linux-gnueabi --with-kernel-support --disable-nls && make && make install
針對binutils 2.24,用以下命令完成編譯:
./configure --host=arm-xilinx-linux-gnueabi --prefix=/home/wave/xilinx/oprofileprj/rootfs --enable-install-libbfd --enable-install-libiberty --enable-shared && make && make install
不過--enable-install-libiberty沒有效果,所以需要手工把libiberty.a和libiberty.h拷貝到相應的位置。
針對oprofile 0.9.9,用以下命令完成編譯:
./configure --host=arm-xilinx-linux-gnueabi --prefix=/home/wave/xilinx/oprofileprj/rootfs --with-kernel-support --with-binutils=/home/wave/xilinx/oprofileprj/rootfs && make && make install
配置過程結束後可能會有以下提示,因為沒有打算用GUI和profile JITed code,所以直接忽視之。
config.status: executing libtool commands
Warning: QT version 3 was requested but not found. No GUI will be built.
Warning: The user account 'oprofile:oprofile' does not exist on the system.
To profile JITed code, this special user account must exist.
Please ask your system administrator to add the following user and group:
user name : 'oprofile'
group name: 'oprofile'
The 'oprofile' group must be the default group for the 'oprofile' user.
將編譯完成的uImage,vmlinux,oprofile binary,重新編譯的沒有-pg的libjpeg binary以及tool chain的libc打包放到SD卡中,准備在ZC706開發板上嘗試profile djpeg。
三. 運行Oprofile
正常啟動嵌入式Linux後,在開發板的console上一次輸入以下命令:
mount /dev/mmcblk0p1 /mnt
mkdir -p /home/root/work
cd /home/root/work
tar zxvf /mnt/jpeg-bin-nopg.tar.gz
cd jpeg-bin/bin
cp /mnt/park-2880x1800.jpg .
export LD_LIBRARY_PATH=/home/root/work/jpeg-bin/lib
cd /home/root/work
tar zxvf /mnt/rootfs.tar.gz
cd rootfs
chown root:root -R *
cp -R bin/* /usr/bin
cp -R lib/* /lib
cp /bin/which /usr/bin
cp /bin/dirname /usr/bin
mkdir -p /home/wave/xilinx/oprofileprj/rootfs/share
cp -R ./rootfs/* /home/wave/xilinx/oprofileprj/rootfs
cd /home/root/work
tar zxvf /mnt/libc.tar.gz
cp ./lib/libstdc*.* /lib
mkdir -p /home/wave/xilinx/libjpeg
cd /home/wave/xilinx/libjpeg
tar zxvf /mnt/jpeg-9.tar.gz
cp /mnt/vmlinux /home/root/work
cd /home/root/work/jpeg-bin/bin
opcontrol --init
opcontrol --vmlinux=/home/root/work/vmlinux
opcontrol --setup --event=CPU_CYCLES:100000::0:1 --session-dir=/home/root/
operf --vmlinux /home/root/work/vmlinux ./djpeg -bmp park-2880x1800.jpg > result.bmp
opreport -l ./djpeg
完成這一步後,我們就可以看到profiling的結果了,在筆者的平台上看到的內容的主要部分如下:
root@zynq:~/work/jpeg-bin/bin# opreport -l ./djpeg
Using /home/root/work/jpeg-bin/bin/oprofile_data/samples/ for samples directory.
CPU: ARM Cortex-A9, speed 666667 MHz (estimated)
Counted CPU_CYCLES events (CPU cycle) with a unit mask of 0x00 (No unit mask) count 100000
samples % image name symbol name
15293 58.6253 libc-2.17.so /lib/libc-2.17.so
2044
4. oprofile輸出是什麼意思
如果只是想學C語言,為何不在WINDOWS環境下操作呢?從你的提問中,可以發現,你不了解C,否則也不會想學它,又說不太懂linux,2個不清楚不明白的東西加到一起,給你的壓力將是很大的。不如集中精力,先解決一個,等以後再搞另一個。
5. Linux性能監控工具、調優工具
除了保證程序的正確性以外,在項目開發中往往還關心性能和穩定性。我們往往要對內核、應用程序或整個系統進行性能優化。在性能優化中常用的手段如下:
使用top、vmstat、iostat、sysctl等常用工具
top命令用於顯示處理器的活動狀況。在預設情況下,顯示佔用CPU最多的任務,並且每隔5s做一次刷新;vmstat命令用於報告關於內核線程、虛擬內存、磁碟、陷阱和CPU活動的統計信息;iostat命令用於分析各個磁碟的傳輸閑忙狀況;netstat是用來檢測網路信息的工具; sar用於收集、報告或者保存系統活動信息,其中,sar用於顯示數據,sar1和sar2用於收集和保存數據
sysctl是一個可用於改變正在運行中的Linux系統的介面。用sysctl 可以讀取幾白個以上的系統變數,如用sysctl—a可讀取所有變數。
sysctl的實現原理是:所有的內核參數在/proc/sys中形成一個樹狀結構,sysctl系統調用的內核函數是sys_sysctl,匹配項目後,最後的讀寫在do_sysctl_strategy中完成。
2.使用高級分析手段,如OProfile、gprof
OProfile可以幫助用戶識別諸如模塊的佔用時間、循環的展開、高速緩存的使用率低、低效的類型轉換和冗餘操作、錯誤預測轉移等問題。它收集有關處理器事件的信息,其中包括TLB的故障、停機、存儲器訪問以及緩存命中和未命中的指令的攫取數量。OProfile支持兩種采樣方式:基於事件的采樣(Event Based)和基於時間的采樣(Time Based)。基於事件的采樣是OProfile只記錄特定事件(比如L2緩存未命中)的發生次數,當達到用戶設定的定值時Oprofile就記錄一下(采一個樣)。這種方式需要CPU內部有性能計數器(Performace Counter))。基於時間的采樣是OProfile藉助OS時鍾中斷的機制,在每個時鍾中斷,OProfile都會記錄一次(采一次樣)。引入它的目的在於,提供對沒有性能計數器的CPU的支持,其精度相對於基於事件的采樣要低,因為要藉助OS時鍾中斷的支持,對於禁用中斷的代碼,OProfile不能對其進行分析。
6. Inux 中OProfile、gprof高級分析手段
OProfile可以幫助用戶識別諸如模塊的佔用時間、循環的展開、高速緩存的使用率低、低效的類型轉換和冗餘操作、錯誤預測轉移等問題。它收集有關處理器事件的信息,其中包括TLB的故障、停機、存儲器訪問以及緩存命中和未命中的指令的攫取數量。
OProfile支持兩種采樣方式:基於事件的采樣(Event Based)和基於時間的采樣(Time Based)。基於事件的采樣是OProfile只記錄特定事件(比如L2緩存未命中)的發生次數,當達到用戶設定的定值時Oprofile就記錄一下〈采一個樣)。這種方式需要CPU內部有性能計數器(Performace Counter)。基於時間的采樣是OProfile藉助OS時鍾中斷的機制,在每個時鍾中斷,OProfile都會記錄一次(采一次樣)。引入它的目的在於,提供對沒有性能計數器的CPU的支持,其精度相對於基於事件的采樣要低,因為要藉助OS時鍾中斷的支持,對於禁用中斷的代碼,OProfile不能對其進行分析。OProfile在Linux上分兩部分,一個是內核模塊(oprofile.ko),另一個是用戶空間的守護進程( oprofiled)。前者負責訪問性能計數器或者注冊基於時間采樣的函數,並將采樣值置於內核的緩沖區內。後者在後台運行,負責從內核空間收集數據,寫入文件。其運行步驟如下:
1)初始化opcontrol--init
2)配置opcontrol--setup--event=...
3)啟動opcontrol--start
4)運行待分析的程序xxx
5)取出數據
6)分析結果opreport-1.x
用GNU gprof可以列印出程序運行中各個函數消耗的時間,以幫助程序員找出眾多函數中耗時最多的函數;還可產生程序運行時的函數調用關系,包括調用次數,以幫助程序員分析程序的運行流程。
GNU gprof的實現原理:在編譯和鏈接程序的時候(使用-pg編譯和鏈接選項),gcc在應用程序的每個函數中都加入名為mcount (_mcount或_mcount,依賴於編譯器或操作系統)的函數,也就是說應用程序里的每一個函數都會調用mcount,而mcount會在內存中保存一張函數調用圖,並通過函數調用堆棧的形式查找子函數和父函數的地址。這張調用圖也保存了所有與函數相關的調用時間、調用次數等的所有信息。
7. linux Development Tools 包括哪些軟體
非常多,有幾十個,大家主要使用其中的gcc, make等編譯工具,你可以用/usr/bin/system-config-packages工具(Redhat)查Development-->Development Tools-->Details
8. 在Linux內核編譯的時候,一定要在/usr/src/kernel下才行嗎我怎麼在自己建立的文件夾下編譯總是報錯呢
Linux基礎知識:內核編譯-2.4至2.6
前言
linux-2.6.x內核發布後, 壇子里的兄弟們肯定都迫不及待地要升級原有的2.4.x內核. 但是由於與2.6.x內核配套的系統程序並沒有相應的來得及更新, 升級過程會碰到很多問題, 因此覺得有必要把我的經驗與大家share一下:-) XD們以後碰到類似問題時, 請先閱讀本文, 而不要一上來就盲目發帖.
1. 備份重要的數據
這是個好習慣,就不用多說了:-)
2. 下載最新的2.6.x內核源碼包
這個當然要到官方網站或者它的mir...?去下載了, 最好別到那些unknown的網站去下, 因為那些源碼包有可能被惡意做了手腳. 最新的linux-2.6.4.tar.bz2源碼包大概有33M左右. 下載的時候可以泡杯coffee, 然後點根煙......
在/usr/src/目錄下解開源碼包, 得到源代碼目錄/usr/src/linux-2.6.4/. 在對kernel做任何事情之前, 建議你先看一下它的README文件和Documentation/Changes文件, 從中你會得到不少有用的信息. 這些信息會讓你在隨後的升級過程避免很多不必要的麻煩.
在文檔Documentation/Changes中給出了欲成功地升級到kernel-2.6.x所需的最小系統軟體要求, 比如對於kernel-2.6.4是這樣的:
復制內容到剪貼板代碼:
Gnu make 3.79.1 # make --version
binutils 2.12 # ld -v
util-linux 2.10 # fdformat --version
mole-init-tools 0.9.10 # depmod -V
e2fsprogs 1.29 # tune2fs
jfsutils 1.1.3 # fsck.jfs -V
reiserfsprogs 3.6.3 # reiserfsck -V 21|grep reiserfsprogs
xfsprogs 2.6.0 # xfs_db -V
pcmcia-cs 3.1.21 # cardmgr -V
quota-tools 3.09 # quota -V
PPP 2.4.0 # pppd --version
isdn4k-utils 3.1pre1 # isdnctrl 21|grep version
nfs-utils 1.0.5 # showmount --version
procps 3.2.0 # ps --version
oprofile 0.5.3 # oprofiled --version
對於RH8/9的用戶而言, 上述要求基本上都能滿足. 大概只有兩個程序需要更新: motils工具包和mkinitrd程序.
3. 安裝mole-init-tools-3.0.tar.gz工具包
linux-2.6.x內核的mole處理過程有所改變(很多原先在用戶態下由motils處理的工作都放到內核里去完成了), 因此2.4.x下的motils工具包已經不在適合新的2.6.x內核, 必需將其升級到mole-init-tools工具包. 該工具包的最新版本是3.0(ps, 該工具包的版本從0.9.15一下跳到3.0, 其跨度之大...hoho). 可以下載mole-init-tools-3.0.tar.gz源碼包的地方有兩個:
Rusty's Linux Kernel Page:
接下來, 按照下列步驟安裝mole-init-tools工具包:
復制內容到剪貼板代碼:
# configure --prefix=/
# make moveold
# make all install
# ./generate-modprobe.conf /etc/modprobe.conf
命令"make moveold"將把系統原來的motils工具程序改名為"*.old"(比如,lsmod.old等等). NOTE! 這是非常重要的一步, 千萬不要省略. 這將使得你可以繼續使用原有的linux-2.4.x系統, 因為在2.4.x系統下, 新的mole-init-tools工具包實際上是倚賴原來"*.old"程序來載入內核模塊. 如果忘記了這一步也不要緊張, 可以先下載並安裝原來的motils程序包, 然後按照上面的步驟重來一遍就可以了.
新的mole-init-tools工具包不再使用原來的/etc/moles.conf配置文件了, 而是使用新的配置文件/etc/modprobe.conf. 因此必需用命令"./generate-modprobe.conf /etc/modprobe.conf"來生成新的配置文件/etc/modprobe.conf. 但是令人不爽的是, 這個生成的新配置文件存在BUG, 下面我們將會提到.
9. linux下圖形界面安裝weblogic816需載入什麼文件
java各版本官網下載地址;http://www.Oracle.com/technetwork/java/javase/archive-139210.html
推薦閱讀:
Oracle WebLogic 11g 安裝部署文檔 PDF http://www.linuxidc.com/Linux/2013-04/83658.htm
Linux部署Weblogic11g http://www.linuxidc.com/Linux/2013-01/77940.htm
Oracle基礎教程之安裝與配置Weblogic單實例 http://www.linuxidc.com/Linux/2012-02/54418.htm
Linux下Weblogic卸載 http://www.linuxidc.com/Linux/2012-01/51886.htm
Weblogic多機器集群的配置 http://www.linuxidc.com/Linux/2011-12/50577.htm
Weblogic的安裝和配置 http://www.linuxidc.com/Linux/2011-12/49082.htm
一.weblogic安裝系統環境
准備安裝在/home 目錄下,發現/ 目錄 空間不是特別多,擴展下 / 目錄lv
[root@rac1 ~]# df -h
文件系統 容量 已用 可用 已用%% 掛載點
/dev/mapper/vg_rac1-lv_root
7.7G 4.1G 3.3G 57% /
tmpfs 978M 200M 778M 21% /dev/shm
/dev/sda1 485M 51M 410M 11% /boot
/dev/mapper/vg_rac1-lv_oracle
18G 10G 6.5G 61% /oracle
[root@rac1 ~]# lvextend -L +1024M /dev/mapper/vg_rac1-lv_root
Extending logical volume lv_root to 8.81 GiB
Logical volume lv_root successfully resized
[root@rac1 ~]# resize2fs /dev/mapper/vg_rac1-lv_root
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/mapper/vg_rac1-lv_root is mounted on /; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/mapper/vg_rac1-lv_root to 2310144 (4k) blocks.
The filesystem on /dev/mapper/vg_rac1-lv_root is now 2310144 blocks long.
[root@rac1 ~]# df -h
文件系統 容量 已用 可用 已用%% 掛載點
/dev/mapper/vg_rac1-lv_root
8.7G 4.1G 4.2G 50% /
tmpfs 978M 200M 778M 21% /dev/shm
/dev/sda1 485M 51M 410M 11% /boot
/dev/mapper/vg_rac1-lv_oracle
18G 10G 6.5G 61% /oracle
二.查看系統用戶、創建weblogic用戶
[root@rac1 ~]# cat /etc/passwd
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
saslauth:x:498:496:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
qpidd:x:497:495:Owner of Qpidd Daemons:/var/lib/qpidd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
hsqldb:x:96:96::/var/lib/hsqldb:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
pulse:x:496:494:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpmp:x:72:72::/:/sbin/nologin
grid:x:601:507::/home/grid:/bin/bash
oracle:x:600:507::/home/oracle:/bin/bash
[root@rac1 ~]# groupadd -g 700 bea //創建weblogic用戶,bea組
[root@rac1 ~]# useradd -u 700 -g 700 weblogic
[root@rac# cat /etc/passwd root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
rpc:x:32:32:Rpcbind Daemon:/var/cache/rpcbind:/sbin/nologin
usbmuxd:x:113:113:usbmuxd user:/:/sbin/nologin
avahi-autoipd:x:170:170:Avahi IPv4LL Stack:/var/lib/avahi-autoipd:/sbin/nologin
oprofile:x:16:16:Special user account to be used by OProfile:/home/oprofile:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
rtkit:x:499:497:RealtimeKit:/proc:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
saslauth:x:498:496:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
qpidd:x:497:495:Owner of Qpidd Daemons:/var/lib/qpidd:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
apache:x:48:48:Apache:/var/www:/sbin/nologin
avahi:x:70:70:Avahi mDNS/DNS-SD Stack:/var/run/avahi-daemon:/sbin/nologin
rpcuser:x:29:29:RPC Service User:/var/lib/nfs:/sbin/nologin
nfsnobody:x:65534:65534:Anonymous NFS User:/var/lib/nfs:/sbin/nologin
hsqldb:x:96:96::/var/lib/hsqldb:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
pulse:x:496:494:PulseAudio System Daemon:/var/run/pulse:/sbin/nologin
gdm:x:42:42::/var/lib/gdm:/sbin/nologin
qemu:x:107:107:qemu user:/:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpmp:x:72:72::/:/sbin/nologin
grid:x:601:507::/home/grid:/bin/bash
oracle:x:600:507::/home/oracle:/bin/bash
weblogic:x:700:700::/home/weblogic:/bin/bash
[root@rac1 ~]# passwd weblogic //設置weblogic 用戶密碼
更改用戶 weblogic 的密碼 。
新的 密碼:
無效的密碼: 它基於字典單詞
重新輸入新的 密碼:
passwd: 所有的身份驗證令牌已經成功更新。
[root@rac1 ~]#
[root@rac1 ~]# su - weblogic
[weblogic@rac1 ~]$ ls
[weblogic@rac1 ~]$ pwd
/home/weblogic
[weblogic@rac1 ~]$ ls
jdk-6u30-linux-x64.bin jdk-6u30-linux-x64-rpm.bin wls1033_generic.jar
[weblogic@rac1 ~]$ ll
總用量 1105980
-rw-r--r-- 1 weblogic bea 85570714 3月 29 2012 jdk-6u30-linux-x64.bin
-rw-r--r-- 1 weblogic bea 81053867 3月 29 2012 jdk-6u30-linux-x64-rpm.bin
-rw-r--r-- 1 weblogic bea 965886589 11月 28 2012 wls1033_generic.jar
[weblogic@rac1 ~]$ chmod u+x jdk-6u30-linux-x64.bin
[weblogic@rac1 ~]$ ./jdk-6u30-linux-x64.bin
weblogic@rac1 ~]$ java -version
java version "1.6.0_20"
OpenJDK Runtime Environment (IcedTea6 1.9.7) (rhel-1.39.1.9.7.el6-x86_64)
OpenJDK 64-Bit Server VM (build 19.0-b09, mixed mode)
[weblogic@rac1 ~]$ cd /usr
[weblogic@rac1 usr]$ ls
bin etc games include lib lib64 libexec local sbin share src tmp
[weblogic@rac1 usr]$ find /-name java
find: 「/-name」: 沒有那個文件或目錄
find: 「java」: 沒有那個文件或目錄
[weblogic@rac1 usr]$ exit
logout
[root@rac1 ~]# find / -name java
/oracle/ora11g/crs_home/jdk/jre/bin/java
/oracle/ora11g/crs_home/jdk/bin/java
/oracle/ora11g/db_base/proct/11.2.0/db_1/xdk/doc/java
/oracle/ora11g/db_base/proct/11.2.0/db_1/sqldeveloper/lib/java
/oracle/ora11g/db_base/proct/11.2.0/db_1/jdk/jre/bin/java
/oracle/ora11g/db_base/proct/11.2.0/db_1/jdk/bin/java
/oracle/ora11g/db_base/proct/11.2.0/db_1/owb/wf/java
/oracle/ora11g/db_base/proct/11.2.0/db_1/lib/java
/etc/java
/etc/alternatives/java
/etc/pki/java
/usr/share/swig/1.3.40/java
/usr/share/java
/usr/share/doc/db4-devel-4.7.25/java
/usr/share/doc/db4-devel-4.7.25/ref/java
/usr/share/javadoc/java
/usr/share/javadoc/java-1.6.0-openjdk/jre/api/plugin/dom/com/sun/java
/usr/share/javadoc/java-1.6.0-openjdk/api/java
/usr/share/javadoc/java-1.6.0-openjdk/api/org/omg/stub/java
/usr/lib/jvm-exports/java
/usr/lib/java
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/jre/bin/java
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0.x86_64/bin/java
/usr/lib/jvm/java
/usr/lib/jvm/java-1.5.0-gcj-1.5.0.0/jre/bin/java
/usr/lib64/java
/usr/bin/java
/var/lib/alternatives/java
/home/weblogic/jdk1.6.0_30/jre/bin/java
/home/weblogic/jdk1.6.0_30/db/demo/programs/vtis/java
/home/weblogic/jdk1.6.0_30/db/demo/programs/scores/java
/home/weblogic/jdk1.6.0_30/bin/java
[root@rac1 ~]# su - weblogic
[weblogic@rac1 ~]$ ls
jdk1.6.0_30 jdk-6u30-linux-x64.bin jdk-6u30-linux-x64-rpm.bin wls1033_generic.jar
[weblogic@rac1 ~]$ ll
總用量 1105984
drwxr-xr-x 10 weblogic bea 4096 8月 16 04:16 jdk1.6.0_30
-rwxr--r-- 1 weblogic bea 85570714 3月 29 2012 jdk-6u30-linux-x64.bin
-rw-r--r-- 1 weblogic bea 81053867 3月 29 2012 jdk-6u30-linux-x64-rpm.bin
-rw-r--r-- 1 weblogic bea 965886589 11月 28 2012 wls1033_generic.jar
[weblogic@rac1 ~]$ chmod u+x wls1033_generic.jar
10. Linux 高級分析手段有哪些
高級分析手段如OProfile、gprof。
OProfile可以幫助用戶識別諸如模塊的佔用時間、循環的展開、高速緩存的使用率低、低效的類型轉換和冗餘操作、錯誤預測轉移等問題。它收集有關處理器事件的信息,其中包括TLB的故障、停機、存儲器訪問以及緩存命中和未命中的指令的攫取數量。
OProfile支持兩種采樣方式:基於事件的采樣(Event Based)和基於時間的采樣(Time Based)。基於事件的采樣是OProfile只記錄特定事件(比如L2緩存未命中)的發生次數,當達到用戶設定的定值時Oprofile就記錄一下(采一個樣)。這種方式需要CPU內部有性能計數器(Performace Counter)。基於時間的采樣是OProfile藉助OS時鍾中斷的機制,在每個時鍾中斷,OProfile都會記錄一次(采一次樣)。引入它的目的在於,提供對沒有性能計數器的CPU的支持,其精度相對於基於事件的采樣要低,因為要藉助OS時鍾中斷的支持,對於禁用中斷的代碼,OProfile不能對其進行分析。
OProfile在Linux上分兩部分,一個是內核模塊( oprofile.ko),另一個是用戶空間的守護進程( oprofiled)。前者負責訪問性能計數器或者注冊基於時間采樣的函數,並將采樣值置於內核的緩沖區內。後者在後台運行,負責從內核空間收集數據,寫入文件。其運行步驟如下。
1)初始化opcontrol--init
2)配置opcontrol--setup--event=...
3)啟動opcontrol--start
4)運行待分析的程序xxx
5)取出數據
opcontrol--mp
6)分析結果opreport-1./xxx
用GNU gprof可以列印出程序運行中各個函數消耗的時間,以幫助程序員找出眾多函數中耗時最多的函數;還可產生程序運行時的函數調用關系,包括調用次數,以幫助程序員分析程序的運行流程。GNU gprof的實現原理:在編譯和鏈接程序的時候〈使用-pg編譯和鏈接選項),gcc在應用程序的每個函數中都加入名為mcount (_mcount或_mcount,依賴於編譯器或操作系統)的函數,也就是說應用程序里的每一個函數都會調用mcount,而mcount會在內存中保存一張函數調用圖,並通過函數調用堆棧的形式查找子函數和父函數的地址。這張調用圖也保存了所有與函數相關的調用時間、調用次數等的所有信息。