顯示具有 Linux 標籤的文章。 顯示所有文章
顯示具有 Linux 標籤的文章。 顯示所有文章

2009年10月13日 星期二

Linux下crontab(自動重啟)的格式備忘

[轉] 作者:kaiser 發表日期:2008-05-25

1.直接用crontab命令編輯
cron服務提供crontab命令來設定cron服務的,以下是這個命令的一些參數與說明:

引用:
crontab -u //設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數
crontab -l //列出某個用戶cron服務的詳細內容
crontab -r //刪除沒個用戶的cron服務
crontab -e //編輯某個用戶的cron服務
比如說root查看自己的cron設置:
引用:
crontab -u root -l
再例如,root想刪除fred的cron設置:
引用:
crontab -u fred -r
在編輯cron服務時,編輯的內容有一些格式和約定,輸入:
引用:
crontab -u root -e

進入vi編輯模式,編輯的內容一定要符合下面的格式:

基本格式 :
*  *  *  *  *  command
分 時 日 月  周  命令

第1列表示分鐘1~59 每分鐘用*或者 */1表示
第2列表示小時1~23(0表示0點)
第3列表示日期1~31
第4列表示月份1~12
第5列標識號星期0~6(0表示星期天)
第6列要運行的命令

crontab文件的一些例子:

30 21 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每晚的21:30重啟lighttpd 。

45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每月1、10、22日的4 : 45重啟lighttpd 。

10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每週六、週日的1 : 10重啟lighttpd 。

0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart
上面的例子表示在每天18 : 00至23 : 00之間每隔30分鐘重啟lighttpd 。

0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart
上面的例子表示每星期六的11 : 00 pm重啟lighttpd 。

* */1 * * * /usr/local/etc/rc.d/lighttpd restart
每一小時重啟lighttpd

* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart
晚上11點到早上7點之間,每隔一小時重啟lighttpd

0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart
每月的4號與每週一到週三的11點重啟lighttpd

0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart
一月一號的4點重啟lighttpd

讓系統每星期日零晨5點01分自動重啟的設置如下:

vi /etc/crontab

在末尾處加上:
01 5 * * 0 root /sbin/reboot

保存退出
:wq

再重啟下crond,讓其生效
/etc/init.d/crond restart

Linux 利用Crontab命令實現定時重啟

[轉貼] Linux學習網

Crontab是一個很方便的在unix/linux系統上定時(循環)執行某個任務的程序

使用cron服務,用 service crond status 查看 cron服務狀態,如果沒有啟動則 service crond start啟動它,

cron服務是一個定時執行的服務,可以通過crontab 命令添加或者編輯需要定時執行的任務:

crontab -u //設定某個用戶的cron服務,一般root用戶在執行這個命令的時候需要此參數

crontab -l //列出某個用戶cron服務的詳細內容

crontab -r //刪除沒個用戶的cron服務

crontab -e //編輯某個用戶的cron服務

比如說root查看自己的cron設置:crontab -u root -l

再例如,root想刪除fred的cron設置:crontab -u fred -r

在編輯cron服務時,編輯的內容有一些格式和約定,輸入:crontab -u root -e

進入vi編輯模式,編輯的內容一定要符合下面的格式:*/1 * * * * ls >> /tmp/ls.txt

編輯/etc/crontab文件,在末尾加上一行: 30 5 * * * root init 6 這樣就將系統配置為了每天早上5點30自動重新啟動。

需要將crond設置為系統啟動後自動啟動的服務,可以在/etc/rc.d/rc.local 中,在末尾加上

service crond start

如果還需要在系統啟動十加載其他服務,可以繼續加上其他服務的啟動命令。

比如: service mysqld start

基本用法:

1. crontab -l

列出當前的crontab任務

2. crontab -d

刪除當前的crontab任務

3. crontab -e (solaris5.8上面是 crontab -r)

編輯一個crontab任務,ctrl_D結束

4. crontab filename

以filename做為crontab的任務列表文件並載入

crontab file的格式:

crontab 文件中的行由 6 個字段組成,不同字段間用空格或 tab 鍵分隔。前 5 個字段指定命令要運行的時間

分鐘 (0-59)

小時 (0-23)

日期 (1-31)

月份 (1-12)

星期幾(0-6,其中 0 代表星期日)

第 6 個字段是一個要在適當時間執行的字符串

例子:

#MIN HOUR DAY MONTH DAYOFWEEK COMMAND

#每天早上6點10分

10 6 * * * date

#每兩個小時

0 */2 * * * date (solaris 5.8似乎不支持此種寫法)

#晚上11點到早上8點之間每兩個小時,早上8點

0 23-7/2,8 * * * date

#每個月的4號和每個禮拜的禮拜一到禮拜三的早上11點

0 11 4 * mon-wed date

#1月份日早上4點

0 4 1 jan * date

補充:在使用crontab的時候,要特別注意的是運行腳本中能夠訪問到的環境變量和當前測試環境中的環境變量未必一致,一個比較保險的做法是在運行的腳本程序中自行設置環境變量(export)

(1)先建一個文件crond.txt如下, 每天早上5點36分重新啟動

36 5 * * * reboot

(2)上傳到/opt目錄

(3)運行命令

crontab /opt/crond.txt

crontab -l

讓配置文件生效:如果讓配置文件生效,還得重新啟動cron,切記,既然每個用戶下的cron配置文件修改後。也要重新啟動cron服務器。

在Fedora 和Redhat中,我們應該用;

[root@localhost ~]# /etc/init.d/crond restart

如果讓crond 在開機時運行,應該改變其運行級別;

[root@localhost ~]# chkconfig --levels 35 crond on

service crond status 查看 cron服務狀態,如果沒有啟動則 service crond start啟動它, cron服務是一個定時執行的服務,可以通過crontab 命令添加或者編輯需要定時執行的任務

Crontab文件的每一行由六個域(minutes、hours、day of month、month、day of week、 command)組 成,域之間用空格或Tab分開,其中:

minutes: 分鐘域,值的範圍是0到59

hours: 小時域,值的範圍是0到23

day of month: 日期,值的範圍是1到31

month: 月份,值的範圍是1到12

day of week: 星期,值的範圍是0到6,星期日值為0

command: 所要運行的命令

如果一個域是*,表明命令可以在該域所有可能的取值範圍內執行。

如果一個域是由連字符隔開的兩個數字,表明命令可以在兩個數字之間的範圍內執行(包括兩個數字 本身)。

如果一個域是由逗號隔開的一系列值組成的,表明命令可以在這些值組成的範圍內執行。

如果日期域和星期域都有值,則這兩個域都有效。

編寫一個文件,用以啟動自動備份進程。

cd /opt

touch reboot.txt

在reboot.txt中添加一下內容:

0 4 * * * reboot

crontab /opt/reboot.txt

用crontab -e編輯定時操作,例如加入下行命令:

用crontab -l命令來查看

注意:需要啟動服務(添加在rc.local中)

重啟crond任務

/etc/init.d/cron restart (ubuntu下)

第一種 在Fedora或Redhat 等以RPM包管理的系統中;

[root@localhost ~]# /etc/init.d/crond start

[root@localhost ~]# /etc/init.d/crond stop

[root@localhost ~]# /etc/init.d/crond restart

/etc/rc.d/init.d/crond restart

命令簡介

crontab-操作每個用戶的守護程序和該執行的時間表。

部分參數說明

crontab file [-u user]-用指定的文件替代目前的crontab。

crontab-[-u user]-用標準輸入替代目前的crontab.

crontab-1[user]-列出用戶目前的crontab.

crontab-e[user]-編輯用戶目前的crontab.

crontab-d[user]-刪除用戶目前的crontab.

crontab-c dir- 指定crontab的目錄。

crontab文件的格式:M H D m d cmd.

M: 分鐘(0-59)。

H:小時(0-23)。

D:天(1-31)。

m: 月(1-12)。

d: 一星期內的天(0~6,0為星期天)。

cmd要運行的程序,程序被送入sh執行,這個shell只有USER,HOME,SHELL這三個環境變量。

下面是一個例子文件:

#MIN HOUR DAY MONTH DAYOFWEEK COMMAND #每天早上6點 106* * * date #每兩個小時 0*/2* * * date #晚上11點到早上8點之間每兩

2009年9月22日 星期二

營造 Linux 學習環境的好用工具 VirtualBox

作者:徐秉義(Albert Hsu)

在筆者教學 Linux 期間,常常遇到同學苦無 Linux 練習環境,主因是許多同學只有一台電腦而且已經裝了 Windows 系統,若是在早期的話會建議使用「多重開機」方式,但多重開機建置並非想像中的簡單,稍微不注意就很有可能『傷害』到已經存放資料的 Windows 系統,導致 Linux 還沒練到甚麼,卻被逼著要學會重灌 Windows 系統。

溫馨提示:這邊提到『傷害』在程度上也許是 Format 到 Windows 資料或造成 Windows 無法開機等等。

對於電腦不是很熟悉的新手們,會比較建議使用虛機的方式來快速營造 Linux 練習環境,雖然虛機有著執行速度較慢的缺點,所幸的是初期練習 Linux 基礎操作,事實上並不需要高速的硬體配備。筆者這次介紹 VirtualBox 虛機軟體,知名度雖然沒有 VMWare 那樣地高,她該有的功能其實也都有喔!話不多說就開始我們的 VirtualBox Windows 版安裝之旅吧!

軟體下載、安裝與中文化

至 http://www.virtualbox.org/ 下載 VirtualBox for Windows 編譯好的二進位執行檔(binary),點選左邊【Downloads】後,接著稍微向下捲動一些即可看到「VirtualBox for Windows hosts」軟體下載連結,筆者下載的是 1.5.2 Windows x86 版本。

磁碟狀態

安裝 VirtualBox Windows 版只要依照精靈一路走下去,裝到好應該是沒有太大的問題。

安裝完成後從【程式集】裡面【innotek VirtualBox】→【VirtualBox】來啟動 VirtualBox 主程式。

溫馨提示:VirtualBox 亦有給 Linux 及 Mac OS X 版本的二進位執行檔。

語系設定

新版 VirtualBox 提供繁體中文介面來使用,從【檔案】→【偏好設定】呼叫出設定對話框,對話框內左邊第三個「語系」選單,即可切換至繁體中文介面(先前的版本只有簡體中文介面)。

磁碟狀態

開始安裝虛擬機器

裝一台虛擬機器大致上要準備的有「給機器的名字」、「記憶體大小」及「硬碟大小」,至於安裝時候的開機媒介,一般使用 CD/DVD 開機(VirtualBox 亦支援 iso 檔案開機)筆者設定範例如下:

虛機名稱srv1
記憶體大小256 MB
硬碟大小5 GB
安裝光碟片DVD/CD

緊接著就來安裝一台 RHEL5 虛擬機器吧!建立虛機的路上皆有精靈帶領著我們,大致上都是點選〔下一步〕按鈕,底下僅僅針對幾個比較有需要講解的畫面來做解說。

點選〔新增〕按鈕來呼叫出建立虛機精靈,來到下圖的這個步驟替虛機取個名稱,筆者範例取名為「srv1」(Server one 之意),至於作業系統類型的部份,筆者並沒有特別挑選別的,使用預設值的「Other/Unknown」即可。

溫馨提示:若「感到」因沒有特別挑選作業系統類型,導致虛機安裝失敗的話,可試著調整這部份的設定。

磁碟狀態

虛機的記憶體用量,給 256 MB 安裝 RHEL5 算是剛好而已。

溫馨提示:若少於 256 MB 的記憶體來安裝 RHEL5 可能會遭到強制使用文字模式安裝的情況。

磁碟狀態

虛機所使用的硬碟,是母系統的映像檔案。VirtualBox 映像檔案為 VDI(Virtaul Disk Image)首次安裝需要新增一顆,所以我們點選〔新增〕。

溫馨提示:若是以前曾經有建立過 VDI 檔案,建立虛機時亦可使用既有的 VDI 檔案。

磁碟狀態

來到新增硬碟精靈,磁碟預設採用「動態擴充映像檔」(實際拷貝資料進去才會佔用硬碟空間)另一種則是「固定大小映像檔」(先行佔用磁碟空間,資料有無拷貝進去,不會影響母系統磁碟空間用量)

溫馨提示:若「感到」因使用「動態擴充映像檔」,導致虛機安裝失敗的話,可試著改用「固定大小映像檔」方式。

磁碟狀態

設定映像檔案大小,筆者母系統的硬碟不大所以開給虛機 5 GB 的空間,預設的 RHEL5 安裝完成大概與 Windows XP 差不多,大約 2 GB 左右的空間。

磁碟狀態

在新增完成映像檔硬碟後,就回到先前的選取硬碟的畫面,接著按下〔下一步〕。

磁碟狀態

虛機硬體配備已經準備差不多了,下一步是要光碟開機安裝 RHEL5。針對光碟開機這部份有兩個選擇:一個是點選下圖右方「光碟機」調整;一個是直接開機讓「首次運行精靈」來引導我們使用光碟開機。

磁碟狀態

採用直接開機是比較直覺的方式,會有「首次運行精靈」如下圖,直覺方式使用「母系統光碟裝置開機」。

溫馨提示:亦可使用「安裝光碟映像檔案開機」(要先準備好 iso 檔案)。

磁碟狀態

下圖是筆者使用 RHEL5 光碟片開機的情況,緊接著就是安裝 Linux 的部份,相信這部份大家都會,比較要特別介紹的是 VirtualBox 離開虛機的方式是「Right Ctrl」(右 Ctrl 鍵;位於畫面右下方)

磁碟狀態

安裝客端額外功能

在虛機安裝好之後,若是再加上「安裝客端額外功能」的話,較明顯可得到兩個好處:一個是進出虛機不需再按右 Ctrl 鍵(稱為「滑鼠游標整合」);另一個是母系統「分享資料夾」給子系統功能。

虛擬磁碟管理器

VirtualBox 客端額外功能軟體放在虛擬磁碟裡面,預設位於 C:\Program Files\innotek VirtualBox\VBoxGuestAdditions.iso 建議先使用【檔案】→【虛擬磁碟管理器】呼叫出虛擬磁碟管理程式中〔光碟映像檔〕分頁加入後給虛機掛載起來。

溫馨提示:虛機使用光碟映像檔可在虛機設定頁面〔光碟機〕(虛機還沒啟動前);或於(虛機啟動後的視窗)【裝置】→【掛載光碟】來調整。

磁碟狀態

RHEL5 安裝 VirtualBox 客端額外功能

在 Linux 虛機安裝 VirtualBox 客端額外功能只要抓到幾個重點,要裝起來應該不是難事。

重點一:安裝編譯工具 gcc,因為 VirtualBox 給 Linux 的是原始碼,所以要編譯。以 RHEL5 配置好 yum 來說,只要下達指令「yum -y install gcc」即可。

重點二:安裝核心編譯相關套件 kernel-devel,因為 VirtualBox 給 Linux 的這兩個功能是用核心模組方式,要編譯成副檔名為 .ko 檔(Kernel Object)。以 RHEL5 配置好 yum 來說,只要下達指令「yum -y install kernel-devel」即可。

如下圖的步驟:

光碟映像檔案若沒有自動掛載就手動掛載吧!使用指令「mount /dev/cdrom /mnt」

內容有一個「VBoxLinuxAdditions.run」!使用指令「sh VBoxLinuxAdditions.run」執行即可,安裝好後依照指示重開虛機。

磁碟狀態

分享資料夾功能

在安裝好客端額外功能軟體後,「滑鼠游標整合」功能明顯感受出來,至於「分享資料夾」要到虛機執行視窗的【裝置】→【分享資料夾】開放母系統資料夾,如此子系統才能使用。

下圖是開放 C 槽給子系統命名為「C_DRIVE」(此名稱待會要用到)。

磁碟狀態

在子系統使用「mount -t vboxsf 分享資料夾名稱 掛載點」的類似命令來掛載分享資料夾,下圖是使用指令「mount -t vboxsf C_DRIVE /mnt」情況,掛載後可以看到母系統(Windows)資料。

磁碟狀態

快速複製虛機

灌好一台 Linux 虛機後,就可以開始練習 Linux 基本操作,以及大部分單機使用 Linux 所可以做到的事情,像是帳號密碼與群組管理、Software RAID 與 LVM 管理、Quota 設定與管理等等。持之以恆地練下去的話,不久之後就會來到網路服務,也就是架設各類 Server 的部份,像是 DNS、DHCP、Mail、Web、NFS、Samba 等等服務,此時難免需要「另一台」主機(甚至另兩台)來作互動及測試,這時候再虛一台 Linux 出來用,對練習的幫助頗大。

溫馨提示:Linux 兩大證照 RHCE 與 NCLP 不約而同地重視兩台 Linux 主機之間的互動操作。

VirtualBox 複製虛機

灌一台電腦通常會比對拷一台要花上較長的時間,既然虛機磁碟是個 VDI 檔案,何不就「拷貝」一份成為另一台虛機呢?這樣的想法理論上是可行,但因為 VirtualBox 有使用 UUID 方式紀錄 VDI 檔案,所以直接 VDI 檔對拷後給另一台虛機用會出問題的,出問題的原因在於「同一台有重複 UUID 的 VDI 檔案」。

下圖是使用「複製貼上」做出 VDI 檔,欲加入硬碟群時所出現的錯誤訊息。

磁碟狀態

溫馨提示:此 VDI 檔案拷貝到別台母系統卻是可以直接使用,因為別台沒有相同 UUID 的 VDI 檔案。

要複製虛機在同一台母系統上使用的話,就要用 VirtualBox 內建指令才不會有上述問題產生,關鍵在於執行 vboxmanage 指令搭配 clonevdi 參數(克隆 VDI 檔案)例「vboxmanage clonevdi srv1.vdi srv2.vdi」。

VBoxManage 執行檔案擺放位置C:\Program Files\innotek VirtualBox\VBoxManage.exe
虛機磁碟 VDI 檔案預設路徑C:\Documents and Settings\Administrator\.VirtualBox\VDI

開啟指令視窗,使用「cd "C:\Documents and Settings\Administrator\.VirtualBox\VDI"」切換至虛機磁碟 VDI 檔案預設路徑(筆者的 srv1.vdi 位於這裡)。

接著使用指令「"c:\Program Files\innotek VirtualBox\VBoxManage.exe" clonevdi srv1.vdi srv2.vdi」來將 srv1.vdi 克隆(clone)成 srv2.vdi。

溫馨提示:VBoxManage 指令在此需要使用完整的路徑名稱,要是之後經常使用這個指令的話,最好還是設定環境變數 path 包含 c:\Program Files\innotek VirtualBox\ 這個路徑會比較方便(類似 Linux $PATH)。

磁碟狀態

接下來創建虛機 srv2 使用現有的 srv2.vdi 就可以快速複製虛機,方便我們同時開啟兩台 Linux 虛機用來練習。

磁碟狀態

探討 VirtualBox 網路模式 NAT

當開啟兩台虛機 Linux 後,奇怪的是兩台 IP 一樣卻兩台都可以透過母系統 NAT 後存取外部網路,可是我們需要的功能「兩台 Linux 虛機互向存取」卻不通,就算是將這兩台 IP 錯開也一樣情況,原來是 VirtulBox 預設網路模式 NAT 運作特性與 Xen、VMWare 不太一樣,筆者稱呼 VirtualBox 的 NAT 模式為「AP Based NAT」(由應用程式 VirtualBox 提供的 NAT),單純的只是將內部虛機 NAT 成母系統 IP 存取外部網路。

這個 NAT 模式下,造成子系統可以存取母系統的外部 IP 位址,反過來若是母系統欲存取子系統的話,可利用母系統 Port Forwarding 達成,至於 Port Forwarding 的使用方法,請參考原廠的使用說明。

溫馨提示:Port Forwarding 一次 forward 一個埠,要多個埠 forward 就要多做幾次設定。

若要使得母系統與子系統、子系統與子系統之間相互網路存取更加方便的話,建議是使用橋接(Bridge)模式(後續介紹);若只是要解決子系統之間網路存取的話,可採用虛機各自新增一個內部網路介面即可。

虛機互通:各自新增內部網路介面

圖為 srv1 設定第二張配接卡(配接卡 1)的畫面,記得下拉選取「內部網路」,當然 srv2 也一併要設定第二張配接卡,這樣 srv1 的 eth1 與 srv2 的 eth1 感覺像是接在同一個 Switch 上。

磁碟狀態

溫馨提示:新版(1.6.X 版)有個新的欄位 Network Name(網路名稱)其網路名稱需設定一樣,虛機之間才能互相存取(例如都設定成 foo);Network Name 名稱若不同則視為兩個不同的網路。

r

下圖為兩台 Linux 虛機 eth0 皆為 10.0.2.15 可連上外部網路;eth1 分別為 192.168.2.3 與 192.168.2.4 由 srv2 使用 ssh 登入 srv1 的情況。

磁碟狀態

溫馨提示:若要母系統與子系統互通的話,建議使用橋接模式。

探討 VirtualBox 網路模式 Bridge

VirtualBox 類似 VMWare、Xen 這些虛擬機器軟體,因此母系統與子系統之間的架構除了 NAT 模式外,常用的還有 Bridge 模式,她的 Bridge 模式啟用方法較為特殊,方法是:

『虛機各自新增 VirtualBox 主端介面卡,然後再用 Windows 內建 Bridge 功能橋接起來。』

虛機新增 VirtualBox 主端介面卡

在 srv1 設定畫面中,筆者將原先設定成 NAT 模式的網路配接卡,附掛到「主端介面」後,下方主端介面方框右邊,有兩個小按鈕用來增減虛擬介面卡的(一個是新增、一個是移除)點選新增後加入「VirtualBox 主端介面 1」給 srv1 使用。

溫馨提示:虛機開啟時,很多設定都不能調整,請停虛機後再做設定。

磁碟狀態

下圖為設定成功後 srv1 使用「VirtualBox 主端介面 1」畫面。

磁碟狀態

將介面 Bridge 起來

在 Windows 網路設定畫面中,圈選需要被 Bridge 的介面卡(下圖為「母系統網路卡」以及「VirtualBox 主端介面 1」),按下滑鼠右鍵選擇【橋接】(Bridge)。

磁碟狀態

溫馨提示:橋接後 Windows 母系統 IP 要設定在橋接器上而不是在原來的網路介面。

下圖是 Windows bridge IP 顯示畫面。

磁碟狀態

srv2 若是也要加入這個 Bridge 成員主機的話,也要如法炮製一個「VirtualBox 主端介面 2」來使用。

磁碟狀態

srv2 「VirtualBox 主端介面 2」採用後續再加入這個 Bridge 的方式也行的通,使用右鍵選擇【加入橋接器】(Add to Bridge)。

磁碟狀態

最後母系統、srv1 與 srv2 就「感覺像是」接在同一個網路交換器上囉!

下圖為母系統 Windows 使用 putty 連接到 srv1 以及 srv1、srv2 同時開機的情況,一台電腦當三台用。

磁碟狀態

VirtualBox RDP 功能

RDP 全名 Remote Desktop Protocol 是 Windows 遠端桌面所使用的通訊方式,而 VirtualBox 用她來提供遠端控制虛機功能,方法是在設定虛機畫面中【遠端顯示】選項來做啟用即可。

磁碟狀態

RDP 預設使用埠號 3389,若是您的 Windows 有啟用遠端桌面功能就會先行佔用此連接埠,那虛機就避開即可(例如使用埠 3390)

溫馨提示:使用 VirtualBox RDP 功能時各台虛機埠號最好錯開,不然就避免同時啟動使用相同埠號的虛機。

下圖是在 Linux 使用 rdesktop 程式連接到 srv1 的畫面,請注意連線到的 IP 是母系統 Windows IP 位址。

磁碟狀態

2009年3月18日 星期三

cannot download file from web browser, only download the php file

the changes you need to make are in your httpd.conf
( e.g. /etc/httpd/conf/httpd.conf )

you need to ensure that you have the Addtype lines such as :

AddType application/x-httpd-php .php .php3 .php .phtml

once modified, 'apachectl restart' to reload apache and give it another test.

2009年2月10日 星期二

Install VBoxLinuxAdditions and set full screen

1. install VBoxLinuxAdditions

type bellow in terminal.


yum install kernel
yum install kernel-devel


cd /media/VirtualBox_1.5.6_Guest_Additions

sh ./VBoxLinusAdditions.run / sudo ./VBoxLinusAdditions.run



reboot

2. set full screen

make sure the VirtualBox Linux resolution is same as Windows.

- change the Linux monitor to "monitor 1200*1024"

a. in linux, System -> Administration -> Display
b. in Display windows -> Hardware -> Monitor -> "Generic ..." -> "1280*1024"
c. after reboot, press "host key(e.g. alt) + F" to switch the full screen.

2009年1月22日 星期四

cron job for zip last 7 days files

1. set schedule for run cronjob every hr
crontab -e

0 */1 * * * (. archive.sh > archiveJob.log 2>&1)


2. prepare a job for backup and zip the file last 7 days ( not include today ! )

archive.sh

#!/bin/sh

logpath=/usr/local/jboss/server/default/log
fname=`echo a b c d e f g h`
bday=7

cd $logpath

echo -e "\n$logpath\n"

for (( i=$bday;i>=1;i=i-1 ))
do
ddate=`/bin/date +%Y-%m-%d -d -"$i"day`

if [ -e "$logpath"/server.log."$ddate" ]; then
gzip server.log."$ddate"
mv server.log."$ddate".gz archive/
echo server.log."$ddate" moved.
fi

for f in $fname
do
if [ -e "$logpath"/server.log."$ddate$f" ]; then
gzip server.log."$ddate$f"
mv server.log."$ddate$f".gz archive/
echo server.log."$ddate$f" moved.
fi
done

done

#cd /usr/local/jboss/bin
#sh run.sh &

echo -e "
----------------------------------------
Server Log Backup and Archive Finished.
----------------------------------------
"

2008年11月12日 星期三

ssh with password

There are two ways to do what you want. One involves a stored password, and one does not. Both are non-interactive, meaning that they can work when you're not there to enter a password.

First Method
The way that does not require a password. You can use public/private key authentication instead of passwords with SSH. I'm going to assume that you're using OpenSSH, which comes with practically every Linux distribution that there is.
  1. Configure your SSH server to accept private key logins. In /etc/ssh/sshd_config make sure that there's a line that says PubkeyAuthentication yes (and that there is no # infront of it). If you change this file, you need to restart the sshd service. If you're not sure, stop and ask somebody here before you break it.
  2. On your local machine (not the server), create yourself a pair of keys with ssh-keygen -t rsa (you can use other options than rsa, but I'm keeping it simple). Do not specify a password. Save the keys in the locations prompted.
  3. Open the contents of the id_rsa.pub file that you just created (it's one very long line of text), and copy the contents into the end of the file $HOME/.ssh/authorized_keys on the server machine. Create the file if it doesn't exist.
Now you should be able to ssh user@remote.host without a password. If that works, you can use it in scripts, etc. Because you have a private key with no password to protect it, it's important that you make sure that nobody gets their grubby hands on your id_rsa file. They can have the id_rsa.pub file (it's public, you see) but the other one's your precious.

If you think somebody has a copy of your id_rsa file, you can delete the line that you added to authorized_keys on the server, to disable that key.

FURTHER READING (Daniel Robbins at ibm.com)

Second method
If you thought that was complicated, you wait till you've tried to get this one working. The basic idea is to use expect, which is an administration automation tool, to type your password in to ssh when prompted. It might not always work, and when it doesn't, it's hard to figure out why not. I recommend the first method.

Anyway, here's a command that you can poke at until it does what you want:
Code:
expect -c 'spawn ssh user@remote.host ; expect assword ; send "passphrase\n" ; interact'
Expect might not be installed on your system. That's the first hurdle, although most distributions have it easily available. You need to modify user@remote.host to your remote username and hostname. You need ot make sure that ssh prompts for a password using the letters "assword"; if not, that needs changing to something that does appear. You need to change "passphrase" to whatever the password is.

Problem here is doing the scripting. You can either have expect type in further commands, or you can list them as a parameter to ssh in that spawn command (just before the semicolon ; ). It might never work properly for you; again, I recommend the first method.

SSH login without password

Your aim

You want to use Linux and OpenSSH to automize your tasks. Therefore you need an automatic login from host A / user b to Host B / user b. You don't want to enter any passwords, because you want to call ssh from a within a shell script.

How to do it

First log in on A as user a and generate a pair of authentication keys. Do not enter a passphrase:

a@A:~> ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/a/.ssh/id_rsa):
Created directory '/home/a/.ssh'.
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/a/.ssh/id_rsa.
Your public key has been saved in /home/a/.ssh/id_rsa.pub.
The key fingerprint is:
3e:4f:05:79:3a:9f:96:7c:3b:ad:e9:58:37:bc:37:e4 a@A

Now use ssh to create a directory ~/.ssh as user b on B. (The directory may already exist, which is fine):

a@A:~> ssh b@B mkdir -p .ssh
b@B's password:

Finally append a's new public key to b@B:.ssh/authorized_keys and enter b's password one last time:

a@A:~> cat .ssh/id_rsa.pub | ssh b@B 'cat >> .ssh/authorized_keys'
b@B's password:

From now on you can log into B as b from A as a without password:

a@A:~> ssh b@B hostname
B

A note from one of our readers: Depending on your version of SSH you might also have to do the following changes:

  • Put the public key in .ssh/authorized_keys2
  • Change the permissions of .ssh to 700
  • Change the permissions of .ssh/authorized_keys2 to 640

2008年11月11日 星期二

Virtualbox的Linux OS網路設定


在virtualbox裡安裝Linux作業系統,結果Linux網路設定好之後,卻找不到其他台電腦,但是可以上網,這時就覺得奇怪,結果問題就出在virtualbox這虛擬軟體的網路的問題,只要把它設定成橋接模式就可以,下面的方式就是告訴大家我的設定方式

一開始新增好的虛擬機器,先不要啟動,先進入他的設定值得網路,預設是以NAT方式,那這時就是問題的癥結了


那我們就先新增一個主端介面,按下綠色的網卡加號就可以新增介面


新增新的網路硬體介面,按下繼續安裝


主端介面就會出現一個新的介面,然後附掛到的地方把他從NAT選成主端介面


那在網路連線的地方就多出了一張virtualbox主端介面1



那把兩張網卡選去起來按右鍵選擇橋接器連線

正在橋接中


這樣就算橋接完成了


如果以DHCP方式的話就不用在網路橋接器設定固定IP,否則就要設定IP,最後忘記說了,如果要移除橋接模式,直接在網路橋接器刪除就會恢復了,剩下的步驟就把先前設定都環原就可以。


進入Linux,設定好Linux的網路設定,如果不會設定可以到我寫的Linux文章去看看


ping tw.yahoo.com也可以對外了

2008年10月21日 星期二

Linux下執行程序時發生錯誤: cannot restore segment prot after reloc: Permission denied

原來這是SELinux搞的鬼,解決辦法有兩個

1. 使用chcon 命令
示例: chcon -t texrel_shlib_t /usr/local/rsi/idl_6.1/bin/bin.linux.x86/*.so

2. 禁止掉SELinux
更改/etc/sysconfig/selinux 文件的內容為 SELINUX=disabled