按日期归档:2013 年 5 月 19 日

自己设计修改一些常用的bat文件

清除所有盘垃圾(以前的只是系统盘,我改了多几个盘符,能清除到到G盘)【修改版】 ­

 

要轻松流畅上网你是否注意到你的电脑系统磁盘的可用空间正在一天天在减少呢?是不是像老去的猴王一样动作一天比一天迟缓呢? ­

没错!在Windows在安装和使用过程中都会产生相当多的垃圾文件,包括临时文件(如:*.tmp、*._mp)日志文件(*.log)、临时帮助文件(*.gid)、磁盘检查文件(*.chk)、临时备份文件(如:*.old、*.bak)以及其他临时文件。特别是如果一段时间不清理IE的临时文件夹 “Temporary Internet Files”,其中的缓存文件有时会占用上百MB的磁盘空间。这些LJ文件不仅仅浪费了宝贵的磁盘空间,严重时还会使系统运行慢如蜗牛。这点相信你肯定忍受不了吧!所以应及时清理系统的LJ文件的淤塞,保持系统的“苗条”身材,轻松流畅上网!朋友来吧,现在就让我们一起来快速清除系统垃圾吧!!下面是步骤很简单就两步! ­

在电脑屏幕的左下角按“开始→程序→附件→记事本”,把下面的文字复制进去(红色部分),点“另存为”,路径选“桌面”,保存类型为“所有文件”,文件名为“清理系统垃圾文件.bat”,就完成了。记住后缀名一定要是.bat,ok!你的垃圾清除器就这样制作成功了! ­

双击它就能很快地清理垃圾文件,大约一分钟不到。 阅读全文 ……

完美解决Nginx 504 Gateway time-out

最近用dedecms建的一个网站新增了大批内容,有三个栏目的内容量都超过了两千篇,超过两千三百篇的两个栏目在生成栏目列表的时候就出现了504 Gateway time-out 服务器用的是nginx,我不是很懂,服务器维护人员在网上随便找了一篇文章,修改了nginx的缓存设置,不管用,他就不管了,可是我不能不管啊,不能生成列表页面,那后面的内容不是都不能用了么?

把数据库下载到本地,在本地配置了nginx,试了很多遍,都不行,又改到Apache下面,更夸张,生成了83个页面就不能继续了,看来还是nginx更厉害一点,虽然出现504 Gateway time-out,但好歹能够全部生成。

只好又继续在网上找更多的解决办法,尝试了N多次以后,终于让我找到了一个有用的方法,想想以后可能还有碰到这样的问题,就把那篇文章复制过来放在这里,供以后参考吧,对有同样问题的朋友也是一个帮助。

下面部分是引用部分,我自己不懂技术的,在我的dedecms5.6里面有用,别人的自己尝试吧。
Nginx 502 Bad Gateway的含义是请求的PHP-CGI已经执行,但是由于某种原因(一般是读取资源的问题)没有执行完毕而导致PHP-CGI进程终止。

Nginx 504 Gateway Time-out的含义是所请求的网关没有请求到,简单来说就是没有请求到可以执行的PHP-CGI。

解决这两个问题其实是需要综合思考的,一般来说Nginx 502 Bad Gateway和php-fpm.conf的设置有关,而Nginx 504 Gateway Time-out则是与nginx.conf的设置有关。

而正确的设置需要考虑服务器自身的性能和访客的数量等多重因素。

以我目前的服务器为例子CPU是奔四1.5G的,内存1GB,CENTOS的系统,访客大概是50人左右同时在线。

但是在线的人大都需要请求PHP-CGI进行大量的信息处理,因此我将nginx.conf设置为: 阅读全文 ……

flashfxp备份

*.fqf 只读状态

 

选项\”当文件存在先项”的设置中设置成:
1.”文件较小时—覆盖” || “文件相同时–跳过” || “文件较大时—覆盖”

2.完成后关闭

 

autobak.bat:
代码如下:

CD X:\xxx\FlashFXP 
For /F %%f in (files.log) do (del %%f) 
dir *.fqf /b >files.log 
For /F %%f in (files.log) do (start flashfxp.exe %%f)

 

利用 lftp 为VPS/其他系统镜像备份

安装: yum install -y lftp

 

lftp mirror的参数如下:

 

-c, –continue 如果可能, 继续一个镜像任务

 

-e, –delete 删除在远程站点不存在的文件

 

-s, –allow-suid 根据远程站点设置相应的 suid/sgid 位

 

-n, –only-newer 只下载新的文件 (-c 没有作用)

 

-r, –no-recursion 不下载子目录

 

-p, –no-perms 不设置文件权限

 

–no-umask 不在文件上使用umask

 

-R, –reverse 反向镜像 (上传文件)

 

-L, –dereference 下载符号链接指向的文件

 

-N, –newer-than FILE 只下载比文件 FILE 更新的文件

 

-i RX, –include RX 包括匹配的文件 (只能使用一次)

 

-x RX, –exclude RX 不包括匹配的文件 (只能使用一次)

 

RX 是括展的正则表达式

 

-t Nx, –time-prec Nx 设置时间精度为 N 秒 (x=s) 分钟 (x=m) 小时 (x=h) 或者天 (x=d) 默认值 – 12 小时

 

-v, –verbose 显示详细的信息

 

–log=FILE 将执行过的命令写入日志文件<FILE>

 

–script=FILE 把命令写入脚本文件但不执行

 

–just-print, –dry-run 同 –script=<>FILE

 

当使用 -R 参数时,第一个目录为本地目录,第二个为远程目录

 

如果第二项没有填写,则采用第一个个目录的名称

 

如果两项都没填写,则采用当前的本地和远程目录

 

 

 

那么,具体是如何实现的呢?

 

1、新建一个脚步, test.txt

 

test.txt 内容如下:

 

open ftp://备份空间用户名:备份空间密码@备份空间地址

 

mirror -R -v -n -e 源文件目录 目标站目录  (把-e去掉,就不会删除目标目录废弃的文件)

 

例如:

open ftp://lftptest:123456@192.168.3.11

 

mirror -R -v -n -e /root/test/ /public_html

即是将/root/test/目录下的所有文件上传到ftp://192.168.3.11/mirror目录下。

2、新建sh脚本, upload.sh

upload.sh 内容如下:

#!/bin/bash

lftp -f /root/test.txt

记得给 upload.sh 赋可执行权限: chmod 755 /root/upload.sh

3、设置自动任务

crontab -e

加入:

每天,4时

0 4 * * * /root/upload.sh;

每周六,4时:

0 4 * * 6 /root/upload.sh;

如果两边都是独立的操作系统或VPS,可使用rsync来同步文件。

 

 

参考设置

set ftp:charset gbk

set file:charset utf-8

set ftp:passive-mode off

Linux下cp直接覆盖不提示的方法!

新做了服务器,cp覆盖时,无论加什么参数-f之类的还是提示是否覆盖,这在大量cp覆盖操作的时候是不能忍受的。。。

  把a目录下的文件复制到b目录
  cp –r a/* b
  执行上面的命令时,b存在的每个文件都会提示是否覆盖;
  cp –r –f a/* b
  执行上面的命令时,b存在的每个文件都不再会提示;
  这是我们希望的理想状态,但是有时加了-f了,怎么还会有提示呢?原来一些服务器会默认增加别名 alias cp=’cp -i’,当你执行cp时,其实执行的是cp –i。
  在终端执行alias就可以看出来了。
  [root@devdb ~]# alias
  alias cp=’cp -i’
  可以这样解决
  [root@devdb ~]# vi ~/.bashrc
  在alias cp=’cp -i’前加上”#”注释掉这行,:wq!保存推出,然后重新登陆就可以了。
=================================
alias cp=”cp -f”
直接输入以上命令,在当前shell生效。放入 ~/.bashrc 中,以后的新shell中都生效(当前shell不生效,退出再重新login以后生效)
此法新手慎用

nginx 502 Bad Gateway 错误解决办法

一些运行在Nginx上的网站有时候会出现“502 Bad Gateway”错误,有些时候甚至频繁的出现。以下是小编搜集整理的一些Nginx 502错误的排查方法,供参考:

Nginx 502错误的原因比较多,是因为在代理模式下后端服务器出现问题引起的。这些错误一般都不是nginx本身的问题,一定要从后端找原因!但nginx把这些出错都揽在自己身上了,着实让nginx的推广者备受置疑,毕竟从字眼上理解,bad gateway?不就是bad nginx吗?让不了解的人看到,会直接把责任推在nginx身上,希望nginx下一个版本会把出错提示写稍微友好一些,至少不会是现在简单的一句 502 Bad Gateway,另外还不忘附上自己的大名。

Nginx 502的触发条件

502错误最通常的出现情况就是后端主机当机。在upstream配置里有这么一项配置:proxy_next_upstream,这个配置指定了 nginx在从一个后端主机取数据遇到何种错误时会转到下一个后端主机,里头写上的就是会出现502的所有情况拉,默认是error timeout。error就是当机、断线之类的,timeout就是读取堵塞超时,比较容易理解。我一般是全写上的:

proxy_next_upstream error timeout invalid_header http_500 http_503;

不过现在可能我要去掉http_500这一项了,http_500指定后端返回500错误时会转一个主机,后端的jsp出错的话,本来会打印一堆 stacktrace的错误信息,现在被502取代了。但公司的程序员可不这么认为,他们认定是nginx出现了错误,我实在没空跟他们解释502的原理 了……

503错误就可以保留,因为后端通常是apache resin,如果apache死机就是error,但resin死机,仅仅是503,所以还是有必要保留的。

解决办法

遇到502问题,可以优先考虑按照以下两个步骤去解决。

1、查看当前的PHP FastCGI进程数是否够用:

netstat -anpo | grep "php-cgi" | wc -l

如果实际使用的“FastCGI进程数”接近预设的“FastCGI进程数”,那么,说明“FastCGI进程数”不够用,需要增大。

2、部分PHP程序的执行时间超过了Nginx的等待时间,可以适当增加nginx.conf配置文件中FastCGI的timeout时间,例如:

http  {
  fastcgi_connect_timeout 300;
  fastcgi_send_timeout 300;
  fastcgi_read_timeout 300;
  ......
  }
  ......

php.ini中memory_limit设低了会出错,修改了php.ini的memory_limit为64M,重启nginx,发现好了,原来是PHP的内存不足了。

如果这样修改了还解决不了问题,可以参考下面这些方案:

一、max-children和max-requests

一台服务器上运行着nginx php(fpm) xcache,访问量日均 300W pv左右。

最近经常会出现这样的情况:php页面打开很慢,cpu使用率突然降至很低,系统负载突然升至很高,查看网卡的流量,也会发现突然降到了很低。这种情况只持续数秒钟就恢复了。

检查php-fpm的日志文件发现了一些线索。

Sep 30 08:32:23.289973 [NOTICE] fpm_unix_init_main(), line 271: getrlimit(nofile): max:51200, cur:51200  Sep 30 08:32:23.290212 [NOTICE] fpm_sockets_init_main(), line 371: using inherited socket fd=10, “127.0.0.1:9000″  Sep 30 08:32:23.290342 [NOTICE] fpm_event_init_main(), line 109: libevent: using epoll  Sep 30 08:32:23.296426 [NOTICE] fpm_init(), line 47: fpm is running, pid 30587

在这几句的前面,是1000多行的关闭children和开启children的日志。

原来,php-fpm有一个参数 max_requests,该参数指明了,每个children最多处理多少个请求后便会被关闭,默认的设置是500。因为php是把请求轮询给每个 children,在大流量下,每个childre到达max_requests所用的时间都差不多,这样就造成所有的children基本上在同一时间 被关闭。

在这期间,nginx无法将php文件转交给php-fpm处理,所以cpu会降至很低(不用处理php,更不用执行sql),而负载会升至很高(关闭和开启children、nginx等待php-fpm),网卡流量也降至很低(nginx无法生成数据传输给客户端)

解决问题很简单,增加children的数量,并且将 max_requests 设置未 0 或者一个比较大的值:

打开 /usr/local/php/etc/php-fpm.conf调大以下两个参数(根据服务器实际情况,过大也不行)

<value name="max_children">5120</value>  <value name="max_requests">600</value>

然后重启php-fpm。

二、增加缓冲区容量大小

将nginx的error log打开,发现“pstream sent too big header while reading response header from upstream”这样的错误提示。查阅了一下资料,大意是nginx缓冲区有一个bug造成的,我们网站的页面消耗占用缓冲区可能过大。参考老外写的修 改办法增加了缓冲区容量大小设置,502问题彻底解决。后来系统管理员又对参数做了调整只保留了2个设置参数:client head buffer,fastcgi buffer size。

三、request_terminate_timeout

如果主要是在一些post或者数据库操作的时候出现502这种情况,而不是在静态页面操作中常见,那么可以查看一下php-fpm.conf设置中的一项:

request_terminate_timeout

这个值是max_execution_time,就是fast-cgi的执行脚本时间。

0s

0s为关闭,就是无限执行下去。(当时装的时候没仔细看就改了一个数字)问题解决了,执行很长时间也不会出错了。优化fastcgi中,还可以改改这个值5s 看看效果。

php-cgi进程数不够用、php执行时间长、或者是php-cgi进程死掉,都会出现502错误。

HTTP状态码分类

HTTP状态码分类

HTTP状态码由三个十进制数字组成,第一个十进制数字定义了状态码的类型,后两个数字没有分类的作用。HTTP状态码共分为5种类型:

HTTP状态码分类
分类 分类描述
1** 信息,服务器收到请求,需要请求者继续执行操作
2** 成功,操作被成功接收并处理
3** 重定向,需要进一步的操作以完成请求
4** 客户端错误,请求包含语法错误或无法完成请求
5** 服务器错误,服务器在处理请求的过程中发生了错误

HTTP状态码列表

HTTP状态码列表
状态码 状态码英文名称 中文描述
100 Continue 继续。客户端应继续其请求
101 Switching Protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
200 OK 请求成功。一般用于GET与POST请求
201 Created 已创建。成功请求并创建了新的资源
202 Accepted 已接受。已经接受请求,但未处理完成
203 Non-Authoritative Information 非授权信息。请求成功。但返回的meta信息不在原始的服务器,而是一个副本
204 No Content 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
205 Reset Content 重置内容。服务器处理成功,用户终端(例如:浏览器)应重置文档视图。可通过此返回码清除浏览器的表单域
206 Partial Content 部分内容。服务器成功处理了部分GET请求
300 Multiple Choices 多种选择。请求的资源可包括多个位置,相应可返回一个资源特征与地址的列表用于用户终端(例如:浏览器)选择
301 Moved Permanently 永久移动。请求的资源已被永久的移动到新URI,返回信息会包括新的URI,浏览器会自动定向到新URI。今后任何新的请求都应使用新的URI代替
302 Found 临时移动。与301类似。但资源只是临时被移动。客户端应继续使用原有URI
303 See Other 查看其它地址。与301类似。使用GET和POST请求查看
304 Not Modified 未修改。所请求的资源未修改,服务器返回此状态码时,不会返回任何资源。客户端通常会缓存访问过的资源,通过提供一个头信息指出客户端希望只返回在指定日期之后修改的资源
305 Use Proxy 使用代理。所请求的资源必须通过代理访问
306 Unused 已经被废弃的HTTP状态码
307 Temporary Redirect 临时重定向。与302类似。使用GET请求重定向
400 Bad Request 客户端请求的语法错误,服务器无法理解
401 Unauthorized 请求要求用户的身份认证
402 Payment Required 保留,将来使用
403 Forbidden 服务器理解请求客户端的请求,但是拒绝执行此请求
404 Not Found 服务器无法根据客户端的请求找到资源(网页)。通过此代码,网站设计人员可设置“您所请求的资源无法找到”的个性页面
405 Method Not Allowed 客户端请求中的方法被禁止
406 Not Acceptable 服务器无法根据客户端请求的内容特性完成请求
407 Proxy Authentication Required 请求要求代理的身份认证,与401类似,但请求者应当使用代理进行授权
408 Request Time-out 服务器等待客户端发送的请求时间过长,超时
409 Conflict 服务器完成客户端的PUT请求是可能返回此代码,服务器处理请求时发生了冲突
410 Gone 客户端请求的资源已经不存在。410不同于404,如果资源以前有现在被永久删除了可使用410代码,网站设计人员可通过301代码指定资源的新位置
411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息
412 Precondition Failed 客户端请求信息的先决条件错误
413 Request Entity Too Large 由于请求的实体过大,服务器无法处理,因此拒绝请求。为防止客户端的连续请求,服务器可能会关闭连接。如果只是服务器暂时无法处理,则会包含一个Retry-After的响应信息
414 Request-URI Too Large 请求的URI过长(URI通常为网址),服务器无法处理
415 Unsupported Media Type 服务器无法处理请求附带的媒体格式
416 Requested range not satisfiable 客户端请求的范围无效
417 Expectation Failed 服务器无法满足Expect的请求头信息
500 Internal Server Error 服务器内部错误,无法完成请求
501 Not Implemented 服务器不支持请求的功能,无法完成请求
502 Bad Gateway 充当网关或代理的服务器,从远端服务器接收到了一个无效的请求
503 Service Unavailable 由于超载或系统维护,服务器暂时的无法处理客户端的请求。延时的长度可包含在服务器的Retry-After头信息中
504 Gateway Time-out 充当网关或代理的服务器,未及时从远端服务器获取请求
505 HTTP Version not supported 服务器不支持请求的HTTP协议的版本,无法完成处理

mysql数据库相关思路备份

今天需要把A B两个网站的一些数据更新到C网站,数据结构使用B网站的,A B网站略有不同
思路如下:
1. 复制B数据库到C
2. 复制A数据库到临时数据库L
3. 同步L数据库的结构为B
4. 导出L数据
5. 导入C

中间可能用到的:

1. 不拷贝表数据,只拷贝结构。

CREATE TABLE new_table LIKE old_table

2. 通过 SELECT 查询来拷贝,new_table 表会丢失主键、索引等信息。

引用

CREATE TABLE new_table AS( SELECT * FROM old_table)

3. 完全拷贝表

CREATE TABLE new_table LIKE old_table;INSERT INTO new_table SELECT * FROM old_table;

4. 仅拷贝字段

CREATE TABLE new_table AS( SELECT field1, field2 FROM old_table)

5. 部分拷贝

CREATE TABLE new_table AS( SELECT * FROM old_table WHERE field1 = ‘mangguo’)

CentOS 5.2下Openfire服务器配置笔记

1.java环境搭建

chmod +x jdk-6u25-linux-x64.bin
./jdk-6u25-linux-x64.bin
mv jdk1.6.0_25/ /usr/local/jdk
vim /etc/profile ADD
最后加上如下
—————————————–
JAVA_HOME=”/usr/local/jdk”
CLASS_PATH=”$JAVA_HOME/lib:$JAVA_HOME/jre/lib”
PATH=”.:$PATH:$JAVA_HOME/bin”
export JAVA_HOME
—————————————-

source /etc/profile

2.下载安装openfire

wget http://download.igniterealtime.org/openfire/openfire-3.8.1-1.i386.rpm

rpm -ivh openfire-3.8.1-1.i386.rpm
/etc/init.d/openfire start
/etc/init.d/openfire restart

3.配置 openfire

http://localhost:9090
为了更好地支持中文请输入以下的Mysql连接

jdbc:mysql://localhost:3306/openfire?useUnicode=true&characterEncoding=utf8

4.下载用户终端

 

http://www.igniterealtime.org/projects/spark/index.jsp

 

http://www.pandion.be/download/start

5 如果需要Nginx做代理

打开nginx的配置文件nginx.conf,增加如下行:
 #gzip  on;
#增加
   upstream bk.openfire {
        server 127.0.0.1:7070;
    }
location / {
            root   html;
            index  index.html index.htm;
}
后面增加 :
location /http-bind {
            proxy_pass http://bk.openfire;
            proxy_buffering off;
            proxy_redirect off;
            proxy_read_timeout 120;
            proxy_connect_timeout 120;
}

黑字为原来的配置, 红色为需要增加的行。

openfire 安装目录 /opt/openfire

 

 

BAT合并文件以及统计数

近期公司采集数据,大概一个文件夹下60万+的txt文档,需要做一个合并,然后清空这些文档,bat如下
————————————————————-

set /p all=复制文件名:
copy *.txt %all%.txt
copy %all%.txt D:\%all%user.txt
del *.txt

 

————————————————————-

统计这些文件的行数(计算采集用户数)
——————————————————

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET lines=0
FOR /F "tokens=* delims=" %%i IN (%1) DO (
    SET /A lines=!lines!+1
)
ECHO !lines!

 

————————————————–
以上代码另存为wc.bat
使用代码  wc xxx.,txt