• 2009-07-14

    linux下修改php.ini,重启apache - [linux]

    公司php安装居然没有配置error_display为Off,导致报错时用户清晰看到服务器路径,还贴在了BBS上,太乐了。

    PHP本来安装在/usr/bin/下,但是公司统一安装的时候,是在/Apps/下,找了半天找不到,最后干脆用了php_info(),发现在/Apps/PHP5/zend/php.ini,然后修改,之后,要重启apache,找了下,就在/Apps/apache/bin/下,ls发现,有一堆,如:

    -rwxr-xr-x  1 root root  100399 Nov 26  2008 ab
    -rwxr-xr-x  1 root root    3428 Nov 26  2008 apachectl
    -rwxr-xr-x  1 root root    7001 Nov 26  2008 apr-1-config
    -rwxr-xr-x  1 root root    6201 Nov 26  2008 apu-1-config
    -rwxr-xr-x  1 root root   22597 Nov 26  2008 apxs
    -rwxr-xr-x  1 root root    9562 Nov 26  2008 checkgid
    -rwxr-xr-x  1 root root    8876 Nov 26  2008 dbmmanage
    -rw-r--r--  1 root root     978 Nov 17  2008 envvars
    -rw-r--r--  1 root root     978 Nov 26  2008 envvars-std
    -rwxr-xr-x  1 root root   35852 Nov 26  2008 htcacheclean
    -rwxr-xr-x  1 root root   23529 Nov 26  2008 htdbm
    -rwxr-xr-x  1 root root   16962 Nov 26  2008 htdigest
    -rwxr-xr-x  1 root root   23686 Nov 26  2008 htpasswd
    -rwxr-xr-x  1 root root 1156959 Nov 26  2008 httpd
    -rwxr-xr-x  1 root root   16311 Nov 26  2008 httxt2dbm
    -rwxr-xr-x  1 root root   15869 Nov 26  2008 logresolve
    -rwxr-xr-x  1 root root   20441 Nov 26  2008 rotatelogs

    最后,运行:#./apachectl restart  搞定

    Tag:php linux
  • 2009-06-18

    Linux命令+NFS配置+show processlist - [linux]

    Linux :http://hi.baidu.com/shengit/blog/item/3f61d48a6b4521769e2fb49b.html

     

    NFS:http://www.freebsd.org/doc/zh_CN/books/handbook/network-nfs.html
            http://server.ccw.com.cn/yyjq/htm2008/20080415_407746.shtml

     

    show processlist:http://hi.baidu.com/24xinhui/blog/item/e2947f13621a96d8f7039edb.html

     

    Tag:linux Mysql
  • 2009-05-13

    Linux 下各种查找替换字符串的办法 - [linux]

    1、在vi中使用的查找替换方法
    利用 :s 命令可以实现字符串的替换。具体的用法包括:
    :s/str1/str2/ 用字符串 str2 替换行中首次出现的字符串 str1
    :s/str1/str2/g 用字符串 str2 替换行中所有出现的字符串 str1
    :.,$ s/str1/str2/g 用字符串 str2 替换正文当前行到末尾所有出现的字符串 str1
    :1,$ s/str1/str2/g 用字符串 str2 替换正文中所有出现的字符串 str1
    :g/str1/s//str2/g 功能同上从上述替换命令可以看到:g 放在命令末尾,表示对搜索字符串的每次出现进行替换;不加 g,表示只对搜索字符串的首次出现进行替换;g 放在命令开头,表示对正文中所有包含搜索字符串的行进行替换操作。

    2、在shell中使用find结合grep进行文件的替换
    # find ./ -exec grep 'str1' '{}' \; -exec sed -i.bak s/str1/str2/g '{}' \;
    上面命令可以在当前目录下(包括子目录)查找包含str1的文件,自动替换成str2,并且生成源文件的bak文件

    Tag:linux
  • 2009-04-22

    [linux服务器] 监控系统的平均负载 - [linux]

    为什么要监控系统的平均负载?
         有时我们会感觉到系统响应很慢,但是又找不到原因,这时要查平均负载,是否有大量的进程在排队等待  
    1,平均负载是什么?
               特定时间间隔内运行队列中的平均进程数,好象还不够明白:就是进程队列的长度,有多少个进程在排队等待运行
    2,什么是"进程队列"?
               一个进程满足以下条件就会位于进程队列中
                      1,它没有在等待I/O操作的结果
                      2,它没有主动进入等待状态(即没有调用wait)
                      3,它没有被停止
    3,如何查看平均负载?
      最简单的命令是uptime
      例子:
      [lhd@localhost ~]$ uptime
      00:44:22 up  1:17,  3 users,  load average: 8.13, 5.90, 4,94
    4,显示的内容是什么意思?
              load average:    8.13,5.90,4,94
              显示的是过去的1,5,15分钟内进程队列中的平均进程数量
    5,如何衡量当前系统是否负载过高?
            如果每个cpu(可以按CPU核心的数量计算)上当前活动进程数不大于3,则系统性能良好,
            不大于4,表示可以接受
            如大于5,则系统性能问题严重
            上面例中的8.13,如果有2个cpu核心,则8.13/2=4.065,   此系统性能可以接受
            建议设置严格的报警值为: CPU核心的数量
            比如:CPU核心数量为2,则设置报警值为2
            (这样设置是合理的,因为毕竟不是每个应用都支持多CPU及多核心)
    6,查看平均负载的命令
                     有5个可用:
                     tload    能够绘制出负载变化的图形
                     uptime   同时显示开机以来的时间
                     w        同时显示出已登录的用户
                     top      这个对资源占用太高,不建议使用
                     cat /proc/loadavg   通过/proc系统信息得到平均负载
    注意:如果你要持续的观察平均负载,建议用 watch uptime  或 watch cat /proc/loadavg
    备注:关于watch:每隔一定时间执行指定的程序,并全屏显示结果。时间默认是2秒

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

    uptime

    这个uptime外壳命令产生下列输出:

    [pax:~]% uptime
    9:40am up 9 days, 10:36, 4 users, load average: 0.02, 0.01, 0.00

    它显示自从上次系统重启以来,活动的用户进程数量和所谓的平均负荷指标(load average)。

    procinfo

    在Linux系统上,procinfo命令产生以下输出:

    [pax:~]% procinfo
    Linux 2.0.36 (root@pax) (gcc 2.7.2.3) #1 Wed Jul 25 21:40:16 EST 2001 [pax]

    Memory: Total Used Free Shared Buffers Cached
    Mem: 95564 90252 5312 31412 33104 26412
    Swap: 68508 0 68508

    Bootup: Sun Jul 21 15:21:15 2002 Load average: 0.15 0.03 0.01 2/58 8557
    ...

    平均负载指标出现在这个输出的左下角。

    w

    w(ho)命令产生下列输出:

     [pax:~]% w
      9:40am  up 9 days, 10:35,  4 users,  load average: 0.02, 0.01, 0.00
    USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
    mir ttyp0 :0.0 Fri10pm 3days 0.09s 0.09s bash
    neil ttyp2 12-35-86-1.ea.co 9:40am 0.00s 0.29s 0.15s w
    ...

    请注意,第一行的输出与uptime命令的输出相同。

    top

    top命令是最近加入到UNIX命令集中的,它通过计算进程消耗CPU的时间来给进程排名。它产生下列输出:

      4:09am  up 12:48,  1 user,  load average: 0.02, 0.27, 0.17
    58 processes: 57 sleeping, 1 running, 0 zombie, 0 stopped
    CPU states: 0.5% user, 0.9% system, 0.0% nice, 98.5% idle
    Mem: 95564K av, 78704K used, 16860K free, 32836K shrd, 40132K buff
    Swap: 68508K av, 0K used, 68508K free 14508K cched

    PID USER PRI NI SIZE RSS SHARE STAT LIB %CPU %MEM TIME COMMAND
    5909 neil 13 0 720 720 552 R 0 1.5 0.7 0:01 top
    1 root 0 0 396 396 328 S 0 0.0 0.4 0:02 init
    2 root 0 0 0 0 0 SW 0 0.0 0.0 0:00 kflushd
    3 root -12 -12 0 0 0 SW< 0 0.0 0.0 0:00 kswapd
    ...

    所有这些命令,请注意,输出中都有三个数字报告平均负载。相当普遍的是,这些数字显示出从左至右的降序但是有时,又是升序排列,正如上面的输出。

    Tag:linux
  • 2009-04-11

    linux,gzip, zcat,tar命令 - [linux]

    在test目录下,有test.log文件,想要压缩

    ---------------.gz 文档!-------------------

    #gzip test.log       (会生成一个test.log.gz文档)
    (但是原test.log就没拉,如果想保留原文件,就直接:#gzip test.log >test.log.gz )
    #gzip -d test.log.gz   (解压)

    zcat 查看.gz文档的内容
    #zcat test.log.gz

    ------------------bz2文档!------------------

    #bzip2 test.log       (会生成一个test.log.bz2文档)
    (但是原test.log就没拉,如果想保留原文件,就直接:#bzip2 test.log >test.log.bz2 )
    #bzip2 -d test.log.bz2   (解压)

    bzcat 查看.bz2文档的内容
    #bzcat test.log.bz2

    --------------------tar 打包!-----------------

    tar命令的选项有很多(用man tar可以查看到),但常用的就那么几个选项,下面来举例说明一下:
    # tar -cf test.log.tar *.log
    这条命令是将所有.log的文件打成一个名为test.log.tar的包。-c是表示产生新的包,-f指定包的文件名。
    # tar -rf test.log.tar *.log2
    这条命令是将所有.log2的文件增加到all.tar的包里面去。-r是表示增加文件的意思。
    # tar -uf test.log.tar test.log
    这条命令是更新原来tartest.log.tartest.log文件,-u是表示更新文件的意思。

    # tar -tf test.log.tar
    这条命令是列出all.tar包中所有文件,-t是列出文件的意思
    # tar -xf test.log.tar
    这条命令是解出test.log.tar包中所有文件,-x是解开的意思

    ------------------tar调用gzip、bzip2------------------

    -z 调用gzip
    # tar -czf test.log.gz.tar *.log
    这条命令是将所有.log的文件打成一个tar包,并且将其用gzip压缩,生成一个gzip压缩过的包,
    # tar -xzf test.log.gztar
    这条命令是将上面产生的包解开。

    -j 调用bzip2
    # tar -cjf test.log.bz2.tar *.log
    这条命令是将所有.log的文件打成一个tar包,并且将其用bzip2压缩,
    # tar -xjf test.log.bz2.tar
    这条命令是将上面产生的包解开。

    Tag:linux bash
  • 2009-03-30

    discuz 登陆,注册链接,和头模板,以及模板数组循环的研究 - [linux]

    1.在模板里header.html可以改,但是不靠谱,因为有些地方没有调用模板,所以去改配置:common.inc.php

    先在common.inc.php文件中看到:

    $link_login = $passport_url.$passport_login_url.(strpos($passport_login_url, '?') === FALSE ? '?' : '&amp;').'forward='.$passport_forward;

    于是在服务器上 bash# grep -R-l  "passport_url" /opt/web/bbs.XXXX.com/*

    查到字符在:/opt/web/bbs.XXXX.com/forumdata/cache/cache_settings.php文件中:                         于是修改!注册也是一样的!改reaname=>""....

    2.header.html里用户名显示问题,默认是在common.inc.php的$discuz_user定义的,这里可以改掉,但只是显示,没有意义,因为发帖和在线列表都是数据库里的原始ID。接着实验,还是在common.ini.php里,只要定义一个变量,然后去template/difalut/header.html里,就可以显示了,利用了smarty的模板原理

    3.$postlist = [0]=>[a]="a"
                                [b]="b"
                       [1]=>[a]="a"
                               [b]="b"
    模板里 <!--{loop $postlist $post}-->为:变量多维数组$postlist以每个键为$post循环,及:$post[a]=="a"

    Tag:
  • 2009-03-02

    windows在linux中文本的换行符 - [linux]

    1.新建一个标准文本,把windows的文本内容靠拷贝到里面,然后传到linux服务器上。

    2.编写脚本:

    <?php

    $f=fopen('card2.txt','rb');
    while(!feof($f))
    {
        $id=fgets($f);
        $id = str_replace("\n","",$id);  //此处为替换换行符!!!   
        var_dump($id);
    }

    ?>

    Tag:linux php
  • 2008-12-29

    rsync 使用指南。。。。。留着 - [linux]

    第一步:安装rsync包
        #/usr/ports/net/rsync  (进入安装目录)
        #make install clean   (编译rsync软件包)
    第二步:编辑rsync配置文件
        配置文件在/usr/local/etc/rsyncd.conf
        缺省这个文件是没有写的权限. 
        #chmod u+w rsyncd.conf   (加上写的权限)
        #vi /usr/local/etc/rsyncd.conf  (编辑配置文件,添加用于同步或备份的信息)
           事例:
          [ceshi]               (rsync区段的设定名称)
           path = /data/ceshi   (要同步的文件或用于备份其他文件的路径)
           comment =ceshi       (描述信息)
          read only = false    (把只读权限去掉,用于备份其他服务器的数据是必须要有写的权限)
           auth users = jiang   (用于验证的帐户名)

           secrets file = /usr/local/etc/rsyncd.secrets  (保存用于验证的帐户和密码的路径)
           保存退出

     

    第三步: 创建用于验证的帐户和密码文件
        #vi /usr/local/etc/rsyncd.secrets
          jiang:bjedu    (格式:帐号:密码 ,每行一组,帐号和密码用:号分开)
        保存后,需要保证用户是root,权限是600
        #chown root:wheel /usr/local/etc/rsyncd.secrets
        #chmod 600 /usr/local/etc/rsyncd.secrets
    第四步:启动服务
       在 /etc/rc.conf 中添加 rsyncd_enable="YES"
        #/usr/local/etc/rc.d/rsyncd start
    到此服务器端就全部安装完成。
    下面就是怎么来同步数据或备份数据了
    第一步:客户机设置
    同样需要安装 rsync 包,其他设置不需要做了。
    创建 /usr/local/ceshi.test 里面只写入服务器端的密码. 这样可以使用cron进行自动同步
    命令格式:
    #rsync [option] 源路径 目标路径
    其中:
    [option]:
    a:使用archive模式,等于-rlptgoD,即保持原有的文件权限
    z:表示传输时压缩数据
    v:显示到屏幕中
    e:使用远程shell程序(可以使用rsh或ssh)
    - -delete:精确保存副本,源主机删除的文件,目标主机也会同步删除
    - -include=PATTERN:不排除符合PATTERN的文件或目录
    - -exclude=PATTERN:排除所有符合PATTERN的文件或目录
    - -password-file:指定用于rsync服务器的用户验证密码
    - -update:只同步新的数据
    源路径和目标路径可以使用如下格式:
    rsync://[USER@]Host[:Port]/Path   <–rsync服务器路径
    [USER@]Host::Path             <–rsync服务器的另一种表示形式
    [USER@]Host:Path             <–远程路径
    LocalPath                    <–本地路径
    事例1:服务器端到客户端
        #/usr/local/bin/rsync -avrt - -update - -password-file=/usr/local/ceshi.test jiang@211.153.33.100::ceshi /usr/data
       对上面命令描述一下:
       - -password-file=/usr/local/ceshi.test  (指定本地保存用于验证的密码文件路径)
       jiang@211.153.33.100(服务器端的用于验证的帐号和地址)
       ::ceshi /usr/data (rsync区段的设定名称和本地用来同步备份数据的路径)
    事例2:客户端到服务器端
        #/usr/local/bin/rsync -avrt - -update - -password-file=/usr/local/ceshi.test /usr/data jiang@211.153.33.100::ceshi
       对上面命令描述一下:
       - -password-file=/usr/local/ceshi.test  (指定本地保存用于验证的密码文件路径)
       /usr/data  (把本地/usr/data整个目录同步/备份到服务器上)
       jiang@211.153.33.100(服务器端的用于验证的帐号和地址)
       ::ceshi (rsync区段的设定名称)
    注意 :如果 /usr/data/的话就是把 /usr/data/下的数据全部备份到服务器上,不包括目录本身。

    也可以通过cron定时更新
    #crontab -e
    0 22 * * 1-5 /usr/local/bin/rsync -avrt - -update - -password-file=/usr/local/ceshi.test jiang@211.153.33.100::ceshi /usr/data   (指定星期一到五,每晚十点整进行同步)

    Tag:rsync linux