初識Linux

                          初認識Linux

1.1 Linux的登錄界面

在虛擬機安裝CentOS 7中有提到,我在安裝Linux操作系統的時候,采用的是命令行界面的登錄方式,當然也有像Windows那樣的圖像界面登錄方式。它們有個共同特點就是為用戶提供了一個接口,這個接口用于接收用戶輸入的命令,并且解釋或執行它,然后根據命令調用相應的應用程序。而這個接口,我們就稱之為shell

1.1.1 認識Linux shell

Shell: 在計算機科學中,Shell俗稱殼(用來區別于核),是指“提供使用者使用界面”的軟件(命令解析器)。它類似于DOS下的command和后來的cmd.exe。它接收用戶命令,然后調用相應的應用程序。

基本上shell分為兩大類:

圖形界面shell(Graphical User Interface shell 即 GUI shell)

例如:應用最為廣泛的 Windows Explorer (微軟的windows系列操作系統),還有也包括廣為人知的 Linux shell,其中linux shell 包括 X window manager (BlackBox和FluxBox),以及功能更強大的CDE、GNOME、KDE、 XFCE。

命令行式shell(Command Line Interface shell ,即CLI shell)

bash / sh / ksh / csh(Unix/linux 系統)

cmd.exe(Windows 系統)

要注意的是,我們所說的shell如果沒有指定特定的shell,默認是CLI界面。所以現在就讓我們來談談CLI。

要是你按照我們上面介紹過的方式安裝操作系統,那么現在你使用Linux的時候應該是一個命令行界面。這個界面是一個叫做bash的程序。至于為什么要使用bash,這個問題我覺得回答不了你,換句話說,興趣愛好而已。

當然,這里我指的只是CentOS,至于其它發行版使用的是哪種shell,我們可以上網瀏覽。那么,如果我們要想知道我們當前系統使用的是什么shell,那么可以使用echo $SHELL查看。

[root@mylab7 ~]# echo $SHELL
/bin/bash

終端:terminal

Linux是一個多任務,多用戶的操作系統,在早期計算機系統中,由于計算機主機昂貴,因此一個主機(IBM大型計算機)一般會配置多個終端(所謂的終端,簡單點來說,就是一個鍵盤,一個鼠標),這些終端本身不具備計算能力,僅僅承擔信息輸入輸出的工作,運算和處理均由主機來完成。

在linux系統當中,計算機顯示器通常被稱為控制臺(console),而在早期,一臺計算機只有一個控制臺,人們要想共享一臺計算機,需要自己提供通過console相關聯的虛擬終端(dev/tty#)將信息顯示在屏幕上。

要注意的是,在早期,無論你在哪個虛擬終端中輸入,輸出的信息都會轉到控制臺上去,而現在Linux已經將控制臺和虛擬終端這兩個概念模糊化了,無論你在哪個虛擬終端敲入命令,它執行的結果就會顯示在當前的虛擬終端下,也就是說,Linux把當前你敲入命令的那個虛擬終端當作控制臺來看待。

當我們登錄到虛擬機的時候,我們可以發現,CentOS7系統給我們提供了6個虛擬終端,以tty1-tty6命名。使用組合鍵[Ctrl]+[Alt]+[F1-F6]可以實現虛擬終端之間的切換。

另外,對于遠程用戶,他們通過偽終端來實現對Linux的操作,所謂的偽終端,就是一種類似于終端的設備,但是這種設備不與任何終端硬件相關。比如,我們通過Xshell軟件,或telnet連接的終端,都是偽終端。

另外還有一種終端類型,叫做串行終端,它是使用計算機串行端口連接的終端設備。計算機把每個串行端口看出是一個終端設備。比如當初學校組織我們在銳捷進行培訓,我們使用的路由器就是通過COM2口來進行連接的。那么連接之后我們操作的終端界面就是一個串行終端。

這些終端設備其實都是字符設備的一種表現形式,我們又說過,Linux的哲學思想是一切皆文件,那么這些字符設備在Linux中以文件的形式存在:/dev/tty。/dev/tty指的是我們當前的進程所使用的控制終端。那么根據終端的類型,他們的設備文件分別是:

           終端類型

           設備文件

           控制終端

           /dev/tty

           控制臺

           /dev/console

           虛擬終端

           /dev/tty#

           偽終端

           /dev/pts/#

           串行終端

           /dev/ttyS#

所以,要想知道當前的進程與哪個控制終端相連,我們可以使用“ps –ax”來進行查看。所以我們所說的控制終端,其實就相當于我們當前終端的一個鏈接。

好,我們可以舉個例子。我們說過,終端在Linux中被識別成了文件,那么我們現在往這個文件寫數據,那么相應的終端將會把信息顯示出來,如:

1.  首先,使用命令tty來查看我們當前登錄的終端類型:

[root@mylab7 ~]# tty
/dev/pts/1

通過觀察我們可以知道,我們是通過遠程工具連上去的。

2.  輸入echo  “hello world” >/dev/pts/1,然后觀察情況

[root@mylab7 ~]# echo "hello world" >/dev/pts/1
hello world

我們發現當前終端上打出了hello world。上述的命令大概的意思是:將“hello world”這段話重定向到/dev/pts1文件中,而/dev/pts1指的就是我們當前的終端,所以“hello world”會顯示出來。

3.  打開第二個偽終端,在第二個偽終端中輸入:

 echo “hello  pts1”>/dev/pts/1

[root@mylab7 ~]# tty
/dev/pts/2
[root@mylab7 ~]# echo "hello pts1" >/dev/pts/1
[root@mylab7 ~]#

 我們可以發現,這個時候,消息不再顯示在第二個偽終端上了,而是顯示在了第一個偽終端上。

4.  分布在第一個偽終端輸入:echo “hello world” >/dev/tty,在第二個偽終端輸入echo “hello pts1”>/dev/tty。然后查看其結果:

[root@mylab7 ~]# tty
/dev/pts/1
[root@mylab7 ~]# echo "hello world" >/dev/tty
hello world
【切換至第二個偽終端】
[root@mylab7 ~]# tty
/dev/pts/2
[root@mylab7 ~]# echo "hello pts1" >/dev/pts/1
[root@mylab7 ~]# echo "hello pts1" >/dev/tty
hello pts1

通過上述實驗結果,我們可以知道,/dev/tty是一個控制終端,它相當于當前終端的一個鏈接形式。

5.  當你在偽終端輸入一個echo “hello world”/dev/console。這個文件會被傳送到哪里去?

是由結果表明,當你輸入一個hello world給控制臺,那個虛擬終端打開,哪個就會顯示出來。我們剛才也說了,控制臺和虛擬終端這兩個概念已經模糊化了,所以Linux系統是把當前的虛擬終端當成了控制臺。

另外,這里要提一下的是,如果你安裝了圖形環境,那么可以在當前虛擬終端環境下敲入一個命令:startx,這樣就會啟動圖形界面了,在CentOS7中,你在哪個虛擬終端啟動的圖像界面,你的虛擬終端就是在哪個位置。

以命令行方式登錄Linux

這里我們就不介紹圖形環境的使用了,因為我們使用的Linux操作系統在大多數情況下都是以命令行方式來進行的。所以我們就來說說,以命令行方式來使用Linux吧。

當我們以命令行的方式登錄到系統后,會出現如下形式:

[root@MyLabC7 ~]#

這是Linux登錄的一個提示符,由于一個環境變量PS1所設定的。使用命令echo $PS1,顯示如下:

[root@MyLabC7 ~]# echo $PS1
[\u@\h \W]\$
\u     the username of the current user
@      分隔符
\h     the hostname up to the first '.'
\W     the  basename  of  the current working directory
\$     if the effective UID is 0, a #, otherwise a $

這里我就以英文展示了,不要害怕英文,我們需要正視它,戰勝它

1.1.2 Linux的命令使用

我們說的,Linux的哲學思想之一就是一切皆文件(這個概念已經說了很多遍了),那么我們使用的命令,其實也是以文件的形式存在。也就是說,命令本身就是一個二進制程序文件?,F在,為了讓大家更理解這個過程,我們舉個例子:

比如,在Linux提示符下輸入ls這個命令

[root@MyLabC7 ~]# ls
anaconda-ks.cfg

  可以看到,ls將當前工作目錄中的內容顯示出來了,那么其中發生的過程我們大致說下:

當用戶敲入ls 命令的時候,首先鍵盤驅動程序識別出敲入的內容。然后鍵盤控制器將它們傳遞給bash程序,由bash程序來負責查找同名的可執行程序(ls)。如果在/bin/ls 目錄中找到了ls,則通過系統調用將ls 的可執行映象讀入虛擬內存并開始執行。此時ls已經是一個進程,那么ls進程調用核心的文件子系統來尋找哪些文件是可用的。文件系統使用緩沖過的文件系統信息,或者調用磁盤設備驅動從磁盤上讀取信息。當得到這些信息后,ls 將這些信息通過調用顯卡控制器寫到顯示器屏幕上。

    那么bash程序是在哪里找到ls的可執行程序的呢?那么這就要通過一個叫做PATH路徑的環境變量來實現了。也就是說,當我們輸入一個命令的時候,bash程序就會通過尋找PATH環境變量去找到命令的可執行文件,我們可以使用命令echo $PATH來查看一下PATH中的變量。

[root@MyLabC7 ~]# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

   由此可以知道,我們二進制程序文件的存放路徑是在/usr/bin、/usr/sbin、/usr/local/bin、/usr/local/sbin中,而一個程序的執行就有可能調用某種庫,那么庫對應的就是文件就是:/usr/lib、/usr/lib64、/usr/local/lib、/usr/local/lib64。

   另外,我們要知道的是,并非所有的命令都對應著一個可執行的二進制文件,因為有些命令是系統自帶的內置命令,如cd。我們把有著對應二進制文件的命令叫做外部命令,那么我們要怎樣知道它內置命令還是外部命令?這里有個命令,可以查看命令的類型:type

[root@MyLabC7 ~]# type ls
ls is aliased to `ls --color=auto'
[root@MyLabC7 ~]# type cd
cd is a shell builtin        //內置命令
[root@MyLabC7 ~]# type cat
cat is /usr/bin/cat         //外部命令

  好了,理解了這個,現在我們終于可以知道,命令分為兩類,內置命令和外部命令。那么不管是內置命令還是外部命令,他們使用格式上大同小異,大概就是這樣:

    COMMAND [-Options [arguments] ] [parameters]

COMMAND

表示命令本身,一般是小寫。

Option

表示命令的選項,有些選項可以帶“-”,有些選項卻沒有帶“-”。選項有長選項和短選項之分。

短選項:-C, 例如-l, -d

       如果同一命令同時使用多個短選項,多數可合并:-l -d = -ld

    長選項:–word, 例如–help, –human-readable

    注意:長選項不能合并;

arguments

有些選項可以帶參數,此稱為選項參數;

parameters

    這是命令自帶的參數,即命令作用的對象,這個對象可能有多個,使用空格隔開。

例如:

[root@MyLabC7 ~]# ls -ld /etc /var
drwxr-xr-x. 78 root root 8192 Oct  3 22:47 /etc
drwxr-xr-x. 19 root root 4096 Oct  3 22:46 /var

1.2 登錄Linux之后的一些操作

1.2.1 關閉防火墻

由于我們現在的學習過程中,對防火墻不是很了解,所以這有可能阻礙我們以后的學習,所以在這里,建議大家先關閉防火墻。

1.  首先查看一下防火墻的狀態:iptables -L –n

[root@MyLabC7 ~]# iptables -n -L

然后我們發現,有一大堆的規則,那么我們可以使用iptables –F將這些規則清空。

2.  如果你想關閉防火墻,可以使用: systemctl disable firewalld.service。這不過這是暫時的關閉防火墻,如果你開機重啟,那么它又處于開啟狀態

[root@MyLabC7 ~]# systemctl disable firewalld.service

3.      如果你想永遠的關閉防火墻,那么可以使用:systemctl stop firewalld.service

[root@MyLabC7 ~]# systemctl stop firewalld.service

    另外要注意的是,我們這里操作的對象是CentOS7,那么對于CentOS6,你可以使用:

臨時關閉:~]# service iptables stop

永久關閉:~]# chkconfig iptables off

1.2.2 yum源的配置

這里提前說一下yum源的配置,因為我們的系統是最小化安裝,所以有好多軟件都沒有裝,所以導致有些命令不能使用,所以為了使用某些命令,我們這里配置好yum源。使用yum源去安裝一些軟件包。

這里只簡單介紹yum源的安裝,在這里,我簡單的使用本地光盤作為yum源,具體內容,我們會到軟件包的安裝的時候詳細介紹。

1.  點擊Vmwareworkstation中的虛擬機->設置->CD/DVD(IDE),然后勾上右上角那個已連接。

    

blob.png

2.      掛載光盤

[root@MyLabC7 ~]# mount -t iso9660 /dev/sr0 /media
mount: /dev/sr0 is write-protected, mounting read-only

如果想每次開機自動掛載,可以通過編輯/etc/fstab文件。這里我們還是將它設置為開機自動掛載吧

[root@MyLabC7 ~]# vi /etc/fstab

然后進入了一個編輯文件,輸入“G”,跳轉至文件內容的最后一行,然后再敲入“o”建,可以進行編輯了。編輯的內容如我們的最后一行:

#
# /etc/fstab
# Created by anaconda on Mon Oct  3 04:39:10 2016
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=d869e593-1508-43bb-94c4-98e625f703c5 /boot                   xfs     defaults        0 0
/dev/mapper/centos-home /home                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/sr0             /media                 iso9660     defaults    0   0

然后,輸入“:wq”保存編輯并退出,再使用mount –a啟動一下,這樣就生效了。

[root@MyLabC7 ~]# mount -a
[root@MyLabC7 ~]#

3.      現在配置yum倉庫。進入/etc/yum.repos.d/目錄中去,使用ls查看一下,發現如下文件

[root@MyLabC7 ~]# cd /etc/yum.repos.d/
[root@MyLabC7 yum.repos.d]# ls
CentOS-Base.repo  CentOS-Debuginfo.repo  CentOS-Media.repo    CentOS-Vault.repo
CentOS-CR.repo    CentOS-fasttrack.repo  CentOS-Sources.repo

  4.      除了CentOS-Media.repo外,其它文件都可以刪除。

[root@MyLabC7 yum.repos.d]# rm -rf CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Vault.repo CentOS-CR.repo CentOS-Sources.repo  CentOS-fasttrack.repo
[root@MyLabC7 yum.repos.d]# ls
CentOS-Media.repo

5.      編輯CentOS-Media.repo文件。編輯的內容如下:

[c7-media]
name=CentOS-$releasever - Media
baseurl=file:///media     //這個改為光盤所掛載的目錄
#        file:///media/cdrom/      將這兩個文件注釋掉
#        file:///media/cdrecorder/ 
gpgcheck=1
enabled=0      //將這個0變成1         
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

6.      目前為止,我們yum源就配置好了,現在我們安裝vim工具

[root@MyLabC7 yum.repos.d]# yum install vim -y

 

當安裝文件末尾出現一個complete!的時候,說明這個軟件已經安裝成功了。

1.2.3 網絡的配置

如果你在先開始的時候,沒有配置好網絡,不要緊,現在你也可以配置你的網絡。當然,為了確定一下,我們使用ifconfig或ipaddr來查看一下我們的ip地址

[root@MyLabC7 ~]# ifconfig
-bash: ifconfig: command not found
[root@MyLabC7 ~]# ip addr list
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eno16777736: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:0c:29:e1:2f:45 brd ff:ff:ff:ff:ff:ff
    inet 192.168.10.104/24 brd 192.168.10.255 scope global eno16777736
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fee1:2f45/64 scope link
       valid_lft forever preferred_lft forever

 我們發現,當我們使用ifconfig的時候,系統沒有找到這個命令,這是因為我們沒有安裝這個工具的軟件包。而我們輸入ip addr list的時候,而能夠顯示出來我們的網絡信息,這說明,ip這個工具逐漸取代了ifconfig這個工具。(當然,這是我自己的理解哈)。

如果你非要用ifconfig這個工具,也沒關系,使用yum安裝就好。

[root@MyLabC7 ~]# yum install net-tools -y

然后使用ifconfig命令就可以查看了。

1.2.4 獲取命令的使用幫助

查看命令的類型

  前面我們說過了 ,命令分為內置命令和外部命令,那么要查看命令是屬于哪種,可以使用type命令

[root@MyLabC7 ~]# type cd
cd is a shell builtin

  可以看到,cd是Linux的內置命令。那么當然還有外部命令,我們說過,每個外部命令 都對應了一個二進制程序文件。有時候我們可以使用which命令來查看這個命令屬于哪個二進制文件。

[root@MyLabC7 ~]# which ls
alias ls='ls --color=auto'
/usr/bin/ls

  剛才我們說了,cd是一個內置命令,那么我們使用which來查看一下,看下會有什么樣的結果:

[root@MyLabC7 ~]# which cd
/usr/bin/cd

  我們可以發現,內置命令竟然在也存在二進制文件?這是怎么回事?不是說只有外部命令才有的莫?好的,為了解釋這個內容,我們再介紹一個命令的使用:file命令。file命令使用來顯示一個文件的類型的。剛才ls是外部命令,對應的二進制文件是:/usr/bin/ls。而cd是內置命令,對應的文件是:/usr/bin/cd。現在我們使用file來觀察這兩個文件。

[root@MyLabC7 ~]# file /usr/bin/ls /usr/bin/cd
/usr/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=aa7ff68f13de25936a098016243ce57c3c982e06, stripped
/usr/bin/cd: POSIX shell script, ASCII text executable

  那么,我們現在可以來進行解釋了,前面我們說過,外部命令對應了一個二進制程序文件,這句話是不錯的,因為這個文件里全是二進制,如果你直接使用文本編輯器查看,會顯示出來一堆亂碼。而/usr/bin/cd我們可以看到,它并不是二進制程序,而是一個可以被執行的純文本文檔,這個文本文檔,我們叫做shell腳本。可以使用文本編輯器查看。說到這里,你應該明白了吧,所謂的內置命令,它是shell對應的一個腳本文件,可以在shell中被執行,而外部命令,則是一個二進制應用程序。

內置命令的使用幫助

    現在我們來 說說如何獲取命令的使用幫助,對于內置命令,查看的方式是:

格式:help  COMMAND 。如:

[root@MyLabC7 ~]# help cd
cd: cd [-L|[-P [-e]]] [dir]
    Change the shell working directory.
   
    Change the current directory to DIR.  The default DIR is the value of the
    HOME shell variable.
   
    The variable CDPATH defines the search path for the directory containing
    DIR.  Alternative directory names in CDPATH are separated by a colon (:).
    A null directory name is the same as the current directory.  If DIR begins
    with a slash (/), then CDPATH is not used.
   
    If the directory is not found, and the shell option `cdable_vars' is set,
    the word is assumed to be  a variable name.  If that variable has a value,
    its value is used for DIR.

  那么通過這個我們可以知道,cd命令是用來改變當前工作目錄,而且我們可以看到cd后面還使用了“[]”這樣的格式,那么我再來說說,這是啥意思吧,等了解這個,我們再重新來查看cd命令的使用。

使用簡要命令格式中字符意義。

[   ] :可選部分

{a | b} :分組,a和b只能選一個

<   >:必不可省的部分

………:同類內容可以出現多個

  那么現在,我們重新來看一下cd命令,cd是用來改變當前目錄的,如果不加任何選項和參數,默認就是進入用戶的家目錄??赡艿浆F在你還是不懂,沒關系,我們到后面會詳細講述相關概念。這里只是教你,怎樣使用命令查看幫助。

外部命令的使用幫助

   對于外部命令,如果想獲取命令的一些簡要信息可以使用:

格式:COMMAND  –help。如:

[root@MyLabC7 ~]# ls --help
Usage: ls [OPTION]... [FILE]...
List information about the FILEs (the current directory by default).
Sort entries alphabetically if none of -cftuvSUX nor --sort is specified.

    那么,可以知道ls可以獲取文件的詳細信息。這是其中一種方法之一,還有一種方法,也是我們以后會經常用到的。那就是使用man手冊。

使用man手冊

    我們再次說明一下,前面我們說過,對于一個二進制程序來說,應該包括以下四個組成部分:

1.  二進制程序文件

存放在/usr/bin、/usr/sbin、/usr/local/bin、/usr/local/sbin目錄中。

那么一個可執行的二進制程序文件可能會調用某種庫,那么從哪里調用呢?

2.  庫文件

存放在/usr/lib、/usr/lib64、/usr/local/lib、/usr/local/lib64目錄中

另外,除了這些,還應該對于這個二進制程序文檔進行相關性的說明,也就是幫助文件,那么幫助文件存放在哪里呢?

3.  配置文件

一般存放在/etc目錄中

4.  幫助文件

大多數幫助文檔存放在/usr/share/man下。

這個幫助文件我們等下再說,我們現在來看看,這個man是如何使用的。

格式:man COMMAND

使用man的都知道,man是將命令的幫助文件分成了各個部分,常見的部分有:

NAME:命令的名字

SYNOPSIS:語法格式

DESCRIPTION:描述

OPTION:選項

EXAMPLES:使用示例

AUTHOR: 作者

BUGS: 報告程序bug的方式

SEE ALSO: 參考

那么一般我們只有閱讀NAME、SYSNOPSIS、DESCRIPTION、OPTION這幾個選項,對已SYSNOPSIS來講,我們還應該要了解簡要字符的格式:

[   ] :可選部分

{a | b} :分組,a和b只能選一個

<   >:必不可省的部分

………:同類內容可以出現多個

我們剛才說了,man的幫助文件大多數都保存在/usr/share/man下,那么我們可以查看一下這個文件中的內容,使用ls命令。

[root@MyLabC7 ~]# ls /usr/share/man
cs  de  fr  id  ja  man0p  man1p  man2   man3   man3x  man4x  man5x  man6x  man7x  man8x  man9x  pl     ru  sv  zh_CN
da  es  hu  it  ko  man1   man1x  man2x  man3p  man4   man5   man6   man7   man8   man9   mann   pt_BR  sk  tr  zh_TW

  可以看到,man有man1、man2、…、man9。那么這就告訴我們,其實man是分章節來描述的,具體內容如下:

    1   Executable programs or shell commands

    2   System calls (functions provided by the kernel)

    3   Library calls (functions within program libraries)

    4   Special files (usually found in /dev)

    5   File formats and conventions eg /etc/passwd

    6   Games

    7   Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)

    8   System administration commands (usually only for root)

    9   Kernel routines [Non standard]

   我們可以使用whatis命令來查看命令屬于哪個章節,如:

[root@MyLab6 ~]# whatis ls
ls                   (1)  - list directory contents
ls                   (1p)  - list directory contents
[root@MyLab6 ~]# whatis useradd
useradd              (8)  - create a new user or update default new user information
useradd [adduser]    (8)  - create a new user or update default new user information

  要知道的是,whatis是根據一個數據庫來搜索我們所需要的數據。在Linux中一切皆文件,數據庫文件的就是:/etc/man_db.conf。那么這個文件有什么用呢?我們看個例子:

[root@MyLabC7 ~]# ifconfig
-bash: ifconfig: command not found

  輸入ifconfig命令發現沒有這個命令,那么現在我們安裝一下這個軟件包:

[root@MyLabC7 ~]# yum install *ifconfig –y

 安裝完成后,我們再使用whatis來查看ifconfig命令屬于哪個章節

[root@MyLabC7 ~]# whatis ifconfig
ifconfig: nothing appropriate.

  出現這樣的原因是因為ifconfig這個命令是我們剛才安裝的,所以它的信息未導入到數據庫中去,所以需要使用mandb這個指令來更新數據庫。

[root@MyLabC7 ~]#mandb
Purging old database entries in /usr/share/man...
……………………….(出現的信息省略)
[root@MyLabC7 ~]# whatis ifconfig
ifconfig (8)         - configure a network interface

注意:在CentOS6中,更新數據庫使用的是makewhatis。

/etc/man_db.conf文件記錄了各種可執行文件的幫助文檔所存放的路徑,比如:

#               *PATH*        ->        *MANPATH*
#
MANPATH_MAP     /bin                    /usr/share/man
MANPATH_MAP     /usr/bin                /usr/share/man
MANPATH_MAP     /sbin                   /usr/share/man
MANPATH_MAP     /usr/sbin               /usr/share/man
MANPATH_MAP     /usr/local/bin          /usr/local/man
MANPATH_MAP     /usr/local/bin          /usr/local/share/man
MANPATH_MAP     /usr/local/sbin         /usr/local/man
MANPATH_MAP     /usr/local/sbin         /usr/local/share/man
MANPATH_MAP     /usr/X11R6/bin          /usr/X11R6/man
MANPATH_MAP     /usr/bin/X11            /usr/X11R6/man
MANPATH_MAP     /usr/games              /usr/share/man
MANPATH_MAP     /opt/bin                /opt/man
MANPATH_MAP     /opt/sbin               /opt/man

 由上可知,/bin,/sbin中的二進制文件的幫助文檔存放在/usr/share/man中。使用命令whereis  -m 可查看命令的幫助文檔存放在哪個位置。如:

[root@MyLabC7 ~]# whereis -m ls
ls: /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz
[root@MyLabC7 ~]# whereis -m ls
ls: /usr/share/man/man1p/ls.1p.gz /usr/share/man/man1/ls.1.gz
[root@MyLabC7 ~]# whereis -m cat
cat: /usr/share/man/man1p/cat.1p.gz /usr/share/man/man1/cat.1.gz

好的,現在我們再來說說,如何閱讀man手冊:

1)翻屏

                    按鍵

                        描述

                    B

                  向上翻一屏

                  空格鍵

                  向下翻一屏

                    K

                  向上翻一頁

                  回車鍵

                  向下翻一頁

                  Pgup

                  向上翻半屏

                  Pgdowm

                  向下翻半屏

 

2)文本搜索

            n

           N

         /keyword

        向下搜索

       向上搜索

        ?keyword

        向上搜索

       向下搜索

 

好的,現在man的介紹基本上已經完畢了,現在我們來使用man手冊查看man的用法。

[root@MyLabC7 ~]# man man

然后就出現一大堆的內容,安按照我們上述說的方法進行閱讀,如:

NAME

man – an interface to the on-line reference manuals

通過NAME我們可以知道,man是一個命令手冊的參考接口。

 

SYSNOPSIS

    這里顯示的是它的用法格式,當然有很多,具體情況,具體使用。

DESCRIPTION

  man  is the system's manual pager. Each page argument given to man is normally the name of a program, utility or function.
       The manual page associated with each of these arguments is then found and displayed. A section, if provided,  will direct man to look only in that section of the manual.  The default action is to search in all of the available sections, following a pre-defined order and to show only the first page found, even if page exists in several sections.
       The table below shows the section numbers of the manual followed by the types of pages they contain.
 
       1   Executable programs or shell commands
       2   System calls (functions provided by the kernel)
       3   Library calls (functions within program libraries)
       4   Special files (usually found in /dev)
       5   File formats and conventions eg /etc/passwd
       6   Games
       7   Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
       8   System administration commands (usually only for root)
       9   Kernel routines [Non standard]
 
       A manual page consists of several sections.
 
       Conventional section names include NAME, SYNOPSIS, CONFIGURATION, DESCRIPTION, OPTIONS, EXIT STATUS, RETURN VALUE, ERRORS,ENVIRONMENT, FILES, VERSIONS, CONFORMING TO, NOTES, BUGS, EXAMPLE, AUTHORS, and SEE ALSO.
 
       The following conventions apply to the SYNOPSIS section and can be used as a guide in other sections.
 
       bold text          type exactly as shown.
       italic text        replace with appropriate argument.
       [-abc]             any or all arguments within [ ] are optional.
       -a|-b              options delimited by | cannot be used together.
       argument ...       argument is repeatable.
       [expression] ...   entire expression within [ ] is repeatable.

EXAMPLES

man ls
    Display the manual page for the item (program) ls.
 
man -k printf
    Search the short descriptions and manual page names for the keyword printf  as  regular  expression.   Print  out  any matches.  Equivalent to apropos -r printf.
 
man -f smail
    Lookup  the  manual  pages  referenced  by  smail  and  print  out the short descriptions of any found.  Equivalent to whatis -r smail.

1.2.5 修改語系

這里我們作一下簡單的說明,因為很多人覺得安裝英文版看不懂英文,其實我覺得什么事都得慢慢習慣,學習英文的好處就是能讓你以后的知識面可以更加的寬敞,那么這里不多介紹,還是建議大家使用英語.

1.  使用locale查看語系環境

[root@MyLabC7 ~]# locale
LANG=zh_CN.UTF-8
LC_CTYPE="zh_CN.UTF-8"
LC_NUMERIC="zh_CN.UTF-8"
LC_TIME="zh_CN.UTF-8"
LC_COLLATE="zh_CN.UTF-8"
LC_MONETARY="zh_CN.UTF-8"
LC_MESSAGES="zh_CN.UTF-8"
LC_PAPER="zh_CN.UTF-8"
LC_NAME="zh_CN.UTF-8"
LC_ADDRESS="zh_CN.UTF-8"
LC_TELEPHONE="zh_CN.UTF-8"
LC_MEASUREMENT="zh_CN.UTF-8"
LC_IDENTIFICATION="zh_CN.UTF-8"
LC_ALL=


2.  使用命令localectl查看支持哪些語系.

[root@MyLabC7 ~]#localectl list-locales
中文:zh.如:
[root@MyLabC7 ~]#localectl list-locales
[root@MyLabC7 ~]# localectl list-locales|grep zh
zh_CN
zh_CN.gb18030
zh_CN.gb2312
zh_CN.gbk
zh_CN.utf8
zh_HK
zh_HK.big5hkscs
zh_HK.utf8
zh_SG
zh_SG.gb2312
zh_SG.gbk
zh_SG.utf8
zh_TW
zh_TW.big5
zh_TW.euctw
zh_TW.utf8

那么我們可以選擇zh_CN.utf8或zh_CN.gbk

3.  設置語言環境

查看系統所支持的語言后,你可以選擇你所需的語系來進行設置,比如我要安裝中文版,那么可以進行如下操作:

[root@MyLabC7 ~]#localectl set-locale.utf8
重啟終端
[root@MyLabC7 ~]#locale
LANG=zh_CN.utf8
LC_CTYPE="zh_CN.utf8"
LC_NUMERIC="zh_CN.utf8"
LC_TIME="zh_CN.utf8"
LC_COLLATE="zh_CN.utf8"
LC_MONETARY="zh_CN.utf8"
LC_MESSAGES="zh_CN.utf8"
LC_PAPER="zh_CN.utf8"
LC_NAME="zh_CN.utf8"
LC_ADDRESS="zh_CN.utf8"
LC_TELEPHONE="zh_CN.utf8"
LC_MEASUREMENT="zh_CN.utf8"
LC_IDENTIFICATION="zh_CN.utf8"
LC_ALL=

1.2.6 時間管理命令

時鐘類型

real-time clock (RTC):通常被稱為硬件時鐘,一個實時時鐘 (RTC),通常被稱為一個硬件時鐘(通常是一個集成電路在系統板),完全獨立于操作系統的當前狀態,即使計算機關閉,系統時鐘也還會運行。

system clock:通常被稱為軟件時鐘,它是基于實時時鐘的初始值和內核來維護的。一旦系統啟動,系統時鐘初始化,系統時鐘和實時時鐘便是兩碼事了。

在CentOS7中,提供了3個時間管理工具,用于配置和顯示系統的時間日期,這三個工具分別是:timedatectl,date,hwclock。

timedatectl

timedatectl命令對于CentOS 7來說,是一個新工具,它是systemd系統和服務管理器的一部分??梢杂脕砀淖儺斍暗娜掌诤蜁r間,設置時區,或啟用自動同步與遠程服務器的系統時鐘。

1.  顯示當前日期和時間

[root@MyLabC7 ~]# timedatectl
      Local time: Sun 2016-09-04 11:52:45 CST    //本地時間
  Universal time: Sun 2016-09-04 03:52:45 UTC   //世界標準時間
        RTC time: Sun 2016-09-04 03:52:45            //硬件時間
       Time zone: Asia/Shanghai (CST, +0800)      //時區
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a

2.  改變當前時間

格式:timedatectl set-time CCYY-mm-dd HH:MM:SS。

如,修改時間為2016年9月1號中午12點整

[root@MyLabC7 ~]#timedatectl set-time "2016-09-01 12:00:00"

注意:使用timedatectl改變當前時間的時候,硬件時間也會進行同步更新。

3.  改變時區

    a.查看時區

[root@MyLabC7 ~]# timedatectl list-timezones

    b.改變時區

[root@MyLabC7 ~]# timedatectl set-timezone time_zone

4.  調整硬件時間。

現在,我們知道了,我們的機器里有一個本地時間,還有一個世界標準時間。默認情況下,硬件時間是同步UTC時間的,如果你想將硬件時間同步成本地時間,可以進行如下操作:

[root@MyLabC7 ~]# timedatectl set-local-rtc yes         //同步本地時間
[root@MyLabC7 ~]# timedatectl set-local-rtc no     //同步UTC時間

date

date命令適用于腳本,用來訪問軟件時間。

格式:date [OPTION]… [+FORMAT]

1.  顯示當前日期

[root@MyLabC7 ~]# date
Thu Sep  1 12:56:55 CST 2016

如果我想以utc的時間來顯示,可進行如下操作:

[root@MyLabC7 ~]# date –u  或 --utc
Thu Sep  1 04:57:45 UTC 2016

當然,我們還可以自定義格式:

控制序列

描述

%H

小時的HH格式(例如,17)。

%M

分鐘MM格式(例如,30)。

%S

秒鐘的SS格式(例如,24)。

%d

日期DD格式(例如,16)

%m

月的mm格式(例如,09)。

%Y

年的YYYY格式(例如,2013)

%F

完整的日期YYYY-MM-DD格式(例如,2013-09-16)。這個選項=%Y-%m-%d。

%T

時間HH:MM:SS格式(例如,17:30:24)。這個選項=%H:%M:%S

 

2.  改變當前日期和時間

格式:date –set  “YY-mm-dd HH:MM:SS”

[root@MyLabC7 ~]# date --set "2016-09-01 13:01:00"
Thu Sep  1 13:01:00 CST 2016

如下你要設置時間為utc時間,那么操作如下:

[root@MyLabC7 ~]# date --set "2016-09-01 13:01:00" --utc
Thu Sep  1 13:01:00 UTC 2016

hwclock

hwclock是用來訪問硬件時鐘的,要知道的是硬件時鐘獨立于操作系統使用。在CentOS6中,hwclock在系統開機或重啟的時候會自動運行,而在CentOS7中,當系統時鐘通過NTP或PTP同步的時候,內核會每隔11分鐘自動的同步系統時鐘。

1.  顯示當前硬件時間

–utc:顯示的是本地時間

–localtime:顯示的是utc時間

[root@MyLabC7 ~]#  hwclock
Mon 05 Sep 2016 09:59:21 AM CST  -0.599798 seconds

2.  設置日期和時間

格式:hwclock –set –date="yyyy-mm-dd HH:MM:SS"

–utc:以utc形式保存在/etc/adjtime配置文件中

–localtime:以本地形式保存在/etc/adjtime配置文件中。

 [root@MyLab ~]# hwclock --set --date "2016-09-05 10:33" --utc
[root@MyLab ~]# timedatectl
      Local time: Mon 2016-09-05 10:35:57 CST
  Universal time: Mon 2016-09-05 02:35:57 UTC
        RTC time: Mon 2016-09-05 02:33:01
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: no
      DST active: n/a
[root@MyLab ~]# date
Mon Sep  5 10:36:03 CST 2016
[root@MyLab ~]# date --utc
Mon Sep  5 02:36:08 UTC 2016
[root@MyLab ~]# hwclock           //hwclok默認顯示的本地的硬件時間
Mon 05 Sep 2016 10:33:24 AM CST  -0.662492 seconds

3.  硬件時間同步系統時間

-w或–systohc

–utc:以utc方式同步

–localtime:以本地時間的方式同步

[root@MyLab ~]# hwclock -w --localtime
[root@MyLab ~]# timedatectl
      Local time: Mon 2016-09-05 10:51:28 CST
  Universal time: Mon 2016-09-05 02:51:28 UTC
        RTC time: Mon 2016-09-05 10:51:27
       Time zone: Asia/Shanghai (CST, +0800)
     NTP enabled: n/a
NTP synchronized: no
 RTC in local TZ: yes
      DST active: n/a

當你手動設置硬件時間或硬件時間同步系統時間時,hwclock會將配置信息保存在/etc/adjtime文件中。

【小結】

要知道的是,在linux里面有兩個時間:

1.  硬件時間

硬件時鐘是存儲在CMOS里的時鐘,關機后該時鐘依然運行,主板的電池為它供電。那個時鐘依照主板石英晶體振蕩器頻率工作,在啟動系統后,系統從該時鐘讀取時間信息,之后獨立運行。當調整系統時鐘或與internet同步后,不會改變硬件時鐘,下次啟動又會變成硬件時鐘的時間

2.  軟件時間:

開機時讀取硬件時間。當調整系統時鐘或與internet同步后,不會改變硬件時鐘,下次啟動又會變成硬件時鐘的時間。

那么我們可以使用命令hwclock來調整硬件時間,在這里,有兩個常用的關于hwclock的選項:

-s :把軟件時鐘設置成和硬件時鐘一樣。

-w:把硬件時鐘設置為軟件時鐘一樣。

1.2.7 關機管理命令

在CentOS7中,systemctl工具代替了大量的電源管理工具,在之前的版本的開機重啟命令在CentOS7中仍然適用,只不過建議使用systemctl工具。

關機

對于一個系統來說,若不正常關機,則可能造成文件系統的毀損(因為來不及將數據寫回到文件中,所以有些服務的文件會有問題)。

關機前要注意一下情況:

1.      觀察系統的使用狀態

用戶在線狀態:who

[root@MyLab ~]# who
wali     pts/0        2016-09-03 21:00 (192.168.10.1)

網絡狀態:netstat –an(后續章節講述)

進程狀態:ps –aux (后續章節講述)          

2. 通知在線使用者關機的時刻

3. 將數據同步到磁盤:sync

常見的關機命令:

shutdown,systemctl haltsystemctl poweroff

在CentOS 7中,systemctl工具提供了系統關機命令,并且傳統的shutdown命令還能夠使用,只不過在使用傳統的shutdown命令的時候,將會調用systemctl程序來執行關機指令,而且shutdown命令還可以設置關機前的警告,取消關機等操作,這也算是它的一種優勢了吧。

我們現在man shutdown查看一下

man  shutdown
NAME
       shutdown - Halt, power-off or reboot the machine
 
SYNOPSIS
       shutdown [OPTIONS...] [TIME] [WALL...]
                                                                                           
OPTIONS:
-k:不會真的關機,只是發出警告信息
-r [time]:將系統服務停掉之后就重啟
-h [time]:將系統服務停掉之后就關機
-c:取消已經在進行的shutdown指令
time:系統指定,若沒有這個項目,則默認1分鐘。
now:馬上關機

使用systemctl命令

關閉系統,關閉機器電源。

[root@MyLab ~]# systemctl poweroff

關閉系統,但是沒有關掉機器電源。

[root@MyLab ~]# systemctl halt

 

重啟

[root@MyLab ~]# systemctl reboot

 

掛起系統

[root@MyLab ~]# systemctl suspend

 這個指令將會在內存中保存系統狀態,不可斷電,不然運行的程序都會消失,如果要重新使用系統,系統恢復快速,不過缺點就是在這個過程中不可斷電。

系統的休眠

[root@MyLab ~]# systemctl hibernate

 系統的休眠是指,將系統狀態保存在磁盤上,但你再次需要使用的時候,系統再次恢復而無需重啟,這個過程中可以斷掉電源,不過恢復的過程會要慢些。



原創文章,作者:N24_小輝,如若轉載,請注明出處:http://www.www58058.com/54917

(0)
N24_小輝N24_小輝
上一篇 2016-10-27
下一篇 2016-10-27

相關推薦

  • 淺談DNS基本原理以及實現方法(一)

     DNS(Domain Name System,域名系統),是目前互聯網上最不可或缺的服務器之一,我們在互聯網從訪問一個網站,到發送一封電子郵件,再到定位域中的域控制器,無時無刻不再使用著DNS為我們提供的服務,那為什么我們會需要這樣一個服務那?帶著這樣一個疑問讓我們先來認識一下什么是DNS吧  DNS最核心的工作就是域名解析,也就是把計…

    Linux干貨 2015-12-15
  • KVM 快照管理

    1. 快照分類 2. 創建快照的方式     2.1 內置快照         2.1.1 使用 qemu-img 命令:關機狀態下         2.1.2 使用 virsh 命令(qemu-monitor…

    Linux干貨 2016-02-14
  • loganalyzer——日志分析工具

    Loganalyzer是一款syslog日志和其他網絡事件數據的Web前端。它提供了對日志的簡單瀏覽、搜索、基本分析和一些圖表報告的功能。數據可以從數據庫或一般的syslog文本文件中獲取,所以LogAnalyzer不需要改變現有的記錄架構?;诋斍暗娜罩緮祿?,它可以處理syslog日志消息,Windows事件日志記錄,支持故障排除,使用戶能夠快速查找日志數…

    Linux干貨 2016-10-18
  • 程序包管理

    什么是程序包管理器?     顧名思義,就是將編譯好的應用程序的各組成文件打包成一個或多個程序包文件,從而更方便地實現程序包的安裝、升級、卸載還有查詢等管理操作。 那么一個程序包又由哪些部分組成呢? 程序包的組成清單:   文件清單(每個程序包都單獨實現):       安裝或卸載時運行的腳本,有如下四類:     preinstall : 安裝過程開始之前…

    Linux干貨 2016-12-16
  • N23-第二周博客作業

    1、Linux上的文件管理類命令都有哪些,其常用的使用方法及其相關示例演示。 文件管理工具:cp,mv,rm    cp命令:cope       源文件:目標文件       單源復制:cp [OPTION]… [-T] SOURCE DEST …

    Linux干貨 2016-12-05
  • 網絡班第七周 作業

    1、創建一個10G分區,并格式為ext4文件系統 (1) 要求其block大小為2048,預留空間百分比為2,卷標為MYDATA,默認掛載屬性包含acl (2) 掛載至/data/mydata目錄,要求掛載時禁止程序自動運行,且不更新文件的訪問時間戳 創建了一個20G的SCSI硬盤 fdisk /dev/sdb 創建ext4文件系統 ~]# mke2fs -…

    2017-09-16

評論列表(2條)

  • N24_小呆
    N24_小呆 2016-10-27 14:25

    厲害了,我的歌。

  • 馬哥教育
    馬哥教育 2016-11-02 15:53

    總結的不錯,希望你能熟知這些基礎的命令,加油!

欧美性久久久久