Category Archives: Linux
IN:Linux Tags: ig_syntax_hilite, sed Comments:2ig_syntax_hilite这个代码高亮的插件默认使用的是白色背景,所以小林子同学说看不清楚代码,俺就试着把ig_syntax_hilite插件所有颜色代码全部反转了一下,例如:
#ffffff黑色转换为#000000
ig_syntax_hilite使用的是geshe,在geshe目录下有很多与语言相关的php加亮文件,颜色代码就在这里生成,使用sed命令进行替换:
代码一
sed -r '/color *: *#[0-9a-f]{6};/{h;s/.*#([^;]+);.*/\1/;y/0123456789abcdef/fedcba9876543210/;G;s/(.*)\n(.*#)[^;]+(;.*)/\2\1\3/}' urfile
代码二
find ./ -iname abap.php | { while read i;do sed -rn 'h;s/.*color[ \t]*[=:][ \t]*#([a-fA-F0-9]+).*/\1/;ta;p;d;:a y/0123456789abcdefABCDEF/fedcba9876543210543210/;G;s/(.*)\n(.*color[ \t]*[=:][ \t]*#)([a-fA-F0-9]+)(.*)/\2\1\4/p' $i >/tmp/tmp__;echo fuck;\cp -f /tmp/tmp__ $i;echo fuck;rm -f /tmp/tmp__;done; }
上面的代码不是俺写的,具体可以查看CU论坛
俺什么时候也能把sed用到这种境界也就满足了:-)
上面简单的一句话脚本还是很有用的,上次俺花了一天的时间去修改主题的配色,其实如果要求不高的话用这脚本一下就搞定了:-)
update:08-12-31
还得把一个颜色表示为单词的也换一下:
sed -i ‘s/black/white/g’ *
IN:Linux Tags: grub Comments:9昨天在机子上试着装了下RHEL 5.2(在新的分区安装sda3),重新安装了GRUB(安装到了MBR),结果机子上原来的Fedora 9(在sda4分区上)不能启动了,GRUB会提示错误:
setup (hd0,3)
Checking if “/boot/grub/stage1″ exists… no
Checking if “/grub/stage1″ exists… no
最后在RHEL 5.2中我把原来Fedora 9分区下/boot/grub/中的所有文件拷到了RHEL 5.2中的/boot/grub/,结果就正常了。不太理解为什么重新安装了GRUB,就无法引导原来的Fedora 9了。
IN:Linux Tags: E680, Fedora, GPRS, Linux Comments:5电脑通过E680G/I手机实现GPRS上网
E680是一款摩托的Linux系统手机,在Windows下可以通过自带的MPT工具包实现与电脑连接的GPRS上网,在Linux下也是比较方便的,以前我也用过,只是没记下来,今天再用的时候还得看别人写的文章,还是自己记一下。
我用的是Fedora 9,一般的Linux系统都应该可以,大同小异。首先是手机端设置连接模式为调制解调器(Modem),通过数据线连接到电脑后(也可以用蓝牙,我这里没有环境),Fedora 9会识别到有新的调制解调器:
发现新硬件:
usb 4-3: new full speed USB device using ohci_hcd and address 2
usb 4-3: configuration #1 chosen from 1 choice
usb 4-3: New USB device found, idVendor=22b8, idProduct=3802
usb 4-3: New USB device strings: Mfr=1, Product=2, SerialNumber=0
usb 4-3: Product: Motorola USB Modem
usb 4-3: Manufacturer: Motorola
cdc_acm 4-3:1.0: ttyACM0: USB ACM device
usbcore: registered new interface driver cdc_acm
drivers/usb/class/cdc-acm.c: v0.25:USB Abstract Control Model driver for USB modems and ISDN adapters
它对应的设备就是/dev/ttyACM0。接下来用wvdial这个拨号工具,如果没有这个包的话请自行安装,wvdial有一个配置文件/etc/wvdial.conf,(使用root进行下面的操作)编辑这个文件,:
添加以下内容:
[Dialer Defaults]
Init1 = at+cgdcont=1,"ip","cmnet"
Phone = *99***1#
Modem = /dev/ttyACM0
Username = "cmnet"
Password = "cmnet"
Carrier Check = no
Baud = 460800
Auto DNS = on
如果已经有Dialer Defaults这一块则覆盖之。这里要注意使用的是cmnet,最好是手机包月不分cmnet和cmwap那种的,不然收费是很贵的。修改完该文件后还需要对/etc/ppp/options文件进行修改,添加一行:
:192.168.0.254
这个修改比较奇怪,E680系列的Linux手机都需要这样:-(,不然用wvdial拨号时会在/var/log/messages中产生下面的错误:
错误信息:
Oct 16 09:56:25 cocobear pppd[18141]: pppd 2.4.4 started by root, uid 0
Oct 16 09:56:25 cocobear pppd[18141]: Using interface ppp0
Oct 16 09:56:25 cocobear pppd[18141]: Connect: ppp0 < --> /dev/ttyACM0
Oct 16 09:56:36 cocobear pppd[18141]: Remote message: Welcome to Motorola A760 Software Modem!
Oct 16 09:56:36 cocobear pppd[18141]: PAP authentication succeeded
Oct 16 09:56:44 cocobear pppd[18141]: LCP terminated by peer (^@^@^@^@^@^@)
Oct 16 09:56:44 cocobear pppd[18141]: Modem hangup
Oct 16 09:56:44 cocobear pppd[18141]: Connection terminated.
Oct 16 09:56:44 cocobear pppd[18141]: Exit.
修改完这个文件后就可以开始拨号了,直接使用wvdial命令:
拨号信息:
[root@cocobear cocobear]# vim /etc/wvdial.conf
[root@cocobear cocobear]# vim /etc/ppp/options
[root@cocobear cocobear]# wvdial
--> WvDial: Internet dialer version 1.60
--> Cannot get information for serial port.
--> Initializing modem.
--> Sending: at+cgdcont=1,"ip","cmnet"
OK
--> Modem initialized.
--> Sending: ATDT*99***1#
--> Waiting for carrier.
CONNECT
--> Carrier detected. Waiting for prompt.
~[7f]}#@!}!}!} }< }!}$}%\}"}&} } } } }#}$@#}%}&j}?} } }'}"}(}"?}3~
--> PPP negotiation detected.
--> Starting pppd at Thu Oct 16 09:58:41 2008
--> Pid of pppd: 18959
--> Using interface ppp0
--> local IP address 10.182.237.127
--> remote IP address 192.168.0.254
--> primary DNS address 211.137.130.3
--> secondary DNS address 211.137.130.19
从上面的信息中可以看出我们成功的拨号上网了,不过这时候我们还需要手动把192.168.0.254添加为默认路由:
route add default gw 192.168.0.254
ping一个google:
Ping结果:
[cocobear@cocobear ~]$ ping www.g.cn
PING g.cn (203.208.33.100) 56(84) bytes of data.
64 bytes from 203.208.33.100: icmp_seq=2 ttl=242 time=709 ms
64 bytes from 203.208.33.100: icmp_seq=4 ttl=242 time=1359 ms
64 bytes from 203.208.33.100: icmp_seq=5 ttl=242 time=1159 ms
64 bytes from 203.208.33.100: icmp_seq=6 ttl=242 time=1021 ms
64 bytes from 203.208.33.100: icmp_seq=7 ttl=242 time=617 ms
^C
--- g.cn ping statistics ---
8 packets transmitted, 5 received, 37% packet loss, time 13411ms
rtt min/avg/max/mdev = 617.708/973.500/1359.063/276.410 ms, pipe 2
好大的延时,还有丢包,没办法了中国移动的GPRS就这样了,EDGE在西安只有部分地区覆盖了,而且E680手机是不支持的!
终于上来了,搬到新租的房子后还没拉网线,只能先这样了。
羡慕王聪同学的3G上网啊@_@
IN:Linux Tags: Linux, MySQL, Shell Comments:4改了info域名后网站以前里很多页面里有cocobear.cn,连一些图片也显示不出来,今天就处理了一下:
把网站里一些文件做替换,先备份一下:
grep cocobear.cn ./cocobear.info/ -R -l –binary-files=without-match|xargs -i cp –parents {} bk/
然后全部替换:
grep cocobear.cn ./cocobear.info/ -R -l –binary-files=without-match | xargs sed -i ‘s/cocobear\.cn[^@]/cocobear\.info/g’
剩下就是数据库里的内容了,主要是wp_posts表中的post_content字段,还有guid字段,还有wp_comments中的comment_author_url,wp_postmeta中的meta_value;
操作的命令是:
mysql> update wp_posts set post_content=replace(post_content,”http://www.cocobear.cn”,”http://cocobear.info”);
当然在进行数据库操作时一定要记得先备份一下:
mysqldump -h mysql.1g50.cn -u cocobear -p cocobear > 0808151.sql
使用 mysqldump -h mysql.1g50.cn -u cocobear -p cocobear < 0808151.sql恢复似乎不太好,还是进mysql里使用source ~/0808151.sql进行恢复。
IN:Linux Tags: crontab, Linux Comments:3名称 : crontab
使用权限 : 所有使用者
使用方式 :
crontab file [-u user]-用指定的文件替代目前的crontab。
crontab-[-u user]-用标准输入替代目前的crontab.
crontab-1[user]-列出用户目前的crontab.
crontab-e[user]-编辑用户目前的crontab.
crontab-d[user]-删除用户目前的crontab.
crontab-c dir- 指定crontab的目录。
crontab文件的格式:M H D m d cmd.
M: 分钟(0-59)。
H:小时(0-23)。
D:天(1-31)。
m: 月(1-12)。
d: 一星期内的天(0~6,0为星期天)。
cmd要运行的程序,程序被送入sh执行,这个shell只有USER,HOME,SHELL这三个环境变量
说明 :
crontab 是用来让使用者在固定时间或固定间隔执行程序之用,换句话说,也就是类似使用者的时程表。-u user 是指设定指定 user 的时程表,这个前提是你必须要有其权限(比如说是 root)才能够指定他人的时程表。如果不使用 -u user 的话,就是表示设定自己的时程表。
参数 :
crontab -e : 执行文字编辑器来设定时程表,内定的文字编辑器是 VI,如果你想用别的文字编辑器,则请先设定 VISUAL 环境变数来指定使用那个文字编辑器(比如说 setenv VISUAL joe)
crontab -r : 删除目前的时程表
crontab -l : 列出目前的时程表
crontab file [-u user]-用指定的文件替代目前的crontab。
时程表的格式如下 :
f1 f2 f3 f4 f5 program
其中 f1 是表示分钟,f2 表示小时,f3 表示一个月份中的第几日,f4 表示月份,f5 表示一个星期中的第几天。program 表示要执行的程序。
当 f1 为 * 时表示每分钟都要执行 program,f2 为 * 时表示每小时都要执行程序,其馀类推
当 f1 为 a-b 时表示从第 a 分钟到第 b 分钟这段时间内要执行,f2 为 a-b 时表示从第 a 到第 b 小时都要执行,其馀类推
当 f1 为 */n 时表示每 n 分钟个时间间隔执行一次,f2 为 */n 表示每 n 小时个时间间隔执行一次,其馀类推
当 f1 为 a, b, c,… 时表示第 a, b, c,… 分钟要执行,f2 为 a, b, c,… 时表示第 a, b, c…个小时要执行,其馀类推
使用者也可以将所有的设定先存放在档案 file 中,用 crontab file 的方式来设定时程表。
例子 :
#每天早上7点执行一次 /bin/ls :
0 7 * * * /bin/ls
在 12 月内, 每天的早上 6 点到 12 点中,每隔3个小时执行一次 /usr/bin/backup :
0 6-12/3 * 12 * /usr/bin/backup
周一到周五每天下午 5:00 寄一封信给 alex@domain.name :
0 17 * * 1-5 mail -s “hi” alex@domain.name < /tmp/maildata
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"
20 0-23/2 * * * echo "haha"
注意 :
当程序在你所指定的时间执行后,系统会寄一封信给你,显示该程序执行的内容,若是你不希望收到这样的信,请在每一行空一格之后加上 > /dev/null 2>&1 即可
例子2 :
#每天早上6点10分
10 6 * * * date
#每两个小时
0 */2 * * * date
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点
0 11 4 * mon-wed date
#1月份日早上4点
0 4 1 jan * date
范例
$crontab -l 列出用户目前的crontab.
来自:http://h1yn.itpub.net/post/2084/222108
IN:Linux Tags: Fedora, heartbeat, Linux Comments:3Heartbeat是http://linux-ha.org中HA项目的核心,HA是(High Availability)的缩写;简单来说就是为了提供高可靠的应用服务,例如拿两来机子来做HA,提供WEB服务,一台机子为主服务器平时提供WEB服务,HA就是保证在主服务器出现故障(例如掉电)的时候另一台机子可以立刻接手继续提供WEB服务,从而使用户觉得服务未曾中断;实际应用中可能使用更多的机子组成集群。
Heartbeat可以使用串口或者以太网来实现对主机的监测,这里使用的是以太网,在两台机器上分别配双网卡,用一根双绞线把两台机器连接在一起,另外两个网卡连到路由;配置是:
f801(主机名;使用这台作为主服务器):
eth0: 192.168.1.110
eth1: 10.0.0.1
f802:
eth1: 192.168.1.111
eth2: 10.0.0.2
网络配置好后测试无误后再检查两台机器上的WEB服务是否可以正常使用;一切都正常后使用yum安装Heartbeat:
yum install heartbeat
安装好heartbeat后开始配置,三个主要配置文件都在: /usr/share/doc/heartbeat-2.1.3/下面,需要我们手工修改后拷贝到/etc/ha.d/中(两台服务器使用的脚本基本一样)。
编辑authkeys文件,下面的配置使用了sha1作为认证方式(这里需要注意的是该文件的权限必须被设置为600):
auth 2
#1 crc
2 sha1 HI!
#3 md5 Hello!
编辑ha.cf,注释下掉以下内容:
keepalive 1 ##设定心跳(监测)时间时间为1秒
warntime 10 ##设定警告时间
deadtime 30 ##设定确定主机宕机时间
initdead 120 ##第一宕机时间
ucast eth1 10.0.0.2 ##使用eht1做心跳监测 也就是连接两PC的网卡
udpport 694 ##使用udp端口694 进行心跳监测
node f801 ##节点1,必须要与 uname -n得到的结果一致。
node f802 ##节点2
第二台服务器由于网卡是eth(192.*)1,eth2(10.*),所以相应的配置文件中ucast 需要使用eth2。
编辑haresources,添加以下内容:
f801 192.168.1.118 httpd
表示主服务器使用192.168.1.118作为WEB服务的IP,f801为主服务器。
配置好后在主服务器上启动Heartbeat:
service heartbeat start
出错的话一般是配置文件的问题,根据提示修改就可以了;Heartbeat会自动根据haresource配置文件启动相应的服务程序。
然后在另一个台器上启动Heartbeat;
完成后可以使用tcpdump来测试两台机器间的心跳:
[root@f801 ~]# tcpdump -i eth0 -p udp port 694
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 96 bytes
11:43:46.431448 IP ha01.filenet-nch > ha02.ha-cluster: UDP, length 219
11:43:46.433968 IP ha01.filenet-nch > ha02.ha-cluster: UDP, length 216
11:43:47.431456 IP ha01.filenet-nch > ha02.ha-cluster: UDP, length 216
11:43:48.432516 IP ha01.filenet-nch > ha02.ha-cluster: UDP, length 216
如果这里出问题的话很有可能是防火墙的问题,或者是配置文件里ucast里的设置,需要仔细检查。
最后就可以做测试,关闭主服务器,根据配置文件里的响应时间(),服务器f802会接管主服务器的任务。
参考文章:
http://www.bitscn.com/linux/network_manage/200805/140501_3.html
http://www.xxlinux.com/linux/article/network/app/20070329/8009.html
Page 2 of 10«12345»10...Last »