linux程序包管理

  

  首先linux軟件程序包和windows中的程序包是不兼容的,所以要在linux上使用windows上的程序,需要使用虛擬化工具。

庫級別的虛擬化:

    linux : WinE

    windows: Cywin

而程序開發語言有多種,分為系統級開發,和應用級開發

系統開發語言:

C, C++ 

C/C++程序格式:

    源代碼:文本格式的程序代碼

        編譯開發環境:編譯器、頭文件、開發庫

    二進制格式:文本格式的程序代碼–>編譯器–> 二進制格式(二進制程序、庫文件、配置文件、幫助文件、)

應用級開發語言:

java/Python/perl/ruby/php/delphi/go

java/python程序格式:

    源代碼:編譯成能夠在其虛擬機(jvm/pvm)運行的格式;

        開發環境:編譯器、開發庫

    二進制格式:程序代碼–>編譯器–> 二進制格式(二進制程序、庫文件、配置文件、幫助文件、)

程序包管理:

    源代碼–> 目標二進制格式–>組織成為一個或有限幾個“包”文件;

        安裝,升級,卸載,查詢,校驗

程序包管器分為:

debian系列:deb文件, dpkg包管理器

redhat系列: rpm文件, rpm包管理器

這里重要說下redhat系列的程序包管理“rpm包管理”rpm即為“Redhat Package Manager”現在也為

“RPM Package Manager”之意。

軟件程序包的命名有一定的格式;

源代碼:name-VERSION.tar.gz

    VERSION: major(主版本號).minor(次版本號).release(發行版號)

rpm包命令格式:name-VERSION-release.arch.rpm

    VERSION::major,minor,release

    release.arch : rpm包的發行號

如:bash-4.2.46-19.el7.x86_64.rpm

VERSION: major.minor.release

release:release.OS

常見的arch:

    x86: i386, i486, i586, i686

    x86_64: x64, x86_64, amd64powerpc: ppc

跟平臺無關:noarch

   wKioL1e5SzKBhbkEAAB3B1L1Lng498.png

包的分類與拆包:

Application-VERSION-ARCH.rpm: 主包

Application-devel-VERSION-ARCH.rpm:開發子包

Application-utils-VERSION-ARHC.rpm:其它子包

Application-libs-VERSION-ARHC.rpm:其它子包

查看二進制程序所依賴的庫文件:

    ldd/PATH/TO/BINARY_FILE

管理及查看本機裝載的庫文件:

    ldconfig

    /sbin/ldconfig-p: 顯示本機已經緩存的所有可用庫文件名及文件路徑映射關系

    配置文件:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf

    緩存文件:/etc/ld.so.cache

wKioL1e5VPXga5S-AAAv8GVIGrg633.png

  

  安裝軟件包時,包之間可能存在依賴關系,甚至循環依賴,如安裝A包,需要先安裝B包,安裝B包需要先安裝C包,而安裝C包則需要先安裝A包,這種循環依賴的安裝,如果只是一步一步的安裝解決依賴關系,那就太耗費人力物力了,這是就需要使用一些前端工具來自動解決依賴關系。

解決依賴包管理工具:

yum:rpm包管理器的前端工具

apt-get:deb包管理器前端工具

zypper: suse上的rpm前端管理工具

dnf: Fedora 22+ rpm包管理器前端管理工具

程序包管理器:

    功能:將編譯好的應用程序的各組成文件打包一個或幾個程序包文件,從而方便快捷地實現程序包的安裝、卸載、查詢、升級和校驗等管理操作

1、包文件組成(每個包獨有)

  RPM包內的文件

  RPM的元數據,如名稱,版本,依賴性,描述等

  安裝或卸載時運行的腳本

2、數據庫(公共)

  程序包名稱及版本

  依賴關系

  功能說明

  包安裝后生成的各文件路徑及校驗碼信息

   …

  存放在/var/lib/rpmwKiom1e5Vh7xAFqVAAAdIKl3kN4590.png

獲取程序包

安裝程序包,首先需要獲取程序包,而獲取程序包較為安全的途徑有以下幾種

(1) 系統發版的光盤或官方的服務器;

如:CentOS鏡像:

    https://www.centos.org/download/

    http://mirrors.aliyun.com

    http://mirrors.sohu.com

    http://mirrors.163.com

(2) 項目官方站點

(3) 第三方組織:

  Fedora-EPEL:

    Extra Packages for Enterprise Linux

  Rpmforge:RHEL推薦,包很全

  程序包搜索引擎:

    http://pkgs.org

    http://rpmfind.net

    http://rpm.pbone.net

    https://sourceforge.net

④自己制作

獲取程序包時需注意,檢查其合法性:來源合法性、程序包的完整性。

獲取到程序包之后,就需要安裝或管理程序包了,這里說下rpm包的管理:

rmp包管理:

rpm命令

CentOS系統上rpm命令管理程序包:

 :安裝,升級,卸載,查詢,校驗,數據庫維護

rpm命令:rpm [options] [package_file]

    安裝:-i,–install

    升級:-U,–update,-F ,–freshen

    卸載:-e,–erase

    查詢:-q,–query

    校驗:-V ,–verify

    數據庫維護:–builddb,–initdb


安裝:

 rpm {-i|–install} [install-options] PACKAGE_FILE …

    rpm -ivh PACKAGE_FILE

    

    GENERAL OPTIONS: 

        -v:verbose,詳細信息

        -vv: 更詳細的輸出

    [install-options]:

        -h: hash masks輸出進度條;每個#表示2%的進度;

        –test : 測試安裝,檢測并報告依賴慣性系及沖突消息等;

        –nodeps : 忽略依賴關系;不建議使用;

        –replacepkgs : 重新安裝;

        –nosignature: 不檢查來源合法性

        –nodigest:不檢查包完整性

        –noscipts:不執行程序包腳本片斷

如:測試安裝rpm包,可以看到包所需的依賴關系:

wKiom1e5Y0KztVY2AAAxZrxE4tg821.png

程序包安裝時會運行一些腳本做一些準備操作,注意:rpm可以自帶腳本;

  四類: –noscripts(都不執行)

    preinstall:安裝過程開始之前運行的腳本;%pre;     –nopre

    postinstall: 安裝過程完成之后運行的腳本;%post; –nopost

    preuninstall:卸載過程真正開始之前運行的腳本;%preun;  –nopreun

    postuninstall:卸載過程完成之后運行的腳本,%postun;   –nopostun


升級:

rpm {-U|–upgrade} [install-options] PACKAGE_FILE …

    -U:升級或安裝

    upgrade:安裝有舊版程序包,則“升級”;如果不存在舊版程序包,則“安裝”

    rpm -Uvh PACKAGE_FILE …

rpm {-F|–freshen} [install-options] PACKAGE_FILE …

    -F:升級

    freshen:安裝有舊版程序包,則“升級”;如果不存在舊版程序包,則不執行升級操作

    rpm -Fvh PACKAGE_FILE …

    –oldpackage : 降級安裝;

    –force:強制升級;

注意:

①不要對內核做升級操作;Linux支持多內核版本并存,因此直接安裝新版本內核即可

②如果某原程序包的配置文件安裝后曾被修改過,升級時,新版本的程序提供的同一個配置文件不會覆蓋原有版本的配置文件,而是把新版本的配置文件重命名(FILENAME.rpmnew)后提供;

例:

wKioL1e5btyBi595AAAtMIxM4Ls671.png


卸載:

rpm  {-e|–erase}  [–allmatches]  [–nodeps]  [–noscripts]  [–test] PACKAGE_NAME …

    [–allmatches] :卸載所有匹配指定名稱的程序包的各版本;

    [–nodeps] :忽略依賴關系

    –text: 僅測試卸載, dry run模式

測試卸載,可以發現卸載時同樣存在著依賴關系

wKioL1e5cVHjoG3rAAA5iS60AHA643.png

查詢:

rpm {-q|–query} [select-options] [query-options]

[select-options]:

    PACKAGE_NAME:查詢指定的程序包是否已經安裝,及其版本;

    -a ,–all : 查詢已安裝的所有包;

    -f  FILE:查詢指定的文件由哪個程序包安裝生成;

    -p,–package PACKAGE_FILE :用于實現對未安裝的程序包執行查詢

    –whatprovides CAPABILITY : 查詢指定的CAPABILITY由哪個程序包提供 ;

    –whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴;

相關用法:

wKiom1e5db_QbpX4AABKgH3itoc984.png

[query-options]

    –changelog:查詢RPM包的changlog;

    -l, –list : 程序安裝生成的所有文件列表;

    -i, –info:程序包相關的信息,版本號、大小、所屬的包組,等;

    -c, –configfiles:查詢指定的程序包提供的配置文件;

    -d, –docfiles:查詢指定的程序包提供的幫助文檔;

    –provides:列出指定的程序包聽的所有的CAPABILITY;

    -R, –requires:查詢指定程序包的依賴關系;

    –scripts:查看程序包自帶的腳本片段;

wKiom1e6Tn-zADmlAAA5kue7sco371.png

wKioL1e6T4Pz4SrAAAAg0bOGgAk813.png

    rpm2cpio 包文件|cpio–itv  :預覽包內文件

    rpm2cpio 包文件|cpio–id “*.conf”:釋放包內文件

 當誤操作損壞某個文件,導致程序不能使用時,如果直接將程序重新安裝,會覆蓋其配置文件,導致先前配置丟失;

 可以將損壞的文件刪除,然后使用 rpm2cpio命令,重新解壓程序包中的指定文件,再將解壓后的文件移動到指定位置,即可使用;可以達到不覆蓋其他文件的情況下,重新修復程序。


校驗:

rpm {-V|–verify} [select-options] [verify-options]

顯示字符所表示的意義:

    S file Size differs  

    M Mode differs (includes permissions and file type) 

    5 digest (formerly MD5 sum) differs  

    D Device major/minor number mismatch 

    L readLink(2) path mismatch  

    U User ownership differs   

    G Group ownership differs    

    T mTime differs

    P caPabilities differ

wKioL1e6U7miTuA3AABPdVjxO6s621.png

包校驗:

包來源合法性驗正及完整性驗正:

    完整性驗正:SHA256

    來源合法性驗正:RSA

公鑰加密:

    對稱加密:加密、解密使用同一密鑰;

    非對稱加密:密鑰是成對兒的

        public key: 公鑰,公開所有人

        secret key: 私鑰, 不能公開

導入所需要公鑰:

    rpm –import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

    CentOS 7發行版光盤提供:RPM-GPG-KEY-CentOS-7

    rpm -K|checksigrpmfile檢查包的完整性和簽名

    rpm -qagpg-pubkey*  查看已導入的密鑰

[root@centos7 Packages]# rpm -K zsh-5.0.2-14.el7.x86_64.rpm 
zsh-5.0.2-14.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK

wKioL1e6WMriGo2xAAAsi98XcAg786.png

wKiom1e6WOui22wVAAA3R2AQpgE860.png

rpm數據庫

數據庫重建:

rpm管理器數據庫路徑:/var/lib/rpm

    查詢操作:通過此處的數據庫進行;

獲取幫助:

    CentOS6: man rpm

    CentOS7: man rpmdb

rpm {–initdb|–rebuilddb}

rpm {–initdb|–rebuilddb} [-v] [–dbpath DIRECTORY] [–root DIRECTORY]

–initdb:初始化數據庫,當前無任何數據庫可實施化創建一個新的;當前有時不執行任何操作;

–rebuilddb:重新構建,通過讀取當前系統上所有已經安裝過的程序包進行重新創建;

wKioL1e6XePi75_OAABK8Zp0Muo522.png

yum命令

前文已經提到安裝軟件包時,包之間可能存在依賴關系,需要使用一些前端工具來自動解決依賴關系。

  解決依賴包管理工具:

    yum:rpm包管理器的前端工具

    apt-get:deb包管理器前端工具

    zypper: suse上的rpm前端管理工具

    dnf: Fedora 22+ rpm包管理器前端管理工具

CentOS中管理工具: yum, dnf

這里主要說下yum的使用方法:

yum : YellowdogUpdate Modifier;rpm的前端程序,用來解決軟件包相關依賴性,可以在多個庫之間定

位軟件包,up2date的替代工具

yum repository: yum repo,存儲了眾多rpm包,以及包的相關的元數據文件(放置于特定目錄repodata下)  repodata目錄所在的位置為倉庫應該指向的位置。

倉庫首先需要是文件服務器 (光盤本身也可當作倉庫)

 文件服務器:

    ftp://

    http://

    file:///

yum客戶端的配置文件:

/etc/yum.conf:為所有倉庫提供公共配置

    man yum.conf可查看yum.conf的詳細信息

/etc/yum.repos.d/*.repo:為倉庫的執行提供配置

倉庫指向的定義:

【repositoryID】

name=Some name for this repository  

baseurl=url://path/to/repository 

enable={1|0}(默認為1,即啟用本倉庫)

gpgcheck={1|0}(默認為1,即啟用密鑰)

gpgkey=URL(gpg密鑰文件)

enablegroups={1|0}(默認為1,即啟用組管理)

faillovermethod={roundrobin|priority}(當baseurl指向多個時, 默認為:roundrobin,意為隨機挑選, priority:指定優先級)

cost=  默認為1000

例:

自定義倉庫指向:

[root@localhost ~]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim base.repo
[base]
name=CentOS 7 
baseurl=http://10.1.0.1/cobbler/ks_mirror/CentOS-7-x86_64/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
enabled=1

還可以將鏡像光盤當作倉庫:

首先需要掛載光盤:

[root@centos7 ~]# mount /dev/sr0 /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only

然后進入/etc/yum.repos.d/目錄,將CentOS-Base.repo文件改為非repo結尾的文件(使此倉庫無法識別,達到禁止使用此倉庫的目的)

[root@centos7 ~]# cd /etc/yum.repos.d/
[root@centos7 yum.repos.d]# mv CentOS-Base.repo CentOS-Base.repo.bak

編輯CentOS-Media.repo文件

[root@centos7 yum.repos.d]# vim CentOS-Media.repo

[c7-media]

name=CentOS-$releasever – Media

baseurl=file:///mnt/cdrom

gpgcheck=1

enabled=1

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

這樣即可使用本地倉庫!

yum命令的用法:

yum [options] [command] [package …]

使用命令創建倉庫:

如:

生成172.16.0.1_cobbler_ks_mirror_CentOS-X-x86_64_.repo倉庫

yum-config-manager –add-repo= http://172.16.0.1/cobbler/ks_mirror/CentOS-X-x86_64/

yum-config-manager –disable “倉庫名" 禁用倉庫

yum-config-manager –enable “倉庫名” 啟用倉庫

顯示倉庫列表:

repolist [all|enabled|disabled]

[root@localhost yum.repos.d]# yum repolist 
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
repo id          repo name        status
Base            CentOS 7         9,007
epel            fedora-epel         8,508
repolist: 17,515

顯示程序包:

yum list [all | glob_exp1] [glob_exp2] […]

yum list {available |install | updates} [glob_exp1] […]

安裝程序包:

yum install package1 [package2] […]

yum reinstall package1 [package2] […](重新安裝)

升級程序包:

yum update [package1] [package2] […]

yum downgrade package1 [package2] […](降級)

檢查可用升級:

yum check-update

卸載程序包:(存在依賴關系的包一起卸載)

yum remove | erase package1 [package2] […]

查看程序包infomation

yum info […]

查看指定的特性(某文件)是由哪個程序包所提供:

yum provides | whatprovides feature1 [feature2] […]

清理本地緩存:

yum  clean [ packages | metadata | expire-cache | rpmdb | plugins | all ]

構建緩存:

yum  makecache

搜索:

    yum search string1 [string2] […]

    以指定關鍵字搜索程序包名及summary信息

查看指定包所依賴的capabilities

   yum deplist package1 [package2] […]

查看yum事物歷史

history [info|list|packages-list|packages-info|summary|addon-info|redo|undo|

    rollback|new|sync|stats]

yum history

yum history info 6

yum history undo 6

安裝及升級本地程序包

* localinstall rpmfile1 [rpmfile2] […]

    (用install替代)

* localupdate  rpmfile1 [rpmfile2] […]

    (用update替代)

包組管理的相關命令:

groupinstall group1 [group2] […]

groupupdate group1 [group2] […]

grouplist [hidden] [groupwildcard] […]

groupremove group1 [group2] […]

groupinfo  group1 […]

yum的命令行選項:

–nogpgcheck:禁止進行gpgcheck

-y: 自動回答為“yes”

-q:靜默模式

–disablerepo=repoidglob:臨時禁用此處指定的repo

–enablerepo=repoidglob:臨時啟用此處指定的repo

–noplugins:    禁用所有插件

yum的repo配置文件中可用的變量:

    $releasever: 當前OS的發行版的主版本號

    $arch: 平臺,i386,i486,i586,x86_64等

    $basearch:基礎平臺;i386

    $YUM0-$YUM9:自定義變量

如:http://server/centos/$releasever/$basearch/

例:創建yum倉庫:

createrepo [options] <directory>

1、首先進入存放程序包的目錄,使用"createrpo ./"命令在當前目錄生成repodata目錄,進入目錄即可發現生成一些文件

[root@localhost repo]# createrepo ./
[root@localhost repo]# cd /etc/yum.repos.d/
[root@localhost yum.repos.d]# vim base.repo

添加下列幾行:

[xen4centos]
name=Xen 4 CentOS6
baseurl=file:///yum/repo/
gpgcheck=0

使用yum repolist命令即可查看倉庫已生成

wKioL1e62sqQPMNaAAAdBtvK4AM850.png


例:刪除kernel包后如何恢復?

以CentOS-7.2為例:

刪除kernel包,無法重啟:

1、刪除kernel包,wKiom1e873WBWzZMAAAQqgTjbxU944.png

2、重啟,無法啟動

wKioL1e875vSqgkYAAAOSwE_Vgk976.png

3、再次重啟,出現進度條時按下Esc鍵,出現如下界面,選擇從光盤啟動

wKiom1e88AWA3ynxAAAN5Mon9jE285.png

4、進入如下界面,選擇Troubleshooting

wKioL1e88AXAJXAbAAAN5gB5mSc934.png

5、選擇救援模式,Rescue a CentOS system

wKiom1e88AWz0lxKAAAW4Pl7aqg643.png

6、鍵入回車

wKioL1e88AaiHlADAAAL5rH15U8979.png

7、選擇Continue ,鍵入1,進入

wKiom1e88AbBibIuAAAlpUpi_bg438.png

8、回車進入shell

wKioL1e88AfDt7F_AAAUiQasjOA590.png

9、查看光盤是否掛載、如若沒有掛載,首先掛載光盤

mount /dev/sr0 /mnt/cdrom

如下圖,光盤已經掛載至/run/instatll/repo

wKiom1e88AejARTDAAA0bOW53TA350.png

10、安裝kernel包,完成后,重新啟動即可。

wKioL1e88Aij7MtaAAAW4H99nKw868.png

這是以刪除kernel包為例,如果誤刪除rpm包,rpm命令和yum命令不能使用,可以使用以上方法,進行恢復安裝。

程序包的編譯安裝

上述說的都是二進制的rpm包,有很多優點:

  1、包管理系統簡單,只需要幾個命令就可以實現包的安裝,升級,查詢和卸載;

  2、安裝速度快;

但是也有很多缺點:

  1、不能看到源代碼;

  2、功能選擇不靈活;

  3、存在依賴性。

而編譯安裝的程序包即源碼包,則可以彌補這些缺點,源碼包優點:

   1、自由選擇所需的功能,

   2、開源,如果能力足夠,可以修改源代碼

   3、軟件是編譯安裝,所以更加適合自己的系統,更加穩定,效率也更高

   4、卸載方便

缺點:

  1、安裝過程步驟較多,尤其安裝較大的軟件合集時,容易出現拼寫錯誤

  2、編譯時間長,安裝時間比二進制包時間長

  3、因為是編譯安裝,安裝過程中一旦報錯新手很難撓解決

程序包編譯安裝:

過程:

Application-VERSION-release.src.rpm–> 安裝后,使用rpmbuild命令制作成二進制格式的rpm包,而后再安裝

 源代碼–>預處理–>編譯(gcc)–>匯編–>鏈接–>執行

由于自己制作rpm包安裝,較為繁瑣,所以我們主要是利用項目管理器來編譯安裝:

源代碼組織格式:

    多文件:文件中的代碼之間,很可能存在跨文件依賴關系

    C、C++:make (項目管理器,configure –> Makefile.in –> makefile)

     java: maven

C代碼編譯安裝三步驟:

1、./configure:

   (1) 通過選項傳遞參數,指定啟用特性、安裝路徑等;執行時會參考用戶的指定以及makefile.in       文件生成makefile

   (2) 檢查依賴到的外部環境

2、make:根據makefile文件,構建應用程序

3、make install:復制文件到相應路徑

開發工具:

    autoconf: 生成configure腳本

    automake:生成Makefile.in

注意:安裝前查看INSTALL,README

開源程序源代碼的獲取途徑:

  官方自建站點:

    apache.org (ASF)

    mariadb.org

    …

有一些較小的程序包,可能沒有官方站點,而是放在別的站點托管,而我們就可以去托管站點獲取源碼程序包

 代碼托管站點:

    SourceForge.net

    Github.com

    code.google.com

獲取源碼包后,利用gcc編譯器進行編譯

c/c++編譯器: gcc(GNU C Complier)

編譯C源代碼:

 前提:提供開發工具及開發環境

   開發工具:make, gcc等

   開發環境:開發庫,頭文件

    glibc:標準庫

 通過“包組”提供開發組件

    CentOS 6: "Development Tools", "Server Platform Development",

編譯安裝過程:

第一步:configure腳本

  選項:指定安裝位置、指定啟用的特性

  –help: 獲取其支持使用的選項

 選項分類:

    安裝路徑設定:

    –prefix=/PATH : 指定默認安裝位置,默認為/usr/local/

    –sysconfdir=/PATH:配置文件安裝位置

    

    System types: 支持交叉編譯

  Optional Features: 可選特性

    –disable-FEATURE

    –enable-FEATURE[=ARG]

  Optional Packages: 可選包,

    –with-PACKAGE[=ARG],依賴包

    –without-PACKAGE,禁用依賴關系

第二步:make

第三步:make install

安裝后的配置:

(1) 二進制程序目錄導入至PATH環境變量中;

  編輯文件/etc/profile.d/NAME.s

    export PATH=/PATH/TO/BIN:$PATH

(2) 導入庫文件路徑

  編輯/etc/ld.so.conf.d/NAME.conf

    添加新的庫文件所在目錄至此文件中;

  讓系統重新生成緩存:

    ldconfig [-v]

(3) 導入頭文件

  基于鏈接的方式實現:

    ln -sv

(4) 導入幫助手冊

  編輯/etc/man.config|man_db.conf文件

    添加一個MANPATH

例:編譯安裝apache 2.2,并啟動此服務

1、首先安裝所需要的庫,然后進行編譯安裝

yum install -y gcc
yum groupinstall -y "Development tools"
yum groupinstall -y " Server Platform Development"
./configure --prefix=/usr/local/apache2 --sysconfdir=/etc/httpd2
make
make install

2、將二進制程序目錄導入至PATH環境變量中

vim /etc/profile.d/httpd2.sh
    PATH=$PATH:/usr/local/apache2/bin

3、導入庫文件路徑

vim /etc/ld.so.conf.d/httpd2.conf 
    /usr/local/apache2/lib

4、讓系統重新生成緩存

ldconfig -v

5、導入頭文件

ln -sv /usr/local/apache2/include /usr/inclcude/httpd2.h

6、導入幫助手冊

vim /etc/man.config
   MANPATH /usr/local/apache2/man

7、啟動服務

apachectl start

8、查看80端口是否打開

netstat -tan

tcp6       0      0 :::80                   :::*                    LISTEN

9,顯示80端口處于監聽狀態,訪問IP,顯示如下

15.PNG

原創文章,作者:Groot,如若轉載,請注明出處:http://www.www58058.com/39475

(0)
GrootGroot
上一篇 2016-08-24
下一篇 2016-08-24

相關推薦

  • 第八周練習腳本部分

    1、寫一個腳本,使用ping命令探測172.16.250.1-172.16.250.254之間的所有主機的在線狀態;在線的主機使用綠色顯示;不在線的主使用紅色顯示; #!/bin/bash # for((i=1;i<=254;i++));do     site="172.16.250.${i}&quot…

    Linux干貨 2016-12-15
  • Python基礎語法習題

    1、~12為什么是-13?解1:12 二進制:0000 1100補碼: 0000 1100按位取反 :1111 0011求這個原碼,即負數求補碼的逆過程:先減1,再取反 (符號位不變)-1 1111 0010取反 1111 1101 還原成十進制-13 2、10^9等于?10^-9等于?解:(1)10^910的二進制:0000 10109的二進制: 0000…

    Linux干貨 2018-03-24
  • 馬哥教育網絡21期+第四周練習博客

    1、復制/etc/skel目錄為/home/tuser1,要求/home/tuser1及其內部文件的屬組和其它用戶均沒有任何訪問權限。 [root@localhost ~]# cp -r /etc/skel/ /home/tuser1 [root@localhost ~]# chmod&n…

    Linux干貨 2016-08-02
  • Linux系統時間簡單修改方法

          Linux時鐘分為系統時鐘(System Clock)和硬件(Real Time Clock,簡稱RTC)時鐘。系統時鐘是指當前Linux Kernel中的時鐘,而硬件時鐘則是主板上由電池供電的時鐘,這個硬件時鐘可以在BIOS中進行設置。Linux中的所有命令(包括函數)都是采用的系統時鐘設置。Linux操作系統運行…

    Linux干貨 2015-06-12
  • 第五周作業

    1、顯示/boot/grub/grub.conf中以至少一個空白字符開頭的行; grep“^[[:space:]]\+” /boot/grub/grub.conf grep  -E “^[[:space:]]+” /boot/grub/grub.conf 2、顯示/etc…

    Linux干貨 2017-02-20
  • TCP連接的狀態轉移

    TCP是一個面向連接的傳輸層協議,因此不論哪一方需要傳輸數據,都需要在雙方之間建立一條傳輸連接。 用TCP的三次握手與四次揮手來解釋TCP的各個狀態之間的會比較清晰。 一、TCP的三次握手: a)         單方主動發起連接: 1、  服務器端應用層的應用程序創建…

    2017-03-19
欧美性久久久久