1、每12小時(shí)備份并壓縮/etc/目錄至/backup目錄中送矩,保存文件名稱格式為,"etc-年-月-日-時(shí)-分.tar.gz"
crontab -e
? 0 */12 * * * tar -zcf /backup/etc-`date +\%F-\%H-\%M`.tar.gz
2、rpm包管理功能總結(jié)以及實(shí)例應(yīng)用演示拌滋。
概述:
? ? 系統(tǒng)級(jí)開發(fā):(直接調(diào)用硬件資源)
? ? ? ? C/C++:httpd赞辩,vsftpd雌芽,nginx
? ? ? ? go
? ? 應(yīng)用級(jí)開發(fā):
? ? ? ? ? ? java/python/perl/ruby/php:
? ? ? ? ? ? ? ? ? ? java:hadoop,hbase辨嗽,(運(yùn)行java程序依賴于jvm虛擬機(jī))
? ? ? ? ? ? ? ? ? ? python:OpenStack世落,(pvm)
? ? ? ? ? ? ? ? ? ? perl:(perl解釋器)
? ? ? ? ? ? ? ? ? ? ruby:(ruby解釋器)
? ? ? ? ? ? ? ? ? ? php:(php解釋器)
? ? ? ? C/C++程序格式:
? ? ? ? ? ? 源代碼:文本格式的程序代碼
? ? ? ? ? ? ? ? ? ? 編譯開發(fā)環(huán)境:編譯器、頭文件糟需、開發(fā)庫
? ? ? ? ? ? 二進(jìn)制格式:文本格式的程序代碼 --> 編譯器 --> 二進(jìn)制格式(二進(jìn)制程序屉佳、庫文件来破、配置文件、幫助文件)
? ? java/python程序格式:
? ? ? ? 源代碼:編譯成能夠在其虛擬機(jī)(jvm.pvm)運(yùn)行的格式
? ? ? ? ? ? ? ? 開發(fā)環(huán)境:編譯器忘古、開發(fā)庫
? ? ? ? 二進(jìn)制:
? ? 項(xiàng)目建構(gòu)工具:
? ? ? ? c/c++:make
? ? java:maven
程序包管理器:
? ? ? ? 源代碼 --> 目標(biāo)二進(jìn)制格式 --> 組織成為一個(gè)或有限的幾個(gè)“包”文件(二進(jìn)制程序徘禁、庫文件)
? ? ? ? ? ? 安裝、升級(jí)髓堪、卸載送朱、查詢、校驗(yàn)
程序包管理器:
? ? Debian:dpt干旁,dpkg驶沼,“.deb”
? ? Redhat:Redhat package manager(紅包管理工具),rpm争群,“.rpm”回怜;rpm is package manager
? ? S.U.S.E:rpm,“.rpm”
? ? Gentoo:ports
? ? ArchLinux:
源代碼:name-VERSION.tar.gz
VERSION:major,minor.release
rpm包命名格式:
? ? ? ? name-VERSION-release.arch.rpm
? ? ? ? VERSION:major.miinor.release
? ? ? ? release.arch:rpm包的發(fā)行號(hào)
? ? ? ? ? ? ? ? release.os:2.el7.i386.rpm
? ? ? ? ? ? ? ? archetecture:i386换薄,x64(amd64)玉雾,ppc,noarch
? ? ? ? ? ? redis-3.0.2.targz --> redis-3.0.2-1.centos7.x64.rpm
拆包:主包和支包
? ? ? ? 主包:name-VERSION-release.arch.rpm
? ? ? ? 支包:name-function-VERSION-release.arch.rpm
? ? ? ? ? ? ? ? function:devel轻要,utils复旬,libs
依賴關(guān)系:
? ? ? ? x,y冲泥,z
? ? ? ? ? ? ? ? x --> y驹碍,z
? ? ? ? ? ? ? ? y --> A,B凡恍,C
? ? ? ? ? ? ? ? C --> y
前端工具:自動(dòng)解決依賴關(guān)系
? ? ? ? yum:Redhat系列系統(tǒng)上rpm包管理器的前端工具
? ? ? ? apt-get:debian包管理器的前端工具
? ? ? ? zypper:suse的rpm管理器前端工具
? ? ? ? dnf:Fedora 22+系統(tǒng)上rpm包管理器的前端工具
程序包管理器:
? ? ? ? 功能:將編譯好的應(yīng)用程序的各組成文件打包成一個(gè)或幾個(gè)程序包文件志秃,從而更方便的實(shí)現(xiàn)程序包的安裝、升級(jí)嚼酝、卸載和查詢等管理操作
1浮还、程序包的組成清單(每個(gè)程序包都單獨(dú)實(shí)現(xiàn))
? ? ? ? 文件清單
? ? ? ? 安裝或卸載時(shí)運(yùn)行的腳本
2、數(shù)據(jù)庫(公共)
? ? ? ? 程序包的名稱和版本
? ? ? ? 依賴關(guān)系
? ? ? ? 功能說明
? ? ? ? 安裝生成的各文件的文件路徑及校驗(yàn)碼信息
? ? ? ? 等等等
? ? ? ? rpm的數(shù)據(jù)庫的存放路徑:/var/lib/rpm/目錄下
獲取程序包(rpm)的途徑:
? ? (1)系統(tǒng)發(fā)行版的光盤或官方的文件服務(wù)器(或鏡像站點(diǎn))
? ? ? ? ? ? http://mirrors.aliyun.com
? ? ? ? ? ? http://mirrors.sohu.com
? ? ? ? ? ? http://mirrors.163.com
? ? (2)項(xiàng)目的官方站點(diǎn)
? ? (3)第三方組織:
? ? ? ? ? ? ? ? (a)EPEL
? ? ? ? ? ? ? ? (b)搜索引擎
? ? ? ? ? ? ? ? ? ? ? ? ? ? http://pkgs.org
? ? ? ? ? ? ? ? ? ? ? ? ? ? http://rpmfind.net
? ? ? ? ? ? ? ? ? ? ? ? ? ? http://rpm.pbone.net
? ? (4)自己動(dòng)手革半,豐衣足食
? ??
? ? ? ? 建議:檢查包合法性
? ? ? ? ? ? ? ? ? ? 來源合法性
? ? ? ? ? ? ? ? ? ? 程序包完整性
CentOS系統(tǒng)上rpm命令管理程序包:
? ? 使用rpm命令管理程序包碑定,主要包括安裝、升級(jí)又官、卸載延刘、查詢和校驗(yàn)、數(shù)據(jù)庫維護(hù)這幾個(gè)功能
? ? rpm命令:rpm [OPTIONS] [PACKAGE_FILE]
? ? ? ? ? ? 安裝:-i六敬,--install
? ? ? ? ? ? 升級(jí):-U碘赖,--update,-F,--freshen
? ? ? ? ? ? 卸載:-e普泡,--erase
? ? ? ? ? ? 查詢:-q播掷,--query
? ? ? ? ? ? 校驗(yàn):-V,--verify
? ? ? ? ? ? 數(shù)據(jù)庫維護(hù):--builddb撼班,--initdb
安裝:
? ? ? ? rpm { -i | --install } [install-options] PACKAGE_FILE ...
? ? ? ? ? ? ? ? 常用的安裝命令:rpm -ivh PACKAGE_FILE ...
? ? ? ? ? ? ? ? GENERAL OPTIONS(通用選項(xiàng))
? ? ? ? ? ? ? ? ????-v:verbose歧匈,詳細(xì)信息
? ? ? ? ? ? ? ????? -vv:更詳細(xì)的輸出
? ? ? ? 【install options】(安裝選項(xiàng))
? ? ? ? ? ? ? ? -h:hash marks輸出進(jìn)度條,每個(gè)#表示2%的進(jìn)度
? ? ? ? ? ? ? ? --test:測(cè)試安裝砰嘁,檢查并報(bào)告依賴關(guān)系及沖突消息
? ? ? ? ? ? ? ? --nodeps:忽略依賴關(guān)系件炉,不建議使用
? ? ? ? ? ? ? ? --replacepkgs:重新安裝
? ? ? ? ? ? ? ? --nosignature:不檢查包名信息,不檢查來源合法性
? ? ? ? ? ? ? ? --nodigest:不檢查包完整性信息
? ? ? ? ? ? ? ? --noscripts:不運(yùn)行所有安裝腳本
? ? ? ? ? ? ? ? 注意:rpm可以自帶腳本矮湘,這些腳本可以分為四類
? ? ? ? ? ? ? ? ? ? ? ? 四類:--noscripts
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? preinstall:安裝過程開始之前運(yùn)行的腳本斟冕,--nopre:不運(yùn)行
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? postinstall:安裝過程完成之后運(yùn)行的腳本,--nopost:不運(yùn)行
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? preuninstall:卸載過程開始執(zhí)行之前運(yùn)行的腳本缅阳,--noperun:不運(yùn)行
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? postuninstall:卸載過程完成之后運(yùn)行的腳本磕蛇,--nopostun:不運(yùn)行
升級(jí):
? ? ? ? rpm { -U | --upgrade }? [install-options] PACKAGE_FILE ...
? ? ? ? rpm { -F | fershen } [install-options] PACKAGE_FILE ...
? ? ? ? ? ? -U:升級(jí)或安裝
? ? ? ? ? ? -F:升級(jí)
? ? ? ? ?常用的升級(jí)命令:
? ? ? ? ? ? ? ? rpm -Uvh PACKAGE_FILE...
?????????????????rpm -Fvh PACKAGE_FILE ...
? ? ? ? 升級(jí)選項(xiàng):
? ? ? ? ? ? ? ? --oldpackage:降級(jí)
? ? ? ? ? ? ? ? --force:強(qiáng)制升級(jí)
? ? ? ? 注意:
? ? ? ? ? ? ? ? (1)不要對(duì)內(nèi)核做升級(jí)操作;Linux支持多內(nèi)核版本并存十办,因此秀撇,應(yīng)該直接安裝新版本內(nèi)核。
? ? ? ? ? ? ? ? (2)如果某原版本程序包的配置文件安裝后被修改過橘洞,那么升級(jí)時(shí)捌袜,rpm程序包管理器會(huì)認(rèn)為這個(gè)修改是有用的,新版本提供的同一個(gè)配置文件不會(huì)覆蓋原有版本的配置文件炸枣,而是把新版本的配置文件重命名(FILENAME.rpm
new)后提供
卸載:
? ? rpm { -e | --erase } [--allmatches] [--justdb] [--nodeps] [--noscripts] [--notriggers] [--test] PACKAGE_NAME
? ? 選項(xiàng):
? ? ? ? --allmatches:卸載所有匹配指定名稱的程序包的各個(gè)版本
? ? ? ? --nodeps:忽略依賴關(guān)系
? ? ? ? --test:測(cè)試卸載,dry run模式
查詢:
? ? rpm { -q | query} [select-options] [query-options]
? ? [SELECT-OPTIONS]:
? ? ? ? ? ? PACKAGE_NAME:查詢指定的程序包是否已經(jīng)安裝及其版本
? ? ? ? ? ? -a弄唧,--all:查詢所有已經(jīng)安裝過的包
? ? ? ? ? ? -f FILE:查詢指定的文件由哪個(gè)程序包生成的
? ? ? ? ? ? -p PCKAGE_FILE:用于實(shí)現(xiàn)對(duì)未安裝的程序包執(zhí)行查詢操作
? ? ? ? ? ? --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個(gè)程序包提供
? ? ? ? ? ? --whatrequires CAPABILITY:查詢指定的CAPAILITY被哪個(gè)包所依賴
? ? QUERY-OPTIONS:
? ? ? ? ? ? --changelog:查詢r(jià)pm包的changelog
? ? ? ? ? ? -l:程序安裝生成的所有文件列表
? ? ? ? ? ? -i:程序包相關(guān)的信息适肠,版本號(hào)映企,大小计呈,所屬的包組等
? ? ? ? ? ? -c:查詢指定的程序包提供的配置文件
? ? ? ? ? ? -d:查詢指定的程序包的提供的文檔
? ? ? ? ? ? --provides:列出指定的程序包提供的所有的CAPABILIT
? ? ? ? ? ? -R:查閱指定的程序包的依賴關(guān)系
? ? ? ? ? ? --scripts:查看程序包自帶的腳本片段
校驗(yàn):
? ? rpm程序包的來源合法性驗(yàn)證和完整性驗(yàn)證的實(shí)現(xiàn)過程
獲取并導(dǎo)入信任的包制作的密鑰:
? ? 對(duì)于CentSO發(fā)行版來說渴语,可使用:rpm -import /etc/pki/rpm-gpg/RPM-GPG-KEY-Centos-x
驗(yàn)證方式:
? ? ? ? (1)安裝此組織簽名的程序時(shí)锭碳,會(huì)自動(dòng)執(zhí)行驗(yàn)證
? ? ? ? (2)手動(dòng)驗(yàn)證:rpm -K PACKAGE_FILE
數(shù)據(jù)庫維護(hù)(數(shù)據(jù)庫重建)
? ? ? ? rpm管理器數(shù)據(jù)庫路徑:/var/lib/rpm/
? ? ? ? ? ? 查詢操作:通過此處的數(shù)據(jù)庫進(jìn)行
獲取幫助:
? ? ? ? CentOS 7:man rpmdb
? ? ? ? CentOS 6:man rpm
? ? ? ? rpm { --initdb | --rebuilddb }
? ? ? ? ? ? ? ? --initdb:初始化數(shù)據(jù)庫灶挟,當(dāng)前無任何數(shù)據(jù)庫時(shí)可初始化創(chuàng)建一個(gè)新的熊尉,當(dāng)前有時(shí)不執(zhí)行任何操作
? ? ? ? ? ? ? ? --rebuilddb:重新構(gòu)建季稳,通過讀取當(dāng)前系統(tǒng)上的所有已經(jīng)安裝過的程序包進(jìn)行重新創(chuàng)建
3馋嗜、yum的配置和使用總結(jié)以及yum私有倉庫的創(chuàng)建麸俘。
yum是一個(gè)shell前段軟件包管理器辩稽,基于rpm包管理,能夠從指定的服務(wù)器自動(dòng)下載rpm包并且安裝从媚,可以自動(dòng)處理依賴性關(guān)系逞泄,并且一次安裝所有依賴的軟件包,無需繁瑣的一次次下載、安裝喷众。
yum基本用法
1各谚、安裝
? ? ? ? yum install PACKAGE1安裝指定的PACKAGE1
? ? ? ? yum groupinstall GROUP1安裝指定的程序包組GROUP1
2、更新和升級(jí)
? ? ? ? yum update? ?#全部更新
? ? ? ? yum update PACKAGE1? #更新指定程序包PACKAGE1
? ? ? ? yum check-update #檢查可更新的程序
? ? ? ? yum upgreade PACKAGE1 #升級(jí)指定程序包PACKAGE1
? ? ? ? yum groupupdate GROUP1 #升級(jí)程序包組GROUP1
3到千、查找和顯示
? ? ? ? yum info PACKAGE1 #顯示安裝包信息PACKAGE1
? ? ? ? yum list #列出所有已經(jīng)安裝和可以安裝的程序包
? ? ? ? yum list PACKAGE1 #顯示指定程序包安裝情況PACKAGE1
? ? ? ? yum groupinfo GROUP1? #顯示程序包組GROUP1信息yum search string 根據(jù)關(guān)鍵字 string查找安裝包
4昌渤、刪除程序
? ? ? ? yum remove PACKAGE1? #刪除程序包PACKAGE1
? ? ? ? yum groupremove? GROUP1? #刪除程序包組GROUP1
? ? ? ? yum deplist PACKAGE1? #查詢程序PACKAGE1依賴情況
5、清除緩存
? ? ? ? yum clean PACKAGES #清除緩存目錄下的軟件包
? ? ? ? yum clean headers #清除緩存目錄下的headers
? ? ? ? yum clean oldheaders #清除緩存目錄下舊的headers
? ? ? ? yum clean all #清除緩存目錄下的所有軟件包及舊的headers
構(gòu)建緩存:yum makecache
搜索:yum search string1? #以關(guān)鍵字搜索程序及summary信息
yum的命令選項(xiàng):
? ? ? ? --nogpgcheck:禁止進(jìn)行 gpg check
? ? ? ? -y:自動(dòng)回答為“yes”
? ? ? ? -q:靜默模式
yum的repo配置文件中可用的變量:
? ? ? ? $releasever:當(dāng)前OS的發(fā)行版的主版本號(hào)憔四;centos 7.5 膀息, 7為主版本號(hào)
? ? ? ? $arch:平臺(tái)(架構(gòu))i386 i486 i 586 x64
? ? ? ? $basearch:基礎(chǔ)平臺(tái);全部識(shí)別為i386
? ? ? ? $YUM0-$YUM9
如何使用光盤當(dāng)作本地yum倉庫:
? ? (1)掛載光盤至某目錄,例如/media/cdrom
? ? ? ? ? ? ? ? # mount -r -t iso9660 /dev/cdrom /media/cdrom
? ? (2)創(chuàng)建配置文件
? ? ? ? ? ? [Centos7]
? ? ? ? ? ? name=
? ? ? ? ? ? baseurl
? ? ? ? ? ? gpgcheck=
? ? ? ? ? ? enabled=
4加矛、寫一個(gè)腳本實(shí)現(xiàn)列出以下菜單給用戶:
(1)disk:show?disk?info信息
(2)mem:?show?memory?info信息
(3)cpu:?show?cpu?info信息
(*)quit
5履婉、sed用法總結(jié)并結(jié)合實(shí)例演示
? ? sed命令:
? ? ? ? 模式空間、保持空間
? ? ? ? ?sed [OPTION]... `scrip` [input-file]...
? ? ? ? ? ? ? ? scrip(腳本):
? ? ? ? ? ? ? ? ? ? ? ? 地址定界斟览、編輯命令
? ? ? ? ? ? 常用選項(xiàng):
? ? ? ? ? ? ? ? ? ? -n:不輸出模式空間中的內(nèi)容至屏幕
? ? ? ? ? ? ? ? ? ? -e script:實(shí)現(xiàn)多點(diǎn)編輯(能同時(shí)指定多個(gè)編輯命令)
? ? ? ? ? ? ? ? ? ? -f /PATH/TO/SED_SCRIPT_FILE
? ? ? ? ? ? ? ? ? ? ? ? 每一行一個(gè)編輯命令
? ? ? ? ? ? ? ? ? ? -r:支持使用擴(kuò)展正則表達(dá)式
? ? ? ? ? ? ? ? ? ? -i [SUFFIX]:直接編輯原文件
? ? ? ? ? ? ? ? 地址定界:
? ? ? ? ? ? ? ? ? ? ? ? (1)空地址(不給地址):對(duì)全文進(jìn)行處理
? ? ? ? ? ? ? ? ? ? ? ? (2)單地址:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #:指定行
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? /PATTERN/:被此模式所匹配到的每一行
? ? ? ? ? ? ? ? ? ? ? ? (3)地址范圍
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #毁腿,#:多少行到多少
? ? ? ? ? ? ? ? ? ? ? ? (4)編輯命令
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? d:刪除
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? p:顯示模式空間中的內(nèi)容
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? a \text:在行后面追加文本“text”,支持使用\n實(shí)現(xiàn)多行追加
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? i \text:在行前面插入文本"text"苛茂,支持使用\n實(shí)現(xiàn)多行插入
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? c \text:把匹配到的行替換為此處指定的文本“text”
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? w /PATH/TO/SOMEFILE:保存模式空間匹配到的行至指定的文件中
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? r /PATH/FORM/SOMEIFLE::讀取指定文件的內(nèi)容至當(dāng)前文件被模式匹配到的行的下一行已烤,文件合并
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? =:為模式匹配到的行打印行號(hào)
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? !:條件取反
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 地址定界!編輯命令
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? s///:查找替換妓羊,其分隔符可自行指定胯究,常用的有s@@@,s###等
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 替換標(biāo)記:
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? g:全局替換
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? w /PATH/TO/SOMEFILE:將替換成功的結(jié)果保存至指定文件中
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? p:顯示替換成功的行
? ? ? ? ? ? ? ? ? ? 高級(jí)編輯命令:
? ? ? ? ? ? ? ? ? ? ? ? ? ? h:把模式空間中的內(nèi)容覆蓋至保持空間中
? ? ? ? ? ? ? ? ? ? ? ? ? ? H:把模式空間中的內(nèi)容追加至保持空間中
? ? ? ? ? ? ? ? ? ? ? ? ? ? g:把保持空間中的內(nèi)容覆蓋至模式空間中
? ? ? ? ? ? ? ? ? ? ? ? ? ? G:把保持空間中的內(nèi)容追加至模式空間中
? ? ? ? ? ? ? ? ? ? ? ? ? ? x:把模式空間的內(nèi)容與保持空間的內(nèi)容互換
? ? ? ? ? ? ? ? ? ? ? ? ? ? n:讀取匹配到的行的下一行至模式空間中(將會(huì)覆蓋模式空間的內(nèi)容)
? ? ? ? ? ? ? ? ? ? ? ? ? ? N:讀取匹配到的行的下一行至模式空間中(追加至模式空間中)
? ? ? ? ? ? ? ? ? ? ? ? ? ? d:刪除模式空間中的行
? ? ? ? ? ? ? ? ? ? ? ? ? ? D:刪除多行模式空間中的所有行
6躁绸、?用bash實(shí)現(xiàn)統(tǒng)計(jì)訪問日志文件中狀態(tài)碼大于等于400的IP數(shù)量并排序
? ? sed -n -r '/\<4[0-9][0-9]\>/p' /var/log/httpd/access_log | cut -d" " -f1 | sort | uniq -c