摘要: 做技术支持
2
个月了,也就是说有
2
个月没有碰代码了,手都很生了,最近遇到项目大的并发问题,数据也有些不太正确,就想到了项目中,由于模块过多,异步的情况也有发生,所以想到事务与锁的相关知识,先写一点事务相关的理解,然后写一点锁相关的东西,以便加深自己的理解。
...
阅读全文
posted @
2006-11-16 13:48 小小程序程序员混口饭吃 阅读(2763) |
评论 (3) |
编辑 收藏
最近韩国房价失控上涨,有关职能部门3高官引咎辞职.
房价疯涨在中国似乎是司空见惯,习以为常,老百姓也几乎麻木,买不起房子的年轻人只能坐以待毙,泱泱大国除了几个学者能够抨击一下之外,好像没有人说要出来承担责任,政府跟房地产商一个论调,
社会需求导致房价不可能跌。房产商可以控制一些主流的媒体,就跟一些民办学校控制当地的报纸一样,你们敢揭露我,我就不去你们那里打广告,一年让你们少赚个几百万,这些主流媒体当然不会放弃
这么大的摇钱树,也就厚着脸去低三下四了。房子还是疯了一样的涨,恐怕永远没有父母官出来辞职的
除非被利益集团排挤下来。地价高,商业贿赂,行业不正规,职能部门的监管,以及法制整体不健全导致房价疯长,归根结底:房价高总是由上层的利益集团控制的,老百姓只能叹气的份。
联想到,最近台湾政坛,至少那也是民主,香港一个歌星的老爹收了几百万港元就是特大受贿罪犯,这在中国简直是小巫见大巫,种种情况表明大陆还是有差距的,不过最新全球廉政指数,中国上升了10多位,我们也相信是新一代政府正在加强这方面的建设。我爱我的国家,我有理由相信,新一代政府会越来越好,大家拭目以待。
加油中国!
posted @
2006-11-16 08:51 小小程序程序员混口饭吃 阅读(691) |
评论 (2) |
编辑 收藏
摘要: 文章转自网上好像是玉米田的,忘记了锁(
locking
)
业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算
处理中,我们希望针对某个
cut-off
时间点的数据进行处理,而不希望在结算进行过程中
...
阅读全文
posted @
2006-11-15 08:35 小小程序程序员混口饭吃 阅读(51648) |
评论 (23) |
编辑 收藏
一个傻子买了3个大饼,吃了前两个都没吃饱,到第三个才吃饱。于是叹道:早知道,我就只买第三个了,前两个饼没用.我们又何尝不是这种人?我们也经常喟叹自己不能成功。
其实没有人能够随便成功,一口吃饱也是不可能的,所以平时必须打好基础,成功总是属于有准备的人,平时多积累,说不定哪天就会成功!
posted @
2006-11-10 13:26 小小程序程序员混口饭吃 阅读(376) |
评论 (0) |
编辑 收藏
超市自造三千元笔记本10天卖出5台,这是刚刚在DONEWS上看到的消息,据物美集团副总裁吴坚中介绍,这款自有品牌笔记本电脑定名为“优宜”,意为“质优价廉”,由物美和合作厂家威盛电子(中国)有限公司联合推出。据其介绍,这款笔记本电脑最低售价才3200元一台,配置稍好的价格才3649元。
原来生产厂家开始物色新的渠道,传统的大商场 ,家电卖场,已经没有太多的利润点,就是说渠道把厂家的利润给吃个差不多了,厂家必须寻找新的渠道,既给国美等大卖场施加了压力,又给自己寻找了利润空间,消费者也得到了实惠,看样子这款比较本只是厂家小试牛刀,如果这种模式能够成功,毕竟带来卖场新一轮冲击,在中国得渠道者得天下,厂商卖本子在传统卖场赚得试卖白菜得钱,利润都被渠道压缩了。
我们拭目以待。
posted @
2006-11-08 09:07 小小程序程序员混口饭吃 阅读(624) |
评论 (3) |
编辑 收藏
find 命令在linux中是很常用到的一个查找命令,它的功能非常地强大。可以结合正则匹配来搜索系统中的指定的内容,以下我就记录一下这个find常用到的一些用法
首先我们来看年find的总体用法
find path option [-print -exec -ok]
其中path是指定在哪个路径中查找内容。如/var下查找内容,option是find中的一些属性值,常用的有-name,-type,-mtime,-ctime,-atime,-user,-group,-nouser,-nogroup,-perm等,[-print -exec -ok]是可选属性值,-print是指把查找到的内容输出到指定的地方,-exec与-ok都是执行另处的command命令,但两都也有一点不同,-exec在执行指定的command时不会给用户显示提示或操作信息,但是-ok就会在有提示询问操作时给用户显示信息,直到用户做了选择时才继续执行。
常用的option值说明
-name 指定查找的内容是文件。
-type 指定查找的文件的类型,它有d,l,b,p,f,c等文件类型,d是查找目录,l是查找链接档,b是查找块文件,p是查找管道文件,f是普通文件,c是字符设备文件
-mtime,-ctime,atime都是指按时间查找,-mtime是文件的修改时间,-ctime是文件的创建时间,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天以内的文件
(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用来执行ls命令,其中的-exec或者-ok的用法都要在它所执行的command后面接" {} \;"
(6)我想查找出在/etc中以passw开头的所有文件中有没有ygl这些内容的
find /etc -name "passw*" -exec grep -in "ygl" {} \;
posted @
2006-11-06 09:34 小小程序程序员混口饭吃 阅读(651) |
评论 (0) |
编辑 收藏
安装
查看软件xxx安装内容
*
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
系统升级
*
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
系统
查看内核
*
uname -a
查看Ubuntu版本
*
cat /etc/issue
查看内核加载的模块
*
lsmod
查看PCI设备
*
lspci
查看USB设备
*
lsusb
查看网卡状态
*
sudo ethtool eth0
查看CPU信息
*
cat /proc/cpuinfo
显示当前硬件信息
*
lshw
硬盘
查看硬盘的分区
*
sudo fdisk -l
查看硬盘剩余空间
*
df -h
df -H
查看目录占用空间
*
du -hs 目录名
优盘没法卸载
*
sync
fuser -km /media/usbdisk
内存
查看当前的内存使用情况
*
free -l
进程
查看当前有哪些进程
*
ps -A
中止一个进程
*
kill 进程号(就是ps -A中的第一列的数字)
或者 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
网络
根据IP查网卡地址
*
arping IP地址
查看当前IP地址
*
sudo ifconfig eth0 |awk '/inet addr/ {split($2,x,":");print x[2]}'
查看当前外网的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\}'
查看当前监听80端口的程序
*
lsof -i :80
查看当前网卡的物理地址
*
sudo arp -a | awk '{print $4}'
sudo ifconfig eth0 | head -1 | awk '{print $5}'
立即让网络支持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
修改网卡MAC地址的方法
*
sudo ifconfig eth0 down #关闭网卡
sudo ifconfig eth0 hw ether 00:AA:BB:CC:DD:EE #然后改地址
sudo ifconfig eth0 up #然后启动网卡
统计当前IP连接的个数
*
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
统计当前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
服务
添加一个服务
*
sudo update-rc.d 服务名 defaults 99
删除一个服务
*
sudo update-rc.d 服务名 remove
临时重启一个服务
*
/etc/init.d/服务名 restart
临时关闭一个服务
*
/etc/init.d/服务名 stop
临时启动一个服务
*
/etc/init.d/服务名 start
设置
配置默认Java使用哪个
*
sudo update-alternatives --config java
修改用户资料
*
sudo chfn userid
给apt设置代理
*
export http_proxy=http://xx.xx.xx.xx:xxx
修改系统登录信息
*
sudo vim /etc/motd
中文
转换文件名由GBK为UTF8
*
sudo apt-get install convmv
convmv -r -f cp936 -t utf8 --notest --nosmart *
转换文件内容由GBK为UTF8
*
iconv -f gbk -t utf8 $i > newfile
转换 mp3 标签编码
*
sudo apt-get install python-mutagen
find . -iname “*.mp3” -execdir mid3iconv -e GBK {} \;
文件
快速查找某个文件
*
whereis filename
*
find 目录 -name 文件名
查看文件类型
*
file filename
显示xxx文件倒数6行的内容
*
tail -n 6 xxx
查找包含xxx字符串的文件
*
grep -l -r xxx .
查找关于xxx的命令
*
apropos xxx
man -k xxx
通过ssh传输文件
*
scp -rp /path/filename username@remoteIP:/path #将本地文件拷贝到服务器上
scp -rp username@remoteIP:/path/filename /path #将远程文件从服务器下载到本地
查看某个文件被哪些应用程序读写
*
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:/// - 全部挂载的设备和网络
* network:/// - 浏览可用的网络
* burn:/// - 一个刻录 CDs/DVDs 的数据虚拟目录
* smb:/// - 可用的 windows/samba 网络资源
* x-nautilus-desktop:/// - 桌面项目和图标
* file:/// - 本地文件
* trash:/// - 本地回收站目录
* ftp:// - FTP 文件夹
* ssh:// - SSH 文件夹
查看已安装字体
*
在nautilus的地址栏里输入”fonts:///“,就可以查看本机所有的fonts
程序
详细显示程序的运行信息
*
strace -f -F -o outfile <cmd>
日期和时间
设置日期
*
#date -s mm/dd/yy
设置时间
*
#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)
数据库
mysql的数据库存放在地方
*
/var/lib/mysql
从mysql中导出和导入数据
*
mysqldump 数据库名 > 文件名 #导出数据库
mysqladmin create 数据库名 #建立数据库
mysql 数据库名 < 文件名 #导入数据库
忘了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 '你的新密码'
其它
下载网站文档
*
wget -r -p -np -k http://www.21cn.com
· -r:在本机建立服务器端目录结构;
· -p: 下载显示HTML文件的所有图片;
· -np:只下载目标站点指定目录及其子目录的内容;
· -k: 转换非相对链接为相对链接。
删除Totem电影播放机的播放历史记录
*
rm ~/.recently-used
在桌面上显示计算机,HOME,回收站等图标
*
gconf-editor
找到apps-->nautilus-->desktop
勾选相应选项
Gaim声音设置
*
首选项->声音->声音方式,方式选“命令”,下面的声音命令填上“aplay %s”
清除apt-get cache
*
sudo apt-get clean
posted @
2006-11-02 14:09 小小程序程序员混口饭吃 阅读(602) |
评论 (0) |
编辑 收藏
网上转载的,试过,确实能用,这是手动增加SWAP的一个很好的方式,建议在安装LINUX的时候开始就要建一个SWAP,最好是内存的2倍。
linux中增加swap分区文件的步骤方法:
1、检查当前的分区情况(使用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、增加交换分区文件及大小:
检查没有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]#
使用以下命令来设置交换文件:
[root@db2 root]# mkswap /home/swap
Setting up swapspace version 1, size = 1023996 KiB
[root@db2 root]#
3、启用交换分区文件:
要立即启用交换文件而不是在引导时自动启用,使用以下命令:
[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
系统下次引导时,它就会启用新建的交换文件
再次检查添加后的情况:
[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 小小程序程序员混口饭吃 阅读(4387) |
评论 (0) |
编辑 收藏
#!/bin/bash
#Copyright (c) 2005 ubuntu.org.cn
#License: GPLv2
#需要安装编码转换器
#sudo apt-get install recode
#mp3的地址
SOURCE="http://list.mp3.baidu.com/list/newhits.html"
#保存mp3的目录
SAVE="${HOME}/mp3100"
#下载重试次数
TRYCOUNT=2
#临时目录
TMP="/tmp/${USER}"
#创建下载目录
if [ ! -d "${SAVE}" ];then
mkdir -p "${SAVE}"
fi
#创建临时下载目录
if [ ! -d "${TMP}" ];then
mkdir -p "${TMP}"
fi
echo "开始下载百度最新100首歌曲列表"
wget -O ${TMP}/mp3.html ${SOURCE}
echo "下载百度最新100首歌曲列表完成。"
#转换网页编码
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 href="http://mp3.baidu.com/m?tn=baidump3&ct=134217728&lm=-1&li=2&word=Baby%20Baby%20tell%20me%20%CD%F5%D0%C4%C1%E8" target="_blank">Baby ,Baby tell me-王心凌</a>
#取得行号,循环
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="//g' | sed 's/\ target.*//g' | sed 's/"//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`
#检查是否已经下载过这首歌,如果下载过,放弃
if [ -e "${SAVE}/${name}.mp3" ] || [ -e "${SAVE}/${name}.wma" ]; then
echo -e "\e[1;6m\e[1;31m发现 ${name} 下载过,忽略,继续下一首。\e[1;6m\e[00m"
((i++))
continue;
fi
echo "开始通过 $url 下载 $name";
wget -O ${TMP}/down.html $url
echo "获取 $name 下载列表完成。";
##### 找出有效的歌曲下载地址并根据下载文件的大小从大至少排序 ###############
#down.txt为有效的下载地址
iconv -f gbk -t utf8 -c ${TMP}/down.html | grep "<td height=\"28\" class=\"d\">" |\
sed -e 's/.*<a href="//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发现 ${downline_mp3} 个名为 ${name}.mp3 下载地址。\e[1;6m\e[00m"
echo -e "\e[1;6m\e[1;31m发现 ${downline_wma} 个名为 ${name}.wma 下载地址。\e[1;6m\e[00m"
# 初始化计数器
j=1;
# 优先下载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
#如果下载成功继续下其余的歌
#continue用于跳过循环体中的后续命令
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 小小程序程序员混口饭吃 阅读(1155) |
评论 (1) |
编辑 收藏
(1)
:
ubuntu 6.06
(2):
由于
ubuntu
是
debian
的内核,所以要在
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
出现一下问题
正在解压缩将用于更替的包文件 oracle-xe-universal ...
dpkg
:依赖关系问题使得 oracle-xe-universal 的配置工作不能继续:
oracle-xe-universal
依赖于 libaio (>= 0.3.96) | libaio1 (>= 0.3.96);然而:
软件包 libaio还没有被安装。
软件包 libaio1还没有被安装。
dpkg
:处理 oracle-xe-universal (--install)时出错:
依赖关系问题 - 仍未被配置
在处理时有错误发生:
oracle-xe-universal
原来是libaio缺少,没有安装,我就下载下来,是个rpm,然后安装这个rpm,
sudo apt-get libaio-0.3.96-7.i386.rpm
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
E:
无法找到软件包 libaio-0.3.96-7.i386.rpm
真是郁闷反复试验都不行
放弃这样安装,到网上查找其他方案安装libaio
网上说采用apt-get -f install安装方式可能自动获取包
apt-get -f install
果然可以日志如下
root@ubuntu:/home/oem# apt-get -f install
正在读取软件包列表... 完成
正在分析软件包的依赖关系树... 完成
正在更正依赖关系... 完成
将会安装下列额外的软件包:
libaio1
下列【新】软件包将被安装:
libaio1
共升级了 0 个软件包,新安装了 1 个软件包,要卸载 0 个软件包,有 7 个软件未被升级。
有 1 个软件包没有被完全安装或卸载。
需要下载 5182B 的软件包。
解压缩后会消耗掉 61.4kB 的额外空间。
您希望继续执行吗?[Y/n]y
获取:1 http://mirror.lupaworld.com dapper/main libaio1 0.3.104-1ubuntu6 [5182B]下载 5182B,耗时 2s (2346B/s)
选中了曾被取消选择的软件包 libaio1。
(
正在读取数据库 ... 系统当前总共安装有 76207 个文件和目录。)
正在解压缩 libaio1 (从 .../libaio1_0.3.104-1ubuntu6_i386.deb) ...
正在设置 libaio1 (0.3.104-1ubuntu6) ...
正在设置 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
:访问数据
http://127.0.0.1:8080/apex
根据设置的密码没有问题,能够正确访问
4:
需要注意的问题:
在刚开始安装的时候可能出现一下问题
root@ubuntu:/home/oem# dpkg -i oracle-xe-universal_10.2.0.1-1.0_i386.deb
选中了曾被取消选择的软件包 oracle-xe-universal。
(
正在读取数据库 ... 系统当前总共安装有 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
在处理时有错误发生:
oracle-xe-universal_10.2.0.1-1.0_i386.deb
这个问题是由于SWAP分区不够的原因造成的,那就增加一个SWAP分区
1
:采用文件的方式增加swap分区
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分区情况
发现已经有2个SWAP分区了,空间这下子够了,可以继续安装了
2
:也可已采用直接增加SWAP方式(我没有采用这样的办法)
posted @
2006-10-23 11:13 小小程序程序员混口饭吃 阅读(2170) |
评论 (0) |
编辑 收藏