2012年4月 的存档

is not in the sudoers file

2012年4月27日 没有评论

在centos创建了一个新用户,默认是不能通过sudo来获取root的权限,当使用sudo时候会看到类似如下错误提示

xxx is not in the sudoers file

解决办法就是对用户授权,需要用root身份来进行如下操作

方法1:直接使用visudo(中间没有空格)编辑配置文件,输入命令visudo后可以看到配置信息,找到“Allow root to run any commands anywhere ”,在下面添加信息:

add_username    ALL=(ALL)       ALL

保存退出即可。

方法2:使用vi命令编辑文件/etc/sudoers

修改文件权限为可写
chmod u+w /etc/sudoers

打开配置文件,同方法1把“add_username    ALL=(ALL)       ALL”加入其中
vi /etc/sudoers

去掉文件的可写权限
chmod u-w /etc/sudoers
分类: Linux 标签:

zend studio — Invalid character used in text string

2012年4月26日 没有评论

使用zend studio 写php时候,看到项目中有很多类似“Invalid character used in text string”的警告,造成警告的原因是Validation,去掉这个警告的办法为:打开偏好设置,找到Validation项目,在右边选项中把“HTML Syntax Validator(for PHP Files)”对于的勾去掉,即不针对PHP文件做html语法检验。

分类: web前端 标签:

centos下查看磁盘的读写状况

2012年4月23日 没有评论

当系统变慢时候,我们首先关注的可能是cpu的指标,有时候发现cpu使用率一点都不高,但是系统还是卡,这时可能就需要关心另外一个影响性能的东西–磁盘的IO性能。通过top命令中的%wa可以获取系统当前的io状态,如果该值居高不小,那磁盘的IO可能就有问题了。另外可以通过iotop命令来详细了解什么程序在读写磁盘,速度以及命令行,pid 等信息。如果系统不存在该命令,可以使用如下命令安装:

yum -y install iotop

另外可以通过dd命令来简单测试一下磁盘写操作的性能,例如:

 dd if=/dev/zero of=test bs=64k count=4k oflag=dsync

命令执行完成后会给出磁盘写操作的平均速度。

mac os 下tomcat apr 警告

2012年4月18日 没有评论

在tomcat 6.0版本后,如果没有apr natvie library,启动时候都会出现类似如下的警告信息

The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path:...

在以前的一篇文章:Tomcat-6.0.33之APR based Apache Tomcat Native library 中介绍了如果在window和linux下解决这个问题。最近使用mac os,也遇到了同样的问题,解决的办法和linux下相似,唯一不同的是在configure时需要指定java home。

自己编译首要条件介绍已经安装了gcc,关于如果安装gcc,可以参考:mac os lion 安装gcc备忘,依赖的库似乎默认系统自带了,如果编译的时候提示缺少库,可以使用 port 方式来安装,顺便提一下 port 是一个和centos下的yum、ubuntu下的apt-get类似的包管理软件。我使用的configure参数设置如下:

./configure --with-apr=/usr/bin/apr-1-config --with-java-home=/System/Library/Frameworks/JavaVM.framework/ --with-os-type=Headers/

然后使用make、make install就编译完成。如果成功,在目录/usr/local/apr/lib/下会生成一个名为libtcnative-1.0.dylib的库文件,使用ln命令做一个软链接到上述警告信息中提到的一个目录即可,例如:

ln -s /usr/local/apr/lib/libtcnative-1.dylib /Library/Java/Extensions/
分类: Java 标签:

mac os 屏幕录像软件

2012年4月18日 没有评论

mac os lion 下不必去花心思找破解的屏幕录像软件,其自带的QuickTime Player就有这个功能,同时还带了一些简单的编辑功能,对于普通的引用已经足够了。

使用也很简单,打开QuickTime Player,在菜单栏的“文件”选项中选择“新建屏幕录制”即可,可以选择录制指定区域或全屏,通过设置可以在录像中用圈的形式来表示鼠标的点击,录制好的文件默认存放在存放在“影片”目录中,可以直接使用QuickTime Player打开,另外通过菜单栏中的“共享”选择,将录制视频转换成多种格式。

mac os 下设置开机自启动服务

2012年4月18日 没有评论

centos下设置开机自启动某个服务,只需要把启动服务对于的命令添加到/etc/rc.local文件中即可,例如开机自动启动memcached,在文件中加入如下信息即可:

/usr/local/memcached/bin/memcached -d -m 64 -l 127.0.0.1 -p 11211 -u root

mac os lion 中似乎没有这个文件,如果要做到开机自启动,则需要通过plist脚本来完成,关于plist脚本的更多信息可以参考:mac os 定期任务配置

以自启动memcached为例,首先写一个启动memcached的shell脚本,命名为start-memcached,存放在/usr/bin下,当然文件名、存放路径可以随意按自己喜欢方式来命名,shell脚本的内容为:

#!/bin/bash

/usr/bin/memcached -d -m 16 -l 127.0.0.1 -p 11211 -u yangyz

注意该文件要有执行权限,可以使用chmod命令修改,memcached命令根据本机实际路径来书写。

在plist脚本中来执行上述shell脚本,plist脚本命名为:com.yangyz.memcached.plist,存放在/Library/LaunchDaemons下,脚本内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
	<key>Label</key>
	<string>com.yangyz.memcached.plist</string>
	<key>ProgramArguments</key>
	<array>
		<string>/usr/bin/start-memcached</string>
	</array>
	<key>KeepAlive</key>
	<false/>
	<key>RunAtLoad</key>
	<true/>
	<key>StandardErrorPath</key>
	<string>/tmp/memcached.err</string>
	<key>StandardOutPath</key>
	<string>/tmp/memcached.out</string>
</dict>
</plist>

通过上述配置,每次开机后都会自动启动memcached服务了。

mac os 定期任务配置

2012年4月18日 没有评论

在linux下执行定期任务可以使用crontab,目前mac os也可以使用它,不过已不推荐使用。推荐做法是采用plist脚本,plist脚本可以设置执行的动作,时间间隔等其他一些信息。另外crontab的最小时间间隔是一分钟,使用plist脚本原则上时间间隔可以为一秒。

plist脚本存放路径为/Library/LaunchDaemons或/Library/LaunchAgents,其区别是后一个路径的脚本当用户登陆系统后才会被执行,前一个只要系统启动了,哪怕用户不登陆系统也会被执行。

可以通过两种方式来设置脚本的执行时间。一个是使用StartInterval,它指定脚本每间隔多长时间(单位:秒)执行一次;另外一个使用StartCalendarInterval,它可以指定脚本在多少分钟、小时、天、星期几、月时间上执行,类似如crontab的中的设置。

一个简单例子如下:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.yangyz.cron.test.plist</string>
    <key>ProgramArguments</key>
    <array>
        <string>/Users/yangyz/plist-test.sh</string>
    </array>
    <key>KeepAlive</key>
    <false/>
    <key>RunAtLoad</key>
    <true/>
    <key>StartInterval</key>
    <integer>60</integer>
</dict>
</plist>

其中key是plist脚本定义的属性,紧跟着的下一行是该属性对应的值。上述脚本是每间隔60秒执行一次/Users/yangyz/plist-test.sh这个shell脚本,也可以使用StartCalendarInterval来替换StartInterval达到同样的效果,例如:

<key>StartCalendarInterval</key>
<dict>
  <key>Minute</key>
  <integer>0</integer>
</dict>

上述设置的意思为每天的每个小时的第0分钟执行,也即使每60秒执行一次。

plist脚本中定义的属性以及具体的含义,可以参看苹果官方网站的说明,地址为:launchd.plist(5) Mac OS X Manual Page

launchctl命令可以控制plist脚本停止或重新加载。例如:

停止脚本com.yangyz.cron.test.plist运行
launchctl unload /Library/LaunchDaemons/com.yangyz.cron.test.plist 

启动脚本com.yangyz.cron.test.plist运行
launchctl load /Library/LaunchDaemons/com.yangyz.cron.test.plist

如果执行上面命令看到launchctl: Dubious ownership on file (skipping): /Library/LaunchDaemons/com.yangyz.cron.test.plist这样的错误,其原因是该脚本的owner和当前执行操作用户不一致。使用chown修改一下即可。

参考资料:
http://www.devdaily.com/mac-os-x/launchd-plist-examples-startinterval-startcalendarinterval
http://www.devdaily.com/mac-os-x/mac-osx-startup-crontab-launchd-jobs

mac os 修改文件的默认打开方式

2012年4月17日 没有评论

文件有一个默认的程序和它关联,当双击文件时就通过默认关联程序打开,打开一个文件可能有多个程序,但默认只有一个,如果默认程序不是自己喜欢的,可以按下面介绍修改的。

在文件上点右键,选择“显示简介”,其中有一项目为“打开方式”,展开它并在程序列表中选择自己喜欢,点击“全部更加”即完成修改默认打开方式。

批处理中分割字符串

2012年4月17日 没有评论

把一个字符串按照特定的字符分割成多个子字符,一般的编程语言中都提供内置的方法来实现这个功能,在批处理中可以通过命令for来完成。命令格式如下:

for /f "tokens=x,y,m-n delims=chars" %%a in ("str")   do cmd

其中tokens获取分割后字符串的列数,列数从1开始技术,可以指定多个,中间用“,”分割。tokens设置具体含义如下:

tokens=x	表示只提取第x列。
tokens=x,y	表示只提取第x列和第y列。
tokens=m-n	表示提取第m列至第n列。
tokens=x*	表示提取第x列和后面所有字符串都作为第x+1列。
tokens=x,*	等同tokens=x*
tokens=x,y,m-n	表示提取第x,y列以及第m至第n列。

delims是指定风格字符,可以指定多个,例如:delims=xy,表示以x或者y作为分隔符。注意:tokens和delims必须在同一对引号中。

tokens参数决定了输出变量的个数,%%a表示第一个变量引用,%%b表示第二个变量引用,依次类推。也可以指定第一个变量为%%m、%%n等,总之下一个变量字符是上一个变量的ascii码值加1。

一个简单例子如下:

@echo off

set str=100x200x300y400y500x600y700

for /f "tokens=1,3-5,* delims=x|y" %%a in ("%str%") do (
	set c1=%%a
	set c3=%%b
	set c4=%%c
	set c5=%%d
	set c6=%%e

)

echo %c1%, %c3%, %c4%, %c5%, %c6%

pause

输出结果为:100, 300, 400, 500, 600y700。其中tokens=1,3-5,*表示提取第1、3至5列,同时把第5列后所有剩余字符串作为第6列,一个输出了5个变量,也可以写作tokens=1,3,4,5,*。

centos中安装xen虚拟机

2012年4月17日 没有评论

安装xen前需要检查CPU是否支持虚拟化,虚拟化又分全虚拟化和半虚拟化。
半虚拟检查:结果大于0表示支持

cat /proc/cpuinfo | grep flags | grep pae | wc -l

全虚拟化检查:结果大于0表示支持

cat /proc/cpuinfo | egrep '(vmx|svm)' | wc -l

其中vmx是intel cpu 标志,svm是amd cpu 标志

如果CPU支持虚拟化才能使用xen,centos 5.6下安装xen可以直接使用yum来安装。安装命令如下:

yum –y install kernel-xen xen

安装好后在/boot/grub/menu.lst可以看到带有xen内核的启动项,把它设置为默认启动项。重启后就可以安装虚拟机了。

道听途说得到的结论是半虚拟化(PV)的性能原则上比全虚拟化(FV)要好,我的机器支持半虚拟化,所有采用这种方式来创建虚拟机。由于半虚拟化时不能使用 cdrom,iso的方式安装,只能使用网络方式安装,如 http,ftp,nfs,这里采用http的方式。http服务用nginx,源是iso文件,操作步骤为:

  1. mount iso 文件 mount -o loop /iso文件的路径/iso文件名 /mnt/iso
  2. 在nginx的根目录下建立一个cs文件夹,拷贝 /mnt/iso下的文件到刚建立的cs文件夹中,注意nginx中的cs目录需要有list的权限,故需要在nginx中配置autoindex on,默认是off

使用dd命令创建一个固定大小的空间作为虚拟机的硬盘,这里创建了一个10G的文件

dd if=/dev/zero of=/data/xenimgs/purecentos5_6.img bs=1024K count=10240

安装命令:

virt-install -p -n purecentos5_6 -r 512 --vcpus=2 --file=/data/xenimgs/purecentos5_6.img  -l http://192.168.1.68/cs/  --vnc  --prompt

说明
-p 使用半虚拟
-n 虚拟机的名称  默认会在/etc/xen中创建一个同名的配置文件
-r 虚拟机的内存
--vcpus 虚拟cpu的个数,不要超过真实cpu的个数
--file 作为磁盘使用的映像文件(可以为多个该选项,该映像文件也可以不事先创建)
-l 安装源的路径
--vnc 开启vncserver,可以使用vncviewer连接,如果不指定端口,默认为5900,
如果同时还在创建第二个时候,端口为5901,依次类推,当然可以使用"--vncport=xxx"来为当前虚拟机指定一个端口
有时候由于多次操作,都不知道当前到底是哪个端口,可以使用命令 netstat -nap | grep 590 来查看一下,最后确认具体端口
--prompt 使用交互式的方式,这样会提示你属于一些信息

运行命令后用vncviewer连接上,可以看到跟安装普通的linux一样,按照要求一步一步走下去就ok.

使用已有的系统创建一个新系统,有两种方法

方法一
拷贝老系统的映像文件为新系统的映像文件 cp purecentos5_6.img centos1.img
拷贝配置文件 cp /etc/xen/purecentos5_6 /etc/xen/centos1
修改 /etc/xen/centos1 文件中的name、uuid、disk和mac中对应的信息就大功告成了

方法二
使用virt-clone命令来完成,例如:
virt-clone -o purecentos5_6 -n centos2 -f /data/xenimgs/centos2.img

可以先创建一个干净的系统,再根据上面的方法来创建虚拟机,这样可以快速的创建好一个虚拟机。

无觅相关文章插件,快速提升流量