2011年9月29日 星期四

修改Linux 資料夾顏色

你一定對於對於Linux 資料夾的顏色感到很頭痛吧,怎麼會用那麼不好讀的藍紫色,還好你可以把這一個難看的顏色改掉。

1. #vi /etc/DIR_COLORS

2. 修改DIR 01;34 成DIR 01;36

3. eval `dircolors /etc/DIR_COLORS` 讓剛才的設定檔生效

4. cp /etc/DIR_COLORS ~/.dir_colors 把剛才改得設定檔存來

完成後ls 你的資料夾顏色變了,好看多了對吧。

2011年9月20日 星期二

yum OpenOffice

除了Microsoft 爛到爆還要錢的office 軟體外你還是有其他的選擇就是OpenOffice。

不用擔心因為介面不同而不知道怎使用因為他跟Office 的操作有85% 類似,還有比Office更好用的功能。

使用yum 安裝的辦法

yum -y groupinstall "Office/Productivity"

恭喜你又遠離邪惡微軟一步了。

>>歡迎前往Superfunction Linux

2011年9月19日 星期一

yum Tomcat

安裝Tomcat 之前要先安裝Apache 與JDK

參考文件
yum Apache

yum JDK

當你的伺服器需要執行JAVA,JSP 等程式語言的時候就要Tomcat 這隻貓。

利用yum 安裝Tomcat
#yum -y install tomcat5 tomcat5-webapps tomcat5-admin-webapps

啟動Tomcat
#service tomcat5 start

連結到網頁 http://localhost:8080

出現這一貓就表示成功了。

>>歡迎前往Superfunction Linux

yum Apache

安裝Apache
#yum -y install httpd

啟動httpd 服務
#/etc/init.d/httpd start

連接到網頁
http://localhost

表示成功

>>歡迎前往Superfunction Linux

yum JDK

在Linux 環境下安裝SDK。
#yum -y install java-1.6.0-openjdk java-1.6.0-openjdk-devel

安裝完成後確認JDK 的版本
#java -version

#vi /etc/profile

JAVA_HOME=/usr/lib/jvm/java-1.6.0 #依照安裝的路徑修改
PATH=$PATH:$JAVA_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH JAVA_HOME CLASSPATH
複製以上設定

#reboot

>>歡迎前往Superfunction Linux

2011年9月15日 星期四

ntfs-3g Windows 資料夾權限管理

ntfs-3g 使用mapping 的方式管理Windows 資料夾權限,詳細的做法可以參考原廠的文件說明。
http://www.tuxera.com/community/ntfs-3g-advanced/user-mapping/

都是英文我知道大家都懶得看整理了一下,因為測試的時候是用虛擬機器所以就是咖原廠的圖跟大家說明我的步驟:
1.請先下載ntfs-3g 提供的tools http://pagesperso-orange.fr/b.andre/tools.zip

2.在C:\ 建立一個資料夾 c-src,下載的檔案解壓縮完搬過去這一個資料夾

3.開啟cmd 模式切換資料夾到C:\c-src 下

4.$usermap > mapping.tmp
$type mapping.tmp 看一下檔案的內容是不是差不多

5.$usermap c: 設定Windows 資料夾與Linux 使用者的對應關係,user 就是輸入你的Linux 使用者名稱,group 輸入Linux 群組名稱


6.設定完成在C:\ 下面會出現.NTFS-3G\UserMapping 當中就會紀錄兩個OS 的權限對應關係

7.回到Linux 環境將NTFS 硬碟mount 上來之後查看權限確認設定

>>歡迎前往Superfunction Linux

2011年9月14日 星期三

設定檔案備忘 --持續更新中 更新日期2011-09-16

因為記性不好所以把Linux 系統會用到的設定檔案位置做成一個筆記。

修改資料夾顏色
/etc/DIR_COLORS

看系統版本
cat /etc/issue

修改網路設定
/etc/sysconfig/network-scripts/ifcfg-eth0

重啟網路服務
/etc/init.d/network restart

重啟ssh 服務
/etc/inid.d/sshd restart

>>歡迎前往Superfunction Linux

yum ssh

ssh 是一個相較於telnet 協定比較安全的通訊協定,差別在連線有使用到公私鑰的技術加密連線。

使用yum 安裝
yum -y install openssh-server

安裝完畢後重新啟動服務確認安裝OK
/etc/init.d/sshd restart

>>歡迎前往superfunction Linux

2011年9月13日 星期二

renice

指令 renice

語法
renice [+|-] nicenumber [option] targets

操作
-u
該使用者的process 的優限度都會被修改
-p
指定PID 的優先度被修改

說明
修改所指定的使用者或是PID 的優先度。

範例
修改PID 500 的優先度。
$renice 20 500

>>歡迎前往Superfunction Linux

nice

指令 nice

語法
nice [-n adjustment] [command]
nice [-adjustment] [command]

操作
-n
設定要調整的優先順序,預設值是10
-v
版本訊息

說明
指定process 的優先度,預設是10,一般使用者調整的範圍是1~19,root 權限調整的範圍是在-20~19。

>>歡迎前往Superfunction Linux

ORA-01847

ORA-01847 day of month must be between 1 and last day of month

錯誤原因:使用時間日期格式的時候輸入不合乎時間日期規則的時間日期資料

處理辦法:輸入有效的時間日期格式,檢查使用的日期區間是否合法

範例

SELECT TO_DATE('2010/12/32', 'YYYY/MM/DD')
FROM DUAL;

這樣就會產生ORA-01847 的錯誤,因為在這一個案例中日期超過31

>> 歡迎前往 Superfunction ORA error code

ORA-01407

ORA-01407 cannot update (string) to NULL

錯誤原因:UPDATE 的欄位不可以為空

處理辦法:修正UPDATE 中對非空欄位塞入空值的敘述

範例

建立一個資料表。

CREATE TABLE table
(
AA number not null,
BB varchar2(50) not null );

所建立的欄位AA ,BB 都是要求不可以為空的值。

UPDATE table
SET AA = null
WHERE BB = 100001;

在UPDATE 敘述中有塞入空值就會發生ORA-01407 的錯誤。

>> 歡迎前往 Superfunction ORA error code

ORA-00923

ORA-00923 FROM keyword not found where expected

錯誤原因:在執行SELECT 敘述時沒有FROM 這個關鍵字

處理辦法:把FROM 這一個關鍵字加上去就好了,很簡單

範例

以下的SQL 敘述發生的錯誤是在於敘述式中沒有FROM 關鍵字的使用。

SELECT * TABLE

請修正與法如下,將FROM 關鍵字加到敘述式中。

SELECT * FROM TABLE

>> 歡迎前往 Superfunction ORA error code

ORA-01756

ORA-01756 quoted string not properly terminated

錯誤原因:在SQL敘述中字串要使用單引號包裝起來,但是單引號少一邊

處理辦法:修正SQL敘述將字串用單引號包裝起來。

範例

下面的SQL敘述會產生ORA-01756 的錯誤,發生的原因是在於當中所要處理的字串aa 只有使用一個單引號去包裝處理,缺少了另外一邊的單引號包裝。

SELECT AA, BB FROM TABLE WHERE AA = 'aa

請開發人員對於這一個錯誤作以下的修正,把整個變數用單引號完整的包裝起來,修改成'aa' 的格式。

SELECT AA, BB FROM TABLE WHERE AA = 'aa'

>> 歡迎前往 Superfunction ORA error code

ORA-01789

ORA-01789 query block has incorrect number of result columns

錯誤原因:在SQL 敘述中有使用到UNION 連接兩部分敘述但是SELECT 的項目數量不一致

處理辦法:修改SELECT撈取的項目數量一致

範例

以下的敘述就是會發生ORA-01789 的錯誤,因為SELECT的欄位有不一致的狀況。

SELECT AA, BB
FROM TABLE
UNION
SELECT AA
FROM TBALE A

UINION 前的SQL 敘述撈取了AA, BB 兩個項目,但是後半段的SQL 卻只有AA 的項目,因為兩段UNION 的SQL 撈取的欄位數量不一致所以導致錯誤。

SELECT AA, BB
FROM TABLE
UNION
SELECT AA, BB
FROM TBALE A

>> 歡迎前往 Superfunction ORA error code

2011年9月12日 星期一

ORA-01401

ORA-01401 inserted value too large for column

發生原因:企圖INSERT 的資料長度超過欄位限制

處理辦法:
1.調整SQL 敘述中所操作的值以符合所要塞入的欄位
2.修改資料表的欄位長度限制以符合所要操作的資料長度

範例

建立一個資料表,設定兩個欄位是AA 與BB 長度設定為VARCHAR(2)。

CREATE TABEL TABLE(
AA VARCHAR(2),
BB VARCHAR(2)
)

今天要INSERT 一筆新的資料到資料表中。

INSERT INTO TABEL(
AA,
BB)VALUES(
'aaa',
'bb'
)

這樣就會出現ORA-01401 的錯誤,因為AA的欄位長度限制是VARCHAR(2) 但是INSERT的資料長度是3,因此超過欄位長度的限制,因此修改INSERT 的資料長度或是修改資料表的長度限制即可以解決。

>> 歡迎前往 Superfunction ORA error code

ORA-01438

ORA-01438 value larger than specified precision allows for this column

發生原因:在執行INSERT或是UPDATE的時候,給值的數字格式資料長度超過限制

處理辦法:
1.修改數字欄位的資料長度在限制的長度之內
2.修改資料表的資料長度限制

範例
建立一個資料表,設定資料長度分別為NUMBER(2)及VARCHAR(2)。

CREATE TABLE TABEL_NAME(
AA NUMBER(2),
BB VARCGAR(2)
)

這樣就會發生ORA-01438的錯誤,因為AA的欄位長度是2但是卻給了一個長度是3的值。

INSERT TABELE_NAME(
AA,
BB)
VALUES(
123,
'bb')

要排除這樣的錯誤有兩個方法,把INSERT值的長度修改符合限制的長度2。

INSERT TABELE_NAME(
AA,
BB)
VALUES(
12,
'bb')

或是修改資料表的設計。

ALTER TABLE TABLE_NAME
MODIFY AA NUMBER(3)

>> 歡迎前往 Superfunction ORA error code

ORA-00955

ORA-00955 name is already used by an existing object

錯誤原因:開發人員建立的table, view, index, synonym 的名稱已經被使用

處理辦法:
1.建立唯一的名稱的object
2.drop 已經建立的object 名稱重新建立

範例
要查詢object 的名稱是不是已經存在,變數帶入你要查詢的變數名稱即可以查詢你所用的object是不是已經存在。

SELECT * FROM all_objects
WHERE object_name = 'NAME'

>> 歡迎前往 Superfunction ORA error code

ORA-27101

Ora-27101 shared memory realm does not exist

發生原因:無法取得分享記憶體的空間

處理辦法:重新設定記憶體的使用範圍

>> 歡迎前往 Superfunction ORA error code

ORA-01417

ORA-01417 a table may be outer joined to at most one other table

發生原因:開發人員使用outer join 資料表一對多個資料表的對應

處理辦法:請開發人員修正outer join 的使用方法,修改資料表的對應關係。

範例

以下的SQL 敘述就會發生ORA-01417 的錯誤。

SELECT CUSTOMER.ID, CUSTOMER.NAME, CUSTOMER.BIRTHDAY
FROM CUSTOMER, ORDER, PRODUCT
WHERE CUSTOMER.ID = ORDER.ID(+)
AND PRODUCT.ID = ORDER.ID(+)

這樣的錯誤是因為資料表outer join 的關係發生錯誤,ORDER.ID 對應兩個資料表,請修正對應資料表的對應關係如下。

SELECT CUSTOMER.ID, CUSTOMER.NAME, CUSTOMER.BIRTHDAY
FROM CUSTOMER, ORDER, PRODUCT
WHERE CUSTOMER.ID = ORDER.ID(+)
AND PRODUCT.ID = ORDER.ID

>> 歡迎前往 Superfunction ORA error code

yum FileZilla

安裝超好用的FTP 傳輸工具FileZilla

yum -y install filezilla


>> 歡迎前往 Superfunction Linux

2011年9月11日 星期日

取得與設定系統資源

標頭檔
#include <sys/resouece.h>

函式定義
int getpriority(int which, id_t who) 取得優先權設定資料
int setpriority(int which, id_t who, int priority) 設定優先權
int getrlimit(int resource, struct rlimit *r_limit) 取得系統資源限制資料
int setrlimit(int resource, conset struct rlimit *r_limit) 設定系統限制資源資料
int getrusage(int who, struct rusage *r_usage) 取得CPU 消耗時間資料

程式說明
取得CPU 使用資訊與設定系統資源限制,並設定檔案限制測試產生錯誤訊息。

編譯方式
gcc -o limit limit.c -lm

執行結果
$./limit
$CPU usage: user = 0.000000, system = 0,009998
current priority = 0
current FSIZE limit: soft=-1, hard=-1
seeting a 2k file zise limit
檔案大小超過上限

程式碼
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <math.h>
#include <sys/types.h>
#include <sys/resource.h>
#include <sys/times.h>

void work()
{
    FILE *f;
    int i;
    double x = 4.5;

    f = tmpfile();

    for(i = 0; i < 10000; i++){
        fprintf(f, "do some output\n");
        if(ferror(f)){
            fprintf(stderr, "error writing to tmporary file\n");
            exit(1);
        }
    }

    for(i = 0; i < 10000; i++){
        x = log(x*x + 3.21);
    }
}
int main()
{
    struct rusage r_usage;
    struct rlimit r_limit;
    int priority;

    work();

    getrusage(RUSAGE_SELF, &r_usage);

    /*取的CPU 使用資訊*/
    printf("CPU usage: user = %ld.%06ld, system = %ld,%06ld\n",
            r_usage.ru_utime.tv_sec, r_usage.ru_utime.tv_usec,
            r_usage.ru_stime.tv_sec, r_usage.ru_stime.tv_usec);

    /*取的目前優先權狀況*/
    priority = getpriority(PRIO_PROCESS, getpid());
    printf("current priority = %d\n", priority);

    /*檔案限制狀況*/
    getrlimit(RLIMIT_FSIZE, &r_limit);
    printf("current FSIZE limit: soft=%ld, hard=%ld\n",
            r_limit.rlim_cur, r_limit.rlim_max);

    /*設定檔案限制*/
    r_limit.rlim_cur = 2048;
    r_limit.rlim_max = 4096;

    printf("seeting a 2k file zise limit\n");
    setrlimit(RLIMIT_FSIZE, &r_limit);

    work();

    return 0;
}

>>歡迎前往Superfunction C Language

2011年9月10日 星期六

syslog


syslog


標頭檔: #include <syslog.h>


函式定義: void syslog(int priority, const char *message, arguments...)


說明

syslog 會將log 訊息回寫到裝置的/var/log 資料內。

在syslog 中priority 的參數是經過重要性等級(severity level) 和裝置值(facility value) 經過OR 運算取得。

重要信等級的列表
LOG_EMERGY: 緊急狀況 
LOG_ALERT: 高優先處理問題
LOG_CRIT: 關鍵錯誤
LOG_ERR: 錯誤
LOG_WARNING: 警告訊息
LOG_NOTICE: 需要注意特事項
LOG_INFO: 資訊
LOG_DEBUG: 除錯訊息


範例

#include <stdio.h>
#include <stdlib.h>
#include <syslog.h>

int main()
{
    FILE *f;

    f = fopen("not here", "r");

    if(!f){
        syslog(LOG_ERR|LOG_USER, "WOO -%m\n");
    }

    return 0;
}
>>歡迎前往Superfunction C Language

2011年9月9日 星期五

置換檔案中指定的文字

$INPUT_FILE 輸入的檔案
$OUT_FILE 輸出的檔案
$TARGER 目標文字
$REPLACE 置換文字

grep -rl $INPUT_FILE * | xargs sed -i 's/'$TARGER'/'$REPLACE'/g' $OUT_FILE

如此即可以將檔案中指定的文字置換成要修改的文字。

>> 歡迎前往 Superfunction Linux

yum Google Chrome

編輯檔案 /etc/yum.repos.d/google.repo,將載點的資料建立。

32-bit
[google]
name=Google - i386
baseurl=http://dl.google.com/linux/rpm/stable/i386
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

64-bit
[google64]
name=Google - x86_64
baseurl=http://dl.google.com/linux/rpm/stable/x86_64
enabled=1
gpgcheck=1
gpgkey=https://dl-ssl.google.com/linux/linux_signing_key.pub

安裝穩定版
yum -y install google-chrome-stable

安裝Beta版
yum -y install google-chrome-beta

安裝非穩定版(不知道要裝這一版本是要做啥?都不穩定了除非你要幫google 測試bug 不然沒有人會想要用吧。)
yum -y install google-chrome-unstable


>> 歡迎前往 Superfunction Linux

指令未結束的連接符號


當使用者在一個指令列表示需要繼續下達指令的延續符號使用"\" 表示。

範例
$ls -ltr

可以表示成
$ls \
#> -ltr

所輸出的結果會是一樣的,只是使用了用了"\" 表示指令還未結束,如此而已提供參考。
>> 歡迎前往 Superfunction Linux

2011年9月8日 星期四

yum vim

使用yum 安裝vim 編輯器。
yum install vim-X11 vim-common vim-enhanced vim-minimal

vim 是一個評價相當兩極的程式碼編輯器,愛用者會相當支持他但是反對者也是相當的排斥,vim 有一定的學習陣痛期,但是熟悉他的操作後可以獲得極佳的開發效率。

>> 歡迎前往 Superfunction Linux

yum gcc

gcc 編譯器一開始只針對C 語言提供編譯的功能,但是目前已經有很好的延伸性,可以用於編譯其他程式語言。

使用yum 安裝gcc 編譯器。
yum -y install gcc

安裝完成後可以找一支之前編譯OK 的C 程式測試一下或是自己寫一個小範例編譯測試一下即可。

>> 歡迎前往 Superfunction Linux