2011年12月 的存檔

linux中獲取昨天或明天時間的方法

2011年12月31日 沒有評論

date命令可以獲取當前的時間,通過man,可以看到date有很多參數可以用,很容易做到格式化,例如:

date +"%F"
輸出格式:2011-12-31

date +"%F %H:%M:%S"
輸出格式:2011-12-31 16:29:50

這都是打印出系統的當前時間,如果要獲取相對當前時間的某個時間,需要怎么做,通過 -d 參數就能實現。例如:

date -d"tomorrow" +"%F %H:%M:%S"
輸出明天這個時候的時間

date -d"yesterday" +"%F %H:%M:%S"
輸出昨天這個時候的時間

如果說我想獲取13天前的時間怎么辦,-d參數還有更加靈活的用法,例如:

date -d"-1 day ago" +"%F %H:%M:%S"
輸出明天這個時候的時間

date -d"1 day ago" +"%F %H:%M:%S"
輸出昨天這個時候的時間

date -d"1 week ago" +"%F %H:%M:%S"
輸出7天前這個時候的時間,等價于
date -d"7 day ago" +"%F %H:%M:%S"

可以看到ago的強大了吧,第一個數字可以是負數,負數表示將來時間,正數表示前面已經過去的時間,第二個參數minute、hour、day、month、week。

分類: Linux 標簽: ,

nginx配置rewrite時報directive “rewrite” is not terminated by “;”

2011年12月23日 沒有評論

nginx中可以使用rewrite配置url的重定向,rewrite指令可以位于server段,也可以位于location中,配置rewrite后通過/usr/local/nginx/sbin/nginx -t檢查配置時,出現如下錯誤:

nginx: [emerg] directive "rewrite" is not terminated by ";" in /usr/local/nginx/conf/nginx.conf:139
nginx: configuration file /usr/local/nginx/conf/nginx.conf test failed

解決的辦法是把規則段使用引號引起來。例如:

rewrite ^/u_(.{7})\.js$ /action/js.php?i=$1 break;
修改為
rewrite "^/u_(.{7})\.js$" /action/js.php?i=$1 break;
本條可以不用引號
rewrite ^/u_(\d+)\.js$ /action/js.php?i=$1 break;

為什么有些必須要引號,有些又可以省略呢,仔細看第一條規則,里面出現了符號 “{、}”,應該是它造成的,因為配置文件中都是用它來作為配置的段起止標記,所以為了安全起見,最好還是都帶上引號。

php中安裝memcached擴展

2011年12月21日 沒有評論

想要在php中使用memcached,就必須按照支持memcached的擴展,目前有兩種,一個是memcache,另一個是memcached。memcache是原生實現的,支持OO和非OO兩套接口并存,而memcached是使用libmemcached,只支持OO接口。更多關于他們的區別,請參考:http://hi.baidu.com/dong_love_yan/blog/item/afbe1e12d22e7512203f2e21.html。本文以安裝memcached擴展為例。

libmemcached下載地址:https://launchpad.net/libmemcached/+download

memcached下載地址:http://pecl.php.net/package/memcached

使用wget下載

wget http://launchpad.net/libmemcached/1.0/1.0.2/+download/libmemcached-1.0.2.tar.gz

wget http://pecl.php.net/get/memcached-1.0.2.tgz

得到兩個文件libmemcached-1.0.2.tar.gz和memcached-1.0.2.tgz

安裝libmemcached-1.0.2.tar.gz,解壓后進入解壓的文件夾,執行

./configure --prefix=/usr/local/libmemcached --with-memcached

make

make install 

安裝memcached-1.0.2.tgz,解壓后進入解壓的文件夾,執行

/usr/local/php/bin/phpize 	

./configure --with-php-config=/usr/local/php/bin/php-config  --with-libmemcached-dir=/usr/local/libmemcached/

make

make install 

其中 phpize位于php安裝路徑的bin目錄下

修改php.inp,增加如下信息:

extension=memcached.so
分類: Linux 標簽: ,

centos下memecached安裝筆記

2011年12月21日 沒有評論

centos下memecached安裝筆記

項目地址:http://memcached.org/,選一個比較新的版本,本文選用的memcached-1.4.10.tar.gz,使用wget下載到本地

wget http://www.memcached.org/files/memcached-1.4.24.tar.gz

memecached依賴libevent庫,可以用rpm -qa | grep libevent檢查本機是否裝有該庫,如果沒有按照,用yum安裝,

yum -y install libevent libevent-devel

解壓下載的源代碼,進入解壓后的文件夾,執行

./configure --prefix=/usr/local/memcached
make
make install

如果不出意外,memcached服務就安裝成功了,安裝的路徑為/usr/local/memcached,啟動服務如下:

/usr/local/memcached/bin/memcached -d -m 128 -l 127.0.0.1 -u root

其中
-d 以守護程序(daemon)方式運行 memcached;
-m 設置 memcached 可以使用的內存大小,單位為 M;
-l 設置監聽的 IP 地址,如果是本機的話,通常可以不設置此參數;
-p 設置監聽的端口,默認為 11211,所以也可以不設置此參數;
-u 指定用戶,如果當前為 root 的話,需要使用此參數指定用戶。
更多參數可以使用 /usr/local/memcached/bin/memcached -h 獲取。

停止服務可以使用kill -9 memcached進程號

有一個perl腳本的工具,可以查看memcached的運行情況,下載地址:memcached-tool
運行方式:

perl memcached-tool 127.0.0.1:11211 stats
分類: Linux 標簽:

linux清空文件文本內容

2011年12月20日 2 條評論

以前一直用echo的方式來清空一個文件的內容,例如 echo “” > file_name,這樣雖說能清掉文件的內容,但是文件會有一個空行,其實cat能更好的勝任此項任務,cat 一個空文件然后重定向文件即可。那里去找這個空文件呢,系統的/dev/null就是一個很好選擇,所以如下命令

cat /dev/null > file_name

就可以徹底清空文件的內容了。

分類: Linux 標簽:

>/dev/null 2>&1含義

2011年12月20日 沒有評論

執行linux命令或腳本時,如果不想打印出錯誤信息,可以使用

command 2>/dev/null

注意:2>/dev/null中間不要有空格

同樣,如果不想看到標準的輸出,則可以這樣

command 1>/dev/null

要是不想看到任何輸出,則:

command >/dev/null 2>&1

linux有3個默認的I/O

  1. 0 是標準輸入,一般是鍵盤
  2. 1 是標準輸出,一般是屏幕了
  3. 2 是標準錯誤,有時候屏幕上可以看到,但是重定向的文件中看不到的就是它了

現在知道上述的1、2的含義了,所以第一條命令就是把命令的錯誤信息重定向到一個空設備中,即丟棄此信息,第二條就是把標準輸出重定向到空設備中,最后一條是把標準輸出(默認)重定向到空設備,同時把錯誤信息定向到標準輸出中,當然可以這么寫

command 1>/dev/null 2>&1
分類: Linux 標簽: ,

MySql表結構修改常用語句

2011年12月20日 沒有評論
  • 增加列

增加的列位于最后

alter table table_name add col_name varchar(20);

alter table table_name add col_name varchar(20) default 'test' not null;

alter table table_name add column col_name varchar(20) default 'test' not null;

增加的列在指定的列之后

alter table table_name add col_name varchar(20) after exists_col_name;

增加的列位于第一列

alter table table_name add col_name varchar(20) first;
  • 修改列

修改列的類型

alter table table_name modify col_name varchar(40);	//假設原來的類型是varchar(20)

alter table table_name modify col_name int(11);		//從varchar修改為int

alter table table_name change col_name col_name varchar(20);	//從int修改為varchar

修改列名

alter table table_name change old_col_name new_col_name varchar(20);
  • 刪除列
alter table table_name drop col_name;

alter table table_name drop column col_name;
分類: MySQL 標簽: ,

freemarker的list指令中隱藏的變量

2011年12月17日 沒有評論

freemarker的list指令遍歷一個list集合中的每一個元素,例如:

<#list userLists as user>
	${user.name}
	...
</#list>

其實list指令還隱含了兩個變量,

1、item_index 該變量將返回元素在集合里的索引值,從0開始計數;

2、item_has_next 該變量是boolean型,false表明該元素是Sequences里的最后一個元素。

上述例子中如果需要把序號打印出來,使用${user_index}即可,同時如果想判斷是否是最后一個元素,使用 user_has_next就行了。

給grep定義別名

2011年12月16日 沒有評論

grep算是一個用的比較多的命令吧,很多時候grep都是配合其他命令一起使用,例如查看系統進程是否有某個進程,就可以用

ps aux | grep xxx

如果系統存在該進程,就會被顯示出來,不過不管有沒有xxx,都會打印出含有”grep xxx”一行,有時候不細心,以為存在xxx進程,要是不想看到這個行,可以這樣

ps aux | grep xxx | grep -v grep

每次執行都這樣可能會覺得有點麻煩,那也可以使用alias的方式,來個一勞永逸,把下面命令

alias grep=”grep -v grep | grep”

加到/etc/bashrc或用戶更目錄下的.bashrc文件中即可。

分類: Linux 標簽: ,

在jdbc配置logSlowQueries信息

2011年12月15日 沒有評論

MySql服務器端本身可以通過配置以日志的方式記錄下來那些耗時的sql語句,對給系統調優提供一些參考信息,同樣java的jdbc Driver也支持這樣的功能,只需要在jdbc中增加logSlowQueries和配置即可slowQueryThresholdMillis,其中logSlowQueries參數設置是否打印出慢sql,slowQueryThresholdMillis定義一個時間,單位是毫秒,超過這個時間的就是慢sql,也就會打印出來。例如jdbc配置如下:

jdbc:mysql://localhost:3306/database_name?autoReconnect=true&useUnicode=true&characterEncoding=utf8
&logSlowQueries=true&slowQueryThresholdMillis=0

無覓相關文章插件,快速提升流量

30选5怎么中奖