1. 程式人生 > >Linux程式包管理及sed命令簡述

Linux程式包管理及sed命令簡述

1、簡述rpm與yum命令的常見選項,並舉例

rpm即RedHat系列發行版的程式包管理工具,即為RPM package Manager。yum是RedHat系列RPM的前端管理工具,其主要是解決程式在安裝或解除安裝過程中RPM包的依賴關係,為其使用者更方便快捷的安裝程式。

rpm命令

格式:rpm [OPTIONS] PACKAGE.FILE

安裝:-i --install

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

解除安裝:-e --erase

查詢:-q --query

校驗:-V --verify

資料庫維護:--builddb,--initdb

rpm -i 安裝:

安裝rpm包-i選項可與-v(顯示其詳細資訊)、-h(輸出進度條)合併使用,例如:我們要裝個zsh的程式包,需要有zsh的rpm存在,然後進行安裝。

rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm 安裝其後面所跟的包名必須是全路徑,全包名。

[[email protected] ~]# ls
anaconda-ks.cfg  zsh-5.0.2-28.el7.x86_64.rpm
[[email protected] ~]# rpm -qa | grep zsh
[[email protected] ~]# rpm -ivh zsh-5.0.2-28.el7.x86_64.rpm 
warning: zsh-5.0.2-28.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Preparing...                          ################################# [100%]
Updating / installing...
   1:zsh-5.0.2-28.el7                 ################################# [100%]
[
[email protected]
~]# rpm -qa | grep zsh zsh-5.0.2-28.el7.x86_64 [[email protected] ~]#

我的主機上沒有zsh這個rpm包,通過rpm -qa 可查詢已安裝的rpm包是否有zsh這個rpm包,以上相信大家都看得懂。

rpm -v 通用選項 顯示安裝的詳細資訊;

rpm -vv 顯示安裝更詳細的過程輸出資訊;

rpm -h  [hash marks] 安裝輸出顯示進度條,每個#表示2%的進度;

其中,rpm -i 和-v,-h可合併使用,事實上,-vh可合併使用在-i,-e等選項中;

install options:rpm -i 安裝rpm包有安裝屬性選項,如以下屬性選項:

--test 測試安裝,檢查並報告其依賴關係和衝突訊息等,用法:rpm -i --test PACKAGE_NAME;

--nodeps 忽略依賴關係,不建議使用,用法:rpm -ivh --nodeps;

--replacepkgs 重新安裝,主要應用於配置檔案遭改動等,用法:rpm -i --replacepkgs;

另外:rpm包安裝文件裡自帶的有四類指令碼檔案:

preinstall 安裝過程開始之前執行的指令碼,表示為%pre;

postinstall 安裝過程完成之後執行的指令碼,表示為%post;

preuninstall 解除安裝前執行的指令碼,%preun;

postuninsatll 解除安裝後執行的指令碼,%postun;

選項屬性:rpm -i --noscripts,--nopre,--nopost,--nopreun,--nopostun;

--nosignature 不檢查包簽名信息,不檢查來源合法性,用法:rpm -i --nosignature;

--nodigest 不檢查包完整性,用法:rpm -i --nodigest;

rpm -U 升級(升級安裝,-F只有安裝了老版本需要升級新版本,使用-F選項)

用法:rpm -Uvh;rpm -Fvh

其也有屬性選項:--oldpackage 降級安裝;--force 強制升級安裝,因為有的升級安裝需要解決其依賴關係,故可使用--force來強制安裝升級。(這裡介紹的都是常有的選項屬性,並非全部,如需詳細瞭解可man或檢視相關文件,這裡沒有需要升級安裝的rpm,就不做演示了,嘻嘻。)

rpm -e 解除安裝

用法:rpm -e packagename 包名字,而非檔案路徑,或包全名即可。

[[email protected] ~]# rpm -qa | grep zsh
zsh-5.0.2-28.el7.x86_64
[[email protected] ~]# rpm -evh zsh
Preparing...                          ################################# [100%]
Cleaning up / removing...
   1:zsh-5.0.2-28.el7                 ################################# [100%]
[[email protected] ~]# rpm -qa | grep zsh
[[email protected] ~]# 

以上我已解除安裝了之前安裝過的zshRPM包,當然,當時安裝的時候沒有安裝,也沒有所依賴的rpm包,所有rpm -e 沒有什麼錯誤提示,如果你在安裝其他的rpm包需要先安裝依賴包,那麼解除安裝的時候也需要檢視提示資訊是否需要先解除安裝依賴包。(其實這裡可以使用yum管理工具解除安裝更省心,呵呵。)

rpm -e 也有選項屬性:比如:

--allmatches 解除安裝所有匹配指定名稱的程式包的各個版本;

--nodeps 忽略依賴關係解除安裝;

--test 測試解除安裝,不是真正的解除安裝,只是測試使用,如dry run(幹跑)模式。

rpm -q 查詢安裝相關資訊

用法:rpm -q select options | query options

select options:(選擇屬性)其後跟的引數為package_name,程式名。

-qa 查詢已安裝的所有程式包 (此操作刷屏嚴重,故不演示了,自行檢視其內容)

-qf FILE 其後可跟個檔名,查詢指定檔案是由哪個程式包安裝生成的

[[email protected] ~]# rpm -qf /bin/ls
coreutils-8.22-18.el7.x86_64
[[email protected] ~]# rpm -qf /bin/cd
bash-4.2.46-28.el7.x86_64
[[email protected] ~]# rpm -qf /bin/cp
coreutils-8.22-18.el7.x86_64
[[email protected] ~]# rpm -qf /bin/pwd
coreutils-8.22-18.el7.x86_64
[[email protected] ~]# 

以上是檢視ls,cd,cp,pwd這些命令,Linux下這些命令也是檔案,是由哪個程式包安裝生成的。

-qp 用於實現對未安裝的程式包執行查詢操作,其後有--whatprovides CAPABILITY,未安裝的程式包有哪些特性;

[[email protected] ~]# rpm -qa | grep zsh
[[email protected] ~]# rpm -qp zsh-5.0.2-28.el7.x86_64.rpm 
warning: zsh-5.0.2-28.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
zsh-5.0.2-28.el7.x86_64
[[email protected] ~]# rpm -qp zsh-5.0.2-28.el7.x86_64.rpm --whatprovides
rpm: one type of query/verify may be performed at a time
[[email protected] ~]# 

--whatprovides CAPABILITY 查詢指定的CAPABILITY由哪個程式包提供;

--whatprovides CAPABILITY 查詢指定的CAPABILITY被哪個程式包所依賴;

query options(查詢選項)其後跟的引數是程式包的包名

--changelog 查詢rpm包的changelog

-ql 程式安裝生成的所有檔案列表;

-qi 程式包的相關資訊,版本號,大小,所屬的包組等;

-qc 查詢指定的程式提供的配置檔案

-qd 查詢指定的程式提供的幫助檔案

[[email protected] ~]# rpm -ql zsh
/bin/zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc
/usr/lib64/zsh
/usr/lib64/zsh/5.0.2
[[email protected] ~]# rpm -qi zsh
Name        : zsh
Version     : 5.0.2
Release     : 28.el7
Architecture: x86_64
Install Date: Fri 06 Jul 2018 06:48:13 PM CST
Group       : System Environment/Shells
Size        : 5855982
License     : MIT
Signature   : RSA/SHA256, Fri 11 Aug 2017 04:28:17 AM CST, Key ID 24c6a8a7f4a80eb5
Source RPM  : zsh-5.0.2-28.el7.src.rpm
Build Date  : Wed 02 Aug 2017 06:52:37 PM CST
Build Host  : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager    : CentOS BuildSystem <http://bugs.centos.org>
Vendor      : CentOS
URL         : http://zsh.sourceforge.net/
Summary     : Powerful interactive shell
Description :
The zsh shell is a command interpreter usable as an interactive login
shell and as a shell script command processor.  Zsh resembles the ksh
shell (the Korn shell), but includes many enhancements.  Zsh supports
command line editing, built-in spelling correction, programmable
command completion, shell functions (with autoloading), a history
mechanism, and more.
[[email protected] ~]# 
[[email protected] ~]# rpm -qc zsh
/etc/skel/.zshrc
/etc/zlogin
/etc/zlogout
/etc/zprofile
/etc/zshenv
/etc/zshrc
[[email protected] ~]# rpm -qd zsh
/usr/share/doc/zsh-5.0.2/BUGS
/usr/share/doc/zsh-5.0.2/CONTRIBUTORS
/usr/share/doc/zsh-5.0.2/FAQ
/usr/share/doc/zsh-5.0.2/FEATURES
/usr/share/doc/zsh-5.0.2/LICENCE
/usr/share/doc/zsh-5.0.2/MACHINES
/usr/share/doc/zsh-5.0.2/NEWS
/usr/share/doc/zsh-5.0.2/README
/usr/share/doc/zsh-5.0.2/completion-style-guide
/usr/share/doc/zsh-5.0.2/zsh-development-guide
/usr/share/doc/zsh-5.0.2/zshprompt.pl

--provides 查詢指定的程式包提供的所有的CAPABILITY;

-R 查詢指定的程式包的依賴關係;

--scripts 查詢程式包自帶的指令碼資訊;

[[email protected] ~]# rpm -q --provides zsh
config(zsh) = 5.0.2-28.el7
zsh = 5.0.2-28.el7
zsh(x86-64) = 5.0.2-28.el7
[[email protected] ~]# rpm -qR zsh
/bin/sh
/bin/sh
/bin/sh
/bin/sh
/bin/zsh
/sbin/install-info
/sbin/install-info
config(zsh) = 5.0.2-28.el7
[[email protected] ~]# rpm -q --scripts zsh
postinstall scriptlet (using /bin/sh):
if [ ! -f /etc/shells ] ; then
    echo "/bin/zsh" > /etc/shells
else
    grep -q "^/bin/zsh$" /etc/shells || echo "/bin/zsh" >> /etc/shells
fi

if [ -f /usr/share/info/zsh.info.gz ]; then
# This is needed so that --excludedocs works.
/sbin/install-info /usr/share/info/zsh.info.gz /usr/share/info/dir \
  --entry="* zsh: (zsh).			An enhanced bourne shell."
fi

:
preuninstall scriptlet (using /bin/sh):
if [ "$1" = 0 ] ; then
    if [ -f /usr/share/info/zsh.info.gz ]; then
    # This is needed so that --excludedocs works.
    /sbin/install-info --delete /usr/share/info/zsh.info.gz /usr/share/info/dir \
      --entry="* zsh: (zsh).			An enhanced bourne shell."
    fi
fi
:
postuninstall scriptlet (using /bin/sh):
if [ "$1" = 0 ] ; then
    if [ -f /etc/shells ] ; then
        TmpFile=`/bin/mktemp /tmp/.zshrpmXXXXXX`
        grep -v '^/bin/zsh$' /etc/shells > $TmpFile
        cp -f $TmpFile /etc/shells
        rm -f $TmpFile
    fi
fi
[[email protected] ~]# 

基本用法:(PACKAGE包名,FILE檔案路徑名,PACKAGE_FILE程式包全檔名)

rpm -qi PACKAGE,-qf FILE,-qc PACKAGE,-ql PACKAGE,-qd PACKAGE;

rpm -qpi PACKAGE_FILE,-qpl,-qpc等。

rpm -V 校驗:

rpm -V [select options | verify options]

verify options:包來源合法性驗證和完整性驗證

來源合法性驗證通過數字簽名,完整性驗證通過獲取並匯入信任的包製作者的金鑰;

對於CentOS發行版來說:

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

驗證:

1. 安裝此組織簽名的程式時,會自動執行驗證;

2. 手動驗證:rpm -K PACKAGE_FILE

[[email protected] ~]# cd /media/cdrom/
[[email protected] cdrom]# ls
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL
[[email protected] cdrom]# 

我把系統光碟掛載到/media/cdrom下,在系統盤裡就有RPM-GPG-KEY-*的兩個檔案為數字簽名檔案。

[[email protected] ~]# rpm -K zsh
error: zsh: open failed: No such file or directory
[[email protected] ~]# rpm -K zsh-5.0.2-28.el7.x86_64.rpm 
zsh-5.0.2-28.el7.x86_64.rpm: RSA sha1 ((MD5) PGP) md5 NOT OK (MISSING KEYS: (MD5) PGP#f4a80eb5) 
[[email protected] ~]# rpm -import /etc/p
pam.d/          passwd-         pki/            pm/             popt.d/         ppp/            printcap        profile.d/      python/
passwd          pkcs11/         plymouth/       polkit-1/       postfix/        prelink.conf.d/ profile         protocols       
[[email protected] ~]# rpm -import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-
RPM-GPG-KEY-CentOS-7          RPM-GPG-KEY-CentOS-Debug-7    RPM-GPG-KEY-CentOS-Testing-7  
[[email protected] ~]# rpm -import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[[email protected] ~]# rpm -K zsh-5.0.2-28.el7.x86_64.rpm 
zsh-5.0.2-28.el7.x86_64.rpm: rsa sha1 (md5) pgp md5 OK
[[email protected] ~]# 

我的系統是CentOS 7,-import匯入7的數字簽名檔案,rpm -K zsh 即顯示此包的來源合法性,顯示OK。

資料庫重建:

rpm資料庫的位置路徑為:/var/lib/rpm/,查詢操作,通過此處的資料庫進行;

rpm --initdb | --rebuilddb

--initdb 初始化資料庫,當前無任何資料庫可初始化建立一個新的,當前有時不執行任何操作;

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

RPMDB(8)                                                         System Manager's Manual                                                         RPMDB(8)

NAME
       rpmdb - RPM Database Tool

SYNOPSIS
       rpm {--initdb|--rebuilddb}

DESCRIPTION
       The general form of an rpm rebuild database command is

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

       Use --initdb to create a new database if one doesn't already exist (existing database is not overwritten), use --rebuilddb to rebuild the database
       indices from the installed package headers.

這裡通過man命令檢視rpmdb工具的使用方法,請大家可檢視實驗。

yum命令:

yum命令是RPM包的前端管理工具,可自行解決其程式包安裝升級解除安裝等操作中程式包的依賴關係,故目前比較習慣於用yum執行rpm包的管理操作,但是,使用yum命令的前提是要有rpm程式包,或者是說要有rpm這個命令生成或二進位制檔案,否則將無法使用yum命令。

語法格式:yum [options] [command] [package ...] yum命令可一次性操作多個rpm包的管理

這裡先說yum的command選項有很多種,如下:(這裡只說些常用的命令選項)

install package1 [package2] [...] 安裝程式包,package為程式包名即可;

update [package1] [package2] [...] 程式包升級,更新,其後可跟程式包名,也可不跟程式包名,如果不加程式包名,即有更新升級的程式包即升級更新,沒有的話就不升級更新;這個對比的是yum倉庫源裡的程式包版本;

remove | erase package1 [package2] [...] 解除安裝程式包;

list 顯示yum倉庫裡的程式包檔案列表;

info 檢視指定程式包簡要資訊

provides | whatprovides feature1 [feature2] [...] 檢視指定的特性或者某個檔案由哪個程式包提供

makecache 構建快取;

gruops 包組管理;有些程式包可打包成一個包組名來進行統一管理;

clean [packages|metadata|expire-cache|rpmdb|plugins|all] 清理本地快取;

search string1 [string2] [...] 搜尋指定字串的相關程式包資訊;

localinstall rpmfile1 [rpmfile2] [...] 安裝本地程式包;

localupdate rpmfile1 [rpmfile2] [...] 升級更新本地程式包;

reinstall package1 [package2] [...] 重新安裝程式包;

downgrade package1 [package2] [...] 降級安裝程式包;

deplist package1 [package2] [...] 顯示指定程式包的依賴關係;

repolist [all|enable|disable] 顯示倉庫列表;

repoinfo [all|enable|disable] 顯示倉庫的詳細資訊;

version 顯示yum的版本相關資訊;

history 檢視yum事務歷史;

check-update 檢查可用升級的程式包;

yum包組管理的相關管理命令:

yum groupinstall 包組名

gruopupdate,gruoplist,groupremove,groupinfo等。

常用命令選項即以上這幾個,大家可實驗檢視其使用方法。

options:yum的命令選項(常用選項)

-y  --assumeyes 避免互動式安裝,互動回答時,自動回答為“yes”;

-c  --config=[config file] 指明安裝時的配置檔案安裝,可為HTTP,FTP,本地檔案路徑;

-q  --quiet 靜默安裝模式 不輸出安裝資訊;

--nogpgcheck 安裝時禁止進行gpg檢查;

--disablerepo=repoidglob 臨時禁用此處指定的repo倉庫

--enablerepo=repoidglob 臨時啟用此處指定的repo倉庫

--noplugins 禁用所有的外掛安裝

[[email protected] ~]# rpm -qa | grep zsh
[[email protected] ~]# 
[[email protected] ~]# yum -y install zsh
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.bit.edu.cn
 * extras: mirrors.aliyun.com
 * updates: mirror.bit.edu.cn
Resolving Dependencies
--> Running transaction check
---> Package zsh.x86_64 0:5.0.2-28.el7 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================
 Package                           Arch                                 Version                                     Repository                          Size
=============================================================================================================================================================
Installing:
 zsh                               x86_64                               5.0.2-28.el7                                base                               2.4 M

Transaction Summary
=============================================================================================================================================================
Install  1 Package

Total download size: 2.4 M
Installed size: 5.6 M
Downloading packages:
zsh-5.0.2-28.el7.x86_64.rpm                                                                                                           | 2.4 MB  00:00:08     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  Installing : zsh-5.0.2-28.el7.x86_64                                                                                                                   1/1 
  Verifying  : zsh-5.0.2-28.el7.x86_64                                                                                                                   1/1 

Installed:
  zsh.x86_64 0:5.0.2-28.el7                                                                                                                                  

Complete!
[[email protected] ~]# 

這裡還是以zsh為例,rpm -qa 查詢系統中沒有安裝zsh程式包,yum -y install zsh可安裝。

[[email protected] ~]# 
[[email protected] ~]# yum repolist
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: mirror.bit.edu.cn
 * extras: mirrors.aliyun.com
 * updates: mirror.bit.edu.cn
repo id                                                                   repo name                                                                    status
base/7/x86_64                                                             CentOS-7 - Base                                                              9,911
extras/7/x86_64                                                           CentOS-7 - Extras                                                              314
updates/7/x86_64                                                          CentOS-7 - Updates                                                             946
repolist: 11,171
[[email protected] ~]# ls /etc/yum.repos.d/
CentOS-Base.repo  CentOS-CR.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Sources.repo  CentOS-Vault.repo
[[email protected] ~]# 

這裡檢視repo倉庫有哪些,已經yum倉庫目錄下的倉庫配置檔案。

[[email protected] ~]# yum clean
Loaded plugins: fastestmirror
Error: clean requires an option: headers, packages, metadata, dbcache, plugins, expire-cache, rpmdb, all
[[email protected] ~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: base extras updates
Cleaning up everything
Maybe you want: rm -rf /var/cache/yum, to also free up space taken by orphaned data from disabled or removed repos
Cleaning up list of fastest mirrors
[[email protected] ~]# 

清理本地快取,用法及clean後所跟的引數,大家可自行實驗檢視其它命令選項。

2、自建yum倉庫,分別為網路源和本地源

yum命令實現是C/S架構的,也就說需要有伺服器端的映象檔案站點,或者rpm包的源地址為伺服器端,使用者在本地是yum的客戶端操作管理程式包,yum的伺服器端是yum的倉庫,也有配置檔案來定義倉庫的指向,而客戶端也可自行建立倉庫配置檔案來指向yum倉庫是為本地源還是網路源。

[[email protected] ~]# 
[[email protected] ~]# rpm -qc yum
/etc/logrotate.d/yum
/etc/yum.conf
/etc/yum/version-groups.conf
[[email protected] ~]# cat /etc/yum.conf 
[main]
cachedir=/var/cache/yum/$basearch/$releasever
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=5
bugtracker_url=http://bugs.centos.org/set_project.php?project_id=23&ref=http://bugs.centos.org/bug_report_page.php?category=yum
distroverpkg=centos-release


#  This is the default, if you make this bigger yum won't see if the metadata
# is newer on the remote and so you'll "gain" the bandwidth of not having to
# download the new metadata and "pay" for it by yum not having correct
# information.
#  It is esp. important, to have correct metadata, for distributions like
# Fedora which don't keep old packages around. If you don't like this checking
# interupting your command line usage, it's much better to have something
# manually check the metadata once an hour (yum-updatesd will do this).
# metadata_expire=90m

# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d
[[email protected] ~]# 

/etc/yum.conf此配置檔案為所有yum倉庫提供公共配置資訊,/etc/yum.repos.d/*.repo為倉庫的指向提供配置檔案。

[[email protected] ~]# ls /etc/yum.repos.d/
CentOS-Base.repo  CentOS-CR.repo  CentOS-Debuginfo.repo  CentOS-fasttrack.repo  CentOS-Media.repo  CentOS-Sources.repo  CentOS-Vault.repo
[[email protected] ~]# cat /etc/yum.repos.d/CentOS-Base.repo 
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the 
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates 

這裡我給大家檢視下了系統當中自動生成的base倉庫配置檔案,簡單介紹下里面引數的意義;

其倉庫指向配置檔案有多個,給大家找個base基礎的配置檔案/etc/yum.repos.d/CentOS-Base.repo裡面的引數資訊:

[base] repository ID 即顯示在repolist列表中標明是哪個倉庫

name 倉庫的名字 可自定義

baseurl 倉庫的映象檔案地址 可以是http、ftp、file等形式的URL路徑,例如:http://,ftp://,file://;

mirrorlist 即映象檔案列表,可是多個網路映象站點的列表,也可以是本地路徑列表檔案;

gpgcheck={0|1}  是否進行gpg檢查 (這裡的引數賦值為0表示不啟用此功能,為1表示啟動此功能,例如:gpgcheck=0表示不檢查)

gpgkey=URL 指向金鑰檔案的訪問路徑

enable={0|1} 表示是否啟用此倉庫

這裡面在baseurl或者mirrorlist後面的URL裡有變數資訊,可根據當前系統的變數引用到URL裡面進行匹配查詢倉庫源;

$releasever 當前OS的發行版的主版本號;$arch 架構平臺;$basearch 基礎架構平臺。

這裡給大家介紹下建立本地源和網路源的yum倉庫配置檔案;

1. 本地源,一般是指通過系統光碟製作倉庫,或者直接指向本地網路的FTP伺服器倉庫路徑;

首先需要掛載光碟檔案,可用mount命令檢視是否掛載檔案,再用mount -r -t iso9660 /dev/cdrom /media/cdrom掛載。

[[email protected] ~]# 
[[email protected] ~]# mount -r -t iso9660 /dev/cdrom /media/cdrom/
[[email protected] ~]# ls /media/cdrom/
CentOS_BuildTag  EFI  EULA  GPL  images  isolinux  LiveOS  Packages  repodata  RPM-GPG-KEY-CentOS-7  RPM-GPG-KEY-CentOS-Testing-7  TRANS.TBL
[[email protected] ~]# cd /media/cdrom/repodata/
[[email protected] repodata]# ls
115749f609bb070c1a0524edbe39312defa896eab1b8c8ff9844f078d1efdd95-primary.xml.gz
281832be789b989fe8c543f9de47992c0b1de080a4c7f7971a587cfa64d58f86-other.sqlite.bz2
283c19e8d3c6ff8541ddc19ea36d974e6afdc2770257a04622fc0aa5280b4322-filelists.xml.gz
38b60f66d52704cffb8696750b2b6552438c1ace283bc2cf22408b0ba0e4cbfa-c7-x86_64-comps.xml
6addbbcab39d561cf037917505807e1547d0d06937b539a01ae1d55a62d2a552-other.xml.gz
9346184be1deb727caf4b1ecf4a7949155da5da74af9b92c172687b290a773df-c7-x86_64-comps.xml.gz
ce678501a07f940dbe16d3e4fcb495050fd48ec429c5e8ea955e681594f90934-filelists.sqlite.bz2
f64ccdaf79da59bd21f7cf17f252ff62f2e56ea55bce5b4de16cf8ef1d13a7c8-primary.sqlite.bz2
repomd.xml
TRANS.TBL
[[email protected] repodata]# 

掛載之後的目錄repodata裡面顯示的就是CentOS系統提供的倉庫映象檔案,只是對於版本沒有更新,但大部分程式包都有。

[[email protected] ~]# cat /etc/yum.repos.d/mybase.repo 
[mybase]
name=my base repo
baseurl=file:///media/cdrom/repodata
gpgcheck=0
enable=1
[[email protected] ~]# 

這裡是我寫的一個簡單的本地源倉庫配置檔案,雖然簡單但是可以用,呵呵。baseurl指向的是掛載後的光碟倉庫路徑,如果是ftp也可以改為ftp路徑,切記路徑的最後指向要是repodate這個目錄。

2. 網路源yum倉庫即把baseurl改成網路地址即可,這裡我找到國內比較快的映象站點,aliyun,163,sohu都可以,也可指向多個映象站點,或者指向mirrorlist。
[[email protected] ~]# 
[[email protected] ~]# cat /etc/yum.repos.d/mybase.repo
[mybase]
name=my base repo
baseurl=https://mirrors.aliyun.com/centos/7.5.1804/os/x86_64/repodata/
gpgcheck=0
enable=1
[[email protected] ~]# 

當然這裡需要你檢視下自己的系統版本號,來找網上對應的版本倉庫映象檔案,你也可以用/$releasever/$basearch等變數引用來找對應的系統版本映象檔案。

3、簡述at和crontab命令,制定 每週三凌晨三、五點10分執行某個指令碼,輸出當前時間,時間格式為 2017-12-28 10:00:00

at和crontab都是計劃任務執行命令,未來的某個時間點執行一次某任務用at,而週期性在某個時間點執行任務用crontab。

at命令:

在未來的某一個時間點執行某一次或多次不同的任務;其at命令的作業有佇列之說,用單個字母表示,可指明需要執行的任務為其他的哪個佇列以表示使用者的不同區別任務型別,預設都是使用a佇列。

用法:at [OPTIONS] TIME

TIME時間表示法有精確表示和模糊表示兩種;

精確表示:HH:MM [YYYY-mm-dd] 例如:10:10 2018-07-11 表示。如設定時間是過去的某個時間,將再下一次時間執行。

模糊表示:noon,midnight,teatimeata,tomorrow等

從當前時間開始計算表示:at now+#[unit] 這裡的unit可為min,hours,days,years。例如now +1min表示從當前時間往後的1分鐘之後開始執行任務。

[[email protected] ~]# 
[[email protected] ~]# at now+2min
at> ls /etc/issue
at> q
at> <EOT>
job 1 at Wed Jul 11 17:17:00 2018
Can't open /var/run/atd.pid to signal atd. No atd running?
[[email protected] ~]# 
[[email protected] ~]# at now+2min
at> cat /etc/issue       
at> cat /etc/fstab
at> <EOT>
job 2 at Wed Jul 11 17:18:00 2018
Can't open /var/run/atd.pid to signal atd. No atd running?
[[email protected] ~]# at -l
1	Wed Jul 11 17:17:00 2018 a root
2	Wed Jul 11 17:18:00 2018 a root
[[email protected] ~]# date
Wed Jul 11 17:17:20 CST 2018
[[email protected] ~]# 

以上執行at命令,後跟now+2min,表示2分鐘後執行任務,那麼輸出的結果直接是互動式的介面,需要使用者手動新增需要執行任務的命令,可以是多條執行命令,ctrl+d儲存退出。可以執行一個檔案,其檔案內容是執行的命令,這裡就需要用選項了。

其執行的結果將已郵件的形式傳送給發起任務的使用者,可通過mail命令來檢視。

at命令選項:(at命令執行的任務是一次性的,非週期性任務,切記。)

at -l 檢視佇列作業,顯示的是未執行的任務情況,已執行過的任務不顯示,相當於atq命令;

-f /PATH/TO/SOMEFILE 從指定檔案中讀取作業,而不用互動式輸入;使用者可以把需要執行的任務命令寫在一個檔案當中,每行一個任務,at -f 檔名 可直接讀取其內的命令,而不用與使用者互動了。

-d #(作業號) 刪除指定的作業,相當於atrm命令;

-c #(作業號) 檢視指定作業的具體內容,其內包含的內容有環境變數的資訊,執行的命令等,大家可自行檢視下;

-q QUEUE 指明佇列,預設的佇列為a;

[[email protected] ~]# at -l
1	Wed Jul 11 17:17:00 2018 a root
2	Wed Jul 11 17:18:00 2018 a root
3	Wed Jul 11 17:44:00 2018 a root
[[email protected] ~]# at -q b
Garbled time
[[email protected] ~]# at -l
1	Wed Jul 11 17:17:00 2018 a root
2	Wed Jul 11 17:18:00 2018 a root
3	Wed Jul 11 17:44:00 2018 a root
[[email protected] ~]# at -q b now+2min
at> ls /
at> <EOT>
job 4 at Wed Jul 11 18:32:00 2018
Can't open /var/run/atd.pid to signal atd. No atd running?
[[email protected] ~]# 
[[email protected] ~]# 
[[email protected] ~]# at -l
1	Wed Jul 11 17:17:00 2018 a root
2	Wed Jul 11 17:18:00 2018 a root
3	Wed Jul 11 17:44:00 2018 a root
4	Wed Jul 11 18:32:00 2018 b root
[[email protected] ~]# at -d 2
[[email protected] ~]# 
[[email protected] ~]# at -l
1	Wed Jul 11 17:17:00 2018 a root
3	Wed Jul 11 17:44:00 2018 a root
4	Wed Jul 11 18:32:00 2018 b root
[[email protected] ~]# 

crond命令:

我們上面講到at命令是在未來的某一個時間點一次性的執行任務,而如果想實現週期性的執行任務,就是在每個時間點都執行一次任務的話,就要用到crond命令了。

crontab任務有專門的守護程序crond,預設系統是開啟的,CentOS 7 檢視服務開啟狀態命令為:systemctl status crond.service;CentOS 6的檢視服務狀態命令為:service crond status;當然CentOS 7 也照樣適用於此命令。

[[email protected] ~]# systemctl status crond
● crond.service - Command Scheduler
   Loaded: loaded (/usr/lib/systemd/system/crond.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-07-10 10:44:50 CST; 1 day 7h ago
 Main PID: 678 (crond)
   CGroup: /system.slice/crond.service
           └─678 /usr/sbin/crond -n

Jul 10 10:44:50 localhost.localdomain systemd[1]: Started Command Scheduler.
Jul 10 10:44:50 localhost.localdomain systemd[1]: Starting Command Scheduler...
Jul 10 10:44:50 localhost.localdomain crond[678]: (CRON) INFO (RANDOM_DELAY will be scaled with factor 8% if used.)
Jul 10 10:44:50 localhost.localdomain crond[678]: (CRON) INFO (running with inotify support)
[[email protected] ~]# 

注意:crond提交作業的方式不同於at,它需要使用專用的配置檔案來定義週期性任務,此檔案有固定的格式,不建議直接使用文字編輯器編輯檔案,而是使用crontab命令。

crond任務可以分為兩類:

1.系統crond任務,主要用於實現系統自身的維護;其方式是手動編輯配置檔案,/etc/crontab檔案;

2.使用者crond任務,主要用於使用者自定義實現週期性任務,其方式用命令crontab;使用者的crond任務也有配置檔案,是根據使用者名稱所建立的相應檔案,/var/spool/cron/USERNAME,比如:tom使用者建立的週期性任務,其配置檔案在/etc/spool/cron/tom,其此檔案是需要crontab完成後才生成的;

我們可以先看下這些檔案裡面的引數所代表的意義:

[[email protected] ~]# cat /etc/crontab 
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

[[email protected] ~]# 

這個檔案是系統的crond任務配置檔案,使用者的配置檔案只是在最後一行那裡少了user-name而已,其他的都一樣。

其他的引數相信大家都能看得懂:

1. 其實所有的引數就最後一行是直接定義週期性任務的:

* * * * *:5個*定義了週期性的時間;

user-name:定義執行任務的使用者身份;

command to be execute 所需要執行的任務命令;

2. 此處的環境變數不同於使用者登入後獲得的環境變數,因此,建議命令使用絕對路徑,或者自定義PATH變數;

3. 執行結果郵件傳送給MAILTO指定的使用者;

這裡主要重點講下時間表示法,因為是週期性任務定義時間的關鍵點:

5個*代表的意思就是“每...”;每分鐘,每小時,每天,每月,每週的星期幾,這個意思,下面舉例說明:

第一種: 3 * * * * 表示每小時執行一次,每小時的第3分鐘執行一次;

     3 4 * * 5 表示每週執行一次,每週五的4點3分執行一次;

     5 6 7 * * 表示每月執行一次,每月的7號6點5分執行一次;

     7 8 9 10 * 表示每年執行一次,每年的10月9號8點7分執行一次;

第二種: 9 8 * * 3,7 表示每週三,週日8點9分執行一次;

              0 8,20 * * 3,7 表示每週三,週日的8點和20點整執行一次;

第三種: 0 9-18 * * 1-5 表示工作時間 每週一到週五的9點到18點 每小時 執行一次;

第四種: */5 * * * * 表示每5分鐘執行一次任務

注意事項:

指定的時間點不能被步長整除時,其意義將不復存在;最小時間單位為“分鐘”,想完成“秒”級任務,得需要額外借助於其他機制;定義每分鐘任務,可利用指令碼實現在每分鐘之內,迴圈多次執行以達到效果。

crontab命令:

選項:-e 編輯任務

           -l 列出任務

           -r 移除所有任務,即刪除使用者的cron配置檔案

           如果需要刪除單個任務,crontab -e 編輯檔案之後進入刪除單行任務即可;

           -i 在使用-r移除所有任務時提示使用者確認,與使用者互動的選項;

           -u username  root使用者可以為指定的使用者定義其任務內容;

示例:每週三凌晨三、五點10分執行某個指令碼,輸出當前時間,時間格式為 2017-12-28 10:00:00

[[email protected] ~]# date +%F-%T
2018-07-11-20:03:44
[[email protected] ~]# ls
anaconda-ks.cfg  date.sh  zsh-5.0.2-28.el7.x86_64.rpm
[[email protected] ~]# cat date.sh 
#!/bin/bash
#
date +%F-%T
[[email protected] ~]# crontab -l
10 3,5 * * 3 ./date.sh

這裡如果不太習慣寫指令碼,可以先用命令看下效果,例如:date +%F%T,即顯示題目的時間格式,我只是在%F和%T之間加了一個-,看起來更連貫些,按照題目的要求,其指令碼命令為:date +%F%T即可。

這裡我已經寫好了一個指令碼,記得bash -x檢查下語法格式,chmod +x新增執行許可權,然後可以使用crontab -e編輯檔案,crontab -l檢視任務內容等;10(每小時的第10分鐘)3,5(分別表示每天的凌晨三點和五點)* *(沒有就不指名哪月的哪天)3(表示每週三),./date.sh即在這個兩個時間點執行的指令碼,輸出格式為date的輸出資訊。

4、簡述sed常用操作命令,並舉例。

sed工具是Linux系統中文字處理三劍客其中之一,還有另外兩個grep和awk。其中grep是文字過濾器,方便查詢過濾;sed是流編輯器,可以進行行編輯操作而展示相關輸出資訊;awk是文字格式化工具,報告生成器。每個工具都有自己的應用場景,對於需要編輯操作而展示操作後的內容的可用sed,但sed不對原檔案進行修改,如要修改需新增選項操作。

用法:sed [OPTIONS]...'script' [inputfile]

其中'script'包含為兩段含義:地址定界(從哪到哪),編輯命令(執行什麼樣的操作);

先說選項:options:(這裡也只說常用的選項)

-n 不輸出模式空間中的內容至螢幕(這裡的有模式空間和保持空間之說,模式空間我們可以認為是script匹配到的符合條件的內容存放空間,而保持空間我們可以認為是sed工具的一個快取空間,其實這麼說不精確,講太多怕大家暈,其實我也有點暈);

-e 實現多點編輯,多個編輯命令,預設只有一個script指令碼;

-f /PATH/TO/SED_SCRIPT_FILE 指定編輯命令指令碼檔案;指令碼檔案中每一行為一個編輯命令;

-r 支援使用擴充套件的正則表示式;地址定界裡面可以有正則表示式的pattern來匹配位置;

-i 直接編輯原檔案;建議不使用,如果確定使用,可先將原檔案備份一份之後,再sed -i編輯檢視;

再說script裡的地址定界:

1. 如果為空字元,則表示對全文進行處理,編輯檢視操作;

2. # (number)數字,表示單地址,指定行(這裡所說的操作物件都是文字檔案,故有行數之說);也可定義/pattern/被模式匹配到的每一行;

3. 地址範圍定義,#,#:1,3表示第1行到第3行的內容;#,+#;#,/pattern1/;/pat1/,/pat2/;$表示最後一行;

4. 步進地址,用~表示:“1~2”表示從第一行步進2行,就是1,3,5,7,9...行數,可表示為所有奇數行;“2~2”表示從第二行步進2行,就是2,4,6,8...行數,可表示所有偶數行。

最後說下script裡的地址定界後的編輯命令型別:

d 刪除操作,表示地址定界模式匹配到的行做刪除操作;整行刪除;

p 顯示模式空間中的行;一般與-n選項配合使用,但是要搞清楚邏輯是非關係,否則會很暈;

a \text 表示在行下方追加“text”內容,支援使用\n實現多行追加;

i \text 表示在行上方插入“text”內容,支援使用\n實現多行插入;

c \text 表示把匹配到的行替換為此處指定的文字“text”內容;

w /PATH/TO/SOMEFILE 儲存模式空間中匹配到的行至指定檔案中;

r /PATH/TO/SOMEFILE 讀取指定的檔案內容至當前檔案被模式匹配待的行的後面,實現檔案合併;

= 為模式空間匹配到的行列印行號;

! 條件取反;一般格式例如:地址定界!編輯命令 模式匹配到的行不執行什麼編輯操作;

s///,[email protected]@@,s###,查詢替換,也支援vim編輯器命令列模式下的s查詢替換功能,[email protected]@@g修飾符g表示全域性替換;

下面給大家舉例說明,以/etc/fstab檔案說明:

[[email protected] ~]# 
[[email protected] ~]# sed '1,6d' /etc/fstab 
# 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=d8b88bd6-6098-4398-aa8e-d3180f4d579b /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[[email protected] ~]# 

/etc/fstab檔案裡的'1,6'表示從第1行到第6行的內容執行d操作,刪除操作;輸出螢幕內容為未匹配到的行內容;

[[email protected] ~]# sed '/^UUID/d' /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Jun 26 13:23:51 2018
#
# 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
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[[email protected] ~]# sed '/^#/d' /etc/fstab

/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=d8b88bd6-6098-4398-aa8e-d3180f4d579b /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[[email protected] ~]# 

/parttern/模式匹配到的行執行d刪除操作;

[[email protected] ~]# 
[[email protected] ~]# sed '1~2!d' /etc/fstab

# /etc/fstab
#
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
/dev/mapper/centos-root /                       xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[[email protected] ~]# sed '1~2d' /etc/fstab
#
# Created by anaconda on Tue Jun 26 13:23:51 2018
# Accessible filesystems, by reference, are maintained under '/dev/disk'
#
UUID=d8b88bd6-6098-4398-aa8e-d3180f4d579b /boot                   xfs     defaults        0 0
[[email protected] ~]# 

顯示奇數行,偶數行;

[[email protected] ~]# sed '3a \new line \nanother new line' /etc/fstab

#
# /etc/fstab
new line 
another new line
# Created by anaconda on Tue Jun 26 13:23:51 2018
#
# 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=d8b88bd6-6098-4398-aa8e-d3180f4d579b /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[[email protected] ~]# sed '5i \new line \nanother new line' /etc/fstab

#
# /etc/fstab
# Created by anaconda on Tue Jun 26 13:23:51 2018
new line 
another new line
#
# 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=d8b88bd6-6098-4398-aa8e-d3180f4d579b /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[[email protected] ~]# 

第一個是在第三行後面追加內容,注意有\n換行符;第二個是在第五行前面插入新內容;

[[email protected] ~]# sed '=' /etc/issue
1
\S
2
Kernel \r on an \m
3

[[email protected] ~]# 

這個加行號加的很鬱悶,呵呵。

[[email protected] ~]# sed '[email protected]^#[[:space:]]*@@' /etc/fstab 


/etc/fstab
Created by anaconda on Tue Jun 26 13:23:51 2018

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=d8b88bd6-6098-4398-aa8e-d3180f4d579b /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[[email protected] ~]# sed -e '[email protected]^#[[:space:]]*@@' -e '/^UUID/d' /etc/fstab 


/etc/fstab
Created by anaconda on Tue Jun 26 13:23:51 2018

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
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[[email protected] ~]# 

查詢替換,[email protected]@@,-e多點編輯,執行多次操作;

查詢fstab檔案中#開頭的字元替換成空,刪除以UUID開頭的整行;

[[email protected] ~]# 
[[email protected] ~]# sed -n '1~2p' /etc/fstab

# /etc/fstab
#
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
/dev/mapper/centos-root /                       xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[[email protected] ~]# sed '1~2p' /etc/fstab


#
# /etc/fstab
# /etc/fstab
# Created by anaconda on Tue Jun 26 13:23:51 2018
#
#
# 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
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root /                       xfs     defaults        0 0
/dev/mapper/centos-root /                       xfs     defaults        0 0
UUID=d8b88bd6-6098-4398-aa8e-d3180f4d579b /boot                   xfs     defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
/dev/mapper/centos-swap swap                    swap    defaults        0 0
[[email protected] ~]# 

‘1~2p’表示匹配到的奇數行打印出來,而-n則表示模式空間中匹配到的內容不顯示,第二個命令沒有選項-n,則匹配到的行顯示了兩次;這就是sed的工作原理即是從指定的檔案中逐行讀取到自己的模式車間中進行匹配,不匹配的行也直接輸出到標準輸出,就是顯示到螢幕,而匹配到的行根據執行編輯命令輸出結果,p是列印故顯示兩次,如果這裡是d刪除的話,就直接刪除不顯示了。

[[email protected] ~]# sed -n '1~2d' /etc/fstab
[[email protected] ~]# sed '1~2d' /etc/fstab
#
# Created by anaconda on Tue Jun 26 13:23:51 2018
# Accessible filesystems, by reference, are maintained under '/dev/disk'
#
UUID=d8b88bd6-6098-4398-aa8e-d3180f4d579b /boot                   xfs     defaults        0 0
[[email protected] ~]# 
-n和編輯命令d一起使用就沒有了其意義,而第二個命令則可理解為顯示偶數行,因為模式匹配到的奇數行做刪除操作了,故不符合模式匹配的行輸出到螢幕,即顯示偶數行。

相關推薦

Linux程式管理sed命令簡述

1、簡述rpm與yum命令的常見選項,並舉例rpm即RedHat系列發行版的程式包管理工具,即為RPM package Manager。yum是RedHat系列RPM的前端管理工具,其主要是解決程式在安裝或解除安裝過程中RPM包的依賴關係,為其使用者更方便快捷的安裝程式。rp

Linux 程序管理sed基礎

type testing 5.1 ace manage awk pup see dev 1、 簡述rpm與yum命令的常見選項,並舉例 rpm簡稱包管理器,即RedHat系列發行版的程序包管理工具,由於它遵循GPL規則且功能強大方便,故而廣受歡迎; yum是rhe

week---3 Linux程式管理if語句

一、Linux程式包管理 RPM(軟體包管理器) YUM(軟體倉庫) 二、計算數字 例如 var1=10.46var1=10.46 var2=43.67 var3=33.2 var4=71 result=**(bc&lt;&lt;EOF∗

Linux學習命令匯總七——軟件管理(rpm 、yum repo、源碼管理相關命令

rpm yum yum repo配置 源碼包編譯安裝 createrepo 本章Blog相關Linux知識點程序:預編譯,編譯(源代碼——>cpu指令),匯編,連接 API:application programing interface 應用程序接口;兼容,意味開發庫接口兼容

Linux進程管理相關命令

class vmtools 內核 xfs over 時間 page end 退出 一、進程的定義 一個程序運行起來後就是進程了, 其存在生命周期. 1.1 進程是如何創建的. Linux系統的系統啟動過程中內核加載的第一個進程為init(CentOS 7為systemd

Linux程式管理 rpm/yum

Linux程式包管理rpmrpm命令是RPM軟體包的管理工具。rpm原本是Red Hat Linux發行版專門用來管理Linux各項套件的程式語法rpm(選項)(引數) rpm {-i|--install} [install-options] PACKAGE_FILE ... rpm {-U|

Linux軟體管理rpm命令總結

一、軟體包管理器 1、功能: (1)將軟體包打包成一個檔案,其中包括: ①二進位制程式 ②庫檔案 ③配置檔案 ④幫助檔案 (2)生成資料庫,追中所安裝的每一個檔案。 2、軟體包管理器的核

Linux三劍客——sed命令簡述

替換 alex 批量 圖片 ado nag 顯示 amp 第一個 Linux三劍客——sed13.1 sed介紹 sed——流編輯器(stream editor) sed功能與版本:處理文本文件,日誌,配置文件增加、刪除、修改、查詢sed --version 語法格式:s

Linux學習命令匯總十——linux網絡管理配置和網絡檢測工具

網絡配置 網絡管理 網絡檢測 ifconfig ip 本章Blog相關Linux知識點CSMA/CD(Carrier Sense Multiple Access with Collision Detection)基帶沖突檢測的載波監聽多路訪問技術(載波監聽多點接入/碰撞檢測),是一種爭用型

Linux程序管理命令

rpm yumrpm命令的常見選項 rpm命令是RPM軟件包的管理工具。rpm最初是Red Hat Linux發行版專用於管理Linux各項套件的開源程序。它可以用於給程序進行安裝,升級,卸載,查詢和校驗等。 語法格式:rpm [OPTIONS] [PACKAGE_FILE] 1. 安裝選項 命令格

Linux下KVM虛擬機器基本管理常用命令

  說明:可能有重複 一、KVM的基本管理 1、檢視KVM虛擬機器配置檔案 #Kvm虛擬機器預設配置檔案位置 [[email protected] qemu]# pwd /etc/libvirt/qemu [[email protected] qe

linux安裝管理:yum和rpm 文本處理:sed

repos rpm -e 偶數 匹配 usr ip地址 rpm查詢 att 替代 1.每12小時備份並壓縮/etc/目錄到/data中,並保存文件格式為“etc-年-月-日-時-分.tar.gz” 編寫腳本用來備份 文件/root/etcback.sh #!/bin/

Linux管理yum

1.光碟掛載 mount /dev/cdrom /mntcd  /mnt 2.安裝rpm包 rpm -ivh vsftpd-3.0.2-22.el7.x86_64.rpm rpm -Uvh vsftpd-3.0.2-22.el7.x86_64.rpm其中-Uvh沒有就安裝,有

Linux程序管理相關命令

一些概念 終端 也叫終端裝置,早期因為計算機比較昂貴,所以一個主機會有多個終端,這些終端本身不具備計算能力,僅僅承擔資訊的輸入與輸出工作,運算和處理均由主機來完成。 現在個人計算機也可以執行終端模擬程式來模擬一個終端來工作。 隨著計算機的發展,移動終端

Linux基礎知識(三)軟體管理與系統命令管理

一、軟體包管理 Linux基本軟體包管理---RPM和DPKG 在 GNU/Linux( 以下簡稱 Linux) 作業系統中,RPM 和 DPKG 為最常見的兩類軟體包管理工具,他們分別應用於基於 RPM 軟體包的 Linux 發行版本和 DEB 軟體包的 Linux 發行版本。軟體

Linux軟體管理(YUM)編譯安裝

YUM一、yum安裝使用:1、Yum:rpm的前端程式,用來解決軟體包相關依賴性,可以在多個庫之間定位軟體包,up2date的替代工具2、yum repository:yum倉庫,儲存了眾多rpm包,以及包的相關的元資料檔案(放置於特定目錄repodata下)3、yum客戶端

Linux中RPM軟件管理安裝

.rpm packages 分享圖片 ado yum linux中 ddb 數據 ack RPM 結構 查詢RPM軟件包信息 安裝,升級,卸載,RPM軟件包 RPM包管理工具 註:以下測試需要安裝rpm軟件倉庫( yum install rpm -y) 查詢已安裝

Linux存儲管理硬盤分區、格式化、掛載

硬盤接口 mknod fdisk 下面介紹的是Linux的存儲管理基礎知識、使用一個新的硬盤設備步驟為(分區、格式化、掛載分區)。一、Linux的存儲管理基礎知識點1、硬件組成計算機基礎知識中,各個硬件表示為:運算器(CUP);控制器(MEEM);硬盤(HDisk);網卡(NIC,即net int

#12 程序管理與rpm命令的使用

程序包管理與rpm命令的使用Linux的程序包管理:程序:指令+數據程序:算法+數據結構應用程序的存在形式:1.源代碼:包含了整個應用程序的編程語言的所有代碼的文本文件;2.二進制:將源代碼經過一系列的轉換操作之後得到的可以直接執行的文件使用源代碼安裝應用程序:預處理(預處理器) --> 編譯(編譯器)

linux內存管理手動釋放機制

並不是 環境 dirty for drop sha 寫到 inode cpu inux系統中查看內存狀態一般都會用到free linux的free命令中,cached和buffers的區別 Free Mem:表示物理內存統計   -/+ buffers/cached:表