2015年8月29日 星期六

Linux 第四章

重新導向輸出到檔案或程式

代碼0 stdin(標準輸入)      
代碼1 stdout(標準輸出)
代碼2 stderr(標準錯誤輸出)

用法            解釋
>file            重新導向stdout到檔案
>>file          重新導向stdout到檔案,並在當前檔案上增加內容
2>file          重新導向stderr到檔案
2>/dev/null 將stderr錯誤資訊重新導向到/dev/null,/dev/null可以吃掉任何導向這個裝                                       置的資訊!!
&>file          結合stderr and stdout 到同一個檔案
>>file 2>&   結合stdout and stderr增加到當下的檔案內容


Pipelines  管線指令(from鳥哥)

 其實這個管線命令『 | 』僅能處理經由前面一個指令傳來的正確資訊,也就是 standard output 的資訊,對於 stdandard error 並沒有直接處理的能力。那麼整體的管線命令可以使用下圖表示:
線命令的處理示意圖
圖10.6.1、管線命令的處理示意圖

在每個管線後面接的第一個資料必定是『指令』喔!而且這個指令必須要能夠接受 standard input 的資料才行,這樣的指令才可以是為『管線命令』,例如 less, more, head, tail 等都是可以接受 standard input 的管線命令啦。至於例如 ls, cp, mv 等就不是管線命令了!因為 ls, cp, mv 並不會接受來自 stdin 的資料。 也就是說,管線命令主要有兩個比較需要注意的地方:

  • 管線命令僅會處理 standard output,對於 standard error output 會予以忽略
  • 管線命令必須要能夠接受來自前一個指令的資料成為 standard input 繼續處理才行。

tee(from鳥哥)

想個簡單的東西,我們由前一節知道 > 會將資料流整個傳送給檔案或裝置,因此我們除非去讀取該檔案或裝置, 否則就無法繼續利用這個資料流。萬一我想要將這個資料流的處理過程中將某段訊息存下來,應該怎麼做? 利用 tee 就可以囉~我們可以這樣簡單的看一下:

tee 的工作流程示意圖
圖10.6.2、tee 的工作流程示意圖
tee 會同時將資料流分送到檔案去與螢幕 (screen);而輸出到螢幕的,其實就是 stdout ,那就可以讓下個指令繼續處理喔!
[dmtsai@study ~]$ tee [-a] file
選項與參數:
-a  :以累加 (append) 的方式,將資料加入 file 當中!

[dmtsai@study ~]$ last | tee last.list | cut -d " " -f1
# 這個範例可以讓我們將 last 的輸出存一份到 last.list 檔案中;

[dmtsai@study ~]$ ls -l /home | tee ~/homefile | more
# 這個範例則是將 ls 的資料存一份到 ~/homefile ,同時螢幕也有輸出訊息!

[dmtsai@study ~]$ ls -l / | tee -a ~/homefile | more
# 要注意! tee 後接的檔案會被覆蓋,若加上 -a 這個選項則能將訊息累加。
tee 可以讓 standard output 轉存一份到檔案內並將同樣的資料繼續送到螢幕去處理! 這樣除了可以讓我們同時分析一份資料並記錄下來之外,還可以作為處理一份資料的中間暫存檔記錄之用! tee 這傢伙在很多選擇/填充的認證考試中很容易考呢!




從shell提示下編輯文字文件

#vim
按V可以切換命令模式到視覺模式,或切換回來命令模式
按I可以切換到編輯模式,按ESC可以切換回來命令模式
按Shift + :可以切換到延伸命令模式,按ENTER可以切換回命令模式


#gedit
這個應用程式似乎只能字圖形介面下使用呢!
跟記事本很像的工具,滿好用的

P.S.  再呼叫gedit之類的程式,可以再命令後面加上&,這樣可以使程式跑完後回到terminal
#gedit file_name &

2015年8月26日 星期三

Linux 第三章

用man page 來查詢
ex.  #man date
最前面會顯示DATE(1)
以下解釋括號裡面的數字

(1):使用者在shell環境中可以操作的指令或執行檔
(2):系統核心可呼叫的函數與工具
(3):當用的函數(function)與函式庫(library),大部分為C的函式庫(libc)
(4):裝至檔案的說明,通常在/dev下的檔案
(5):設定檔或者是某些檔案格式
(6):遊戲
(7):慣例與協定等,例如Linux檔案系統、網路協定、ASCII code等等的說明
(8):系統管理員可用的管理指令
(9):跟kernel有關的文件

另外查詢文件的命令
#info  or  #pinfo
#firefox file:///usr/share/doc       //可以查詢道一些工具的說明
#redhat-support-tool

2015年8月20日 星期四

Linux第二章

Linux 的檔案結構
                   
                     /(根目錄)


┌─────────────────────────┼─────────────────────────┐
│   │    │   │   │     │   │   │   │   │      │
  bin      boot     dev       etc     home    root      run      sbin     tmp       usr   var
    X                 │                             X                │       │ 
                                  ┌────┬────┤                  ┌────┬────┬────┤     tmp
                                     │         │        │                  │     │        │         │    
         alice   bob   eve                   bin  local     sbin     tmp
                                            X


以上大至是Linux的重要目錄的樹狀圖
有畫XX的就是代表在新版本已經改掉位置的檔案
/bin   >> /usr/bin
/sbin  >> /usr/sbin
/tmp  >>/var/tmp
還有圖上所沒顯示的
/lib     >>/usr/lib
/lib64 >>/usr/lib64



相對路進與絕對路徑的差別:

絕對路徑:路徑寫法一定要從根目錄開始寫,例如:/var/log/message
相對路徑:路徑寫法:不是由根目路開始寫


解釋目錄的功能:
/usr :安裝軟體,共享庫,包括文件以及唯讀的靜態程式資料
/usr底下重要的子目錄:
/usr/bin:使用者命令
/usr/sbin:管理者命令
/usr/local:本地所制定的軟體
/etc :系統的配置特性檔案
/var:在開機期間將變量資料指定到這個系統,會動態變更的文件也可以在這底下找到
/run:從上次開始執行的地方開始運行程式程序,裡面包括ID檔案和Lock檔案......(重開機過後會重建此資料夾)
/root:管理者,home的直接"超級用戶"......
/tmp:暫存檔,超過十天的檔案會自動刪除,如果是在tmp下面的,沒有執行、更改或修改的檔案,會在三十天後被自動刪除
/boot:啟動時所需要的檔案程序
/dev :包含被系統執行過的硬體特別的裝置檔案

一些實用命令
#pwd   //顯示自己所在的資料夾路徑
#touch // 如果沒有檔案的情況下,就會建立新的檔案;如果有檔案,就會更改檔案的日期與時間
#cd    //變換目錄
#ls     //將目路裡的東西列出來
#echo  //顯示指定的字符......
#cp   //複製
#mv  //移動(更名)
#rm   //刪除
#mkdir //新增目錄
#rmdir  //刪除目錄

#ls a*    //列出a開頭的檔案
#ls *a*  //列出中間有a的檔案
#ls [a-c]*  //列出開頭a到c的檔案
#ls ???      //列出三個字元的字
#ls [!a]*    //列出不是a開頭的檔案
#ls ~/glob        //列出~/下的glob目錄內有什麼檔案
#echo ~/glob   //顯示到glob目錄的路徑
#echo file{1..3}.txt  //顯示名為file1~3的txt檔案
#echo file{a..c}.txt  //顯示名為filea~c的txt檔案
#echo file{1,2}{a,b}.txt  //顯示名為file1a file1b file2a  file2b的txt檔案
#echo file{a{1,2},b,c}.txr  //顯示名為filea1 filea2 fileb filec的txt檔案
#$(command) //可以在一串命令中 加入其他的命令
# host=$(hostname)  //這樣的使用法的話,可以將hostname得到的值給host這個,這樣host就變成變數了要使用的話要就用# echo $host

雙引號 " "   //是用來包住命令及字串的,如果裡面有$(hostname)的話就會顯示hostname的內容
,若是單引號則單純顯示$(hostname)。






2015年8月14日 星期五

Linux 第一章節

前置


$ = 使用者(user)
# = 管理者(root)

一些命令:

切換語言: 

使用者更改語言的方法:
$LANG="語言名稱代號" date  

全系統預設語言的更改方法
#localectl set-locale LANG="語言名稱代號"

常用的幾種語言~

英文English    = en_US.utf8
中文Chinese   = zh_TW.utf8
日文Japanese  = ja_JP.utf8

第一章

如何在純文字介面與圖形介面中互換
Ctrl + Alt + F2~F6,若是要切換回圖形介面則是Ctrl + Alt + F1


如果是在RED HAT  LINUX5之前的版本,則是Ctrl + Alt + F7切換回圖形介面

在shell 底下如何下命令:

#<Command> <Options> <Arguments>

Command:命令
Options:調整命令的行為
Arguments:命令的通常目標


Options的表現方式有 -a or --all都會是一樣的結果,不過這也是因命令而異。
如果想要在一行執行多個個命令,可以用分號";"把複數的命令分離。

當忘了如何下命令裡面的參數時可以用 --help來查詢,也有一個叫作man pages的方法

ex. #date --help    //--help的用法
ex. #man date      //man pages的用法



更改密碼的方法:

#passwd
之後只要照著指令輸入兩次密碼就可以更改密碼了~


一些實用的命令:

<Tab>按鍵,是我們最好的好朋友~
p.s. 記得要善用"TAB"鍵來補齊字元,命令、檔案名稱or選項名稱

#file          //會查看檔案內容的開頭並顯示檔案的類型
#head & #tail        //head & tail 性質是一樣的,分別是顯示檔案內容的頭、尾,在預設裡都是只顯示10行,並且都有選項-n可以指定顯示指定的行數

#wc     //word counts,就像字面上寫的一樣,計算行數、字數與字符數
#ls       //這就是常用到不行的命令了,用來顯示該目錄底下有哪一些檔案以及子目錄
#history    //顯示先前執行過的命令
#!"String"    // 驚嘆號後面如果加上字的話  像是#!ls的話,那將會顯示關於下過的ls的命令以及其結果,如果驚嘆號後面是數字,那就會呼叫#history所顯示出來的命令的代號

一些有用的快捷鍵:

Esc + .          //顯示上一次所使用的參數
ctrl + a          //跳到命令列的開端
ctrl + e          //跳掉命令列的尾端
ctrl + u          //清除從游標處到命令列的開端
ctrl + k          //清除從游標處到命令列的尾端
ctrl + r           //搜尋history list 裡的命令
ctrl + Left Arrow             //跳到命令的最前面
ctrl + Right Arrow          //跳到命令的最後面





2015年8月12日 星期三

redhat底下分割USB空間

在LINUX底下一個磁碟可以建立四個主要分割區,但如果要建立第五個就需要更改一下方法,在建立第四個時把格式改成延伸分割區,而在延伸分割區裡面就可以增加複數的邏輯分割區



# fdisk -l 確認是否存在/dev/sdb,如果有,就可以開始進行分割了!!

#fdisk /dev/sdb
進入後可以按M查看說明,我們要的是新增分割區,所以要按N,然後他會問要
pimary(主要分割區) 還是extended(延伸分割區)一開始先建立主要分割區,所以按P

接下來會問你1-4分割區  你要用哪一塊 ,預設是1,就直接ENTER

起始的磁區,不用理他,他會有預設值,就直接ENTER
之後就輸入自己要建立多少的容量,我建立1GB的空間,所以輸入"+1G"
這樣就完成了
剩下的兩個磁區動作是一樣的

最後一個在N之後叫選擇E(extended  延伸分割區),這樣就不會被只能設定四個主要分割區的限制給限制住,不過聰明的Redhat在進入這一步的時候,預設值就已經是E了
在大小的部分,起始跟最後  都直接用預設值,因為要把剩下的空間都設定成延伸分割區

這樣我們就可以在延伸分割區裡面不斷的切出邏輯分割區了~~~~

在磁區都已經設定完之後,一定要輸入"W"才能正確寫入,不然一切都白做了!!!!

最後可以#fdisk -l 來確認有沒有正確切出自己想要分割~

製作redhat開機程式

在WINDOWS底下建立:

使用Unetbootin程式




之後只要在開機時設定BIOS,從USB開機,就可以發揮作用瞜




在LINUX底下建立(以下內容來至Red Hat官方):

2.2. 建立 USB 安裝媒介
除了 CD/DVD 以外,您也可以使用 USB 隨身碟來建立安裝媒介,進而在 AMD64、Intel 64 與 IBM Power System 伺服器上安裝 RHEL。使用 Linux 或 Windows 的確切步驟有所不同。您可以使用同樣的程序來建立最小安裝媒介與完整安裝媒介;唯一的限制是 USB 隨身碟的大小:它必須擁有足夠的空間容納整個映像檔,最小安裝媒介需要大約 350 MB,而完整安裝媒介需要 4.5 GB。

2.2.1. 在 Linux 上建立 USB 安裝媒介


以下步驟假設您使用的是 Linux 系統,並且已下載了 ISO 映像檔,如〈章 1, 下載 Red Hat Enterprise Linux〉所述。在大部分的 Linux 版本上,您不需要安裝額外套件即可使用這些步驟。
警告
這項步驟會移除資料。當您進行這項程序時,USB 卸除式裝置上的資料將會被刪除,並且將不會有任何警告。請確認您指定了正確的 USB 卸除式裝置,並且確認該磁碟不包含任何您所希望保留的資料。
許多 Linux 版本都提供了自有的工具,以建立 USB 媒介:例如 Fedora 的 liveusb-creator、Ubuntu 的usb-creator 等等。一一詳述這些工具超出本指南的範疇,以下步驟能在大部分 Linux 系統上運作。

過程 2.1. 在 Linux 上建立 USB 媒介
  1. 將 USB 隨身碟連上系統,然後執行 dmesg 指令,這會顯示最近發生的事件紀錄。在記錄的最底下,您會看到剛插入的 USB 隨身碟的幾項紀錄,跟以下類似:
    [ 170.171135] sd 5:0:0:0: [sdb] Attached SCSI removable disk
    請記下已連上裝置的名稱,上述範例顯示的是 sdb
  2. 登入為 root 使用者:
    $ su -
    輸入 root 的密碼。
  3. 請確認系統並未掛載該裝置。首先,使用 findmnt device 指令與剛剛找到的裝置名稱。例如裝置名稱為 sdb 的話,請使用以下指令:
    # findmnt /dev/sdb
    如果該指令未顯示任何結果,您可以進行下一步驟。然而,如果該指令顯示了結果,表示該裝置已經自動掛載,在進行下一步之前必須先加以卸載。螢幕上顯示的結果會與以下類似:
    # findmnt /dev/sdb
    TARGET   SOURCE   FSTYPE  OPTIONS
    /mnt/iso /dev/sdb iso9660 ro,relatime
    
    請記下 TARGET 一欄的結果。接下來,請使用 umount target 指令來卸載裝置:
    # umount /mnt/iso
  4. 使用 dd 指令將安裝用的 ISO 映像檔直接寫入 USB 裝置:
    # dd if=/path/to/image.iso of=/dev/device bs=blocksize
    請以您下載的 ISO 映像檔之完整路徑取代 /path/to/image.iso,以先前用 dmesg 指令找到的裝置名稱取代 device,並指定適宜的區塊大小(例如 512k)來加快寫入程序。bs 是選用參數,但可以顯著加快處理速度。
    重要
    請確定您輸入的是「裝置」名稱(例如 /dev/sda)作為),而非「分割區」的名稱(例如 /dev/sda1)。
    舉例來說,如果 ISO 映像檔位於 /home/testuser/Downloads/rhel-server-7.0x86_64-boot.iso,同時所偵測到的裝置名稱為 sdb,則指令是:
    # dd if=/home/testuser/Downloads/rhel-server-7.0x86_64-boot.iso of=/dev/sdb bs=512k
  5. dd 指令將映像檔寫入裝置時,請稍加等待。請注意寫入裝置時螢幕上不會顯示進度表;寫入完成後系統會回到 # 提示符號。之後請登出 root 帳號並拔除 USB 裝置。
USB 磁碟現在已準備好作為開機裝置使用。您能繼續進行 章 5, 在 AMD64 和 Intel 64 系統上啟動安裝程式(AMD64 和 Intel 64 系統)或是 章 10, 在 IBM Power Systems 上啟動安裝程序(IBM Power Systems 伺服器)。

2015年8月8日 星期六

建立資料庫MariaDB以及web server Drupal

MariaDB部分:

先進到軟體安裝
mariadb-1:5.5.35
mariadb-bench-1:5
mariadb-devel-1:5
mariadb-server
mariadb-test

# systemctl enable mariadb.service
# systemctl start mariadb.service
# mysql -u root -p

web server部分:

進到軟體  安裝

php-5.4.16
php-cli
php-common
php-gd
php-mcrypt
php-mysql
php-pdo
php-theseer-fDOMDocument

phpMyAdmin  download  phpMyAdmin-4.4.12-all-languages.tar.gz
將phpMyAdmin-4.4.12-all-languages.tar.gz 解壓縮到 /var/www/html目錄下


RPM CentOS 7 php-mbstring 5.4.16 x86_64 rpm 下載

 php-mbstring-5.4.16-21.el7.x86_64.rpm並且安裝


# systemctl restart httpd.service   //在重開一次

將/var/www/html/phpMyAdmin內的config.sample.inc.php 改成 config.inc.php
並用gedit開啟

在裡面會看到
$cfg[ 'blowfish_secret' ] = ' ';  //在單引號內隨便輸入幾個字
$cfg[ 'Servers' ][$i][ 'AllowNoPassword' ] = false;    //將false改成true

在網頁輸入localhost/phpMyAdmin進入phpMyAdmin的頁面
因為上面$兩行以至於不用輸入密碼,只需在帳號的地方輸入root就可以進入
進入後將後四個使用者留下並更改密碼,其他刪除。

Drupal Taiwan 正體中文支援站 下載 Drupal 7.38  以及 7.38的中文化

打開drupal tar檔裡的drupal資料夾裡的所有檔案移至/var/www/html/

在網頁輸入localhost/phpMyAdmin進到phpMyAdmin  ,在資料庫的地方 建立一個叫drupal,編碼
為utf8_general_mysql500的資料庫

將drupal-7.38.zh-hant.po(中文化)移至 /var/www/html/profiles/standed/translations/
到/var/www/html/sites/default/  裡新增 files資料夾
copy default.settings.php to settings.php (同個目錄下)


在使用者裡面新增叫drupal的使用者,主機的部分改為"主機",登錄資訊的部分輸入完之後先進行下一步後再將"權限"全部開啟


# cd /var/www/html/sits/default/
# chown apache.apache files              //應drupal設定要求將權限改成apache
# chown apache.apache setting.php
# restorecon -R /var/www/html
# systemctl restart httpd.service


在網頁輸入localhost進入durpal的頁面設定,在設定資料庫的部分,使用者跟phpMyAdmin新增的使用者一樣


下一步下一步   就OK瞜~(大約~





2015年8月6日 星期四

xrdp 的建立

1.到左上角的應用程式>系統工具>軟體 裡搜尋以下三個套件,並安裝

system-config-firewall

system-config-language

system-config-users

2.在google上面搜尋 EPEL - FedoraProject 並且下載 The newest version of 'epel-release' for EL7

3.# yum install freerdp <<這是遠端桌面

4.google "Linux rdp server centos"  Install xrdp on CentOS 7 / RHEL 7

5.# rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-1.el7.nux.noarch.rpm

6.# yum -y install xrdp tigervnc-server

7.設定固定IP,應用程式>雜項>防火牆>public>連接埠>新增3389的例外




8.設定完成後#systemctl restart NetworkManager

9.# systemctl enable xrdp.service

10.# systemctl start xrdp.service

11.# xfreerdp -g "要設定的視窗尺寸" -u "使用者" "IP位置" <<這樣就可以連結~




在Redhat中建立軟體倉儲

在VirtualBox的視窗裝置>Network>網路設定將原本NAT的設定改成"橋接介面卡"

1.首先在 Redhat映像檔搜尋 vsftpd 並且安裝
2.在電腦/var/ftp/pub , 把redhat映像檔裡的東西全部copy到/pub裡面

^^這樣以後安裝東西就可以不用再從 Redhat裡面來安裝檔案了

3.pub 資料夾裡面尋找createrepo 並且安裝

這邊有解釋createrepo是什麼,並且如何使用 "用createrepo配置Yum本地源1"、"使用createrepo创建自己的yum源2"、"createrepo"


4.在終端機理執行 #createrepo -g /var/ftp/pub/repodata/76..... /var/ftp/pub
5.# cd /etc/yum.repos.d/
6.# gedit test.repo           gedit是Linux裡的記事本
7.在記事本裡面輸入

[RHEL70]
name = RHEL7
baseurl = ftp://localhost/pub
enable = 1
gpgcheck = 0

8.#systemctl enable vsftpd.service
9.#restorecon -R /var/ftp/pub

ˇˇ這邊在防火牆裡增加例外IP,這樣連線近來時才不會被擋住

10.#firewall-cmd --permanent --add-service=ftp
11.#systemctl restart vsftpd.service   重新開啟
12.#systemctl status vsftpd.service    在去看看狀態是否是開啟的