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

2013年12月25日

使用 SSH 複製檔案

  • 複製檔案到其他系統
    # scp /path/to/local/file username@hostname:/path/to/remote/file
  • 複製其他系統檔案到另一個其他系統
    # scp username@hostname1:/path/to/remote1/file username@hostname2:/path/to/remote2/file
  • 複製其他系統檔案到本機
    # scp username@hostname:/path/to/remote/file /path/to/local/file
  • 會詢問是否要儲存 SSH 金鑰和 SSH 密碼

如何設定伴隨介面啟動的 routing table

  首先先確定要加 routing table 的介面,以下以 eth0 為例:
  • 新建檔案在 /etc/sysconfig/network-scripts/route-eth0
  • 編輯檔案內容,格式如下:
    ADDRESS0=172.21.8.0
    NETMASK0=255.255.255.0
    GATEWAY0=10.10.10.1

    ADDRESS1=192.168.1.0
    NETMASK1=255.255.255.0
    GATEWAY1=10.10.10.5

    .......
  • 確認是否成功:
    # ifdown eth0 && ifup eth0
    # route
  • 開機也會自動加入

2013年11月13日

設定 VirtualBox 伴隨開機自動執行

Virtual 4.2.0 版本後適用,測試環境是 CentOS 6.4:

  • Edit virtualbox config
    # vi /etc/default/virtualbox
    VBOXAUTOSTART_DB=/etc/vbox
    VBOXAUTOSTART_CONFIG=/etc/vbox/autostart.cfg
  • Edit auto start config
    # vi /etc/vbox/autostart.cfg
    default_policy = allow
  • Set auto start DB path
    # VBoxManage setproperty autostartdbpath /etc/vbox
  • Create a userid.start  file in /etc/vbox directory
    # VBoxManage modifyvm --autostart-enabled on
  • Restart the vboxautostart-service
    # /etc/init.d/vboxautostart-service stop
    # /etc/init.d/vboxautostart-service start
  • Reboot PC for test


2013年7月10日

Compile subversion 1.8.0

  1. Download source code and un-compress
    • wget http://ftp.mirror.tw/pub/apache/subversion/subversion-1.8.0.tar.gz
    • tar zxvf subversion-1.8.0.tar.gz
  2. Execute "get-deps.sh" to get deps
    • cd subversion-1.8.0
    • get-deps.sh
  3. Compile apr
    • cd apr
    • ./configure
    • make
    • cd..
  4. Compile apr-util
    • cd apr-util
    • ./configure --with-apr=../apr
    • make
    • cd..
  5. Compile and install serf
    • cd serf
    • ./configure --with-apr=../apr --with-apr-util=../apr-util
    • make
    • make install
    • cd..
  6. Export PKG_CONFIG_PATH
    • export PKG_CONFIG_PATH=/usr/local/serf/lib/pkgconfig
  7. Compile subversion
    • ./configure --with-apr=apr --with-apr-util=apr-util --with-serf=serf
    • make
  8. Check version and module
    • ./subversion/svn/svn --version
  9. Install
    • make install
  10.  If server, restart svnserve
    • killall svnserve
    • svnserve -d

2012年2月23日

如何在VMWare 和 VirtualBox 之間轉換虛擬機器

  • VMWare 轉移到 VirtualBox:
  1. 使用以下 Virtual Box 本身提供的工具轉換硬碟檔,指令如下:
    BoxManageexe clonehd xxxx.vmdk xxxx.vdi --format VDI
  2. 在 VirtualBox 建立新的虛擬主機,當建立硬碟時,選擇已經存在的檔案,然後直接掛載 vdi 檔
  3. 啟動虛擬機器,有可能會有 GUI(X11) 無法啟動的問題,依照指示輸入密碼重新建立 xorg.conf
  4. 進入系統後,解安裝 VMTool(如果有安裝的話)
    • TGZ 安裝
      # vmware-uninstall-tools.pl
    • RPM 安裝
      # rpm -e VMwareTools
  5. 安裝 VirtualBox Guest Additions,之後再重新開機 X11 就一切正常了
    # sh media/VBoxLinuxAdditions-x86.run
  • VirtualBox 轉移到 VMWare:
  1. 使用以下 Virtual Box 本身提供的工具轉換硬碟檔,指令如下:
    BoxManageexe clonehd xxxx.vdi xxxx.vdmk --format VDMK
  2. 在 VMWare 建立新的虛擬主機,建立完後,將原本硬碟刪掉,然後加入一個新的硬碟,選擇已經存在的檔案,然後直接掛載 vdmk 檔
  3. 啟動虛擬機器,有可能會有 GUI(X11) 無法啟動的問題,依照指示輸入密碼重新建立 xorg.conf
  4. 進入系統後,解安裝 VirtualBox Guest Additions(如果有安裝的話)
    # /opt/[VBoxAddonsFolder]/uninstall.sh
  5. 安裝 VMTool,之後再重新開機 X11 就一切正常了
    # tar zxvf vmware.xxx.tar.gz
    # ./vmware-install.pl

2011年12月13日

如何修改GRUB2的預設開機

Fedora 的開機管理軟體已經從 grub 升級到 grub2 了,假設我們安裝的是多重系統,要如何更改預設的開機?
因為更改預設開機的選項已經不存在安裝步驟裡了,我們只能在安裝完成後再更改,以更改到 Windows 系統為例:
首先找到 Windows 的安裝
# cat /boot/grub2/grub.cfg | grep Window
menuentry "Windows XP (loader) (on /dev/sda1)" --class windows ...
....

將結果的字串紅色部分記錄下來,然後執行下述命令:
# grub2-set-default "Windows XP (loader) (on /dev/sda1)"

接著重新產生設定檔即可
# grub2-mkconfig -o /boot/grub2/grub.cfg

2011年10月30日

如何更改預設的 home 格式

Linux 預設的 home 格式是由以下這個 folder 複製而來的:
# /etc/skel

所以只要在底下增加目錄或檔案就可以在 useradd 時順便建立這些檔案。

PS.不同的 distribution 可能有不一樣,可以先檢視 /etc/default/useradd 來確認,Fedora 和 CentOS 是可以適用的。

2011年6月23日

如何搬移subversion repository 到其他主機

首先先將原本的repositiry dump 下來
# svnadmin dump /svn/repository_name > repository_name.dump

接著到新的主機建立一個新的repository
# svnadmin create /svn/repository_name

然後把檔案還原回去
# svnadmin load /svn/repository_name < repository_name.dump

由於上述動作只完成資料庫的部分,所以最後再把conf資料夾裡的設定套用到新的repositiry裡,通常直接複製覆蓋即可。

PS.如果無法編輯 log 檔,請執行下述指令:
# cp hooks/pre-revprop-change.tmpl hooks/pre-revprop-change

如何讓root登入vsftpd

刪除 root 行在下列兩個檔案:
/etc/vsftpd/ftpusers
/etc/vsftpd/user_list

2010年7月27日

如何設定NFS使用固定port以利防火牆設定

當 LINUX 啟動 NFS Server 時,其相關的service 會連帶使用幾個 ports:

固定
NFS deamon: 2049
NFS portmap:111

隨機
rquotad
lockd
mountd
statd
statd outgoing

隨機的這幾個 ports 就會造成設定防火牆的困擾,所以須透過設定檔將其值固定,編輯下列檔案:
# vi /etc/sysconfig/nfs

增加下列幾行設定:
RQUOTAD_PORT=4000
LOCKD_TCPPORT=4001
LOCKD_UDPPORT=4001
MOUNTD_PORT=4002
STATD_PORT=4003
STATD_OUTGOING_PORT=4004

存檔後重新啟動 NFS
# service nfs restart

接著只要把防火牆的 tcp port 111, 2049, 4000-4004 和 udp port 4001 打開就可以了

2010年7月26日

設定開啟 iptabeles 防火牆的特定 port

1.編輯下列設定檔:
# vi /etc/sysconfig/iptables

2.將下列敘述加入設定檔中
-A RH-Firewall-1-INPUT -m state --state NEW -m [tcp/udp] -p [tcp/udp] --dport [port_number] -j ACCEPT

例如要開啟 tcp port 4000:
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 4000 -j ACCEPT

3.將 iptables 重新啟動即可
#  /etc/init.d/iptables restart

4.下述命令可以檢查設定是否正確:
netstat -tulpn | less
iptables -L -n

2010年6月4日

使用 Linux Command 格式化硬碟

磁碟分割的指令:
# fdisk [device]

格式化指令:
# mkfs [device]
# mkfs.ext2 / mkfs.ext3 / mkfs.ext4 [device]
# mkswap [device]

coLinux 硬碟擴充

coLinux 下載的 image 檔大小通常只有4G,對於使用上通常是不夠的,有三種解決方法:

A.用 toporesize 直接更改 image 檔,不過僅適用於 ext2 / ext3 檔案系統

1. 點選 "find file"

2. 選擇要更改的 image 檔

3. 移動底下的方塊調整大小

4.點選 Resize file 執行

B.使用 dd 

1.使用另外的 Linux 系統建立新的 image 檔
# dd if=/dev/zero of=20G.img bs=1G count=20

2.將新的 image 檔啟動時掛載
cobd2="C:/Program Files/coLinux/20G.img"

3.使用 dd 複製硬碟
#  dd if=/dev/cobd0 of=/dev/cobd2

4.關閉 coLinux,將原先的設定檔的 image 替換掉,cobd2 的部份刪掉
cobd0="C:/Program Files/coLinux/20G.img"
------------------------------------------------------
無論使用 A 或 B 方法,重新啟動後需運行下列的指令:

1.執行 resise2fs 調整大小
# resise2fs /dev/cobd0

2.執行 e2fsck 掃描硬碟
# e2fsck -f /dev/cobd0

C.另外建立一個 image,並且 mount 在使用者家目錄

1.使用上述 B 方法的步驟 1 ~ 2 建立新 image,啟動後編輯下列檔案
# vi /etc/fstab

2.添加下列敘述將新 image 開機時 mount 在 /home 底下
/dev/cobd2    /home    ext3    defaults    1    2

3.重新開機

2010年6月2日

如何關閉 SELinux

SELinux 在 Fedora 安裝完成後,預設是開啟的,可以透過下列幾種方式來控制它:

1. 在命令列裡直接執行下列指令暫時關閉
# setenforce 0

2. 在命令列裡直接執行下列指令重新開啟
# setenforce 1

3. 修改 /etc/selinux/config 檔案完全關閉,將下列設定值改為 disable
SELINUX=disabled

然後重新啟動即可

2010年5月27日

設定 Fedora 以文字介面開機

Fedora 開機時的預設是 GONME 圖形介面的登入畫面,編輯以下檔案即可將預設改為文字介面:
# vi /etc/inittab

在註解中可以找到以下的敘述:

# Default runlevel. The runlevels used are:
# 0 - halt (Do NOT set initdefault to this)
# 1 - Single user mode
# 2 - Multiuser, without NFS (The same as 3, if you do not have networking)
# 3 - Full multiuser mode
# 4 - unused
# 5 - X11
# 6 - reboot (Do NOT set initdefault to this)

所以只要將下列敘述由 5 (X11) 改為 3 (Full multiuser mode) 即可

id:3:initdefault:

重開機後確認設定是否成功,如果要啟動圖形介面,只要輸入下列指令即可:

# startx

2010年5月17日

Fedora 9 ~ 12 開機自動登入GNOME桌面環境

將 Fedora 當做 Server 使用時,GNOME 的 Remote Control 必須在使用者登入後才有作用,所以將系統設為自動登入將會方便許多,使用 root 的身分編輯 /etc/gdm/customer.conf ,將下列幾行加入:

[daemon]
TimedLoginEnable=true
AutomaticLoginEnable=true
AutomaticLogin=username
TimedLogin=username
TimedLoginDelay=0

只要將 username部分替換成要登入的使用者名稱即可

2010年2月21日

Trash can at command line

Linux Gnome 或 KDE 都有資源回收筒的設計,不過當我們在 command line 當中刪除檔案時,是不會送到回收筒的,造成刪除的檔案無法回復。下述的套件是一個可以在 command line 當中建立回收筒的機制,給自己再壹次的機會:

libtrash

下載完後,編譯安裝,將下列兩行設定加到家目錄底下的 .bash_profile 後就可以用了:

export  LD_PRELOAD=/usr/local/lib/libtrash.so
alias  su="su -l"

之後刪除的檔案會被放到家目錄的 Trash/ 目錄底下,如果不小心誤刪了,就到這裡面找找吧!

刪除的檔案如果不是家目錄底下的,則會被放到 Trash/SYSTEM_ROOT/ 裡。
套件的設定檔安裝於 /etc/libtrash.conf ,個人的設定檔則在 ~/.libtrash

2010年2月9日

Linux Command 彙總

1.設定程式 priority

nice  -[nice_number] process/application

[nice_number] : -20~19,數字越大,priority越低

Example:
# nice -5 baobab &

2.調整執行中程式的 priority

renice  [nice_number]  [-p  PID]  [-g  group_name]  [-u  username]

Example:
# renice  -20  -p  17756
# renice  7 -u calvin

3.增加使用者和設定密碼

useradd [-u uid] [-g group_name]
passwd

Example:
# useradd chiling
# useradd -u 501 -g users selina
# passwd chiling

4.增加 samba 使用者兼設定密碼

sambapasswd -a

Example:
# sambapasswd -a chiling

使用者帳號必須存在 LINUX 使用者當中

5.顯示檔案內容於stdout

strings

Example:
# strings env.cfg

一般遇到要輸出檔案內容,最常用的命令就是 cat 了,不過 strings 有一個比 cat 好用的地方就是,它可以將 binary 的檔案輸出成字串的格式以方便閱讀。

6.查看 DMI table 資訊,就是硬體相關的參數。包含 BIOS 版本、主機板資訊、CPU......等

dmidecode

7.強制連線登出

skill -KILL -u



Example:
# skill -KILL -u chiling

8.查看目錄使用者

lsof | grep

Example:
# lsof | grep /home/chiling

2010年2月2日

使用 mdadm 建立 Software RAID 1 於Linux 初始安裝

準備兩顆容量一樣的硬碟來建構 RAID 1 環境,以避免硬碟損壞造成的資料遺失。使用 VirtualBox 虛擬軟體來嘗試,搭配的 distribution 是 Fedara 12。
首先在 VirtualBox 建立 Fedora 的虛擬主機,並且掛載兩顆虛擬硬碟。

1.初始安裝硬碟切割
請選擇 "Review and modify partitioning layout" 進入自訂模式

將預設的切割全部清除,讓硬碟的 partition table清空

按下 "RAID" 鈕,選擇 "Create a software RAID partition"

建立 software RAID 磁區於第一顆硬碟 (/dev/sda),首先建立要供掛載 /boot 用的磁區,請記得勾選 "Force to be a primary partition" 選項。

重複上一個動作於第二顆硬碟(dev/sdb)建立同樣大小的 software RAID 磁區,接下來請再按一次 "RAID" 鈕,這次請選擇 "Create a RAID device(default=/dev/md0)"

選擇 /boot 為掛載點,檔案系統為 ext4 ,RAID 的等級是 RAID1,將剛剛建立的 software RAID 磁區 sda1 和 sdb1 都勾選以用來組成 md0 的 RAID 裝置。

接下來要建立的是 swap 的磁區,swap 不需要也不建議使用 RAID partition,以避免讀寫的問題。請直接按 "New" 鈕在兩顆硬碟上各建立 swap 的分割磁區,swap 的大小至少要等於記憶體的大小,建議值是兩倍記憶體的大小。所以在兩顆硬碟上各建立一個等同於記憶體大小的 swap 磁區,加起來剛好是2倍記憶體大小。

最後剩下的空間規劃為掛載 / 的磁區,重複上述建立 /boot 磁區的步驟操作

硬碟的分割到此就完成了:

繼續安裝的步驟完成安裝並重新啟動。

2.查看 RAID 運作狀況
Fedora 的 software RAID 是 mdadm 這個套件,進入系統後,可以用下列命令查看 RAID array 運作的狀況:

# cat  /proc/mdstat
Personalities  :  [raid1]
md1  :  active  raid1  sda3[0]  sdb3[1]
             7132416  blocks  [2/1]  [UU]

md0  :  active  raid1  sda1[0]  sdb1[1]
             204736  blocks  [2/1]  [UU]

unused  devices  : 

其中 [UU] 表示兩個 software RAID 磁區皆運作正常,如果只有一個,就會顯示 [U_] 或 [_U]。

2.安裝 GRUB 於兩顆硬碟
系統安裝時預設把 GRUB 安裝到第一顆硬碟(/dev/sda)的 MBR ,如果遇到了此硬碟毀損的狀況,系統將無法正常開機,必須以光碟開機進入 rescure mode 操作。為了避免此一情形,所以事先將 GRUB 也安裝到第二顆硬碟中:

# grub
grub> device  (hd1)  /dev/sdb
grub> root  (hd1,0)
grub> setup  (hd1)
grub> quit

3.測試單一硬碟開機
接著測試是否兩顆硬碟都可以單獨存在並開機,將機器關機,卸載第一顆硬碟,再將機器啟動,查看 RAID 的狀況,可以發現第一顆硬碟被從 RAID array 裡移除了。

# cat  /proc/mdstat
Personalities  :  [raid1]
md1  :  active  raid1  sdb3[1]
             7132416  blocks  [2/1]  [_U]

md0  :  active  raid1  sdb1[1]
             204736  blocks  [2/1]  [_U]

unused  devices  : 

將機器關機,重新掛載第一顆硬碟,然後卸載第二顆硬碟再將機器啟動,確認是否也可以正常啟動。

結束測試後, 再把系統回復原來的設置。將兩顆硬碟都掛載開機,開機後會發現 RAID 的狀況如下:

# cat  /proc/mdstat
Personalities  :  [raid1]
md1  :  active  raid1  sda3[0]
             7132416  blocks  [2/1]  [U_]

md0  :  active  raid1  sda1[0]
             204736  blocks  [2/1]  [U_]

unused  devices  : 

這是因為剛剛測試時,第二顆硬碟是被取下的,所以被從 RAID array 中移除了。只要運行下列的指令將它再次加入即可:

# mdadm  /dev/md1  --add  /dev/sdb3
# mdadm  /dev/md0  --add  /dev/sdb1

即時查看 RAID 的狀況,可以發現正在進行 recovery 的動作,完成後即可正常運作了

# watch  cat  /proc/mdstat
Every  2.0s:  cat  /proc/mdstat

Personalities  :  [raid1]
md1  :  active  raid1  sda[0]  sdb[1]
             7132416  blocks  [2/1]  [U_]
             [>.......................................]    recovery  =  3.1%  (228288/7132416)  finish=7.0min  speed=16306K/sec

md0  :  active  raid1  sda1[0]  sdb1[1]
             204736  blocks  [2/1]  [U_]
                  resync=DELAYED

unused  devices  : 


4.置換硬碟
假設第一顆硬碟毀損了 (下列 command 皆假設是第一顆毀損) ,在 VirtualBox 中建立一顆大小相同的空白硬碟,將第一顆硬碟替換掉,這時會使用第二顆硬碟來開機,進入系統後,先查看硬碟的掛載情形

# fdisk -l

空白的硬碟應是位於 /dev/sda,正常硬碟為 /dev/sdb,首先將第二顆硬碟的分割表複製到空白的第一顆,使用 --force 參數忽略警告訊息:

# sfdisk  -l   /dev/sdb  |  /dev/sda  --force

完成後以 fdisk -l 指令確認複製成功,接著安裝 GRUB 於新硬碟 :

# grub
grub> device  (hd0)  /dev/sda
grub> root  (hd0,0)
grub> setup  (hd0)
grub> quit


最後只需要把新硬碟的 software RAID 磁區重新加入 RAID array 即可:


# mdadm  /dev/md1  --add  /dev/sdb3
# mdadm  /dev/md0  --add  /dev/sdb1
# watch  cat  /proc/mdstat

recovery 完成後就可以正常使用了。

2010年1月28日

執行 e2fsck 檢查 LVM 磁碟

當要使用 e2fsck 指令檢查當前系統時,第一個遇到的問題就是目前磁區是被 mount 的,所以會有警告的訊息,警告執行檢查的話有可能造成磁區的毀損,不過此一指令仍然可以執行,但風險太大,除非有備份。替代的方法有二:

1.rescure mode
使用安裝光碟從光碟開機,選擇進入 rescure mode ,遵從畫面指示選擇硬體配置,但請記得在提示要將現存磁區 mount 時,請選擇 skip,而不是 continue。

2.LIVE CD
開機完成後,同時按住 Ctrl + Alt + F1 進入文字模式,以 root 身分登入;或者登入圖形介面,開啟 Terminal。

無論使用上面何種模式,接下來請輸入下列指令:

# lvm vgscan                /*自動尋找存在於硬碟上的 LVM 分區*/
# lvm vgchange -ay       /*將找到的所有 LVM 分區設定為 active*/
# lvm lvs                      /*列出分區路徑*/

現在我們可以對 LVM 的分區下 e2fsck 的指令了,例如:
# e2fsck -f -y /dev/mapper/VolGroup00-LogVol00

要記得加 -f 的參數來強制執行,不然是不會有動作的,因為 e2fsck 預設只會對有被記錄問題的磁區進行掃描,但我們所使用的方式是看不到紀錄的,因此要用強制的方式來執行。