日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
Linux下setcore使用指南(linux下setcore)

Linux是一款非常強(qiáng)大的操作系統(tǒng),它以其開源、自由、靈活、高效、安全等特點(diǎn)深受廣大用戶喜愛和青睞。在Linux中,setcore是一款非常實(shí)用的工具,可以用來設(shè)置核心轉(zhuǎn)儲策略和參數(shù)。

創(chuàng)新互聯(lián)公司專注于彭山網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗。 熱誠為您提供彭山營銷型網(wǎng)站建設(shè),彭山網(wǎng)站制作、彭山網(wǎng)頁設(shè)計、彭山網(wǎng)站官網(wǎng)定制、微信小程序定制開發(fā)服務(wù),打造彭山網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供彭山網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。

本篇文章將從以下幾個方面進(jìn)行介紹:

– setcore的基本概念

– setcore的使用方法

– setcore的擴(kuò)展功能

一、setcore的基本概念

setcore是一個用于設(shè)置/proc/sys/kernel下面與系統(tǒng)核心轉(zhuǎn)儲相關(guān)的文件的工具。它可以用來設(shè)置核心轉(zhuǎn)儲的文件路徑、文件名、文件大小等相關(guān)參數(shù)。

在Linux系統(tǒng)中,當(dāng)出現(xiàn)系統(tǒng)崩潰、應(yīng)用程序崩潰等問題時,setcore可以自動將核心轉(zhuǎn)儲文件保存在一個指定的目錄中,以便分析和定位問題。這個功能對于系統(tǒng)管理員、開發(fā)人員等使用Linux的人來說都是非常重要的,因為通過分析核心轉(zhuǎn)儲文件可以更快地發(fā)現(xiàn)問題和解決問題。

二、setcore的使用方法

setcore的使用方法非常簡單,只需要按照以下幾個步驟即可完成設(shè)置。

1、設(shè)置核心轉(zhuǎn)儲路徑

在Linux中,核心轉(zhuǎn)儲文件默認(rèn)保存在/var/crash目錄下,我們可以通過setcore來修改核心轉(zhuǎn)儲文件的保存路徑。

使用以下命令查看當(dāng)前的核心轉(zhuǎn)儲文件保存路徑:

# cat /proc/sys/kernel/core_pattern

/var/crash/%e.%p.core

接下來,我們可以使用setcore來修改保存路徑。例如,我們想把核心轉(zhuǎn)儲文件保存在/home/user/core目錄下,可以使用以下命令來修改:

# setcore -f /home/user/core/%e.%p.core

其中,參數(shù)-f用來指定核心轉(zhuǎn)儲文件的保存路徑。%e表示應(yīng)用程序名稱,%p表示應(yīng)用程序進(jìn)程號,這樣設(shè)置之后,核心轉(zhuǎn)儲文件就會保存在指定的目錄下了。

2、設(shè)置核心轉(zhuǎn)儲文件名稱

和核心轉(zhuǎn)儲路徑一樣,我們也可以使用setcore來設(shè)置核心轉(zhuǎn)儲文件的名稱。默認(rèn)情況下,核心轉(zhuǎn)儲文件的名稱為core.進(jìn)程號。如果我們想要修改核心轉(zhuǎn)儲文件的名稱,可以按照以下步驟進(jìn)行設(shè)置。

我們可以使用以下命令查看當(dāng)前的核心轉(zhuǎn)儲文件名稱:

# cat /proc/sys/kernel/core_pattern

/var/crash/%e.%p.core

接下來,我們可以使用setcore來修改核心轉(zhuǎn)儲文件的名稱。例如,我們想把核心轉(zhuǎn)儲文件名稱改為mycore.%e.%p,可以使用以下命令:

# setcore -n mycore.%e.%p

其中,參數(shù)-n用來指定核心轉(zhuǎn)儲文件的名稱,mycore表示新的文件名,%e表示應(yīng)用程序名稱,%p表示應(yīng)用程序進(jìn)程號。

3、設(shè)置核心轉(zhuǎn)儲文件大小

在Linux系統(tǒng)中,核心轉(zhuǎn)儲文件的大小有一個默認(rèn)限制,如果超過了這個限制,系統(tǒng)就不會再生成核心轉(zhuǎn)儲文件。我們可以使用setcore來修改核心轉(zhuǎn)儲文件的大小限制。

我們可以使用以下命令查看當(dāng)前的核心轉(zhuǎn)儲文件大小限制:

# cat /proc/sys/kernel/core_pattern

/var/crash/%e.%p.core

接下來,我們可以使用setcore來修改核心轉(zhuǎn)儲文件的大小限制。

例如,我們想把核心轉(zhuǎn)儲文件大小限制改為2GB,可以使用以下命令:

# setcore -s 2023

其中,參數(shù)-s用來指定核心轉(zhuǎn)儲文件的大小限制,這里的2023表示單位為MB,即2GB。

三、setcore的擴(kuò)展功能

除了基本的核心轉(zhuǎn)儲路徑、名稱、大小等設(shè)置,setcore還有一些擴(kuò)展功能,如設(shè)置核心轉(zhuǎn)儲文件的權(quán)限、設(shè)置核心轉(zhuǎn)儲文件的類型等。

1、設(shè)置核心轉(zhuǎn)儲文件的權(quán)限

我們可以使用setcore來設(shè)置核心轉(zhuǎn)儲文件的權(quán)限。通過設(shè)置核心轉(zhuǎn)儲文件的權(quán)限,我們可以控制不同用戶對核心轉(zhuǎn)儲文件的訪問權(quán)限,增加系統(tǒng)的安全性。

我們可以使用以下命令修改核心轉(zhuǎn)儲文件保存路徑:

# setcore -f /home/user/core/%e.%p.core

然后,我們可以使用以下命令來設(shè)置核心轉(zhuǎn)儲文件的權(quán)限:

# setcore -m 640

其中,參數(shù)-m用來設(shè)置核心轉(zhuǎn)儲文件的權(quán)限,640表示所有者可讀可寫,組可讀。

2、設(shè)置核心轉(zhuǎn)儲文件的類型

我們可以使用setcore來設(shè)置核心轉(zhuǎn)儲文件的類型。通過設(shè)置核心轉(zhuǎn)儲文件的類型,我們可以方便地將核心轉(zhuǎn)儲文件與其他日志文件、數(shù)據(jù)文件等進(jìn)行區(qū)分。

例如,我們可以使用以下命令來設(shè)置核心轉(zhuǎn)儲文件的類型為crashed:

# setcore -t crashed

其中,參數(shù)-t用來設(shè)置核心轉(zhuǎn)儲文件的類型,crashed表示文件類型為crashed。

通過本篇文章的介紹,我們可以看到,setcore是一款非常實(shí)用的工具,可以幫助我們方便地管理和設(shè)置核心轉(zhuǎn)儲文件,快速發(fā)現(xiàn)和解決問題。了解和掌握setcore的使用方法和擴(kuò)展功能,對于Linux系統(tǒng)的管理員和開發(fā)人員都非常重要。

相關(guān)問題拓展閱讀:

  • linux系統(tǒng)硬盤怎么格式化
  • 修改linux系統(tǒng)socket緩沖區(qū)大小

linux系統(tǒng)硬盤怎么格式化

LVM將一個或多個硬盤的分區(qū)在邏輯上,相當(dāng)于一個大硬盤來使用,當(dāng)硬盤的空間不夠使用的時候,可以繼續(xù)將 其它 的硬盤的分區(qū)加入其中,這樣可以實(shí)現(xiàn)磁盤空間的動態(tài)管理,相對于普通的

磁盤分區(qū)

有很大的靈活性。那么你知道

linux系統(tǒng)

硬盤怎么格式化嗎?我?guī)砹薼inux系統(tǒng)硬盤格式化的具 體操 作過程,下面大家跟著我一起來學(xué)習(xí)一下吧。

  linux系統(tǒng)硬盤怎么格式化

  分區(qū)與格式化

  先用fdisk分區(qū),分區(qū)完成后再用mkfs格式化并創(chuàng)建

文件系統(tǒng)

,掛載,磁盤就能使用啦。

  分區(qū)的原理:

  MBR:主引導(dǎo)扇區(qū)

  主分區(qū)表:64bytes,最多只能分四個主分區(qū),每個主分區(qū)的記錄(相關(guān)信息,比如分區(qū)大小,位置)在主分區(qū)表里占14bytes。

  野仿如果要建多于四個的分區(qū),就要拿出一個主分區(qū)做為擴(kuò)展分區(qū),再在擴(kuò)展分區(qū)里面進(jìn)行其扮模它的分區(qū)操作。在 建擴(kuò)展分區(qū)的時候會建立一張對應(yīng)的擴(kuò)展分區(qū)表,它記錄了在這個擴(kuò)展分區(qū)里的分區(qū)的相關(guān)信息;理論上它沒有分區(qū)數(shù)量的限制,在擴(kuò)展分區(qū)內(nèi)部的分區(qū)叫做邏輯分區(qū),如上圖中的 /dev/hda5,/dev/hda6/,/dev/hda7

  格式化原理:

  在分好區(qū)后,分區(qū)里面是空的,沒有任何東西。為了能讓OS識別,就必須要向分區(qū)里寫入相應(yīng)格式的數(shù)據(jù)。比如windows的FAT32,NTFS;Linux的ext2,ext3,ext4(目前ext3格式的用的比較多,ext4還廳脊緩在實(shí)驗之中,在新的Fedora上使用的就是ext4的文件系統(tǒng))。

  Windows/dos常用的分區(qū)工具:fdisk/partition magic/diskpart

  Linux下常用的分區(qū)工具:

  fdisk/sfdisk:命令行工具,各種版本和環(huán)境都能使用,包含在軟件包util-linux中

  diskdruid:圖形化分區(qū)工具,只能在安裝REDHAT系統(tǒng)時使用。

  下面我們開始實(shí)驗:

  環(huán)境/工具:Fedora 14/256M

內(nèi)存卡

;fdisk

  之一步:fdisk

  # fdisk -l /dev/sdb

  Disk /dev/sdb: 254 MB,bytes

heads, 61 sectors/track, 1016 cylinders, totalsectors

  Units = sectors of 1 * 512 = 512 bytes

  Sector size (logical/physical): 512 bytes / 512 bytes

  I/O size (minimum/optimal): 512 bytes / 512 bytes

  Disk identifier: 0x

  Device Boot Start End Blocks Id System

  # fdisk /dev/sdb

  Command (m for help): #在輸入上面的命令后會出現(xiàn)左邊的提示,輸入m就會得到一個幫助菜單,如下:

  Command (m for help): m

  Command action

  a toggle a bootable flag

  b edit bsd disklabel

  c toggle the dos compatibility flag

  d delete a partition

  l list known partition types

  m print this menu

  n add a new partition

  o create a new empty DOS partition table

  p print the partition table

  q quit without saving changes

  s create a new empty Sun disklabel

  t change a partition’s system id

  u change display/entry units

  v verify the partition table

  w write table to disk and exit

  x extra functionality (experts only)

  #help雖然是英文的,可都很簡單,在這里不再解釋。

  #現(xiàn)在,我們正式開始分區(qū)的操作:

  Command (m for help): n #新建分區(qū)

  Command action

  e extended

  p primary partition (1-4)

  #e/p分別對應(yīng)擴(kuò)展分區(qū) /主分區(qū);我們先分四個主分區(qū),每個50M;然后再來增加主分區(qū)或擴(kuò)展分區(qū),看會出現(xiàn)怎樣的狀況,嘿嘿。

  p #分區(qū)類型為主分區(qū)

  Partition number (1-4, default 1): 1 #分區(qū)號,在這里我們依次選擇1、2、3、4

  First sector (, default 2023): #指定分區(qū)的起始扇區(qū),一般默認(rèn),按enter鍵即可。

  Last sector, +sectors or +size{K,M,G} (, default): +50M #指定分區(qū)的終止扇區(qū),根據(jù)前面的提示我們可以做出相應(yīng)的選擇+sectors 或 +size{K,M,G}

  Command (m for help): p #用p打印出已建好的分區(qū)列表

  Disk /dev/sdb: 254 MB,bytes

heads, 61 sectors/track, 1016 cylinders, totalsectors

  Units = sectors of 1 * 512 = 512 bytes

  Sector size (logical/physical): 512 bytes / 512 bytes

  I/O size (minimum/optimal): 512 bytes / 512 bytes

  Disk identifier: 0x

  Device Boot Start End Blocks Id System

  /dev/sdbLinux

  #剩下的三個分區(qū)的建立操作同上

  #分好四個主分區(qū)后的情況如下

  Command (m for help): p

  Disk /dev/sdb: 254 MB,bytes

heads, 61 sectors/track, 1016 cylinders, totalsectors

  Units = sectors of 1 * 512 = 512 bytes

  Sector size (logical/physical): 512 bytes / 512 bytes

  I/O size (minimum/optimal): 512 bytes / 512 bytes

  Disk identifier: 0x

  Device Boot Start End Blocks Id System

  /dev/sdbLinux

  /dev/sdbLinux

  /dev/sdbLinux

  /dev/sdb8 25+ 83 Linux

  #已經(jīng)建好四個主分區(qū)啦,現(xiàn)在我們來看看如果再建主分區(qū)或是擴(kuò)展分區(qū)的話會出現(xiàn)怎樣的情況:

  Command (m for help): n

  You must delete some partition and add an extended partition first

  #看到了吧,不能再建分區(qū)啦!要再建分區(qū)的話必須刪除some分區(qū),再新建一個擴(kuò)展分區(qū)才行。

  #現(xiàn)在,我們刪掉一個主分區(qū),來新建擴(kuò)展分區(qū)

  Command (m for help): d #刪除分區(qū)

  Partition number (1-4): 4 #選擇要刪除分區(qū)的分區(qū)號,我們選第四個

  Command (m for help): p #打印,如下,四個分區(qū)變成了三個!

  Disk /dev/sdb: 254 MB,bytes

heads, 61 sectors/track, 1016 cylinders, totalsectors

  Units = sectors of 1 * 512 = 512 bytes

  Sector size (logical/physical): 512 bytes / 512 bytes

  I/O size (minimum/optimal): 512 bytes / 512 bytes

  Disk identifier: 0x

  Device Boot Start End Blocks Id System

  /dev/sdbLinux

  /dev/sdbLinux

  /dev/sdbLinux

  #新建一個擴(kuò)展分區(qū)

  #如果在沒有建滿三個主分的區(qū)的情況下建立擴(kuò)展分區(qū),相關(guān)選項會有些不同。

  Command (m for help): n

  Command action

  e extended

  p primary partition (1-4)

  e

  Selected partition 4

  First sector (, default): #enter,默認(rèn)

  Using default value

  Last sector, +sectors or +size{K,M,G} (, default): #enter,默認(rèn),使用剩余空間

  Using default value

  Command (m for help): p

  Disk /dev/sdb: 254 MB,bytes

heads, 61 sectors/track, 1016 cylinders, totalsectors

  Units = sectors of 1 * 512 = 512 bytes

  Sector size (logical/physical): 512 bytes / 512 bytes

  I/O size (minimum/optimal): 512 bytes / 512 bytes

  Disk identifier: 0x

  Device Boot Start End Blocks Id System

  /dev/sdbLinux

  /dev/sdbLinux

  /dev/sdbLinux

  /dev/sdbExtended

  #接下來,我們在新建的擴(kuò)展分區(qū)里再新建兩個邏輯分區(qū),因為已經(jīng)有了三個主分區(qū),這里不會再顯示是建立邏輯分區(qū)還是主分區(qū)的提示!

  Command (m for help): n

  First sector (, default): #enter

  Using default value

  Last sector, +sectors or +size{K,M,G} (, default): +50M

  Command (m for help): n

  First sector (, default): #enter

  Using default value

  Last sector, +sectors or +size{K,M,G} (, default): #enter

  Using default value

  Command (m for help): p

  Disk /dev/sdb: 254 MB,bytes

heads, 61 sectors/track, 1016 cylinders, totalsectors

  Units = sectors of 1 * 512 = 512 bytes

  Sector size (logical/physical): 512 bytes / 512 bytes

  I/O size (minimum/optimal): 512 bytes / 512 bytes

  Disk identifier: 0x

  Device Boot Start End Blocks Id System

  /dev/sdbLinux

  /dev/sdbLinux

  /dev/sdbLinux

  /dev/sdbExtended

  /dev/sdbLinux

  /dev/sdbLinux

  #上面的列表,就是我們今天分區(qū)的成果啦!接下來保存退出,重啟計算機(jī),就可以進(jìn)行下一步的mkfs操作啦!如果忘記了相關(guān)的操作命令,記得按m!!!

  Command (m for help): w #保存

  The partition table has been altered!

  Calling ioctl() to re-read partition table.

  Syncing disks.

  另:在建好分區(qū)后,我們還可以更改相關(guān)分區(qū)的文件系統(tǒng)類型

  #如,我們要把第二個主分區(qū)改成Linux下的交換分區(qū),操作如下

  Command (m for help): t #更改文件系統(tǒng)類型

  Partition number (1-6): 2 #選擇第二個分區(qū)

  Hex code (type L to list codes): L #選擇要更改的文件系統(tǒng)編碼,可以按L來查看相關(guān)編碼信息。

Empty 24 NEC DOS 81 Minix / old Lin bf Solaris

FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-

XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-

XENIX usr 40 VenixOS/2 hidden C: c6 DRDOS/sec (FAT-

  …………

Hidden FAT16 64 Novell Netware af HFS / HFS+ fb VMware VMFS

Hidden HPFS/NTF 65 Novell Netware b7 BSDI fs fc VMware VMKCORE

AST SmartSleep 70 DiskSecure Mult b8 BSDI swap fd Linux raid auto

b Hidden W95 FAT3 75 PC/IX bb Boot Wizard hid fe LANstep

c Hidden W95 FAT3 80 Old Minix be Solaris boot ff B

e Hidden W95 FAT1

  Hex code (type L to list codes): 82 #查找到linux swap的編碼為82

  Changed system type of partition 2 to 82 (Linux swap / Solaris)

  Command (m for help): p

  …………..

  Device Boot Start End Blocks Id System

  /dev/sdbLinux

  /dev/sdbLinux swap / Solaris

  /dev/sdbLinux

  /dev/sdbExtended

  /dev/sdbLinux

  /dev/sdbLinux

  #最后別忘了保存!如果你須要的話!

  #擴(kuò)展分區(qū)不能直接使用,邏輯分區(qū)只能建立在擴(kuò)展分區(qū)上!

  第二步:mkfs(mkfs時分區(qū)的格式更好與fdisk設(shè)定的分區(qū)格式一致,不然…….)

  mkfs支持ext2 ext3 vfa msdos jfs reiserfs等文件系統(tǒng)。

  用法1:mkfs -t

  例: mkfs -t ext3 /dev/sdb2

  用法2:mkfs.

  例:mkfs,vfat /dev/sdb3

  mke2fs支持ext2/ext3文件系統(tǒng)

  用法:mke2fs

  例:mke2fs -j /dev/sdb5

  # 更多更具體的用法請參照相關(guān)命令的man手冊

  下面,接著實(shí)驗:

  例一

  # mkfs -t ext3 /dev/sdb1

  mke2fs 1.41.12 (17-May-2023)

  Filesystem label=

  OS type: Linux

  Block size=1024 (log=0)

  Fragment size=1024 (log=0)

  Stride=0 blocks, Stripe width=0 blocks

inodes,blocks

blocks (5.00%) reserved for the super user

  First data block=1

  Maximum filesystem blocks=

block groups

blocks per group, 8192 fragments per group

inodes per group

  Superblock backups stored on blocks:

, 24577, 40961

  Writing inode tables: done

  Creating journal (4096 blocks): done

  Writing superblocks and filesystem accounting information: done

  This filesystem will be automatically checked every 34 mounts or

days, whichever comes first. Use tune2fs -c or -i to override.

  例二:

  # fdisk /dev/sdb

  Command (m for help): t

  Partition number (1-6): 6

  Hex code (type L to list codes): L

Empty 24 NEC DOS 81 Minix / old Lin bf Solaris

FAT12 39 Plan 9 82 Linux swap / So c1 DRDOS/sec (FAT-

XENIX root 3c PartitionMagic 83 Linux c4 DRDOS/sec (FAT-

XENIX usr 40 VenixOS/2 hidden C: c6 DRDOS/sec (FAT-

FAT16

Extended 42 SFS 86 NTFS volume set da Non-FS data

FAT16 4d QNX4.x 87 NTFS volume set db CP/M / CTOS / .

HPFS/NTFS 4e QNX4.x 2nd part 88 Linux plaintext de Dell Utility

  ………

  Hex code (type L to list codes): 7

  Changed system type of partition 6 to 7 (HPFS/NTFS)

  Command (m for help): p

  Disk /dev/sdb: 254 MB,bytes

heads, 61 sectors/track, 1016 cylinders, totalsectors

  Units = sectors of 1 * 512 = 512 bytes

  Sector size (logical/physical): 512 bytes / 512 bytes

  I/O size (minimum/optimal): 512 bytes / 512 bytes

  Disk identifier: 0x

  Device Boot Start End Blocks Id System

  /dev/sdbLinux

  /dev/sdbLinux swap / Solaris

  /dev/sdbLinux

  /dev/sdbExtended

  /dev/sdbLinux

  /dev/sdbHPFS/NTFS

  Command (m for help): w

  The partition table has been altered!

  Calling ioctl() to re-read partition table.

  Syncing disks.

  # mkfs.ntfs /dev/sdb6

  Cluster size has been automatically set to 4096 bytes.

  Initializing device with zeroes: 100% – Done.

  Creating NTFS volume structures.

修改linux系統(tǒng)socket緩沖區(qū)大小

進(jìn)行socket編程有時候可能需要修改下socket的接收緩沖區(qū)大小,這里可以使用 setsockopt 函數(shù),族祥但是如果需要修改的緩沖區(qū)很大(比如500MB),則還需要修改系統(tǒng)內(nèi)核的TCP/IP參數(shù),不然接收緩沖區(qū)大小會收到內(nèi)核參數(shù)的限制,所以需要改兩個地方。下面以把socket接收緩沖區(qū)握穗罩修改為500MB說明一下要作的修改。《Linux就該這么學(xué)》

 修改內(nèi)核TCP/IP參數(shù)

在終端用sysctl命令修改socket更大緩沖區(qū)限制:

sudo sysctl -w net.core.rmem_max=

 在代碼中用setsockopt函數(shù)修改SO_RCVBUF選項

int recvbuff = 500*1024*1024;

if(setsockopt(sockfd, SOL_SOCKET, SO_RCVBUF, (const char*)&recvbuff, sizeof(int)) == -1)

printf(“setsocket error\n”);

else

printf(“setsocket success\n”);12345

以上兩點(diǎn),只改第1點(diǎn),一個socket只會預(yù)留63個報文的接收緩沖;只改第2點(diǎn),緩沖區(qū)大小會受到rmem_max的限制,如果需要的段鬧緩沖區(qū)很大的話,必須兩點(diǎn)都改。

關(guān)于linux下setcore的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

香港服務(wù)器選創(chuàng)新互聯(lián),2H2G首月10元開通。
創(chuàng)新互聯(lián)(www.cdcxhl.com)互聯(lián)網(wǎng)服務(wù)提供商,擁有超過10年的服務(wù)器租用、服務(wù)器托管、云服務(wù)器、虛擬主機(jī)、網(wǎng)站系統(tǒng)開發(fā)經(jīng)驗。專業(yè)提供云主機(jī)、虛擬主機(jī)、域名注冊、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。


文章題目:Linux下setcore使用指南(linux下setcore)
鏈接分享:http://www.5511xx.com/article/coohpdj.html