colorful

zc qq:1337220912

 

linux下PostgreSQL安装设置

http://down.chinaz.com/server/201104/244_1.htm

1、下载postgresql最新版:

  • 软件大小:32.70MB
  • 软件类别:国外软件 | 数据服务器
  • 软件语言:英文
  • 运行环境:Linux
  • 软件授权:免费版
  • 更新时间:2012-9-25 9:38:18
  • 相关链接:Home Page

2、解压文件:

tar zxvf postgresql-8.3.7.tar.gz cd postgresql-8.3.7

3、配置:

./configure --prefix=/usr/local/pgsql

4、编译:

make

5、安装:

make install

6、创建用户组和用户:

groupadd postgres useradd -g postgres postgres

7、创建数据库库文件存储目录、给postgres赋予权限:

mkdir /usr/local/pgsql/data cd /usr/local/pgsql chown postgres.postgres data

8、初始化数据库目录:

切换用户

su - postgresql

初始化数据

/usr/local/pgsql/bin/initdb -D /usr/local/pgsql/data

启动数据库

/usr/local/pgsql/bin/postmaster -D /usr/local/pgsql/data

9、配置监听地址和端口:

vi /usr/local/pgsql/data/postgresql.conf

取消以下两行的注释

listen_addresses = '*'  port = 5432

10、允许远程连接:

vi /usr/local/pgsql/data/pg_hba.conf

添加

host all all 192.168.1.0/24 trust 

每项的具体意思在配置文件中有详细说明
配置iptables让远程主机能访问:

vi /etc/sysconfig

添加

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5432 -j ACCEPT service iptables restart

11、让postgresql数据库随系统启动而启动:

将启动脚本拷贝到/etc/init.d/目录下,具体执行如下命令:

cd /etc/rc.d/init.d cp (第一步解压的安装文件目录)/postgresql-8.3.7/contrib/start-scripts/linux postgresql chmod +x postgresql vi postgresql prefix=/usr/local/pgsql PGDATA="/usr/local/pgsql/data" PGUSER=postgres PGLOG="/var/log/pgsql.log"  chkconfig --add postgresql

启动数据库:

service postgresql start

posted @ 2013-07-09 18:25 多彩人生 阅读(347) | 评论 (0)编辑 收藏

Centos下启动SSH远程登录

实验最后如果本地可以ssh,远端不可以ssh,请关闭iptables。root下执行:/etc/init.d/iptables stop。

开始本次实验课题,Centos自带sshd(ssh服务器端)

1.启动sshd(服务器端操作)

2.远端ssh(客户端操作)

方案一、直接以root登录,不推荐

方案二、以普通用户登录,这样误操作的风险要低一些~

posted @ 2013-07-07 14:28 多彩人生 阅读(659) | 评论 (0)编辑 收藏

crontab防止脚本周期内未执行完重复执行

个人体会: flock -xn my.lock commond
my.lock是一个文件,应该可以是任意文件,可以新建一个空文件
当flock 获得锁后就会执行后面的 commond
测试过程: $1: flock -xn my.lock sleep 20
              $2: flock -xn my.lock ls
只有当1返回后, 2的ls才会成功

crontab防止脚本周期内未执行完重复执行

如果某脚本要运行30分钟,可以在Crontab里把脚本间隔设为至少一小时来避免冲突。而比较糟的情况是可能该脚本在执行周期内没有完成,接着第 二个脚本又开始运行了。如何确保只有一个脚本实例运行呢?一个好用的方法是利用lockf(FreeBSD 8.1下为lockf,CentOS  5.5下为flock),在脚本执行前先检测能否获取某个文件锁,以防止脚本运行冲突。

lockf的参数如下。

-k:一直等待获取文件锁。

-s:silent,不发出任何信息,即使拿不到文件锁。

-t seconds:设定timeout的时间是seconds秒,如果超过时间,则自动放弃。

以下Crontab计划任务执行前,需获取临时文件create.lock的文件锁,此项Crontab计划任务的内容如下:

1
*/10 * * * * (lockf -s -t 0 /tmp/create.lock /usr/bin/python /home/project/cron/create_tab.py  >> /home/project/logs/create.log 2>&1)


若第一个实例在10分钟内没有运行完,第2个实例不会运行。我以前是通过Shell脚本来解决这个问题的,比如用while...do循环,然后放在后台执行。但后来发现其实用flock或lockf方法更为简单。


附上linux下的flock的用法:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
flock (util-linux 2.13-pre7)
Usage: flock [-sxun][-w #] fd#
       flock [-sxon][-w #] file [-c] command...
  -s  --shared     Get a shared lock 
#共享锁,在定向为某文件的FD上设置共享锁而未释放锁的时间内,其他进程试图在定向为此文件的FD上设置独占锁的请求失败,而其他进程试图在定向为此文件的FD上设置共享锁的请求会成功
  -x  --exclusive  Get an exclusive lock 
#独占或排他锁,在定向为某文件的FD上设置独占锁而未释放锁的时间内,其他进程试图在定向为此文件的FD上设置共享锁或独占锁都会失败。只要未设置-s参数,此参数默认被设置
  -u  --unlock     Remove a lock 
#手动解锁,一般情况不必须,当FD关闭时,系统会自动解锁,此参数用于脚本命令一部分需要异步执行,一部分可以同步执行的情况
  -n  --nonblock   Fail rather than wait 
#为非阻塞模式,当试图设置锁失败,采用非阻塞模式,直接返回1,
  -w  --timeout    Wait for a limited amount of time
#设置阻塞超时,当超过设置的秒数,就跳出阻塞,返回1
  -o  --close      Close file descriptor before running command
  -c  --command    Run a single command string through the shell 执行其后的comand
  -h  --help       Display this text
  -V  --version    Display version

举个例子执行如下脚本:

每天23:30的时候执行一个脚本,但是执行前必须要获得排他文件锁,否则无法执行命令

1
30 23 * * * flock -xn /tmp/test.lock -c '/usr/local/php test.php'

posted @ 2013-07-06 16:59 多彩人生 阅读(6726) | 评论 (0)编辑 收藏

shell中if做比较

shell中if做比较

比较两个字符串是否相等的办法是:

    if [ "$test"x = "test"x ]; then

    这里的关键有几点:

    1 使用单个等号

    2 注意到等号两边各有一个空格:这是unix shell的要求

    3 注意到"$test"x最后的x,这是特意安排的,因为当$test为空的时候,上面的表达式就变成了x = testx,显然是不相等的。而如果没有这个x,表达式就会报错:[: =: unary operator expected

    

    二元比较操作符,比较变量或者比较数字.注意数字与字符串的区别.

    整数比较

    -eq 等于,如:if [ "$a" -eq "$b" ]

    -ne 不等于,如:if [ "$a" -ne "$b" ]

    -gt 大于,如:if [ "$a" -gt "$b" ]

    -ge 大于等于,如:if [ "$a" -ge "$b" ]

    -lt 小于,如:if [ "$a" -lt "$b" ]

    -le 小于等于,如:if [ "$a" -le "$b" ]

     大于(需要双括号),如:(("$a" > "$b"))

    >= 大于等于(需要双括号),如:(("$a" >= "$b"))

    小数据比较可使用AWK

    字符串比较

    = 等于,如:if [ "$a" = "$b" ]

    == 等于,如:if [ "$a" == "$b" ],与=等价

     注意:==的功能在[[]]和[]中的行为是不同的,如下:

     1 [[ $a == z* ]] # 如果$a以"z"开头(模式匹配)那么将为true

     2 [[ $a == "z*" ]] # 如果$a等于z*(字符匹配),那么结果为true

     3

     4 [ $a == z* ] # File globbing 和word splitting将会发生

     5 [ "$a" == "z*" ] # 如果$a等于z*(字符匹配),那么结果为true

     一点解释,关于File globbing是一种关于文件的速记法,比如"*.c"就是,再如~也是.

     但是file globbing并不是严格的正则表达式,虽然绝大多数情况下结构比较像.

    != 不等于,如:if [ "$a" != "$b" ]

     这个操作符将在[[]]结构中使用模式匹配.

     大于,在ASCII字母顺序下.如:

     if [[ "$a" > "$b" ]]

     if [ "$a" \> "$b" ]

     注意:在[]结构中">"需要被转义.

     具体参考Example 26-11来查看这个操作符应用的例子.

    -z 字符串为"null".就是长度为0.

    -n 字符串不为"null"

     注意:

     使用-n在[]结构中测试必须要用""把变量引起来.使用一个未被""的字符串来使用! -z

     或者就是未用""引用的字符串本身,放到[]结构中。虽然一般情况下可

     以工作,但这是不安全的.习惯于使用""来测试字符串是一种好习惯.

if判断式
if [ 条件判断一 ] && (||) [ 条件判断二 ]; then
elif [ 条件判断三 ] && (||) [ 条件判断四 ]; then
else
   执行第三段內容程式
fi

例如:

 

root@Bizbox:~# a=0 root@Bizbox:~# b=0 root@Bizbox:~# c=5          root@Bizbox:~# if [ $a = 0 -a $b = 0 ]&&[ $c != 0 ]; then > echo success > fi success

if 使用的表达式

Primary 意义
[ -a 文件 ] 如果文件存在为真。
[ -b 文件 ] 如果 文件 存在 而且 是一个 块-特殊 文件为真。
[ -c 文件 ] 为真 如果 文件 存在 而且 是一个 字-特殊 文件。

 

[ -d 文件 ] 为真 如果 文件 存在 而且 是一个 目录。
[ -e 文件 ] 为真 如果 文件 存在。
[ -f 文件 ] 为真 如果 文件 存在 而且 是一个 普通 文件。
[ -g 文件 ] 为真 如果 文件 存在 而且 已经设置了他的 SGID 位。
[ -h 文件 ] 为真 如果 文件 存在 而且 是一个 符号连接。
[ -k 文件 ] 为真 如果 文件 存在 而且 他的粘住位已经设置。
[ -p 文件 ] 为真 如果 文件 存在 而且 是一个 已经命名的管道 (F 如果O)。
[ -r 文件 ] 为真 如果 文件 存在 而且 是可读的。
[ -s 文件 ] 为真 如果 文件 存在 而且 比零字节大。
[ -t FD ] 为真 如果 文件 文件描述符已经打开 而且 指向一个终端。
[ -u 文件 ] 为真 如果 文件 存在 而且 已经设置了他的 SUID (set user ID)位。
[ -w 文件 ] 为真 如果 文件 为真 如果 文件 存在 而且 是可写的。
[ -x 文件 ] 为真 如果 文件 存在 而且 是可执行的。
[ -O 文件 ] 为真 如果 文件 存在 而且 属于有效用户ID。
[ -G 文件 ] 为真 如果 文件 存在 而且 属于有效组ID。
[ -L 文件 ] 为真 如果 文件 存在 而且 是一个 符号连接。
[ -N 文件 ] 为真 如果 文件 存在 而且 has been mod 如果ied since it was last read。
[ -S 文件 ] 为真 如果 文件 存在 而且 是一个 socket。
[ 文件1 -nt 文件2 ] 为真 如果 文件1 has been changed more recently than 文件2, or 如果
文件1 存在 而且
文件2 does not。
[ 文件1 -ot 文件2 ] 为真 如果 文件1 比 文件2 旧, 或者 文件2 存在而且 文件1 不存在。
[ 文件1 -ef 文件2 ] 为真 如果 文件1 而且 文件2 refer to the same device 而且 inode
numbers。
[ -o 选项名 ] 为真 如果 shell 选项 "选项名" 开启。
[ -z STRING ] 为真 如果 "STRING"的长度是零。
[ -n STRING ] 或者 [ STRING ] 为真 "STRING"的长度是非零值。
[ STRING1 == STRING2 ] 如果两个字符串相等为真。 "=" may be used instead of "==" for
strict POSIX compliance。
[ STRING1 != STRING2 ] 为真 如果 两两个字符串不相等。
[ STRING1 < STRING2 ] 为真 如果 "STRING1" sorts before "STRING2" lexicographically in the
current locale。
[ STRING1 > STRING2 ] 为真 如果 "STRING1" sorts after "STRING2" lexicographically in the
current locale。
[ ARG1 OP ARG2 ]
"OP" 是 -eq, -ne, -lt, -le, -gt or -ge 其中一个。 These arithmetic binary operators
return 为真 如果 "ARG1" is equal to, not equal to, less than, less than or equal to, greater
than, or greater than or equal to "ARG2", respectively。 "ARG1" 而且 "ARG2" are
integers。
表达式可以借以下操作符组合起来, listed in decreasing order of precedence:
操作符效果
[ ! EXPR ] 如果EXPR 为假则为真。
[ ( EXPR ) ] 返回EXPR 的值。 这样可以用来忽略正常的操作符优先级。

posted @ 2013-07-06 16:28 多彩人生 阅读(283) | 评论 (0)编辑 收藏

linux 删除所有后缀名相同的文件

个人经历:系统centos 6.3

方法一:
find 目录 -name "*.abc" | xargs rm
命令很危险, 你先执行前半段试试看 是不是你要删除的文件, 在整条执行

方法二:
find . -name '*.exe' -type f -print -exec rm -rf {} \;
(1) "."    表示从当前目录开始递归查找
(2) “ -name '*.exe' "根据名称来查找,要查找所有以.exe结尾的文件夹或者文件
(3) " -type f "查找的类型为文件
(4) "-print" 输出查找的文件目录名
(5) 最主要的是是-exec了,-exec选项后边跟着一个所要执行的命令,表示将find出来的文件或目录执行该命令。
     exec选项后面跟随着所要执行的命令或脚本,然后是一对儿{},一个空格和一个\,最后是一个分号

-----------------------------------------------------------

find: paths must precede expression Usage: find [-H] [-L] [-P] [path...] [expression]

今天在跑脚本的时候看到如下报错:

find: paths must precede expression
Usage: find [-H] [-L] [-P] [path...] [expression]

然后就上网查了一下,结果搜索到一篇,大概是这样说的:多文件的查找的时候需要增加单引号

而我之前一直都是用的双引号,也没有遇到问题,这次却报错了~

ssh $ip "cd $path;find . -name'access.$month*.log' -print -exec zip -r access.$month.zip {} \;"

修改成单引号后,木有再见报错~

例子说明:

  1. # 进入tmp目录新建4个文本文件  
  2. # cd /tmp  
  3. # touch {1,2,3,4}.txt  
  4. # find . -name *.txt  
  5. find: paths must precede expression: 2.txt  

出现这个提示是因为星号被展开为当前目录下所有的文件,这样的匹配当然会出错。看这个就知道了:

  1. # echo *  
  2. 1.txt 2.txt 3.txt 4.txt  
  3. # echo '*'  
  4. *  
  5. # echo \*  
  6. *  

想要星号不被展开就需要加上括号或者反斜杠转义,知道了这些我们就知道该怎么find了

  1. # find . -name '*.txt'  
  2. find . -name '*.txt'  
  3. ./4.txt  
  4. ./2.txt  
  5. ./3.txt  
  6. ./1.txt  
  7. #或者使用反斜杠  
  8.  find . -name \*.txt  
  9. ./4.txt  
  10. ./2.txt  
  11. ./3.txt  
  12. ./1.txt 

posted @ 2013-07-06 16:15 多彩人生 阅读(11759) | 评论 (0)编辑 收藏

How to rename a file in Linux

//为什么 rename 不行

mv command renames the file named by the source operand to the destination path named by the target operand. mv command syntax:

Code:
mv {old-file-name {new-file-name} mv {old-dir-name} {new-dir-name}
Rename a file tom.txt to jerry.txt, type:
Code:
mv tom.txt jerry.txt
Rename a directory lgitech to logitech, enter:
Code:
mv lgitech logitech

posted @ 2013-07-06 15:49 多彩人生 阅读(325) | 评论 (0)编辑 收藏

进程守护脚本, 如果已运行则不运行

processExist=`ps aux|grep processName|grep -v "grep" `   // 注意这是Esc下面那个`
if [ -z "$processExist" ];then
    exec processName
else
    echo "process is running"
fi

posted @ 2013-07-06 15:36 多彩人生 阅读(291) | 评论 (0)编辑 收藏

定时自动启动任务crontab命令用法

http://www.centos.bz/2011/03/auto-run-task-crontab/

每个操作系统都有它的自动定时启动程序的功能,Windows有它的任务计划,而Linux对应的功能是crontab

crontab简介

crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于 “crontab”文件中,以供之后读取和执行。该词来源于希腊语 chronos(χρόνος),原意是时间。  通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。这类作业一般称为cron jobs。

crontab用法

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...个小时要执行,其余类推

管理员登录SSH,输入命令crontab -e编辑crontab文件,根据上面的格式输入并保存。

crontab例子

每月每天每小时的第 0 分钟执行一次 /bin/ls :

  1. 0 * * * * /bin/ls

在 12 月内, 每天的早上 6 点到 12 点中,每隔 20 分钟执行一次 /usr/bin/backup :

  1. */20 6-12 * 12 * /usr/bin/backup

周一到周五每天下午 5:00 寄一封信给 alex@domain.name :

  1. 0 17 * * 1-5 mail -s "hi" alex@domain.name &lt; /tmp/maildata

每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分....执行 echo "haha"

  1. 20 0-23/2 * * * echo "haha"

晚上11点到早上8点之间每两个小时,早上8点

  1. 0 23-7/2,8 * * * date

在hp unix,中,每20分钟执行一次,表示为:0,20,40 * * * * 而不能采用*/n方式,否则出现语法错误

crontab用法其实很容易掌握,懂得使用crontab,对网站和服务器维护起到很大的帮助,比如定时备份,定时优化服务器等。

posted @ 2013-07-06 15:31 多彩人生 阅读(389) | 评论 (0)编辑 收藏

virtual box 共享文件夹

1 设置共享文件夹
2 挂载共享文件夹:
      su root
      mkdir /mnt/share
      mount -t vboxsf srcdir /mnt/share
3 卸载:
      umount -f /mnt/share

posted @ 2013-07-04 13:52 多彩人生 阅读(254) | 评论 (0)编辑 收藏

【转载】centos6.2下安装星际译王stardict3.0

星际译王是一个Linux下很好的翻译软件。

我的系统是centos6.2 32位版。本来在http://code.google.com/p/stardict-3/downloads/list 上下的源码包安装。结果每次无法./configure过去。提示

configure: error: Enchant library not found or too old. Use --disable-spell to build without spell plugin.
加上--disable-spell参数又出现新的错误。网上方法都试了,一直未搞定。

后来,找到了rpm包后很容易就装好了。

1,下载地址(选择 binary package,):

32位系统:

http://pkgs.org/centos-6-rhel-6/naulinux-school-i386/stardict-3.0.2-1.el6.i686.rpm/download/

64位系统:

http://pkgs.org/centos-6-rhel-6/puias-x86_64/stardict-3.0.1-22.puias6.x86_64.rpm/download/ 

2, 用yum安装

yum localinstall stardict-3.0.2-1.el6.i686.rpm

注:我的安装依赖包为:espeak-1.40.02-3.1.el6.i686.rpm。通过yum自动解决。

其他软件包依赖关系等问题请查看:

http://pkgs.org/centos-6-rhel-6/naulinux-school-i386/stardict-3.0.2-1.el6.i686.rpm.html 

这时候在附件里面已经可以启动星际译王了。只不过这时侯还只能联网使用。断网就没用了,因为没有中文词库。

3,下载词库

http://pkgs.org/centos-6-rhel-6/puias-i386/stardict-dic-zh_CN-2.4.2-6.puias6.noarch.rpm/download/

4,安装词库

rpm -ivh stardict-dic-zh_CN-2.4.2-6.puias6.noarch.rpm

词库安装问题及说明可以查看以下链接

http://pkgs.org/centos-6-rhel-6/puias-i386/stardict-dic-zh_CN-2.4.2-6.puias6.noarch.rpm.html

ok!现在断网也能用了。

ps:也可以在 http://abloz.com/huzheng/stardict-dic/zh_CN/ 这个网站上下载你想要的其他中英词库。下载解压后将其解压在 /usr/share/stardict/dic/ 下就行了。

转自:http://www.linuxso.com/linuxrumen/29170.html

posted @ 2013-07-03 23:35 多彩人生 阅读(2356) | 评论 (0)编辑 收藏

仅列出标题
共25页: First 5 6 7 8 9 10 11 12 13 Last 

导航

统计

常用链接

留言簿(3)

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜