1. 程式人生 > >: 擴充套件的幾個應用 釋出網路YUM源 vim編輯技巧 原始碼編譯安裝 systemctl控制 總結和答疑

: 擴充套件的幾個應用 釋出網路YUM源 vim編輯技巧 原始碼編譯安裝 systemctl控制 總結和答疑

Top

NSD SERVICES DAY01

  1. 案例1:補充應用技巧
  2. 案例2:軟連線與硬連線
  3. 案例3:man手冊、zip備份
  4. 案例4:自定義yum軟體倉庫
  5. 案例5:釋出及測試yum倉庫
  6. 案例6:vim效率操作
  7. 案例7:編譯安裝軟體包
  8. 案例8:使用systemctl工具

1 案例1:補充應用技巧

1.1 問題

本例要求掌握在運維中比較常用的一些擴充套件命令技巧的使用,完成下列小技巧操作:

  1. 採用數值形式將目錄/root的許可權調整為 rwx------
  2. 將記錄的歷史命令條數更改為 200 條
  3. 統計 /boot、/etc/pki 目錄佔用的空間大小
  4. 以格式“yyyy-mm-dd HH:MM” 顯示系統時間

1.2 方案

date日期時間工具:

  • 顯示日期時間:date、date +"%Y-%m-%d %H:%M:%S"
  • 調整日期時間:date -s "yyyy-mm-dd HH:MM:SS"
  • 恢復為硬體時間:hwclock -s

1.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:採用數值形式將目錄/root的許可權調整為 rwx------

1)檢視原來的許可權

 
  1. [[email protected] ~]# ls -ld /root/
  2. dr-xr-x---. 22 root root 4096 3月 26 14:59 /root/

2)修改為新許可權

 
  1. [[email protected] ~]# chmod 700 /root/

3)確認許可權設定結果

 
  1. [[email protected] ~]# ls -ld /root/
  2. drwx------. 22 root root 4096 3月 26 14:59 /root/

步驟二:將記錄的歷史命令條數更改為 200 條

1)調整記錄條數

修改配置檔案/etc/profile,找到HISTSIZE行,將此變數的值修改為200:

 
  1. [[email protected]
    ~]# vim /etc/profile
  2. .. ..
  3. HISTSIZE = 200

2)確認設定結果

所有使用者重新登入以後即可生效:

 
  1. [[email protected] ~]# su - root
  2. [[email protected] ~]# echo $HISTSIZE
  3. 200

步驟三:統計 /boot、/etc/pki 目錄佔用的空間大小

1)分別統計結果

 
  1. [[email protected] ~]# du -sh /boot/ /etc/pki/
  2. 130M     /boot/
  3. 1.5M    /etc/pki/

2)比較du與ls檢視檔案大小的差異(預設塊大小4096位元組):

 
  1. [[email protected] ~]# ls -lh /etc/inittab                     //資料大小511位元組
  2. -rw-r--r--. 1 root root 511 Sep 16 2015 /etc/inittab
  3. [[email protected] ~]# du -sh /etc/inittab                     //實際佔用4KB磁碟空間
  4. 4.0K    /etc/inittab

步驟四:以格式“yyyy-mm-dd HH:MM” 顯示系統時間

 
  1. [[email protected] ~]# date +"%F %R"
  2. 2016-12-26 16:23

2 案例2:軟連線與硬連線

2.1 問題

本例要求理解軟連線與硬連線的基本差異,完成下列操作:

  1. 新建檔案 file1,內容為 AAAA
  2. 為 file1 建立軟連線 file1-s,對比兩檔案內容
  3. 為 file1 建立硬連線 file1-h,對比兩檔案內容
  4. 對比上述 3 個檔案的 i 節點編號
  5. 刪除檔案 file1 ,再檢視檔案 file1-s、file1-h 內容

2.2 方案

軟連線與硬連線:

  • 軟連線:指向原始檔案的路徑,若原始檔案被刪除,連線檔案將失效;原始檔案可以是目錄;原始檔案與連線檔案可以在不同的分割槽/檔案系統
  • 硬連線:指向原始檔案的i節點檔案,若原始檔案被刪除,連線檔案仍然有效;原始檔案不能是目錄;原始檔案與連線檔案必須在同一個分割槽/檔案系統

2.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:使用ln命令為文件/目錄建立連線

1)新建一個測試檔案

 
  1. [[email protected] ~]# vim file1
  2. AAAA

2)為檔案file1建立軟連線file1-s並測試

 
  1. [[email protected] ~]# ln -s file1 file1-s
  2. [[email protected] ~]# cat file1-s
  3. linux.tedu.cn

3)為檔案file1建立硬連線file1-h並測試

 
  1. [[email protected] ~]# ln file1 file1-h
  2. [[email protected] ~]# cat file1-h
  3. linux.tedu.cn

4)對比原始檔案、軟連線、硬連線的屬性

可以發現軟連線只是一個快捷方式,而硬連線與原始檔案的i節點編號相同,其實對應同一塊磁碟儲存:

 
  1. [[email protected] ~]# ls -li /root/f0*.txt
  2. 204645793 -rw-r--r--. 2 root root 14 Jan 6 12:14 file1-h
  3. 201628464 lrwxrwxrwx. 1 root root 12 Jan 6 12:16 file1-s -> file1
  4. 204645793 -rw-r--r--. 2 root root 14 Jan 6 12:14 file1

步驟二:原始檔案刪除測試

1)當原始檔案被刪除時,軟連線將會失效,而硬連線仍然可訪問檔案資料

 
  1. [[email protected] ~]# rm -rf file1
  2. [[email protected] ~]# cat file1-s
  3. cat: file1-s: No such file or directory
  4. [[email protected] ~]# cat file1-h
  5. linux.tedu.cn

2)如果已知原始檔案和硬連線的路徑,當原始檔案丟失時,可以快速重建

 
  1. [[email protected] ~]# ln file1-h file1
  2. [[email protected] ~]# ls -li /root/f0*.txt
  3. 204645793 -rw-r--r--. 2 root root 14 Jan 6 12:14 file1-h
  4. 201628464 lrwxrwxrwx. 1 root root 12 Jan 6 12:16 file1-s -> file1
  5. 204645793 -rw-r--r--. 2 root root 14 Jan 6 12:14 file1

3)不支援為目錄建立硬連線,但可以為目錄建立軟連線

 
  1. [[email protected] ~]# ln /etc/sysconfig/network-scripts/ /etc/network
  2. ln: '/etc/sysconfig/network-scripts/': hard link not allowed for directory
  3. [[email protected] ~]# ln -s /etc/sysconfig/network-scripts/ /etc/interface
  4. [[email protected] ~]# ls -l /etc/interface
  5. lrwxrwxrwx. 1 root root 31 Jan 6 12:28 /etc/interface -> /etc/sysconfig/network-scripts/

3 案例3:man手冊、zip備份

3.1 問題

本例要求掌握man幫助手冊的使用,以及zip壓縮/解壓縮的操作,完成下列任務:

  1. 查閱passwd命令、/etc/passwd配置檔案的手冊頁
  2. 使用zip打包/usr/share/doc/qemu-kvm/目錄

3.2 方案

zip/unzip壓縮與解壓縮:

  • 製作zip壓縮包:zip [-r] 備份檔案.zip 被歸檔的文件...
  • 釋放zip壓縮包:unzip 備份檔案.zip [-d 目標資料夾]

3.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:使用man手冊頁獲取幫助

1)檢視passwd命令的手冊頁

 
  1. [[email protected] ~]# man passwd
  2. PASSWD(1) User utilities PASSWD(1)
  3.  
  4. NAME
  5. passwd - update user's authentication tokens
  6.  
  7. SYNOPSIS
  8. passwd [-k] [-l] [-u [-f]] [-d] [-e] [-n mindays] [-x maxdays] [-w
  9. warndays] [-i inactivedays] [-S] [--stdin] [username]
  10.  
  11. DESCRIPTION
  12. The passwd utility is used to update user's authentication token(s).
  13.  
  14. This task is achieved through calls to the Linux-PAM and Libuser API.
  15. Essentially, it initializes itself as a "passwd" service with Linux-
  16. PAM and utilizes configured password modules to authenticate and then
  17. update a user's password.
  18. .. ..

2)檢視/etc/passwd配置檔案的手冊頁

 
  1. [[email protected] ~]# man 2 passwd
  2. PASSWD(5) Linux Programmer's Manual PASSWD(5)
  3.  
  4. NAME
  5. passwd - password file
  6.  
  7. DESCRIPTION
  8. The /etc/passwd file is a text file that describes user login
  9. accounts for the system. It should have read permission allowed for
  10. all users (many utilities, like ls(1) use it to map user IDs to user‐
  11. names), but write access only for the superuser.
  12.  
  13. In the good old days there was no great problem with this general
  14. read permission. Everybody could read the encrypted passwords, but
  15. the hardware was too slow to crack a well-chosen password, and more‐
  16. over the basic assumption used to be that of a friendly user-commu‐
  17. nity. These days many people run some version of the shadow password
  18. suite, where /etc/passwd has an 'x' character in the password
  19. .. ..

步驟二:使用zip命令製作壓縮包

1)將目錄/usr/share/doc/qemu-kvm/備份為/root/qemu-kvm.zip

 
  1. [[email protected] ~]# zip -r /root/qemu-kvm.zip /usr/share/doc/qemu-kvm/
  2. adding: usr/share/doc/qemu-kvm/ (stored 0%)
  3. adding: usr/share/doc/qemu-kvm/COPYING (deflated 62%)
  4. adding: usr/share/doc/qemu-kvm/COPYING.LIB (deflated 65%)
  5. adding: usr/share/doc/qemu-kvm/Changelog (deflated 61%)
  6. adding: usr/share/doc/qemu-kvm/LICENSE (deflated 45%)
  7. adding: usr/share/doc/qemu-kvm/README (deflated 4%)

2)恢復測試

刪除目標資料夾並確認結果:

 
  1. [[email protected] ~]# rm -rf /usr/share/doc/qemu-kvm/
  2. [[email protected] ~]# ls /usr/share/doc/qemu-kvm/
  3. ls: cannot access /usr/share/doc/qemu-kvm/: No such file or directory

恢復目標資料夾並確認結果:

 
  1. [[email protected] ~]# unzip /root/qemu-kvm.zip -d /
  2. Archive: /root/qemu-kvm.zip
  3. creating: /usr/share/doc/qemu-kvm/
  4. inflating: /usr/share/doc/qemu-kvm/COPYING
  5. inflating: /usr/share/doc/qemu-kvm/COPYING.LIB
  6. inflating: /usr/share/doc/qemu-kvm/Changelog
  7. .. ..
  8. [[email protected] ~]# ls /usr/share/doc/qemu-kvm/
  9. COPYING README qemu-tech.html
  10. COPYING.LIB README.rhel6-gpxe-source qmp-commands.txt
  11. Changelog README.systemtap qmp-events.txt
  12. LICENSE qemu-doc.html qmp-spec.txt

4 案例4:自定義yum軟體倉庫

4.1 問題

本例要求在CentOS真機上利用RHEL7的光碟映象檔案準備一個軟體倉庫目錄,完成下列任務:

  1. 建立目錄 /var/www/html/rh7dvd
  2. 掛載 rhel-server-7.2-x86_64-dvd.iso 到上述目錄

另外,利用收集的一些第三方RPM軟體包檔案,配置為可釋出的yum倉庫目錄,相關任務如下:

  1. 掛載RHEL7光碟映象檔案到 /var/www/html/ 目錄
  2. 下載 LibreOffice 辦公軟體的 rpm 集合版檔案
  3. 將其中的內容釋放到 /opt/libreoffice/ 目錄
  4. 為 /opt/libreoffice/ 目錄建立倉庫檔案

4.2 方案

作為yum軟體源的目錄需要準備的內容:

  • 大量的 .rpm 軟體安裝包檔案
  • 針對這些軟體包的 repodata/ 倉庫檔案

repodata/ 倉庫檔案提供的資料:

  • filelists.xml.gz:提供所有軟體包的檔案安裝清單
  • primary.xml.gz:提供所有軟體包的基本/主要資訊
  • other.xml.gz:提供所有軟體包的其他資訊
  • repomd.xml:提供上述檔案資料檔案.xml.gz的下載和校驗資訊

4.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:準備 /var/www/html/rh7dvd 倉庫目錄

1)建立目錄 /var/www/html/rh7dvd

 
  1. [[email protected] ~]# mkdir /var/www/html/rh7dvd

2)掛載 rhel-server-7.2-x86_64-dvd.iso 到上述目錄

 
  1. [[email protected] ~]# vim /etc/fstab
  2. .. ..
  3. /ISO/rhel-server-7.2-x86_64-dvd.iso /var/www/html/rh7dvd iso9660 loop,ro 0 0
  4. [[email protected] ~]# mount -a

3)確認部署結果

 
  1. [[email protected] ~]# ls /var/www/html/rh7dvd/
  2. addons images Packages RPM-GPG-KEY-redhat-release
  3. EFI isolinux release-notes TRANS.TBL
  4. EULA LiveOS repodata
  5. GPL media.repo RPM-GPG-KEY-redhat-beta

步驟二:準備 /opt/libreoffice/ 倉庫目錄

1)將獲取的LibreOffice軟體集合包釋放到指定目錄

 
  1. [[email protected] ~]# ls LibreOffice_5.1.6.2_Linux_x86-64_rpm.zip
  2. LibreOffice_5.1.6.2_Linux_x86-64_rpm.zip
  3. [[email protected] ~]# unzip LibreOffice_5.1*.zip -d /opt/libreoffice
  4. Archive: LibreOffice_5.1.6.2_Linux_x86-64_rpm.zip
  5. inflating: /opt/libreoffice/install
  6. creating: /opt/libreoffice/langpack_zh-CN/
  7. creating: /opt/libreoffice/langpack_zh-CN/RPMS/
  8. .. ..                                         //釋放到 /opt/libreoffice 目錄

2)使用createrepo建立檔案

 
  1. [[email protected] ~]# createrepo /opt/libreoffice/
  2. Spawning worker 0 with 53 pkgs
  3. Workers Finished
  4. Saving Primary metadata
  5. Saving file lists metadata
  6. Saving other metadata
  7. Generating sqlite DBs
  8. Sqlite DBs complete

3)確認repodata/檔案資料

 
  1. [[email protected] ~]# ls /opt/libreoffice/repodata
  2. 1a5d8311268f33ad2cbf91382110e1ef9875aeea366897253a5d27fd42f9e317-other.xml.gz
  3. 2cd176f0b00492c0c13e0a659eda7dedeb1ab526dec5fd7c9bac7758558770d2-filelists.xml.gz
  4. 6ecab3585a93a917202e177b9569046238332af449a6492fcace96ea79374668-filelists.sqlite.bz2
  5. b09a1f838262e0b67a5ab0d6be516bd921a914afd89864e09650f95662a20371-primary.sqlite.bz2
  6. b6fcf4a24de5dc08585bf52bd34be50d7df376d5fbcf50903bfd3c1dfdf160bf-other.sqlite.bz2
  7. f57724cf309cc102b2ee25596bf8fb39db3c23880404209ac1e379f7b9fd5c49-primary.xml.gz
  8. repomd.xml

5 案例5:釋出及測試yum倉庫

5.1 問題

沿用案例5,本例要求掌握髮布及測試yum倉庫的方法,方便在網路內提供集中的yum源伺服器,主要完成下列任務:

  1. 在CentOS真機 上釋出yum源,包括:rhel7 系統的光碟目錄倉庫、LibreOffice 的rpm軟體包倉庫
  2. 在主機 pc207 上使用上述yum源

5.2 方案

通過網路釋出yum軟體源時,只需要配置HTTP或FTP資源伺服器,然後將提前準備好的yum倉庫目錄部署到可訪問的資源位置即可。

在訪問網路yum軟體源時,注意客戶端的baseurl地址必須與資源提供方式一致:

  • baseurl = htp://伺服器地址/目錄名 ==》 /var/www/html/目錄名
  • baseurl = ftp://伺服器地址/目錄位置 ==》 /var/ftp/目錄名

5.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:在CentOS真機上釋出yum倉庫

1)快速搭建httpd伺服器(若已建好,此步可跳過)

 
  1. [[email protected] ~]# yum -y install httpd                 //裝包
  2. [[email protected] ~]# systemctl restart httpd                 //起服務
  3. [[email protected] ~]# systemctl enable httpd                 //設定開機自啟

2)確認前一步已經部署到Web網站目錄的RHEL7光碟資料:

 
  1. [[email protected] ~]# du -sh /var/www/html/rh7dvd/                 //檢查部署結果
  2. 3.9G    /var/www/html/rh7dvd/

3)將準備好的LibreOffice倉庫目錄部署到Web網頁目錄

 
  1. [[email protected] ~]# mv /opt/libreoffice/ /var/www/html/
  2. [[email protected] ~]# du -sh /var/www/html/llibreoffice/         //檢查部署結果
  3. 234M    /var/www/html/libreoffice

步驟二:在pc207上訪問yum倉庫

1)新增新的yum倉庫設定

 
  1. [[email protected] ~]# vim /etc/yum.repos.d/new.repo
  2. [rh7dvd]
  3. name = RHEL 7.2 Server
  4. baseurl = http://192.168.4.254/rh7dvd
  5. gpgcheck = 0
  6.  
  7. [libreoffice]
  8. name = LibreOffice 5
  9. baseurl=http://192.168.4.254/libreoffice
  10. gpgcheck = 0

2)測試新的yum倉庫

 
  1. [[email protected] ~]# yum repolist
  2. .. ..
  3. repo id repo name status
  4. libreoffice LibreOffice 5 53
  5. rh7dvd RHEL 7.2 Server 4620
  6. .. ..

6 案例6:vim效率操作

6.1 問題

本例要求掌握使用vim文字編輯器時能夠提高操作效率的一些常用技巧和方法,完成下列任務:

  1. 將檔案 /etc/passwd 複製為 /opt/nsd.txt,然後開啟 /opt/nsd.txt 檔案,練習命令模式下的切換/複製/刪除/查詢操作
  2. 將檔案 /etc/man_db.conf 複製到 /opt 目錄下,然後開啟 /opt/man_db.conf 檔案,將第50~100行內的“man”替換為“MAN”,在 vim 中設定顯示行號檢視效果

6.2 方案

命令模式常用操作:

  • 1G 或 gg ,跳轉到檔案的首行
  • G ,跳轉到檔案的末尾行
  • yy、#yy ,複製游標處的一行、#行
  • p、P ,貼上到游標處之後、之前
  • x 或 Delete鍵 ,刪除游標處的單個字元
  • dd、#dd ,刪除游標處的一行、#行
  • d^、d$ ,從游標處之前刪除至行首/行尾
  • /word 向後查詢字串“word”,再按n/N跳至後/前一個結果
  • u ,撤銷最近的一次操作
  • U ,撤銷對當前行的所有修改
  • Ctrl + r 取消前一次撤銷操作
  • ZZ 儲存修改並退出

末行模式常用操作:

  • :s/old/new ,替換當前行第一個“old”
  • :s/old/new/g ,替換當前行所有的“old”
  • :n,m s/old/new/g ,替換第n-m行所有的“old”
  • :% s/old/new/g ,替換檔案內所有的“old”
  • :w /root/newfile ,另存為其它檔案
  • :r /etc/filesystems ,讀入其他檔案內容
  • :set nu|nonu ,顯示/不顯示行號
  • :set ai|noai ,啟用/關閉自動縮排

6.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:vim命令模式下的切換/複製/刪除/查詢

1)建立練習檔案

將檔案 /etc/passwd 複製為 /opt/nsd.txt:

 
  1. [[email protected] ~]# cp /etc/passwd /opt/nsd.txt

2)使用vim開啟練習檔案,預設處於命令模式

 
  1. [[email protected] ~]# vim /opt/nsd.txt
  2. .. ..

3)在命令模式下完成下列操作

切換操作:G 最後一行,5G 第5行,gg 第一行。

複製操作:按2yy複製2行,7G移動到第7行,p 貼上。

刪除操作:25G 移動到第25行,200dd 從此行開始刪除200行(不夠就剩下全刪)。

查詢操作:gg 第一行,/adm 查詢關鍵詞adm,n 跳轉到下一個結果。

4)儲存並退出編輯器

ZZ 儲存退出。

步驟二:vim末行模式下的替換/設定操作

1)建立練習檔案

將檔案 /etc/man_db.conf 複製到 /opt/ 目錄下:

 
  1. [[email protected] ~]# cp /etc/man_db.conf /opt/

2)使用vim開啟練習檔案,輸入:切換到末行模式

 
  1. [[email protected] ~]# vim /opt/man_db.conf
  2. .. ..
  3. :

3)在末行模式下完成下列操作

輸入 :set nu ,確認後顯示行號。

輸入 :50,100 s/man/MAN/g ,確認將第50~100行內的“man”替換為“MAN”。

4)儲存並退出編輯器

輸入 :wq ,確認後儲存並退出編輯器。

7 案例7:編譯安裝軟體包

7.1 問題

本例要求掌握常規原始碼應用的安裝過程,通過編譯的方式安裝inotify-tools 軟體工具,完成下列任務:

  1. 釋放 inotify-tools-3.13.tar.gz 原始碼包
  2. 配置 ./configure
  3. 編譯 make、安裝 make install
  4. 測試inotifywait監控工具的用法及用途

7.2 方案

對於標準原始碼釋出的C/C++軟體包,編譯安裝一般包括以下過程:

  1. 解包:使用tar命令,將下載的原始碼釋放至指定目錄
  2. 配置:執行原始碼目錄內的 ./configure 指令碼,指定安裝目錄/功能模組等選項
  3. 編譯:在原始碼目錄下執行 make 操作,根據配置清單Makefile生成可執行的二進位制程式檔案
  4. 安裝:在原始碼目錄下執行make install 操作,將編譯好的程式及相關檔案複製到安裝目錄

7.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:確認已配置好編譯環境

 
  1. [[email protected] ~]# yum -y install gcc gcc-c++ make
  2. .. ..
  3. [[email protected] ~]# gcc --version
  4. gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-4)
  5. Copyright (C) 2015 Free Software Foundation, Inc.
  6. This is free software; see the source for copying conditions. There is NO
  7. warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

步驟二:編譯安裝inotify-tools軟體包

1)解包inotify-tools-3.13.tar.gz檔案

 
  1. [[email protected] ~]# ls inotify-tools-3.13.tar.gz
  2. inotify-tools-3.13.tar.gz
  3. [[email protected] ~]# tar xf inotify-tools-3.13.tar.gz -C /usr/src/

2)配置 ./configure,安裝目錄預設(/usr/local/*/)

 
  1. [[email protected] ~]# cd /usr/src/inotify-tools-3.13/         //進入原始碼目錄
  2. [[email protected] inotify-tools-3.13]# ./configure             //配置操作
  3. checking for a BSD-compatible install... /usr/bin/install -c
  4. checking whether build environment is sane... yes
  5. checking for gawk... gawk
  6. .. ..
  7. configure: creating ./config.status
  8. config.status: creating Makefile
  9. .. ..
  10.  
  11. [[email protected] inotify-tools-3.13]# ls Makefile             //檢查配置結果
  12. Makefile

3)編譯 make

 
  1. [[email protected] inotify-tools-3.13]# make
  2. .. ..
  3. Making all in src
  4. make[2]: Entering directory `/usr/src/inotify-tools-3.13/src'
  5. make[3]: Entering directory `/usr/src/inotify-tools-3.13'
  6. make[3]: Leaving directory `/usr/src/inotify-tools-3.13'
  7. .. ..

4)安裝 make install

 
  1. [[email protected] inotify-tools-3.13]# make install
  2. .. ..
  3. /usr/bin/install -c .libs/inotifywait /usr/local/bin/inotifywait
  4. /bin/sh ../libtool --mode=install /usr/bin/install -c 'inotifywatch' '/usr/local/bin/inotifywatch'
  5. .. ..
  6.  
  7. [[email protected] inotify-tools-3.13]# find /usr/local/ -name "inotify*"
  8. /usr/local/bin/inotifywait                             //確認安裝結果
  9. /usr/local/bin/inotifywatch
  10. /usr/local/include/inotifytools
  11. /usr/local/include/inotifytools/inotifytools.h

步驟三:測試inotify-tools軟體程式

軟體包inotify-tools提供了一個主要程式inotifywait,可以用來監控指定目錄或文件的變化,並及時給出通知。

1)開啟對/opt目錄的事件監控

 
  1. [[email protected] ~]# inotifywait -mrq /opt &                 //開啟監控
  2. [1] 15568

2)修改/opt/目錄內容,觀察螢幕輸出資訊

 
  1. [[email protected] ~]# touch /opt/a.txt                         //新建檔案a.txt
  2. /opt/ CREATE a.txt
  3. /opt/ OPEN a.txt
  4. /opt/ ATTRIB a.txt
  5. /opt/ CLOSE_WRITE,CLOSE a.txt
  6.  
  7. [[email protected] ~]# mv /opt/a.txt /opt/b.txt                 //將檔案改名
  8. /opt/ MOVED_FROM a.txt
  9. /opt/ MOVED_TO b.txt

3)結束inotifywait監控

殺死當前使用者的第一個後臺任務:

 
  1. [[email protected] ~]# kill -9 %1
  2. [1]+ Killed inotifywait -mrq /opt

8 案例8:使用systemctl工具

8.1 問題

本例要求掌握systemctl控制工具的基本操作,完成下列任務:

  1. 重啟 httpd、crond、bluetooth 服務,檢視狀態
  2. 禁止 bluetooth 服務開機自啟,並停用此服務
  3. 設定預設級別為 multi-user.target 並確認

8.2 方案

systemd是一個更高效的系統&服務管理器,其相關特性如下:

  • 開機服務並行啟動,各系統服務間的精確依賴
  • 配置目錄:/etc/systemd/system/
  • 服務目錄:/lib/systemd/system/

systemctl是systemd的管理工具,將相關資源組織為unit配置單元進行管理。

不同的unit決定了一組相關的啟動任務,service和target是最常用的配置單元:

  • service:後臺獨立服務
  • target:一套配置單元的組合,類似於傳統“執行級別”

8.3 步驟

實現此案例需要按照如下步驟進行。

步驟一:重啟 httpd、crond、bluetooth 服務,檢視狀態

1)重啟系統服務httpd、crond、bluetooth

 
  1. [[email protected] ~]# systemctl restart httpd crond bluetooth

2)檢視上述服務的狀態

 
  1. [[email protected] ~]# systemctl status httpd crond bluetooth
  2. * httpd.service - The Apache HTTP Server
  3. Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
  4. Active: active (running) since Fri 2017-01-06 18:18:20 CST; 18s ago
  5. .. ..
  6.  
  7. * crond.service - Command Scheduler
  8. Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
  9. Active: active (running) since Fri 2017-01-06 18:18:19 CST; 19s ago
  10. .. ..
  11.  
  12. * bluetooth.service - Bluetooth service
  13. Loaded: loaded (/usr/lib/systemd/system/bluetooth.service; enabled; vendor preset: enabled)
  14. Active: active (running) since Fri 2017-01-06 18:18:19 CST; 19s ago
  15. .. ..

步驟二:禁止 bluetooth 服務開機自啟,並停用此服務

1)停用bluetooth服務

 
  1. [[email protected] ~]# systemctl stop bluetooth

2)禁止bluetooth服務開機自啟

 
  1. [[email protected] ~]# systemctl disable bluetooth
  2. Removed symlink /etc/systemd/system/dbus-org.bluez.service.
  3. Removed symlink /etc/systemd/system/bluetooth.target.wants/bluetooth.service.
  4.  
  5. [[email protected] ~]# systemctl is-enabled Bluetooth             //檢查結果
  6. disabled

步驟三:設定預設級別為 multi-user.target 並確認

1)檢視預設執行級別

 
  1. [[email protected] ~]# systemctl get-default
  2. graphical.target

2)將預設執行級別設定為multi-user.target

 
  1. [[email protected] ~]# systemctl set-default multi-user.target
  2. Removed symlink /etc/systemd/system/default.target.
  3. Created symlink from /etc/systemd/system/default.target to /usr/lib/systemd/system/multi-user.target.

3)確認配置結果

 
  1. [[email protected] ~]# systemctl get-default
  2. multi-user.target

根據此處的設定,重啟此虛擬機器後圖形桌面將不再可用。