搜尋此網誌

2014年9月1日 星期一

Linux Server的/var/spool/clientmqueue(或/var/spool/postfix/maildrop)堆積大量小檔案的解決辦法

linux server中,有時候在/var/spool/postfix/maildrop目錄下會發現堆積了無數個小文件,使當前硬碟使用到9X%。


1.原因:由於linux在執行cron時,會將cron執行腳本中的output和warning信息,都會以郵件的形式發送Cron所有者, 而由於客戶環境中的sendmail和postfix沒有正常運行,導致郵件發送不成功,全部小文件堆積在了maildrop目錄下面,而且沒有自動清理轉換的機制,此目錄堆積了大量的文件。

(注意:如果sendmail或者postfix正常運行,則會在/var/mail目錄下產生大量的郵件,也會堆積)


2. 治標:
  find  /var/spool/clientmqueue/  | xargs rm -rf
  find  /var/spool/postfix/maildrop/  | xargs rm -rf

3. 治本:在crontab的第一行加入
MAILTO=""
便可,這樣執行當前用戶的Crontab時,不會發送郵件。

或者是在每一行cron job 的最後加上一段 > /dev/null 2>&1

* * * * * /root/Try_Port.sh > /dev/null 2>&1

查看Linux資料夾空間占用量

使用du查看某個資料夾所佔的空間容量
du -csh /root/*
例如這是察看/root底下所有目錄跟資料夾的所占容量。



若是想要看詳細自動排列大小 
du --exclude="proc" | sort -g  

排在越後面的佔用磁碟空間越多

2014年6月1日 星期日

整理一下這九個月裡所建的監控系統程式

以下系統皆採用Linux+Apache+PHP+MySQL+JavaScript+Shell Script程式組成
1. DB-Monitor(Database Server上的資源監控系統)
  1-1 [程式碼: 前人的舊PHP程式碼,改寫、改MVC架構、物件化,新增改進許多功能。]
  1-2 DB獨有事件部分: 含資料庫連線數、同步落後、無法連線、MySQL的Error訊息....等
      1-2-1 在監控機這端每分鐘主動連線至各Server的資料庫,取回Data並判斷事件,然後監控頁面發出各種的警告音效。


 1-3 通用的資源監控: CPU使用率、Memory使用率、Disk I/O以及Disk使用率...等
    1-3-1 在各Server用Shell Script語法取得Data,判斷後並依自訂的警示值來送回警告事件,然後監控頁面發出各種的警告音效。





2. Web-Monitor(Web Server資源監控系統)
 2-1 [程式碼:從無到有,全部自建]
 2-2 Web獨有事件 : 偵測Server的Web連線數
 2-3 通用的資源監控: CPU使用率、Memory使用率...等
        在各Server用Shell Script語法取得Data,判斷後並依自訂的警示值來送回警告事件。


3. A10-Monitor(A10裝置上的資源監控系統)
 3-1 [程式碼:從無到有,全部自建]
 3-2 通用的資源監控: CPU使用率、Memory使用率...等(介面類似上方)
 3-3 注: 初版採用Shell Script 語法去連線抓回資料作分析,完成後發現偶爾會卡使用者無法斷線,已廢棄停用,之後有時間會改以SNMP方式去連線。


4. 帳號權限控管系統: 以上3個系統都採用自己寫的帳號註冊、登入、管理功能。
  4-1 [程式碼:從無到有,全部自建]
  4-2 使用者須註冊登入才能使用以上系統。

   4-3 使用者註冊後被分到哪個單位群組下,那個使用者就僅有那個群組下的權限,只能閱覽有權限觀看的頁面,若用網址的方式嘗試去閱覽別的群組的頁面,則會被強制登出。

   4-4 當使用者在各功能頁面上新增刪除修改Server資料時,所有動作會另外寫Log記錄在帳號控管系統的資料庫中,並將被刪除的資料備份到另外別的資料表中,未來若有人出包則可以閱覽紀錄,確認是何時何人做的動作。在管理者頁面中可以勾選選項,將被刪除的重要資料做還原(從備份的資料表中提取Data)。

  4-5 使用者登入時,程式會記錄IP、時間、帳號到帳號控管系統的資料庫中。

5. PhpMyAdmin跳轉系統:  監控機上紀錄著幾百台DB Server的IP以及DB的Port號,管理者在操作查詢DB時有點不方便。於是在自己這台監控機中安裝PhpMyAdmin,寫一小段PHP程式碼並建立機制,當我在監控機頁面時點下某台Server資訊下的超連結網址,程式就會自動置換此台PhpMyAdmin的連線IP以及Port號,並跳轉到PhpMyAdmin的登入畫面,輸入帳密後就可以存取那台Server的資料庫。

6. 自動取得保固日期(限IBM)系統: 公司Server幾百台時時更新替換,沒時間用文字或手動的方式去查保固日期,於是寫了這個小系統,依附在上面的DB-Monitor、Web-Monitor之下。
    6-1 當上面的DB-Monitor或Web-Monitor在各台Server上運行監控程式時,順便下指令查詢Server的型號、序號,送回到監控機的資料庫中記錄,程式定時自動去IBM官網用型號序號查詢保固日期,紀錄回資料庫中。

2013年9月5日 星期四

PHP開啟錯誤提示、安裝Smarty(環境:CentOS 6.4 32位元)

##CentOS 6.4,PHP開啟錯誤提示:

1.開啟php.ini
# vi /etc/php.ini

2.搜尋下行,把Off值改成On
display_errors = Off

3.搜索下行
error_reporting = E_ALL & ~E_DEPRECATED
修改为
error_reporting = E_ALL | E_STRICT

4.修改httpd.conf,
# vi /etc/httpd/conf/httpd.conf

添加以下兩行:
php_flag display_errors on
php_value error_reporting 2039

5. 重新啟動Apache
# service httpd restart

///////////////////////////////////////////////
安裝Smarty在CentOS6.4上:

### 以下共3行終端機指令
su
tar zxvf Smarty-3.1.14.tar.gz
cp -r Smarty-3.1.14/libs/* /usr/lib/php/smarty
###

新建Smarty所需的相關目錄:
### 以下共8行終端機指令
cd /var/www/html
mkdir smarty
mkdir smarty/templates
mkdir smarty/templates_c
mkdir smarty/cache
mkdir smarty/configs
chmod 777 smarty/templates_c
chmod 777 smarty/cache
###

新建一个PHP檔:
# vi /var/www/html/index.php
---新增以下內容
<?php
require('/usr/lib/php/smarty/Smarty.class.php');
$smarty = new Smarty();

$smarty->template_dir = '/var/www/html/smarty/templates';
$smarty->compile_dir = '/var/www/html/smarty/templates_c';
$smarty->cache_dir = '/var/www/html/smarty/cache';
$smarty->config_dir = '/var/www/html/smarty/configs';

$smarty->assign('name', 'Ned');
$smarty->display('index.tpl');
?>
---

新建模板檔:
vi /var/www/html/smarty/templates/index.tpl
---新增以下內容
<html>
  <head>
    <title>Smarty</title>
  </head>
  <body>
      Hello, {$name}!
  </body>
</html>
---

打開瀏覽器看看 ->  http://localhost/

2013年9月2日 星期一

CentOS 6.4 上快速安裝LAMP環境+phpmyadmin

切換成root管理員
# su

設置LAMP環境(安裝php MySQL httpd):
# yum  -y  install  httpd  php  php-mysql  mysql  mysql-server

(非必須) 安裝記事本(圖形介面可以比較直覺編輯文檔,非圖形介面請勿安裝)
# yum -y install gedit

開機自動啟動MySQL
# chkconfig mysqld on

現在啟動MySQL
# /etc/init.d/mysqld start

開機自動啟動Web Server
# chkconfig httpd on

現在啟動Web Server
# /etc/init.d/httpd start

修改MySQL的root密碼
# mysqladmin -u root password '123456'

以下是安裝phpmyadmin:
# rpm -ivh http://ftp.jaist.ac.jp/pub/Linux/Fedora/epel/6/i386/epel-release-6-8.noarch.rpm

# yum install phpmyadmin

重啟Web Server:
# service httpd restart


Web Server ->  http://localhost/

MySQL on phpMyAdmin -> http://localhost/phpmyadmin/

2013年6月25日 星期二

替代役時期: Unity3D Web小遊戲-PacMan (2013/6/24完成第一版)

   前陣子在2013/6/10開始自學Unity3D,邊學邊實作一個PacMan小遊戲,遊戲概念大多來自"大學畢業專題程式",有部分素材、script來自網路上的資源,遊戲採用二維陣列的概念來產生隨機地圖,新增可採第一人稱視角玩遊戲,大幅修正網路上提供的Ghost移動AI,目前於2013/6/24完成第一版。
  這支小遊戲的產生原因是我在五月底得知台中某家博弈遊戲公司在招收軟體工程師,需要的條件有C/C++以及Unity3D,於是我就花了一點時間學習Unity3D並實作一個作品,方便之後投履歷面試;還有一個原因就是我覺得Unity3D看起來很有趣、蠻好玩的,學習的過程中也玩得很愉快。

小遊戲網址:http://ppt.cc/C8bj  


隨機地圖的概念圖(二維陣列20X20,1表示牆,0表示路)
隨機創四種方向的障礙牆(紅色),再隨機挑選幾個關鍵點堵住(綠色)



第一人稱視角



第三人稱視角

第三人稱視角(角色死亡)



替代役時期: PHP書籍管理程式 (2013/5/6 完成第一版)

列出所有書籍的頁面

搜尋書籍的頁面

新增書籍的頁面


作品簡易說明:
這是一個用PHP語言搭配MySQL資料庫建置起來的書籍管理程式(網站),這支程式的產生起因是我在五月初要面試某家台中公司的PHP研發工程師時,第一次面試完後要考個程式題,題目是書籍管理程式,限制時間一周內完成,還需建置在網路上可供主管評審操作,之前沒有做過一個完整的PHP網站,趁此機會也學習怎麼採用MVC架構去撰寫程式。

線上執行的程式建置在Amazon EC2(曾建置在HiCloud)雲運算虛擬主機中,使用最小的微運算型Linux虛擬主機(Micro型),程式透過使用Zend-Framework套件來建構MVC架構,本程式主要有首頁(index)、新增書籍頁(add)、搜尋書籍頁(Search)、編輯書籍頁(edit)、刪除書籍頁(delete),各頁面使用了少許jQuery的效果。

作業系統: ubuntu12.04(32bit)

使用的工具、語言或架構: Amazon EC2、apache2、PHP語言、MySQL 5.5、phpmyadmin、Zend-Framework、jQuery、MVC架構。

替代役時期:分析今日BingoBingo開獎號碼的WebApp(2012/11/3 完成第一版)

WebApp顯示頁面

台灣彩券3/27當天BingoBingo開獎號碼頁面
作品簡易說明:

        我發覺BingoBingo每幾小時裡某些號碼會很熱門,所以如果只看奧索樂透網的統計今日熱門號碼的網頁會有些不夠準確,因為前幾小時的熱門號碼現在不一定熱門了,於是我便做了這一個Webapps,從表格中可以看到每段時間的熱門號很多,在近20期中出現7次到10次的熱門號碼起碼有八到九個,表示當前熱門號碼幾乎每兩到三次就開出一次,過了一陣子後這些號碼開始退出熱門,又換其他號碼開始逐漸熱門。這支程式就是為了統計熱門號碼,讓使用者可以更輕易地分析開獎資訊。

  現行服替代役期間,我花時間研讀Python程式語言和Google App Engine(GAE)相關知識,邊學邊撰寫WebApp上傳至GAE,這個WebApp去抓取台灣彩券的BingoBingo開獎號碼存到Google的資料庫,藉由Google雲的資料庫以及分散運算功能,快速幫我運算出冷熱門號碼結果並顯示在GAE提供的WebApp網頁。使用技術或工具:GAE、NoSQL(Google  BigTable)、GQL語言、Python語言。  

研究所學習的領域之一:雲端計算、虛擬化技術的伺服器建置或運用。


在研究所求學期間擔任教學助理:
  •     99學年度第一學期:    車輛定位與電子地圖整合應用
  •  99學年度第二學期:    虛擬化技術
  •  100學年度暑期課程:  虛擬化技術
  •  100學年度第一學期:  雲端計算程式設計
  •  100學年度第二學期:  虛擬化技術

在求學過程中學習了常見的幾種虛擬化技術知識,以及虛擬機伺服器或叢集系統的架設以及維護,例如:
  I.    VMware    vSphere    ESXi.
VMware    vSphere    ESXi.(Server安裝畫面)

VMware    vSphere    ESXi.(Server安裝完成畫面)
VMware    vSphere    ESXi.(Client連線至Server畫面)

  II.   Proxmox  Virtual  Environment.
Proxmox  Virtual  Environment(Server端安裝畫面)

Proxmox  Virtual  Environment(Server端安裝完成畫面)

Proxmox  Virtual  Environment(Client端瀏覽器控管Server端)

Proxmox  Virtual  Environment(Client端瀏覽器開啟虛擬機)

  III.  Ubuntu  Enterprise  Cloud.
Ubuntu  Enterprise  Cloud(安裝畫面)
Ubuntu  Enterprise  Cloud(Cluster端主機安裝畫面)

Ubuntu  Enterprise  Cloud(Node端安裝畫面)
Ubuntu  Enterprise  Cloud(安裝完成的畫面)
Ubuntu  Enterprise  Cloud(Client端使用瀏覽器檢視Cluster端狀態)

  IV.  Citrix  XenServer.(目前無照片,後續再補)

  V.   Hyper-V  Server  2008  R2.
Hyper-V  Server  2008  R2.(安裝畫面)

Hyper-V  Server  2008  R2.(安裝完成畫面)
Hyper-V  Server  2008  R2.(Client端安裝Hyper-V管理員)

Hyper-V  Server  2008  R2.(Client端啟動Hyper-V管理員)
Hyper-V  Server  2008  R2.(Hyper-V管理員介面)


  VI.  Xen  or  KVM  搭配OpenNebula建置虛擬機叢集.(建置過程未留紀錄照片。)
  VII. 使用Amazon  EC2(或中華電信HiCloud)的instance來建置伺服器。
    已建置的伺服器範例: http://ppt.cc/KBRo

孰悉了以下的雲端運算伺服器與了解如何實際架設或操作,例如:
  I.     Google  App  Engine.
    已在GAE上建置的WebApp: http://ppt.cc/vgw4
  II.    Hadoop.(建置過程未留紀錄照片。)

研究所期間相關的國科會專題研究計畫:
█ 發展私有小雲計算之具網路安全性高效能異質伺服系統
  論文產出I: 虛擬機效能評估及雲端伺服合併率計算。


  論文產出II: 雲端伺服存取區網共享儲存之效能評估。





研究所時期作品:雲端化網路視訊電話Cloud-VVoIP (2012/07完成第一版)

  
登入帳號介面
程式操作畫面
雲端化網路視訊電話-英文版介面(電腦與手機的截圖)
雲端化網路視訊電話(實際操作畫面)


作品簡易說明:
    本作品是在雲端計算系統上設計一個即時性網路視訊電話,使用者藉由瀏覽器連線到我的Web網頁,以帳號驗證登入雲端計算系統,便可以在網頁上透過雲端計算系統的VVoIP程式與另一位上線使用者做網路視訊通話;Android行動裝置的使用者則經由Google  Play下載及安裝我們發佈雲端的VVoIP  App後,在Adobe  AIR  App的環境下進行網路視訊通話。

Flash Media Server (at Cloud Side) 和Flash Player (at Client Side) 之間的streaming (video/audio)及data (ActionScript Command)採用TCP-Based RTMP 、RTMPT 或RTMPS協定,具有多串流、多路徑、部分可靠等特性(類似PR-SCTP的特性),可以即時傳輸雲端網路視訊通話。


雲端網路視訊電話(Cloud-VVoIP)的優點:
1.  使用者在通話前無須取得對方的IP位址,只需要使用對方的ID名稱透過伺服主機即可進行連線。
2.  經由雲端計算的服務並且使用web介面在PC設備(行動裝置則是使用Adobe AIR App介面),即可進行視訊通話。
3.  行動裝置80%成本都使用在硬體設備,太低階的硬體設備無法執行複雜的網路視訊通話的程式與服務。使用雲端計算的方式來進行網路視訊電話,便可以使用Thin-Client等級的行動裝置或終端設備來進行通話連線,不一定要採用高階的行動裝置才可以進行視訊通話。
4.   因為終端設備上是使用web介面連線(行動裝置則是使用Adobe AIR App介面),VVoIP應用程式是安裝在伺服主機上,而不是安裝在終端設備本身(Android行動裝置則是需要透過Android Market下載安裝),另外VVoIP應用程式的主要運算都交給伺服主機來做,因此終端設備的計算負載變小,並且電源消耗也降低。
5.   雲端計算的服務是使用web介面,所以適合跨不同作業系統平台的終端設備(或行動裝置)上連線視訊通話。
6.   雲端網路視訊電話是經由web介面的方式操作,伺服主機可以即時的掌握連線用戶的人數及了解用戶的使用情形,可以做適當的通話流量調配。登入系統使用Authentication、Authorization、Accounting (AAA)管理機制,實施帳戶管理和使用者認證之機制,並且依照不同身份給予不同的使用權限,如此可以有效加強管理上的安全性。
7.  當程式設計者修改、更新網路視訊電話應用程式後,終端設備使用者只需重新整理網頁(Android行動裝置則須啟用Android Market自動更新),即可取得最新版本的VVoIP應用程式並執行它,不同於P2P的方式需要上網去下載新版的應用程式,下載安裝完後才可以執行使用。


使用技術或工具:Linux、Proxmox  Virtual  Environment、Flash  Media  Server、
       Actionscript3.0語言、PHP語言、Zend-AMF套件、MySQL。

註:論文保密三年,原始碼暫不分享。

研究所時期作品: 實現基於PR-SCTP協定的快速語音視訊IP串流在行動無線網絡之間的嵌入式平台 (2011/08 完成第一版)

X86平台上的網路視訊電話

程式功能解說

語音與影像傳送的資料流與週邊裝置的關係
實現在Embedded system(ARM平台:Mini2440)上的網路視訊電話
作品簡易說明:
  傳統在x86架構的PC上使用網際網路Video/Voice over IP (VVoIP)應用,傳輸層通訊協定採用TCP或UDP是有不錯的表現。但是如果將VVoIP實現在ARM-Based嵌入式平台之無線網路環境, VVoIP的通話連線效能遭受到一些侷限性的問題。例如TCP通訊協定無法達成即時性的封包傳遞效能,而UDP通訊協定封包傳遞常常會發生封包的遺失、重複、或順序錯置等等問題。而IETF所提出的串流控制傳輸協定Stream Control Transmission Protocol(SCTP)提供了幾個很好的特性。
SCTP:
1.          Multi-homing:這個特性使一個端點可以擁有多個網路IP,可以更容易的在不同的IP的切換;並且可以動態的加入新的網路位址到連線中,也可以動態的由連線中移除某一個網路位址。當主要線路(primary path)發生擁塞時,在使用者可以忍受的時間內,切換到另一個可以使用的線路,使得使用者可以繼續通話,而不會有所查覺線路中斷。
2.          Multi-streaming:透過多個虛擬的通道,來同時傳遞不同的封包,並且當其中任一種封包遺失時,並不會影響到其它封包的傳遞,因而達到更好的效能。
3.          PR-SCTP:PR-SCTP是SCTP的延伸,它定義了不完全可靠度傳輸(partial reliable)的新服務。採用PR-SCTP通訊協定的優勢,就是當不重要的封包因延遲或遺失的時候,來不及在接收端接收,可以將那些封包忽略掉,而持續進行後面其他封包的傳送或接收,因此可以達成即時性封包傳輸的效能。

  透過以上這些特性,使得我們很容易透過SCTP來完成多個網路之間移動,並不會讓使用者查覺資料傳送中的中斷,還可達成在不同基地台之間無縫式換手連線,實現即時性視訊語音網路電話。
在不同基地台之間無縫式換手連線


國科會計畫第一階段先在Linux下參照SCTP的幾點特性來實作一影像語音通話程式,第二階段則是修改部分程式碼再編譯成ARM平台上的程式。

部分早期程式碼來自以下Open Project: IHU (一支Open Source Code的VoIP程式)
使用技術或工具:Linux
(ubuntu)、Qtopia/QtE、PR-SCTP協定、OpenCV、
       Qmake、arm-none-linux-gnueabi-4.4.3、C語言、
       Embedded System(ARM platform: Mini2440)。
國科會編號:NSC99-2220-E-390-002

OpenFoundry: http://of.openfoundry.org/of/projects/1717
說明手冊以及Source Code都在OpenFoundry裡,有興趣的人再去下載學習。
程式碼授權:OSI: GNU Affero General Public License v3 (AGPL3)

研究所時期作品:Embedded system上的GPS定位與電子地圖程式 (2010/12 完成第一版)

X86平台上的GPS定位與電子地圖程式
實作環境:ARM-based Embedded System(WinFast310)
ARM-based Embedded System上的GPS定位與電子地圖程式

作品簡易說明:

        在Fedora8(Linux)作業系統上使用C語言和Qt Embedded套件,撰寫一個ARM平台程式來接收從RS232通道傳來的GPS訊息(在Com2孔接GPS接收裝置),並轉換GPS訊息的經緯度統一為”度”單位,得到經緯度後便在後台圖庫中呼叫圖庫並定位在適當位置。