最近還蠻常用到Linux的指令,所以簡單來的作個整理
雖然Linux的指令其實非常的複雜,一個指令可能擁有許多的參數
但其實就程式設師的角度來看,比較常用的指令就那些
不需要記所有的指令和參數
在鳥哥的網站應該有一份整理好的清單的
http://linux.vbird.org/linux_basic/redhat6.1/linux_06command.php
其實知道這份清單中的指令應該就夠用了
不過,我覺得最好還是大概看過鳥哥的基本篇的文章教學,建立觀念也是十分重要的
下面是我將鳥哥整理好的清單列出,然後加上紅色是我覺得一定要記住的指令
登入與登出(開機與關機):telnet, login, exit, shoudown, reboot
Linux 多人多工與背景執行功能:& 與 [ctrl]+[z], fg, ps, kill
檔案與目錄管理:cd, pwd, ls, cat, more, mkdir, rm, rmdir, mv, cp, ln, find, whereis, chmod, chown, chgrp, df, du
磁碟與硬體管理:mount, fdformat, fdisk, mke2fs, mkbootdisk, badblocks, fsck, rpm
系統管理員:su, clear, dmesg, groupadd, useradd, userconf, passwd, who, whoami, top, free, quotacheck, edquota
壓縮指令:compress, gzip, tar
一些網路功能:ifconfig, route, netstat, hostname, ping, nslookup,talk, traceroute, mail
其他有的沒的:date, cal, grep
ftp 指令:ftp, ncftp, gftp
相關設定指令:set, uname, setup, lilo, Xconfigurator, xf86config
X-Window內的設定指令:startx, netconf, netcfg, XF86Setup
另一個指令使用的重點就是組合技了,就是學會使用管線指令,不會管線指令就像打格鬥天王只會重腳一樣,不過也不是所有指令都可以使用,需要自已慢慢摸索,我舉一個我比較常用的例子
比如我想在某個目錄下找特定檔名的檔案
# ls|grep Piece
|就是管線指令,ls會將目前所在目錄的檔案列出,利用|管線指令就檔案清單的資料交給grep,grep這個指令的作用就是找出包含Piece關鍵字的檔案
另外再補充一個就是,一開始在學習指令時或是看到別人寫的指令時,有時會不太了解,可以用利Linux指令解釋網站
http://blog.soft.idv.tw/?p=1628
這裏面列出了二個網站,不過我比較推薦
http://explainshell.com/
有可下載原始檔下來使用
在這篇並沒有特定的指令作解說,所以之後我可能針對常用和使用上比較複雜的指令進行整理。
2014年4月7日 星期一
2014年3月13日 星期四
如何在Linux下開啟oracle
每次重開機的時候oracle資料庫都不會重新啟動,所以查了一下如何開啟資料庫
系統的版本主要是Red Hat,Cent OS應該也是可以通用的。
當資料庫不能連線時,記得先檢查網路和主機狀態。
開啟資料庫:
su - oracle
sqlplus "/sysdba"
進入slqplus
sql> startup
sql> exit
開啟監聽器:
檢查監聽器
lsnrctl status
開啟
lsnrctl start
參考資料:
http://mrmo.cc/1594/%E5%9C%A8centos%E4%B8%8B%E5%95%9F%E5%8B%95%E5%AE%89%E8%A3%9D%E5%A5%BD%E7%9A%84oracle%EF%BC%8C%E4%B8%A6%E8%A8%AD%E5%AE%9A%E9%96%8B%E6%A9%9F%E8%87%AA%E5%8B%95%E5%95%9F%E5%8B%95/
系統的版本主要是Red Hat,Cent OS應該也是可以通用的。
當資料庫不能連線時,記得先檢查網路和主機狀態。
開啟資料庫:
su - oracle
sqlplus "/sysdba"
進入slqplus
sql> startup
sql> exit
開啟監聽器:
檢查監聽器
lsnrctl status
開啟
lsnrctl start
參考資料:
http://mrmo.cc/1594/%E5%9C%A8centos%E4%B8%8B%E5%95%9F%E5%8B%95%E5%AE%89%E8%A3%9D%E5%A5%BD%E7%9A%84oracle%EF%BC%8C%E4%B8%A6%E8%A8%AD%E5%AE%9A%E9%96%8B%E6%A9%9F%E8%87%AA%E5%8B%95%E5%95%9F%E5%8B%95/
Borland C++ short key
Borland Build C++ 6.0跟我很不熟的一套IDE,基本上比較常用的在功能選單上都有註明,不過這真的不是一套非常友善的開發軟體,畢竟也有一段歷史了,我在這裏記錄一些常用,但不在功能選單上的快速鍵。
書籤Bookmarks,有時trace code會需要用到…,但右鍵選單上設計的不夠理想,常常誤點…,雖然預設快速鍵也不是很好用就是了
<Ctrl-k><0> Sets bookmark 0
<Ctrl-0> Go to bookmark 0
之後,如果有其它常用的快速鍵,我再補充。
參考資料:
http://content.hccfl.edu/pollock/Docs/BCCEdit.htm
書籤Bookmarks,有時trace code會需要用到…,但右鍵選單上設計的不夠理想,常常誤點…,雖然預設快速鍵也不是很好用就是了
<Ctrl-k><0> Sets bookmark 0
<Ctrl-0> Go to bookmark 0
之後,如果有其它常用的快速鍵,我再補充。
參考資料:
http://content.hccfl.edu/pollock/Docs/BCCEdit.htm
2014年3月5日 星期三
Oracle SYNONYM 的建立和刪除
當使用者B想用使用者A上的資料表時,除了使用Grant賦予權限外,可以使用synonym來建立table的同義字供別的使用者使用。
我主要建立public共用的synonym,建立指令如下:
CREATE PUBLIC SYNONYM synonym_name
FOR user_name.table_name
刪除synonym指令如下:
DROP PUBLIC SYNONYM synonym_name
參考資料:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7001.htm
http://blog.itpub.net/12778571/viewspace-674453/
我主要建立public共用的synonym,建立指令如下:
CREATE PUBLIC SYNONYM synonym_name
FOR user_name.table_name
刪除synonym指令如下:
DROP PUBLIC SYNONYM synonym_name
參考資料:
http://docs.oracle.com/cd/B19306_01/server.102/b14200/statements_7001.htm
http://blog.itpub.net/12778571/viewspace-674453/
2013年12月7日 星期六
好用的系統和資料備份軟體-Macrium Reflect和FBackup
在電腦中最重要的部分就是資料了!因此,我也一直在思考如何快速和方便的備份資料,在偶然的機會發現了Macrium Reflect這套磁碟備份軟體,幾乎有所有我想要的功能,使用上也十分的方便,重點是Free的,不過現在官方網站已經沒有提供了,需要另外在自已抓就是了。
首先先介紹他一些我覺得非常好用的功能,
- 可以將partition的資料轉成image檔和還原,不過一次只能做一個實體硬碟就是了
- 另一個主要的功能是有排程備份的功能,並且可以選擇備份方式,如差異或是完整備份。
- 可以製作開機環原光碟和USB,這個功能十份的方便,可以用來做系統的還原功能。
- 可能網路讀取image的功能。
- 可以掛載image檔,然後還原想要還原的檔案
前三點是我主要使用的功能,第四點可能要等我買NAS之後再試吧(等NAS降到五千以下?)。不知道他有沒有提供大量主機還原的方案,可能Server版有提供吧,有興趣的朋友可能自已再進一步的研究!(中研究有研發一個叫再生龍的大量主機還原的軟體,可以參考看看)。
以下是他的教學網站,因為他寫的太好了,我就不作教學了XD
你可以到丫榮福利社來下載免費版
當然,每套軟體不可能都完美的符合你的需求,但Macrium Reflect這套軟體可以完美的達到系統備份的功能,也就是備份系統碟,但在資料碟中我並不需要備份整顆Partition,比如一些影片和照片我不想浪費儲存空間,或是把一些較不重要的資料放至網路儲存空間。這時可以使用FBackup,這是我用來備份特定資料夾所使用的備份軟體,為什麼我會推薦這套軟體最大的原因是穩定性和是Free的,由於我的系統主要是使用Windows 7 64位元版和資料量都多達幾百G,在我試過了幾套免費的資料備份軟體時,常常造成軟體當掉的情況,而FBackup算是很穩定的資料備份軟體。
在這我介紹一下他的特色和吸引我的地方,
- 可以自已設定需要備份那些資料夾,並將這些設定存成任務,只備份這個任務中的目錄
- 當然也有排程的功能,也可以選擇是差異備份或是完整備份。
- 將檔案儲存成壓縮檔,這可以節省空間,但相反的也需要花費較多的時間就是了!
- 在轉成壓縮檔的時候,可以設定密碼,增加安全性!
這裏是他的簡易教學
你可以到官網下載免費版本
個人在使用上,主要會依據資料的特性做份類,比如是個人或是公司的資料,另外一個分類是變動性較低的資料。
另外,我也開始在思考是否有優秀的網路儲存空間可以利用,主要有幾點需要考量的因素
- 儲存空間的大小,和是否有儲存時間的限制(某些免空有儲存時間的限制)
- 傳輸速率,可以根據使用的需求進行評估,如空間小但速率快,可以拿來做常變動資料的備份區,傳輸速率慢,但空間大,可以拿來做不常用,但資料量大的備份區,但如果太龜速,可能還是不適合做來資料備份使用。
- 特殊功能別的網路儲存空間,主要是網路相簿,如Flick、
無名、google相簿或是Facebook的相簿等等。 - 介面操作的方便性
現在簡介幾個我知道的網路儲存空間,
- Dropbox,很有名的網路儲存空間,雖然使用空間不大,但是在同步性和使用方便性上十份杰出,適用用來做coworker的網路儲存空間!
- Google Drive,空間也不大,主要是拿來放google網路文件的空間,其實也可能拿來放檔案,基本上同步性和使用方便性也是十份優秀,再加上google document的文件功能,在多人修改文件有其優勢,再配合其它google產品,應用面可以說非常的廣泛,但有時在操作上會遇到一些異常的情況…BJ4,不過不是什麼大問題就是了,還是十份的推薦。。
- google相簿,可以即時的和手機的相簿做同步,但大量圖片上傳時會消耗大量的電力,不使用時記得關閉
- flick,儲存空間多達1G,而且照片的品質在網路上看起來蠻有質感的(google也不錯,不過這比較偏向個人觀點),也是蠻吸引人的,但最近已經沒有在玩單眼了,沒有需要大量的相簿空間
- youtube,拿來儲存影片的空間
- 其它,有聽過一些網路儲存空間,但因為沒有使用過,所以放這裏以後再進行研究,hinet的免空、skydrive、mega update
對於網路空間的用法我還沒想出一個最適合我的用法,也可以說幾乎沒在用,很多東西也是丟著,然後也沒什麼在使用就是了,之後如果有想出適合的用法再寫一篇,我如何利用網路儲存空間。
HG(Mercurial)的指令記錄
最近因為一些因素接觸到Mercurial這套版本控管的工具,在網路上都可以找到一些基本的教學,不過我主要先記錄一些我常用的指令就好了。之後有空會再慢慢補齊 。
先簡單介紹Mercurial,Mercurial的中文應該有很多意思,不過我想應該要翻成水銀,因為水銀的化學符號是hg,所以在打指令時都是hg開頭,另外,他是使用python所開發的,所以P派的人應該跟他比較熟吧XD,是類似git的分散式版本控管的,分散式版本控管的優點是,可以在本機端做版本控管,如果有需要再將檔案上傳至遠端主機上,這大幅度的降底主機的儲存成本,又可以更快速的做版本控管的動作,所以才會有github和bitbucket的網站出現。
*藍色的字是根據你實際狀況建立的名稱
主要有二種情況,一種是遠端主機上無此專案,另一種則是遠端主要上已有些專案了
如果要建立新專案的話,先建立hg的目錄,輸入
到目錄底下的.hg/hgrc這個檔案中設定
主要是設定遠端主機的url和commit的username
首先要在Bitbucket建立一個repository
將hg目錄新增至bitbucket
再來commit到本機端
如沒有跳出筆記本的話,可能需要到.hg/hgrc設定
將檔案和一些設定上傳至遠端主機上
將檔案從主要下載下來
將檔案更新到最新的版本
branch的管理,當要建立一個新的分支來開發程式時所需要的指令
先查看一下目前在那個分支
再查看一下有那些branch已被建立
建立一個新的branch
在remote端建立branch的資訊
之後我們就可以用push來上傳檔案
如果我們要在已存在的branch切換時,使用
有時在使用update做branch的切換時會遇到一些問題
基本上會一個分支為出發點看你要取什麼名字,比如
在根據你的新功能從stable開立新分支
當你開發完想做merge時,可以回到stable做merge的動作
另外一個比較特別的情況是,當你回到stable做pull後,想回new_branch時,可能因為版本的差異造成無法切換,解決的辦法有merge和clean,merge已經在上面提過了, clean的方式是
如查看log檔
*藍色的字是根據你實際狀況建立的名稱
第一步:建立HG的專案和基本設定
主要有二種情況,一種是遠端主機上無此專案,另一種則是遠端主要上已有些專案了- 遠端主機上無此專案
如果要建立新專案的話,先建立hg的目錄,輸入
hg init
到目錄底下的.hg/hgrc這個檔案中設定
主要是設定遠端主機的url和commit的username
[paths]
default=https://username@bitbucket.org/owner/project name/
[ui]
username=your name
可以使用Bitbucket這個類似Github的網站來做來遠端的版本控管主機首先要在Bitbucket建立一個repository
將hg目錄新增至bitbucket
hg push https://username@bitbucket.org/owner/project name/
如果有設定default path就不用輸入目的地- 使用遠端主機上的專案
hg clone (https://your name@bitbucket.org/project owner/project name/)
第二步:本機端的版本控管
每次有新檔案時,都要新增檔案
hg add filename
想偷懶可以打
hg add *.*
如果有需要的話可以設定ingore檔,這樣特定的檔案類型就不會被新增了再來commit到本機端
hg commit
會跳出筆記本讓你編輯(Linux版本應該是ui)如沒有跳出筆記本的話,可能需要到.hg/hgrc設定
[ui]
editor=notepad.exe
或是在commit直接輸入註解
hg commit "your comment"
第三步:遠端的版本控管
主要有三個指令將檔案和一些設定上傳至遠端主機上
hg push
將檔案從主要下載下來
hg pull
將檔案更新到最新的版本
hg update
第四步:分支的版本控管
branch的管理,當要建立一個新的分支來開發程式時所需要的指令
先查看一下目前在那個分支
hg branch
再查看一下有那些branch已被建立
hg branches
建立一個新的branch
hg branch branch name
在remote端建立branch的資訊
hg push --new-branch
之後我們就可以用push來上傳檔案
如果我們要在已存在的branch切換時,使用
hg update branch name
這樣會將資料更換到那個branch的最新資料,記得切換前要commit檔案有時在使用update做branch的切換時會遇到一些問題
基本上會一個分支為出發點看你要取什麼名字,比如
hg branch stable
表示這個版本的分支是穩定版在根據你的新功能從stable開立新分支
hg branch new_branch
當你開發完想做merge時,可以回到stable做merge的動作
hg update stable
hg merge new_branch
另外一個比較特別的情況是,當你回到stable做pull後,想回new_branch時,可能因為版本的差異造成無法切換,解決的辦法有merge和clean,merge已經在上面提過了, clean的方式是
hg update --clean
不過這個方法是確定新分支的修改都不要時才建議使用,各位可以想想是否有更聰明的辦法第五步:其它常用的指令
我有一些比較常用的指令如查看log檔
hg log
可以加上-l來選擇要秀最近的幾筆log
hg log -l number
其它我還未使用過的指令,但應該也是蠻有用的指令,我也大概先列出來,有興趣的朋友可以自已研究進一步的用法
hg st 看主線被合併進來的檔案
hg diff 看原始碼差異
結語
只是大概對我目前有用到的指令做個簡單的記錄,下面的網址算是我比較看的懂的介紹,有興趣的朋友可以看看,基本上我之後應該還是會使用git為主,而 hg和git就目前這些指令看起來使用上並沒有什麼不同,不過應該還是有些細微上的差異,比如hbase和branch的管理方式,這當然會對開發造成影響,所以是多人的 group在使用的話,最好還是做進一步的了解在使用。參考資料
2013年10月1日 星期二
Git基本操作指令
這幾天看了一些Git和GitHub的資料,覺得Git真的是不錯的版本控管的軟體,在這邊記錄幾個比較常用的指令吧,網路上已經有許多的教學可以看了,因此,在這我主要是記錄一些我覺得我之後可能比較會用到的指令,需要進一步的資料的話,可以看我的參考資料。
也可以設定alias name來簡化輸入,直接編輯~/.gitconfig
之後如果需要連到github上的話,需要建立ssh的public key
再將id_rsa.pub的全部內容,複製到github上(在個人設定有一個ssh key的地方)
如果要複製專案下來,可以使用
ssh可能用來處理自已的專案,就不用再輸入帳密
從圖一中可以看出,在本機端中,git的檔案可分成三個階段,working, staging,和repository,我正在編輯的程式會存在working中,然後新增和修改的檔案我們會移至staging階段,當要寫這些修改的部分進行版本儲存時,會移至 repository。
或將所有新檔案全部推至staging
當需要將staging的檔案推至本機的repository時
然後會跳出vi視窗,然後輸入你要寫入的註解
可以使用-a和-m簡化步驟
-a 跳過add的步驟
-m 直接寫入comment
查詢commit的記錄
git log
查看各版本相異點
還原檔案或是移至分技
將分技分併一起
上傳資料到遠端
參考資料:
[1] http://pulipuli.blogspot.tw/2013/02/github-part3-git.html
[2] http://gogojimmy.net/2012/01/17/how-to-use-git-1-git-basic/
[3] http://blog.longwin.com.tw/2009/05/git-learn-initial-command-2009/
[4] http://ncu-csie-snmg.github.io/2013-NCU-CSIE-Website-Design-Competition/git.html
[5] http://www.youtube.com/playlist?list=PLuW7NCGvKlyXAOC4Kn7VW0vtPNxSqICrX
[6] http://git-scm.com/book/en/Getting-Started-Git-Basics
初始化設定
- 安裝git和設定
sudo apt-get install git git config --global user.name "your_name" git config --global user.email
也可以設定alias name來簡化輸入,直接編輯~/.gitconfig
cd ~ vi .gitconfig [vi] alias checkout = co
之後如果需要連到github上的話,需要建立ssh的public key
cd ~ mkdir .ssh cd .ssh然後使用預設值,不用設定密碼
再將id_rsa.pub的全部內容,複製到github上(在個人設定有一個ssh key的地方)
ssh-keygen -t rsa -C your_email
- 建立git的專案
git init
如果要複製專案下來,可以使用
git clone https|sshhttps的網址可以去github上面找,可以用來複製別人的專案
ssh可能用來處理自已的專案,就不用再輸入帳密
本機端處理
圖一:git的檔案狀態圖(資料來源[6])
從圖一中可以看出,在本機端中,git的檔案可分成三個階段,working, staging,和repository,我正在編輯的程式會存在working中,然後新增和修改的檔案我們會移至staging階段,當要寫這些修改的部分進行版本儲存時,會移至 repository。
- 新增和儲存
git add your_file
或將所有新檔案全部推至staging
git add .
當需要將staging的檔案推至本機的repository時
git commit
然後會跳出vi視窗,然後輸入你要寫入的註解
可以使用-a和-m簡化步驟
-a 跳過add的步驟
-m 直接寫入comment
- 刪除和移動檔案
git rm需要移動檔案時,可使用
git mv
- 狀態查詢
git status
查詢commit的記錄
git log
查看各版本相異點
git diff
- 建立tag
git tag your_tag
- 建立和管理branch
git branch branch_name [ref]
還原檔案或是移至分技
git checkout
將分技分併一起
git merge a1 a2
- 進階應用
git rbase
- 其它
git show git reset git grep git stash git revert
遠端處理
- 設定
git remote add new-branch project-url
- 取得和上傳資料
git pull
上傳資料到遠端
git push
參考資料:
[1] http://pulipuli.blogspot.tw/2013/02/github-part3-git.html
[2] http://gogojimmy.net/2012/01/17/how-to-use-git-1-git-basic/
[3] http://blog.longwin.com.tw/2009/05/git-learn-initial-command-2009/
[4] http://ncu-csie-snmg.github.io/2013-NCU-CSIE-Website-Design-Competition/git.html
[5] http://www.youtube.com/playlist?list=PLuW7NCGvKlyXAOC4Kn7VW0vtPNxSqICrX
[6] http://git-scm.com/book/en/Getting-Started-Git-Basics
訂閱:
文章 (Atom)