網頁

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

2013年3月26日

Install the Insight Debugger on Ubuntu

Insight 是一個基於 gdb 架構上非常方便使用的一套 GUI Debugger 軟體。可惜的是,Insight已經從 Ubuntu packages 中被移除了。

但是,感謝SevenMachines,a PPA repository 目前繼續提供此軟體下載的服務。因此將這個repository加進你的 apt source 裡頭,把下面兩行加進 /etc/apt/sources.list

deb http://ppa.launchpad.net/sevenmachines/dev/ubuntu natty main
deb-src http://ppa.launchpad.net/sevenmachines/dev/ubuntu natty main


然後更新你的 apt source
apt-get update

接著就直接給他大膽的安裝下去吧
apt-get install insight

現在你就可以開始享受 Insight 了。在 command line 下執行
insight programename

就會跳出一個GUI的畫面,操作非常的容易,完全相容於CLI gdb,而且也有提供gdb command line的畫面,所以只要你熟悉gdb的話,Insight 的操作一定也沒有問題。

Reference

2013年3月25日

Install vim

安裝vim

sudo apt-get install vim

全域設定 /etc/vim/vimrc

預設的vim設定檔

局部設定 /etc/vim/vimrc.local

我們可以不更改全域設定的情況下,建立一個局部設定檔給所有的使用者使用

個人設定 ~/.vimrc

每一個使用者可以在自己的家目錄下建立個人的設定檔

Install openssh-server

Origin: ubuntu SSH遠端安全連線安裝及設定

你在安裝ubuntu時有安裝openssh嗎

接下來我們可以來看看怎麼設定ssh的部份

安裝openssh-server

如果你沒有安裝ubuntu時沒有安裝openssh,請用以下熟悉的指令來做安裝

sudo apt-get install openssh-server

好,當我們安裝好,基本上就可以用putty來用遠端登入了,當然是有帳密的人就可以登入啦,但是我們都瞭解,這樣子是不安全的,基本上我們要限定連入IP還有改變PORT,如此才會比較安全。

接下來我們一樣可以來檢查是否有執行這個ssh-server,輸入以下指令

ps aux | grep ssh

設定ssh_config內容

Install apache+mysql+php+phpmyadmin

1. 安裝mysql

sudo apt-get install mysql-server

中間需要輸入mysql的管理員密碼

2. 安裝apache 2.0

sudo apt-get install apache2

3. 安裝配置php5

sudo apt-get install php5

sudo apt-get install libapache2-mod-php5

sudo apt-get install php5-gd

sudo apt-get install php5-mysql

4. 安裝phpmyadmin

sudo apt-get install phpmyadmin

中間需要輸入mysql的管理員密碼,和上面設置的一樣即可

5. 重啟apache2

sudo /etc/init.d/apache2 restart

6. 測試apache

在瀏覽器中輸入http://localhost/

會有apache server預設的網頁顯示,真實檔案路徑在/var/www底下

這邊看得到的話表示apache server成功設定

7. 測試php環境

在/var/www建立info.php測試檔案,內容如下

<?php

phpinfo();

?>

在瀏覽器中輸入http://localhost/info.php

你將會看到php的相關配置信息,說明環境都配置好了。

8. 測試phpmyadmin

在瀏覽器中輸入http://localhost/phpmyadmin

應該可以看見 phpmyadmin的登入畫面

若在連結時出現: Not Found,解決方法是做一個Link

cd /var/www

ln -s /usr/share/phpmyadmin

Install Samba

將Linux資料夾當成Window網路芳鄰上的共享資料夾

1.安裝 samba

sudo apt-get install samba

2.設定 samba 設定檔

sudo vim /etc/samba/smb.conf

3.增加分享的資料夾

在檔案的最後面加上

[Sharename]                                        ;分享資料夾的名稱
    comment = describe sharename
    path = /var/lib/sharename                ;分享路徑
    browseable = yes                             ;是否可瀏覽
    read only = no                                   ;唯讀
    create mask = 0644                         ;檔案遮罩
    directory mask = 0755                     ;資料夾遮罩

4.重新啟動 samba 服務

sudo /etc/init.d/smbd restart

5.建立samba帳號密碼

sudo smbpasswd -a <帳號>

tmux: 好用的多終端機視窗的軟體

mux 是一個 terminal multiplexer 的軟體,也就是可以在一個螢幕上切換多個終端機。當你暫時不需要tmux的時候,你也可以detach回到正常的終端機模式下,這時候tmux就會在背景繼續運作,當你需要tmux的時候,attach回到tmux的工作環境下。

過去, 我使用 Putty or XShell 連到Linux主機,需要開多個終端機來管理機器或撰寫程式,常常需要在多個終端機中手動切換終端機螢幕,非常的麻煩。用了tmux以後,你只要在鍵盤上就可以新增終端機、切換終端機,讓你的手指不再需要離開鍵盤,非常的方便。

tmux  的安裝

sudo apt-get install tmux

啟動 tmux

在命令提示字元下打入tmux就可以進入tmux工作環境

tmux的功能鍵

在 tmux 中,使用Ctrl + b當作任何功能的起始按鍵,所以要按Ctrl + b,放掉後,接著加上其他的按鍵就可以開啟tmux的任何功能。

快速鍵 說明
Ctrl + b 快速鍵的起始按鍵
c 開新視窗
exit 關閉視窗
p 前往前面一個視窗
n 前往後面一個視窗
0 to 9 前往特定的視窗
" 分割上下視窗
% 分割左右視窗
SPACE 重新排列視窗
↑ ↓ ← → 移動到其他的分割視窗
o 循環移動到其他的分割視窗
d 把目前tmux session丟到背景去 (回到原本terminal)
tmux attach 回到剛才的tmux session
? Help
Alt + ↑ ↓ ← → 調整分割視窗大小

tmux 設定檔

因為Ctrl+b用得不是很順手,因此用Ctrl+a取代Ctrl+b。新增設定檔~/.tmux.conf,內容如下:

# Make it use C-a, similar to screen..
unbind C-b
unbind l
set -g prefix C-a
bind-key C-a last-window

重新讀取tmux設定檔

tmux source-file ~/.tmux.conf

2013年2月18日

Linux 命令行 Find 小技巧


命令行一直是Linux用戶用來解決問題的首要選擇,當需要做某件事時,你只要想好如何去做,從那時起你就知道該如何做了

不過很少有人花些時間系統地瞭解處理工具在處理過程中的輸入和輸出。因此對於最基本實用工具的功能可能並不是很瞭解。在本文中,我們將討論所有shell工具箱中都有的一個重要工具:find實用工具。

正如它的名字所表示的,find是在磁碟中查找滿足給定標準的文件和目錄的應用程序。默認情況下,它從當前目錄開始,向下掃瞄所有子目錄。Find基於各種不同的文件屬性來進行查詢,而且可以對查詢結果執行某種操作,通常是對每個查詢結果運行一些程序。

讓我們來看一些例子:首先,為了在當前目錄或子目錄中查找所有html文件,我們可以使用:

find -name “*.html” -type f

2013年2月5日

tar 指令的常用語法

在Linux上,為了便於檔案以及目錄的交流、儲存以及傳輸,我們通常把一大堆檔案以及目錄「打包」為一個單一檔案。這個打包工具就是tar,而打包好的檔案就稱為tar ball (xxx.tar)。

順帶一提的是,tar本身並沒有壓縮檔案,而我們經常看到的 xxx.tar.gz (.tgz) 是 tar ball 再經 gzip 壓縮,而 xxx.tar.Z 則是 tar ball 再經 compress 壓縮,而 xxx.tar.bz2 則是 tar ball 再經 bzip2 壓縮。

常用參數

  • -c 打包一個 tar 檔案
  • -x 解開一個 tar 檔案
  • -t 檢視 tar 檔案的內容
  • -z 使用 gzip 壓縮
  • -j 使用 bzip2 壓縮
  • -v 顯示建立 tar 檔案的過程
  • -f 指定 tar 檔案的檔案名稱 (此參數的後面必須接目標檔名)
  • -C 解壓縮的時候,可以解壓縮到指定的路徑下

xargs 將上一個程式輸出當成下一個程式的參數輸入

Origin: xargs 應用介紹

今天介紹的指令是 xargs,這個指令並不常見,卻很實用
它的工作是將上一個程式輸出的結果轉成下一個程式的參數輸入

範例:
假設有一個目錄如下 (這個樹狀目錄架構是使用 tree 指令所產生的)

.
|-- Makefile
|-- VERSION
|-- VERSION.bak
|-- inc
|   |-- fork.h
|   |-- main.h
|   `-- main.h.bak
`-- src
    |-- common_lib
    |   |-- dl_math.c
    |   |-- dl_math.c.bak
    |   |-- dl_string.c
    |   `-- dl_string.c.bak
    |-- fork.c
    |-- fork.c.bak
    `-- main.c

這是一個程式開發的專案目錄,如果我想要將所有的*.bak 一次清除,那麼該怎麼做呢? 首先我得先找出所有的 *.bak,可以使用 find 指令

find . -iname "*.bak"

可以得到以下的結果
./VERSION.bak
./inc/main.h.bak
./src/fork.c.bak
./src/common_lib/dl_string.c.bak
./src/common_lib/dl_math.c.bak

接下來就是關鍵了
你會怎麼做呢?
1) 把結果使用">" 導向檔案,全部加入 rm (linux 的刪檔指令)嗎?
2) 還是把這些輸出內容變成 rm 的輸入呢?
第一種方式是愚公移山…如果有幾千個檔案…可能會很辛苦~
第二種方式就是使用xargs 來實現我們的理想

find . -iname "*.bak" | xargs rm

2013年1月30日

如何避免Linux zombie process的產生?

Origin: 如何避免Linux zombie process的產生?

所謂zombie process(殭屍行程)的成因,在於某行程已結束,但其父行程(parent process)並未取得該行程之結束狀態,則該行程就會變成zombie process,直到其父行程呼叫wait()取得該行程結束狀態。

用更精確的說法,來自Advanced Programming in the Unix Environment這本書:
The process that has terminated, but whose parent hasn’t yet waited for it.

Zombie process會造成kernel內部有多餘的一筆process資料儲存,佔了一筆資料量(process id, termination status, the amount of CPU time taken by the process等等資訊),但其卻已經結束了,若是系統load很高,造成的影響就更大了,譬如process數量到達上限,又發生有zombie process,可能就會產生無法執行程式的問題。因此我們必須避免zombie process的產生。

正常的multiprocess程式執行的流程,如下圖所示,parent process必須wait其子行程的結束。