摘要: 做技術(shù)支持
2
個月了,也就是說有
2
個月沒有碰代碼了,手都很生了,最近遇到項目大的并發(fā)問題,數(shù)據(jù)也有些不太正確,就想到了項目中,由于模塊過多,異步的情況也有發(fā)生,所以想到事務(wù)與鎖的相關(guān)知識,先寫一點事務(wù)相關(guān)的理解,然后寫一點鎖相關(guān)的東西,以便加深自己的理解。
?
...
閱讀全文
posted @
2006-11-16 13:48 小小程序程序員混口飯吃 閱讀(2781) |
評論 (3) |
編輯 收藏
最近韓國房價失控上漲,有關(guān)職能部門3高官引咎辭職.
房價瘋漲在中國似乎是司空見慣,習以為常,老百姓也幾乎麻木,買不起房子的年輕人只能坐以待斃,泱泱大國除了幾個學者能夠抨擊一下之外,好像沒有人說要出來承擔責任,政府跟房地產(chǎn)商一個論調(diào),
社會需求導致房價不可能跌。房產(chǎn)商可以控制一些主流的媒體,就跟一些民辦學校控制當?shù)氐膱蠹堃粯樱銈兏医衣段遥揖筒蝗ツ銈兡抢锎驈V告,一年讓你們少賺個幾百萬,這些主流媒體當然不會放棄
這么大的搖錢樹,也就厚著臉去低三下四了。房子還是瘋了一樣的漲,恐怕永遠沒有父母官出來辭職的
除非被利益集團排擠下來。地價高,商業(yè)賄賂,行業(yè)不正規(guī),職能部門的監(jiān)管,以及法制整體不健全導致房價瘋長,歸根結(jié)底:房價高總是由上層的利益集團控制的,老百姓只能嘆氣的份。
聯(lián)想到,最近臺灣政壇,至少那也是民主,香港一個歌星的老爹收了幾百萬港元就是特大受賄罪犯,這在中國簡直是小巫見大巫,種種情況表明大陸還是有差距的,不過最新全球廉政指數(shù),中國上升了10多位,我們也相信是新一代政府正在加強這方面的建設(shè)。我愛我的國家,我有理由相信,新一代政府會越來越好,大家拭目以待。
加油中國!
posted @
2006-11-16 08:51 小小程序程序員混口飯吃 閱讀(708) |
評論 (2) |
編輯 收藏
摘要: 文章轉(zhuǎn)自網(wǎng)上好像是玉米田的,忘記了鎖(
locking
)
業(yè)務(wù)邏輯的實現(xiàn)過程中,往往需要保證數(shù)據(jù)訪問的排他性。如在金融系統(tǒng)的日終結(jié)算
處理中,我們希望針對某個
cut-off
時間點的數(shù)據(jù)進行處理,而不希望在結(jié)算進行過程中
...
閱讀全文
posted @
2006-11-15 08:35 小小程序程序員混口飯吃 閱讀(51687) |
評論 (23) |
編輯 收藏
一個傻子買了3個大餅,吃了前兩個都沒吃飽,到第三個才吃飽。于是嘆道:早知道,我就只買第三個了,前兩個餅沒用.我們又何嘗不是這種人?我們也經(jīng)常喟嘆自己不能成功。
???? 其實沒有人能夠隨便成功,一口吃飽也是不可能的,所以平時必須打好基礎(chǔ),成功總是屬于有準備的人,平時多積累,說不定哪天就會成功!
posted @
2006-11-10 13:26 小小程序程序員混口飯吃 閱讀(387) |
評論 (0) |
編輯 收藏
超市自造三千元筆記本10天賣出5臺,這是剛剛在DONEWS上看到的消息,據(jù)物美集團副總裁吳堅中介紹,這款自有品牌筆記本電腦定名為“優(yōu)宜”,意為“質(zhì)優(yōu)價廉”,由物美和合作廠家威盛電子(中國)有限公司聯(lián)合推出。據(jù)其介紹,這款筆記本電腦最低售價才3200元一臺,配置稍好的價格才3649元。
原來生產(chǎn)廠家開始物色新的渠道,傳統(tǒng)的大商場 ,家電賣場,已經(jīng)沒有太多的利潤點,就是說渠道把廠家的利潤給吃個差不多了,廠家必須尋找新的渠道,既給國美等大賣場施加了壓力,又給自己尋找了利潤空間,消費者也得到了實惠,看樣子這款比較本只是廠家小試牛刀,如果這種模式能夠成功,畢竟帶來賣場新一輪沖擊,在中國得渠道者得天下,廠商賣本子在傳統(tǒng)賣場賺得試賣白菜得錢,利潤都被渠道壓縮了。
我們拭目以待。
posted @
2006-11-08 09:07 小小程序程序員混口飯吃 閱讀(647) |
評論 (3) |
編輯 收藏
find 命令在linux中是很常用到的一個查找命令,它的功能非常地強大。可以結(jié)合正則匹配來搜索系統(tǒng)中的指定的內(nèi)容,以下我就記錄一下這個find常用到的一些用法
?
首先我們來看年find的總體用法
find path option [-print -exec -ok]
其中path是指定在哪個路徑中查找內(nèi)容。如/var下查找內(nèi)容,option是find中的一些屬性值,常用的有-name,-type,-mtime,-ctime,-atime,-user,-group,-nouser,-nogroup,-perm等,[-print -exec -ok]是可選屬性值,-print是指把查找到的內(nèi)容輸出到指定的地方,-exec與-ok都是執(zhí)行另處的command命令,但兩都也有一點不同,-exec在執(zhí)行指定的command時不會給用戶顯示提示或操作信息,但是-ok就會在有提示詢問操作時給用戶顯示信息,直到用戶做了選擇時才繼續(xù)執(zhí)行。
?
常用的option值說明
-name 指定查找的內(nèi)容是文件。
-type 指定查找的文件的類型,它有d,l,b,p,f,c等文件類型,d是查找目錄,l是查找鏈接檔,b是查找塊文件,p是查找管道文件,f是普通文件,c是字符設(shè)備文件
-mtime,-ctime,atime都是指按時間查找,-mtime是文件的修改時間,-ctime是文件的創(chuàng)建時間,atime是后找開文件時間
-user是查找指定用戶帳號的文件
-group是查找指定組帳號的文件
-nouser查找無用戶帳號文件
-nogroup是查找無組帳號文件
?
下面舉幾個例子說明一下find的用法
(1)我想找出/etc目錄下是passw開頭的所有文件
?? find /etc -name "passw*"?
這個例子中"*"號是正則匹配中的“所有”的意思
(2)我想找出/var/log目錄下所有的前5天的.log文件
?? find /var/log -name "*.log" -mtime +5
這個例子中"+5"是指5天以前的文件,如是查"-5"則是5天以內(nèi)的文件
(3)我想找出/home目錄下是"ygl"這個用戶的文件
?? find /home -user "ygl"
(4)我想找出/home目錄下是"ygl"這個用戶的所有的普通檔的文件
?? find /home -user "ygl" -type f
(5)我想找出/var/log目錄下的所有的.log文件并查看它的詳細信息
?? find /var/log -name "*.log" -type f -exec ls -l {} \;
這個例子中用到了可選屬性-exec用來執(zhí)行l(wèi)s命令,其中的-exec或者-ok的用法都要在它所執(zhí)行的command后面接" {} \;"
(6)我想查找出在/etc中以passw開頭的所有文件中有沒有ygl這些內(nèi)容的
?? find /etc -name "passw*" -exec grep -in "ygl" {} \;
posted @
2006-11-06 09:34 小小程序程序員混口飯吃 閱讀(668) |
評論 (0) |
編輯 收藏
安裝
查看軟件xxx安裝內(nèi)容
*
dpkg -L xxx
查找軟件
*
apt-cache search 正則表達式
查找文件屬于哪個包
*
dpkg -S filename
apt-file search filename
查詢軟件xxx依賴哪些包
*
apt-cache depends xxx
查詢軟件xxx被哪些包依賴
*
apt-cache rdepends xxx
增加一個光盤源
*
sudo apt-cdrom add
系統(tǒng)升級
*
sudo apt-get update
sudo apt-get dist-upgrade
清除所以刪除包的殘余配置文件
*
dpkg -l |grep ^rc|awk '{print $2}' |tr ["\n"] [" "]|sudo xargs dpkg -P -
編譯時缺少h文件的自動處理
*
sudo auto-apt run ./configure
查看安裝軟件時下載包的臨時存放目錄
*
ls /var/cache/apt/archives
系統(tǒng)
查看內(nèi)核
*
uname -a
查看Ubuntu版本
*
cat /etc/issue
查看內(nèi)核加載的模塊
*
lsmod
查看PCI設(shè)備
*
lspci
查看USB設(shè)備
*
lsusb
查看網(wǎng)卡狀態(tài)
*
sudo ethtool eth0
查看CPU信息
*
cat /proc/cpuinfo
顯示當前硬件信息
*
lshw
硬盤
查看硬盤的分區(qū)
*
sudo fdisk -l
查看硬盤剩余空間
*
df -h
df -H
查看目錄占用空間
*
du -hs 目錄名
優(yōu)盤沒法卸載
*
sync
fuser -km /media/usbdisk
內(nèi)存
查看當前的內(nèi)存使用情況
*
free -l
進程
查看當前有哪些進程
*
ps -A
中止一個進程
*
kill 進程號(就是ps -A中的第一列的數(shù)字)
或者 killall 進程名
強制中止一個進程(在上面進程中止不成功的時候使用)
*
kill -9 進程號
或者 killall -9 進程名
查看當前進程的實時狀況
*
top
查看進程打開的文件
*
lsof -p
ADSL
配置 ADSL
*
sudo pppoeconf
ADSL手工撥號
*
sudo pon dsl-provider
激活 ADSL
*
sudo /etc/ppp/pppoe_on_boot
斷開 ADSL
*
sudo poff
查看撥號日志
*
sudo plog
網(wǎng)絡(luò)
根據(jù)IP查網(wǎng)卡地址
*
arping IP地址
查看當前IP地址
*
sudo ifconfig eth0 |awk '/inet addr/ {split($2,x,":");print x[2]}'
查看當前外網(wǎng)的IP地址
*
w3m -no-cookie -dump www.ip138.com|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
w3m -no-cookie -dump ip.loveroot.com|grep -o '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}'
查看當前監(jiān)聽80端口的程序
*
lsof -i :80
查看當前網(wǎng)卡的物理地址
*
sudo arp -a | awk '{print $4}'
sudo ifconfig eth0 | head -1 | awk '{print $5}'
立即讓網(wǎng)絡(luò)支持nat
*
sudo echo 1 > /proc/sys/net/ipv4/ip_forward
sudo iptables -t nat -I POSTROUTING -j MASQUERADE
查看路由信息
*
netstat -rn
sudo route -n
手工增加刪除一條路由
*
sudo route add -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
sudo route del -net 192.168.0.0 netmask 255.255.255.0 gw 172.16.0.1
修改網(wǎng)卡MAC地址的方法
*
sudo ifconfig eth0 down #關(guān)閉網(wǎng)卡
sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE #然后改地址
sudo ifconfig eth0 up #然后啟動網(wǎng)卡
統(tǒng)計當前IP連接的個數(shù)
*
netstat -na|grep ESTABLISHED|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
netstat -na|grep SYN|awk '{print $5}'|awk -F: '{print $1}'|sort|uniq -c|sort -r -n
統(tǒng)計當前20000個IP包中大于100個IP包的IP地址
*
tcpdump -tnn -c 20000 -i eth0 | awk -F "." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -nr | awk ' $1 > 100 '
屏蔽IPV6
*
echo "blacklist ipv6" | sudo tee /etc/modprobe.d/blacklist-ipv6
服務(wù)
添加一個服務(wù)
*
sudo update-rc.d 服務(wù)名 defaults 99
刪除一個服務(wù)
*
sudo update-rc.d 服務(wù)名 remove
臨時重啟一個服務(wù)
*
/etc/init.d/服務(wù)名 restart
臨時關(guān)閉一個服務(wù)
*
/etc/init.d/服務(wù)名 stop
臨時啟動一個服務(wù)
*
/etc/init.d/服務(wù)名 start
設(shè)置
配置默認Java使用哪個
*
sudo update-alternatives --config java
修改用戶資料
*
sudo chfn userid
給apt設(shè)置代理
*
export http_proxy=http://xx.xx.xx.xx:xxx
修改系統(tǒng)登錄信息
*
sudo vim /etc/motd
中文
轉(zhuǎn)換文件名由GBK為UTF8
*
sudo apt-get install convmv
convmv -r -f cp936 -t utf8 --notest --nosmart *
轉(zhuǎn)換文件內(nèi)容由GBK為UTF8
*
iconv -f gbk -t utf8 $i > newfile
轉(zhuǎn)換 mp3 標簽編碼
*
sudo apt-get install python-mutagen
find . -iname “*.mp3” -execdir mid3iconv -e GBK {} \;
文件
快速查找某個文件
*
whereis filename
*
find 目錄 -name 文件名
查看文件類型
*
file filename
顯示xxx文件倒數(shù)6行的內(nèi)容
*
tail -n 6 xxx
查找包含xxx字符串的文件
*
grep -l -r xxx .
查找關(guān)于xxx的命令
*
apropos xxx
man -k xxx
通過ssh傳輸文件
*
scp -rp /path/filename username@remoteIP:/path #將本地文件拷貝到服務(wù)器上
scp -rp username@remoteIP:/path/filename /path #將遠程文件從服務(wù)器下載到本地
查看某個文件被哪些應(yīng)用程序讀寫
*
lsof 文件名
把所有文件的后輟由rm改為rmvb
*
rename 's/.rm$/.rmvb/' *
把所有文件名中的大寫改為小寫
*
rename 'tr/A-Z/a-z/' *
刪除特殊文件名的文件,如文件名:--help.txt
*
rm -- --help.txt 或者 rm ./--help.txt
查看當前目錄的子目錄
*
ls -d */. 或 echo */.
壓縮
解壓縮 xxx.tar.gz
*
tar -zxvf xxx.tar.gz
解壓縮 xxx.tar.bz2
*
tar -jxvf xxx.tar.bz2
壓縮aaa bbb目錄為xxx.tar.gz
*
tar -zcvf xxx.tar.gz aaa bbb
壓縮aaa bbb目錄為xxx.tar.bz2
*
tar -jcvf xxx.tar.bz2 aaa bbb
Nautilus
顯示隱藏文件
*
Ctrl+h
顯示地址欄
*
Ctrl+l
特殊 URI 地址
*
* computer:/// - 全部掛載的設(shè)備和網(wǎng)絡(luò)
* network:/// - 瀏覽可用的網(wǎng)絡(luò)
* burn:/// - 一個刻錄 CDs/DVDs 的數(shù)據(jù)虛擬目錄
* smb:/// - 可用的 windows/samba 網(wǎng)絡(luò)資源
* x-nautilus-desktop:/// - 桌面項目和圖標
* file:/// - 本地文件
* trash:/// - 本地回收站目錄
* ftp:// - FTP 文件夾
* ssh:// - SSH 文件夾
查看已安裝字體
*
在nautilus的地址欄里輸入”fonts:///“,就可以查看本機所有的fonts
程序
詳細顯示程序的運行信息
*
strace -f -F -o outfile <cmd>
日期和時間
設(shè)置日期
*
#date -s mm/dd/yy
設(shè)置時間
*
#date -s HH:MM
將時間寫入CMOS
*
hwclock --systohc
讀取CMOS時間
*
hwclock --hctosys
控制臺
不同控制臺間切換
*
Ctrl + ALT + ←
Ctrl + ALT + →
指定控制臺切換
*
Ctrl + ALT + Fn(n:1~7)
控制臺下滾屏
*
SHIFT + pageUp/pageDown
控制臺抓圖
*
setterm -dump n(n:1~7)
數(shù)據(jù)庫
mysql的數(shù)據(jù)庫存放在地方
*
/var/lib/mysql
從mysql中導出和導入數(shù)據(jù)
*
mysqldump 數(shù)據(jù)庫名 > 文件名 #導出數(shù)據(jù)庫
mysqladmin create 數(shù)據(jù)庫名 #建立數(shù)據(jù)庫
mysql 數(shù)據(jù)庫名 < 文件名 #導入數(shù)據(jù)庫
忘了mysql的root口令怎么辦
*
sudo /etc/init.d/mysql stop
sudo mysqld_safe --skip-grant-tables &
sudo mysqladmin -u user password 'newpassword''
sudo mysqladmin flush-privileges
修改mysql的root口令
*
sudo mysqladmin -uroot -p password '你的新密碼'
其它
下載網(wǎng)站文檔
*
wget -r -p -np -k http://www.21cn.com
· -r:在本機建立服務(wù)器端目錄結(jié)構(gòu);
· -p: 下載顯示HTML文件的所有圖片;
· -np:只下載目標站點指定目錄及其子目錄的內(nèi)容;
· -k: 轉(zhuǎn)換非相對鏈接為相對鏈接。
刪除Totem電影播放機的播放歷史記錄
*
rm ~/.recently-used
在桌面上顯示計算機,HOME,回收站等圖標
*
gconf-editor
找到apps-->nautilus-->desktop
勾選相應(yīng)選項
Gaim聲音設(shè)置
*
首選項->聲音->聲音方式,方式選“命令”,下面的聲音命令填上“aplay %s”
清除apt-get cache
*
sudo apt-get clean
posted @
2006-11-02 14:09 小小程序程序員混口飯吃 閱讀(615) |
評論 (0) |
編輯 收藏
網(wǎng)上轉(zhuǎn)載的,試過,確實能用,這是手動增加SWAP的一個很好的方式,建議在安裝LINUX的時候開始就要建一個SWAP,最好是內(nèi)存的2倍。
linux中增加swap分區(qū)文件的步驟方法:
1、檢查當前的分區(qū)情況(使用free -m或cat /proc/swaps ):
?[root@db2 root]# free -m
????????????? total?????? used?????? free???? shared??? buffers???? cached
?Mem:????????? 1006???????? 84??????? 922????????? 0???????? 11???????? 38
?-/+ buffers/cache:???????? 35??????? 971
?Swap:??????????? 0????????? 0????????? 0
?[root@db2 root]#
2、增加交換分區(qū)文件及大小:
檢查沒有swap,下面就需要增加:
判定新交換文件的大小,將大小乘以1024來判定塊的大小。例如,大小為64MB的交換文件的塊大小為65536,在 shell 提示下以根用戶身份鍵入以下命令,其中的 count 等于想要的塊大小。
?[root@db2 root]# dd if=/dev/zero of=/home/swap bs=1024 count=1024000
?1024000+0 records in
?1024000+0 records out
?[root@db2 root]#
使用以下命令來設(shè)置交換文件:
?[root@db2 root]# mkswap /home/swap
?Setting up swapspace version 1, size = 1023996 KiB
?[root@db2 root]#
3、啟用交換分區(qū)文件:
要立即啟用交換文件而不是在引導時自動啟用,使用以下命令:
?[root@db2 root]# swapon /home/swap
檢查增加后的交換情況:?
?[root@db2 root]# free -m
????????????? total?????? used?????? free???? shared??? buffers???? cached
?Mem:????????? 1006??????? 994???????? 12????????? 0????????? 4??????? 929
?-/+ buffers/cache:???????? 60??????? 946
?Swap:????????? 999????????? 0??????? 999
?[root@db2 root]#
?
要在引導時啟用,編輯 /etc/fstab 文件來包含以下行(/home/swap?????????????? swap??????????????????? swap??? defaults??????? 0 0 ):
?[root@db2 root]# vi /etc/fstab
?LABEL=/???????????????? /?????????????????????? ext3??? defaults??????? 1 1????? ?
?LABEL=/boot???????????? /boot?????????????????? ext2??? defaults??????? 1 2????? /home/swap?????????????? swap??????????????????? swap??? defaults??????? 0 0
??????? none??????????????????? /dev/pts??????????????? devpts? gid=5,mode=620? 0 0?????
??????? none??????????????????? /proc?????????????????? proc??? defaults??????? 0 0?????
??????? none??????????????????? /dev/shm??????????????? tmpfs?? defaults??????? 0 0?????
??????? LABEL=/usr????????????? /usr??????????????????? ext3??? defaults??????? 1 2?????
??????? /dev/sda5?????????????? swap??????????????????? swap??? defaults??????? 0 0?????
??????? /dev/cdrom????????????? /mnt/cdrom????????????? iso9660 noauto,owner,kudzu,ro 0 0
??????? /dev/fd0??????????????? /mnt/floppy???????????? auto??? noauto,owner,kudzu 0 0??
??????? /home/swap?????????????? swap??????????????????? swap??? defaults??????? 0 0??
系統(tǒng)下次引導時,它就會啟用新建的交換文件?????????
再次檢查添加后的情況:
?[root@db2 oracledb]# free -m????????????????????????????????????????????
???????????????????? total?????? used?????? free???? shared??? buffers???? cached
??????? Mem:????????? 1006??????? 979???????? 27????????? 0????????? 6??????? 917
??????? -/+ buffers/cache:???????? 54??????? 952????????????????????????????????
??????? Swap:????????? 999????????? 0??????? 999????????????????????????????????
??????? [root@db2 oracledb]#?????
posted @
2006-11-02 13:49 小小程序程序員混口飯吃 閱讀(4407) |
評論 (0) |
編輯 收藏
#!/bin/bash
#Copyright (c) 2005 ubuntu.org.cn
#License: GPLv2
#需要安裝編碼轉(zhuǎn)換器
#sudo apt-get install recode
#mp3的地址
SOURCE="http://list.mp3.baidu.com/list/newhits.html"
#保存mp3的目錄
SAVE="${HOME}/mp3100"
#下載重試次數(shù)
TRYCOUNT=2
#臨時目錄
TMP="/tmp/${USER}"
#創(chuàng)建下載目錄
if [ ! -d "${SAVE}" ];then
? ? mkdir -p "${SAVE}"
fi
#創(chuàng)建臨時下載目錄
if [ ! -d "${TMP}" ];then
? ? mkdir -p "${TMP}"
fi
echo "開始下載百度最新100首歌曲列表"
wget -O ${TMP}/mp3.html ${SOURCE}
echo "下載百度最新100首歌曲列表完成。"
#轉(zhuǎn)換網(wǎng)頁編碼
iconv -f gbk -t utf8 ${TMP}/mp3.html |\
grep "<a href=\"http://mp3.baidu.com/m" |\
#將mp3list.txt所有開頭的空格去掉
sed -e 's/ *//' |\
#將mp3list.txt所有全角空格去掉
sed -e 's/ //g' |\
#將所有的回車符去掉
sed ':a;N;$!ba;s/\n/,/g' |\
#在td>,后面加上回車符,一行表示一個mp3文件。
sed -e 's/,<td/\n<td/g' |\
sed -e 's/td>,/td>\n/g' |\
#刪除<td width="30%"> <td> </td> <td...FFFFFF"> <p> </p>
sed -e 's/<td width="30%">//g' |\
sed -e 's/<td>//g' |\
sed -e 's/<\/td>//g' |\
sed -e 's/<p>//g' |\
sed -e 's/<\/p>//g' |\
sed -e 's/<td.*FFFFFF">//g' |\
#刪除</a>..."_blank">
sed -e 's/<\/a>.*_blank">/-/g' |\
sed -e 's/<\/a>.*_blank>/-/g' |\
#刪除&
sed -e 's/\&\;/\//g' >${TMP}/mp3list.txt
#得到:<a target="_blank">Baby ,Baby tell me-王心凌</a>
#取得行號,循環(huán)
line=$(awk 'END{print NR}' ${TMP}/mp3list.txt)
i=1;
while((i<=line));do
? ?downed=0;
? ?mpline=`awk 'NR=='"$i"'' ${TMP}/mp3list.txt`
? ?url=`echo $mpline | sed -e 's/<a href="http://g' | sed 's/\ target.*//g' | sed 's/"http://g' | cat`
? ?name=`echo $mpline | sed -e 's/.*_blank">//g' | sed -e 's/.*_blank>//g' |\
? ? ? ? sed -e 's/<\/a>//g' | sed -e 's/\//-/g' | sed -e 's/:/-/g'? | sed -e 's/"/'\''/g'? | cat`
?
? ?#檢查是否已經(jīng)下載過這首歌,如果下載過,放棄
? ?if [ -e "${SAVE}/${name}.mp3" ] || [ -e "${SAVE}/${name}.wma" ]; then
? ? ? echo -e "\e[1;6m\e[1;31m發(fā)現(xiàn) ${name} 下載過,忽略,繼續(xù)下一首。\e[1;6m\e[00m"
? ? ? ((i++))
? ? ? continue;
? ?fi
? ?echo "開始通過 $url 下載 $name";
? ?wget -O ${TMP}/down.html $url
? ?echo "獲取 $name 下載列表完成。";
? ?##### 找出有效的歌曲下載地址并根據(jù)下載文件的大小從大至少排序 ###############
? ?#down.txt為有效的下載地址
? ?iconv -f gbk -t utf8 -c ${TMP}/down.html | grep "<td height=\"28\" class=\"d\">" |\
? ?sed -e 's/.*<a href="http://g' | sed -e 's/" target=_blank>.*//g' |\
? ?sed '/mid/d' > ${TMP}/down.txt
? ?#size.txt為有效的下載文件大小
? ?iconv -f gbk -t utf8 -c ${TMP}/down.html | grep "M<\/td>" |\
? ?sed -e 's/<td class="t">//g' | sed -e 's/ M<\/td>//g' > ${TMP}/size.txt
? ?#down.txt與size.txt合并而在的down_size.txt文件中字段之間以" "作為分隔符
? ?paste -d ' ' ${TMP}/down.txt ${TMP}/size.txt > ${TMP}/down_size.txt
? ?#得到以下形式 (下載地址 文件大小)
? ?#http://wma2.7t7t.com/pycs/pycs/311/370247.Wma 1.2
? ?#http://snakelmq.hfxyd.com/milk/babybabytellme.mp3 3.2
? ?#http://bbsatt2.ccmove.com.cn/download/1280590/baby%20baby%20tell%20me%28PXC%D6%C6%D7%F7%29.mp3 0.3
? ?#http://vod.music165.com/music/song/new02/wxl_05.07.29/3.Wma 1.6
? ?#http://202.107.247.54/16/0406/94/3.wma 1.6
? ?#排序
? ?sort "+1nr" ${TMP}/down_size.txt > ${TMP}/down_size_sort.txt
? ?#去掉后面的尺寸
? ?sed 's/ .*$//' ${TMP}/down_size_sort.txt > ${TMP}/temp.txt
? ?
? ?##### 析取出mp3 的下載地址或 wma的下載地址 ##############
? ?grep -i "mp3$" ${TMP}/temp.txt > ${TMP}/down_mp3.txt
? ?grep -i "wma$" ${TMP}/temp.txt > ${TMP}/down_wma.txt
? ?downline_mp3=$(awk 'END{print NR}' ${TMP}/down_mp3.txt);
? ?downline_wma=$(awk 'END{print NR}' ${TMP}/down_wma.txt);
? ?echo -e "\e[1;6m\e[1;31m發(fā)現(xiàn) ${downline_mp3} 個名為 ${name}.mp3 下載地址。\e[1;6m\e[00m"
? ?echo -e "\e[1;6m\e[1;31m發(fā)現(xiàn) ${downline_wma} 個名為 ${name}.wma 下載地址。\e[1;6m\e[00m"
? ?# 初始化計數(shù)器
? ?j=1;
? ?# 優(yōu)先下載mp3格式的歌曲
? ?while((j<=downline_mp3)); do
? ? ? mp3=`awk 'NR=='"$j"'' ${TMP}/down_mp3.txt`
? ? ? echo -e "\e[1;6m\e[1;31m正在下載${name}.mp3\e[1;6m\e[00m"
? ? ? wget -c --tries=$TRYCOUNT $mp3 -O "${TMP}/${name}.mp3"
? ? ? if [ "$?" = 0 ]; then
? ? ? ? ?if [ `file -ib "${TMP}/${name}.mp3" | sed -e 's/\/.*//g'` = "audio" ]; then
? ? ? ? ? ? mv "${TMP}/${name}.mp3" "${SAVE}/${name}.mp3"
? ? ? ? ? ? downed=1;
? ? ? ? ? ? break;
? ? ? ? ?else
? ? ? ? ? ? echo -e "\e[1;6m\e[1;31m下載 ${name}.mp3 文件無效,正在刪除重新下載\e[1;6m\e[00m"
? ? ? ? ? ? rm "${TMP}/${name}.mp3";
? ? ? ? ? ? ((j++))? ?
? ? ? ? ?fi
? ? ? else
? ? ? ? ?echo -e "\e[1;6m\e[1;31m下載 ${name}.mp3 文件無效,正在刪除重新下載\e[1;6m\e[00m"
? ? ? ? ?rm "${TMP}/${name}.mp3";
? ? ? ? ?((j++))
? ? ? fi
? ?done
? ?#如果下載成功繼續(xù)下其余的歌
? ?#continue用于跳過循環(huán)體中的后續(xù)命令
? ?if [ "$downed" = 1 ] ; then
? ? ? ((i++))
? ? ? echo -e "\e[1;7m\e[1;41m下載 $name 成功\e[1;7m\e[00m"
? ? ? continue;
? ?fi
? ?# 如果沒有mp3格式的則下載wma格式的歌
? ?j=1;
? ?while((j<=downline_wma)); do
? ? ? wma=`awk 'NR=='"$j"'' ${TMP}/down_wma.txt`
? ? ? echo -e "\e[1;6m\e[1;31m正在下載${name}.wma\e[1;6m\e[00m"
? ? ? wget -c --tries=$TRYCOUNT $wma -O "${TMP}/${name}.wma"
? ? ? if [ "$?" = 0 ]; then
? ? ? ? ?if [ `file -ib "${TMP}/${name}.wma" | sed -e 's/\/.*//g'` = "application" ]; then
? ? ? ? ? ? mv "${TMP}/${name}.wma" "${SAVE}/${name}.wma"
? ? ? ? ? ? downed=1;
? ? ? ? ? ? break;
? ? ? ? ?else
? ? ? ? ? ? echo -e "\e[1;6m\e[1;31m下載 ${name}.wma 文件無效,正在刪除重新下載\e[1;6m\e[00m"
? ? ? ? ? ? rm "${TMP}/${name}.wma";
? ? ? ? ? ? ((j++))? ?
? ? ? ? ?fi
? ? ? else
? ? ? ? ? echo -e "\e[1;6m\e[1;31m下載 ${name}.wma 文件無效,正在刪除重新下載\e[1;6m\e[00m"
? ? ? ? ? rm "${TMP}/${name}.wma";
? ? ? ? ? ((j++))
? ? ? fi
? ?done
? ?((i++))
? ?if [ "$downed" = 1 ] ; then
? ? ? echo -e "\e[1;7m\e[1;41m下載 $name 成功\e[1;7m\e[00m"
? ?else
? ? ? echo -e "\e[1;7m\e[1;41m下載 $name 失敗\e[1;7m\e[00m"
? ?fi
done
rm -fr ${TMP}
exit 0
原理是用wget下載下頁面來,然后用SED來提取頁面,提取到連接后下載
posted @
2006-10-27 15:41 小小程序程序員混口飯吃 閱讀(1167) |
評論 (1) |
編輯 收藏
(1)
:
ubuntu 6.06
(2):
由于
ubuntu
是
debian
的內(nèi)核,所以要在
oracle
官方上下載
oracle-xe-universal_10.2.0.1-1.0_i386.deb
?
開始安裝(先看下面要注意的問題,第四項)
?
1:dpkg –I oracle-xe-universal_10.2.0.1-1.0_i386.deb
?
出現(xiàn)一下問題
?
正在解壓縮將用于更替的包文件 oracle-xe-universal ...
dpkg
:依賴關(guān)系問題使得 oracle-xe-universal 的配置工作不能繼續(xù):
?oracle-xe-universal
依賴于 libaio (>= 0.3.96) | libaio1 (>= 0.3.96);然而:
?
軟件包 libaio還沒有被安裝。
?
軟件包 libaio1還沒有被安裝。
dpkg
:處理 oracle-xe-universal (--install)時出錯:
?
依賴關(guān)系問題 - 仍未被配置
在處理時有錯誤發(fā)生:
?oracle-xe-universal
?
原來是libaio缺少,沒有安裝,我就下載下來,是個rpm,然后安裝這個rpm,
?
sudo apt-get libaio-0.3.96-7.i386.rpm
?
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關(guān)系樹... 完成
E:
無法找到軟件包 libaio-0.3.96-7.i386.rpm
?
真是郁悶反復試驗都不行
?
?
放棄這樣安裝,到網(wǎng)上查找其他方案安裝libaio
?
網(wǎng)上說采用apt-get -f install安裝方式可能自動獲取包
?
?
apt-get -f? install
果然可以日志如下
root@ubuntu:/home/oem# apt-get -f? install
正在讀取軟件包列表... 完成
正在分析軟件包的依賴關(guān)系樹... 完成
正在更正依賴關(guān)系... 完成
將會安裝下列額外的軟件包:
? libaio1
下列【新】軟件包將被安裝:
? libaio1
共升級了 0 個軟件包,新安裝了 1 個軟件包,要卸載 0 個軟件包,有 7 個軟件未被升級。
有 1 個軟件包沒有被完全安裝或卸載。
需要下載 5182B 的軟件包。
解壓縮后會消耗掉 61.4kB 的額外空間。
您希望繼續(xù)執(zhí)行嗎?[Y/n]y
獲取:1 http://mirror.lupaworld.com dapper/main libaio1 0.3.104-1ubuntu6 [5182B]下載 5182B,耗時 2s (2346B/s)
選中了曾被取消選擇的軟件包 libaio1。
(
正在讀取數(shù)據(jù)庫 ... 系統(tǒng)當前總共安裝有 76207 個文件和目錄。)
正在解壓縮 libaio1 (從 .../libaio1_0.3.104-1ubuntu6_i386.deb) ...
正在設(shè)置 libaio1 (0.3.104-1ubuntu6) ...
?
正在設(shè)置 oracle-xe-universal (10.2.0.1-1.0) ...
Executing Post-install steps...
You must run '/etc/init.d/oracle-xe configure' as the root user to configure the database.
?
?
2
:
?
root@ubuntu:/home/oem#? /etc/init.d/oracle-xe configure
?
?
Oracle Database 10g Express Edition Configuration
-------------------------------------------------
This will configure on-boot properties of Oracle Database 10g Express
Edition.? The following questions will determine whether the database should
be starting upon system boot, the ports it will use, and the passwords that
will be used for database accounts.? Press <Enter> to accept the defaults.
Ctrl-C will abort.
?
Specify the HTTP port that will be used for Oracle Application Express [8080]:8080
?
Specify a port that will be used for the database listener [1521]:1521
?
Specify a password to be used for database accounts.? Note that the same
password will be used for SYS and SYSTEM.? Oracle recommends the use of
different passwords for each database account.? This can be done after
initial configuration:
Confirm the password:
?
Do you want Oracle Database 10g Express Edition to be started on boot (y/n) [y]:y
?
Starting Oracle Net Listener...Done
Configuring Database...
?
Starting Oracle Database 10g Express Edition Instance...Done
Installation Completed Successfully.
To access the Database Home Page go to "http://127.0.0.1:8080/apex"
?
?
?
這就安裝完了?真是不可思以,比9I快很多啊,總共花了10幾分鐘,中間的配置少了好多啊。
?
3
:訪問數(shù)據(jù)
http://127.0.0.1:8080/apex
根據(jù)設(shè)置的密碼沒有問題,能夠正確訪問
?
?
4:
需要注意的問題:
在剛開始安裝的時候可能出現(xiàn)一下問題
?
root@ubuntu:/home/oem# dpkg -i oracle-xe-universal_10.2.0.1-1.0_i386.deb
選中了曾被取消選擇的軟件包 oracle-xe-universal。
(
正在讀取數(shù)據(jù)庫 ... 系統(tǒng)當前總共安裝有 73613 個文件和目錄。)
正在解壓縮 oracle-xe-universal (從 oracle-xe-universal_10.2.0.1-1.0_i386.deb) ...
This system does not meet the minimum requirements for swap space.? Based on
the amount of physical memory available on the system, Oracle Database 10g
Express Edition requires 750 MB of swap space. This system has 711 MB
of swap space.? Configure more swap space on the system and retry the installation.
dpkg
:處理 oracle-xe-universal_10.2.0.1-1.0_i386.deb (--install)時出錯:
?
子進程·pre-installation script·返回了錯誤號·1
在處理時有錯誤發(fā)生:
?oracle-xe-universal_10.2.0.1-1.0_i386.deb
?
這個問題是由于SWAP分區(qū)不夠的原因造成的,那就增加一個SWAP分區(qū)
?
1
:采用文件的方式增加swap分區(qū)
Dd if=/dev/zero of=/tmp/tmp.swap bs=1M count =100(
建立一個100M的文件)
mkswap /tmp/tmp.swap(
標識swap文件)
swapon /tmp/tmp.swap(
激活swap)
修改/etc/fstab文件增加一行
?
/tmp/tmp.swap swap swap defaluts 0 0
Swapon –s
查看當前的swap分區(qū)情況
發(fā)現(xiàn)已經(jīng)有2個SWAP分區(qū)了,空間這下子夠了,可以繼續(xù)安裝了
?
2
:也可已采用直接增加SWAP方式(我沒有采用這樣的辦法)
?
?
?
?
?
?
posted @
2006-10-23 11:13 小小程序程序員混口飯吃 閱讀(2195) |
評論 (0) |
編輯 收藏