2014年3月28日 星期五

Linux - Crontab - 手動正常排程失敗

重點應該在Crontab執行SH檔案跟直接使用root執行還是有些許差異,
在於【系統環境】的配置不同,找了許多文章都教導:
 1.使用絕對路徑。
   2.使用前先執行/etc/profile系統配置檔案。
而我遇到的問題是Tomcat引入的環境變數編碼不同,造成原本正常的中文字都變亂碼
手動執行引入的編碼是UTF-8
排程執行引入的編碼卻是ANSI_X3.4-1968

所以解決方式就是在SH檔案的開頭加入。
#!/bin/ksh
source /etc/profile


2014年3月14日 星期五

Shell Script 指令置換 (命令替換)

` 反引號、 $(command) 皆可以用來做指令置換 (命令替換),將反引號、 $(command) 中的字符串做為命令來執行,我們在用shell編程時經常用的到。將系統命令的執行結果賦給一個變量。

A=`date`
echo $A 顯示的不是date而是當時的時間串
比如有一文件A的內容如下
ABCDEFG
1234456
abcdefg

B=`cat A|grep 234` # 檢索文件A中含有字符串234的行
echo $B 將顯示為1234456
echo "$B" 將顯示為什麼?
echo "\$B" 將顯示為什麼?


String contains in Shell Script

string='My string';

if [[ $string == *My* ]]
then
  echo "It's there!";
fi

Linux 運用 date 指令取得日期時間


1. 取得今天的日期時間
date '+%Y%m%d%H%M%S'

2. 取得昨天的日期時間
date -d'-1 day' 或 date -d'1 day ago'

3. 取得明天的日期
date -d'1 day'

4. 取得上個月的日期
date -d'-1 month'

5. 取得上星期的日期
date -d'-1 week'



$ date --date="now"   // 現在時間

$ date --date="yesterday"  // 昨天

$ date --date="1 days ago"  // 昨天

$ date --date="3 days ago"  // 三天前

$ date --date="tomorrow" // 明天

$ date --date="1 days" // 明天

$ date --date="3 days" // 三天後

 

格式化輸出:

date [+format]

$ date +"%Y %m-%d, %H:%M"

2014年3月6日 星期四

Java Applet 開啟本地資料夾

Java Applet 簡介與範例可以參照 Wiki
http://zh.wikipedia.org/wiki/Java_applet

import java.applet.Applet;
import java.io.File;
import java.io.IOException;

public class OpenExplorer extends Applet {
/**

*/
private static final long serialVersionUID = 1L;

public void init() {
        //Execute a job on the event-dispatching thread; creating this applet's GUI.
String url = getParameter("filepath").replace("file:", "").replaceAll("\\\\|/", "\\"+System.getProperty("file.separator"));
System.out.println(getParameter("filepath"));
File f = new File(url);
String command = "";
if(!f.isDirectory()) command = "/select,";

        try {
Process p = new ProcessBuilder("explorer.exe", command + url).start();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
        
    }

}