Linux系統基礎(2篇)

来源:http://www.cnblogs.com/LinuxGeek/archive/2017/06/06/6951168.html
-Advertisement-
Play Games

Linux磁碟管理 I/O Ports: I/O設備地址; 一切皆文件: open(), read(), write(), close() 塊設備:block,存取單位“塊”,磁碟 字元設備:char,存取單位“字元”,鍵盤 設備文件:關聯至一個設備驅動程式,進而能夠跟與之對應硬體設備進行通信; 設 ...


Linux磁碟管理 I/O Ports: I/O設備地址; 一切皆文件: open(), read(), write(), close() 塊設備:block,存取單位“塊”,磁碟 字元設備:char,存取單位“字元”,鍵盤 設備文件:關聯至一個設備驅動程式,進而能夠跟與之對應硬體設備進行通信; 設備號碼: 主設備號:major number, 標識設備類型 次設備號:minor number, 標識同一類型下的不同設備 硬碟介面類型: 並行: IDE:133MB/s SCSI:640MB/s 串口: SATA:6Gbps SAS:6Gbps USB:480MB/s rpm: rotations per minute /dev/DEV_FILE 磁碟設備的設備文件命名: IDE: /dev/hd SCSI, SATA, SAS, USB: /dev/sd 不同設備:a-z /dev/sda, /dev/sdb, ... 同一設備上的不同分區:1,2, ... /dev/sda1, /dev/sda5 機械式硬碟: track:磁軌 cylinder: 柱面 secotr: 扇區 512bytes 如何分區: 按柱面 0磁軌0扇區:512bytes MBR: Master Boot Record 446bytes: boot loader 64bytes:分區表 16bytes: 標識一個分區 2bytes: 55AA 4個主分區; 3主分區+1擴展(N個邏輯分區) 邏輯分區 分區管理工具:fdisk, parted, sfdisk fdisk:對於一塊硬碟來講,最多只能管理15分區; # fdisk -l [-u] [device...] # fdisk device 子命令:管理功能 p: print, 顯示已有分區; n: new, 創建 d: delete, 刪除 w: write, 寫入磁碟並退出 q: quit, 放棄更新並退出 m: 獲取幫助 l: 列表所分區id t: 調整分區id 查看內核是否已經識別新的分區: # cat /proc/partations 通知內核重新讀取硬碟分區表: partx -a /dev/DEVICE -n M:N kpartx -a /dev/DEVICE -f: force CentOS 5: 使用partprobe partprobe [/dev/DEVICE]Linux文件系統管理: Linux文件系統: ext2, ext3, ext4, xfs, btrfs, reiserfs, jfs, swap swap: 交換分區 光碟:iso9660 Windows:fat32, ntfs Unix: FFS, UFS, JFS2 網路文件系統:NFS, CIFS 集群文件系統:GFS2, OCFS2 分散式文件系統:ceph,  moosefs, mogilefs, GlusterFS, Lustre 根據其是否支持"journal"功能: 日誌型文件系統: ext3, ext4, xfs, ... 非日誌型文件系統: ext2, vfat 文件系統的組成部分: 內核中的模塊:ext4, xfs, vfat 用戶空間的管理工具:mkfs.ext4, mkfs.xfs, mkfs.vfat Linux的虛擬文件系統:VFS 創建文件系統: mkfs命令: (1) # mkfs.FS_TYPE /dev/DEVICE ext4 xfs btrfs vfat (2) # mkfs -t FS_TYPE /dev/DEVICE -L 'LABEL': 設定捲標 mke2fs:ext系列文件系統專用管理工具 -t {ext2|ext3|ext4} -b {1024|2048|4096} -L 'LABEL' -j: 相當於 -t ext3 mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3 -i #: 為數據空間中每多少個位元組創建一個inode;此大小不應該小於block的大小; -N #:為數據空間創建個多少個inode; -m #: 為管理人員預留的空間占據的百分比; -O FEATURE[,...]:啟用指定特性 -O ^FEATURE:關閉指定特性 mkswap:創建交換分區 mkswap [options] device -L 'LABEL' 前提:調整其分區的ID為82; 其它常用工具: blkid:塊設備屬性信息查看 blkid [OPTION]... [DEVICE] -U UUID: 根據指定的UUID來查找對應的設備 -L LABEL:根據指定的LABEL來查找對應的設備 e2label:管理ext系列文件系統的LABEL # e2label DEVICE [LABEL] tune2fs:重新設定ext系列文件系統可調整參數的值 -l:查看指定文件系統超級塊信息;super block -L 'LABEL':修改捲標 -m #:修預留給管理員的空間百分比 -j: 將ext2升級為ext3 -O: 文件系統屬性啟用或禁用 -o: 調整文件系統的預設掛載選項 -U UUID: 修改UUID號; dumpe2fs: -h:查看超級塊信息 文件系統檢測: fsck: File System CheCk fsck.FS_TYPE fsck -t FS_TYPE -a: 自動修複錯誤 -r: 互動式修複錯誤 Note: FS_TYPE一定要與分區上已經文件類型相同; e2fsck:ext系列文件專用的檢測修複工具 -y:自動回答為yes;  -f:強制修複;文件系統管理: 將額外文件系統與根文件系統某現存的目錄建立起關聯關係,進而使得此目錄做為其它文件訪問入口的行為稱之為掛載; 解除此關聯關係的過程稱之為卸載; 把設備關聯掛載點:Mount Point mount 卸載時:可使用設備,也可以使用掛載點 umount 註意:掛載點下原有文件在掛載完成後會被臨時隱藏; 掛載方法:mount DEVICE MOUNT_POINT mount:通過查看/etc/mtab文件顯示當前系統已掛載的所有設備 mount [-fnrsvw] [-t vfstype] [-o options] device dir device:指明要掛載的設備; (1) 設備文件:例如/dev/sda5 (2) 捲標:-L 'LABEL', 例如 -L 'MYDATA' (3) UUID, -U 'UUID':例如 -U '0c50523c-43f1-45e7-85c0-a126711d406e' (4) 偽文件系統名稱:proc, sysfs, devtmpfs, configfs dir:掛載點 事先存在;建議使用空目錄; 進程正在使用中的設備無法被卸載; 常用命令選項: -t vsftype:指定要掛載的設備上的文件系統類型; -r: readonly,只讀掛載; -w: read and write, 讀寫掛載; -n: 不更新/etc/mtab;  -a:自動掛載所有支持自動掛載的設備;(定義在了/etc/fstab文件中,且掛載選項中有“自動掛載”功能) -L 'LABEL': 以捲標指定掛載設備; -U 'UUID': 以UUID指定要掛載的設備; -B, --bind: 綁定目錄到另一個目錄上; 註意:查看內核追蹤到的已掛載的所有設備:cat /proc/mounts -o options:(掛載文件系統的選項) async:非同步模式; sync:同步模式; atime/noatime:包含目錄和文件; diratime/nodiratime:目錄的訪問時間戳 auto/noauto:是否支持自動掛載 exec/noexec:是否支持將文件系統上應用程式運行為進程 dev/nodev:是否支持在此文件系統上使用設備文件; suid/nosuid: remount:重新掛載 ro: rw: user/nouser:是否允許普通用戶掛載此設備 acl:啟用此文件系統上的acl功能 註意:上述選項可多個同時使用,彼此使用逗號分隔;  預設掛載選項:defaults   rw, suid, dev, exec, auto, nouser, and async 卸載命令: # umount DEVICE # umount MOUNT_POINT 查看正在訪問指定文件系統的進程: # fuser -v MOUNT_POINT 終止所有在正訪問指定的文件系統的進程: # fuser -km MOUNT_POINT 掛載交換分區: 啟用:swapon swapon [OPTION]... [DEVICE] -a:激活所有的交換分區; -p PRIORITY:指定優先順序; 禁用:swapoff [OPTION]... [DEVICE] 記憶體空間使用狀態: free [OPTION] -m: 以MB為單位 -g: 以GB為單位 文件系統空間占用等信息的查看工具: df:  -h: human-readable -i:inodes instead of blocks -P: 以Posix相容的格式輸出;  查看某目錄總體空間占用狀態: du: du [OPTION]... DIR -h: human-readable -s: summary 已講述命令:mount, umount, free, df, du, swapon, swapoff, fuser文件掛載的配置文件:/etc/fstab 每行定義一個要掛載的文件系統; 要掛載的設備或偽文件系統 掛載點 文件系統類型   掛載選項 轉儲頻率   自檢次序 要掛載的設備或偽文件系統: 設備文件、LABEL(LABEL="")、UUID(UUID="")、偽文件系統名稱(proc, sysfs) 掛載選項: defaults 轉儲頻率: 0:不做備份 1:每天轉儲 2:每隔一天轉儲 自檢次序: 0:不自檢 1:首先自檢;一般只有rootfs才用1; ...文件系統上的其它概念: Inode: Index Node, 索引節點 地址指針: 直接指針: 間接指針: 三級指針: inode bitmap:對位標識每個inode空閑與否的狀態信息; 鏈接文件: 硬鏈接: 不能夠對目錄進行; 不能跨分區進行; 指向同一個inode的多個不同路徑;創建文件的硬鏈接即為為inode創建新的引用路徑,因此會增加其引用計數; 符號鏈接: 可以對目錄進行; 可以跨分區; 指向的是另一個文件的路徑;其大小為指向的路徑字元串的長度;不增加或減少目標文件inode的引用計數; ln [-sv] SRC DEST -s:symbolic link -v: verbose 文件管理操作對文件的影響: 文件刪除: 文件複製: 文件移動:

 

1、創建一個20G的文件系統,塊大小為2048,文件系統ext4,捲標為TEST,要求此分區開機後自動掛載至/testing目錄,且預設有acl掛載選項; (1) 創建20G分區; (2) 格式化: mke2fs -t ext4 -b 2048 -L 'TEST' /dev/DEVICE (3) 編輯/etc/fstab文件 LABEL='TEST' /testing ext4 defaults,acl 0 0 3、寫一個腳本,完成如下功能: (1) 列出當前系統識別到的所有磁碟設備; (2) 如磁碟數量為1,則顯示其空間使用信息; 否則,則顯示最後一個磁碟上的空間使用信息; if [ $disks -eq 1 ]; then  fdisk -l /dev/[hs]da else  fdisk -l $(fdisk -l /dev/[sh]d[a-z] | grep -o "^Disk /dev/[sh]d[a-]" | tail -1 | cut -d' ' -f2) fibash腳本編程之用戶交互: read [option]... [name ...] -p 'PROMPT' -t TIMEOUT bash -n /path/to/some_script 檢測腳本中的語法錯誤 bash -x /path/to/some_script 調試執行 示例: #!/bin/bash # Version: 0.0.1 # Author: MaEdu # Description: read testing read -p "Enter a disk special file: " diskfile [ -z "$diskfile" ] && echo "Fool" && exit 1 if fdisk -l | grep "^Disk $diskfile" &> /dev/null; then    fdisk -l $diskfile else    echo "Wrong disk special file."    exit 2 fiRAID:  Redundant Arrays of Inexpensive Disks                    Independent Berkeley: A case for Redundent Arrays of Inexpensive Disks RAID 提高IO能力: 磁碟並行讀寫; 提高耐用性; 磁碟冗餘來實現 級別:多塊磁碟組織在一起的工作方式有所不同; RAID實現的方式: 外接式磁碟陣列:通過擴展卡提供適配能力 內接式RAID:主板集成RAID控制器 Software RAID: 級別:level RAID-0:0, 條帶捲,strip;  RAID-1: 1, 鏡像捲,mirror; RAID-2 .. RAID-5: RAID-6 RAID10 RAID01 RAID-0:  讀、寫性能提升; 可用空間:N*min(S1,S2,...) 無容錯能力 最少磁碟數:2, 2+ RAID-1: 讀性能提升、寫性能略有下降; 可用空間:1*min(S1,S2,...) 有冗餘能力 最少磁碟數:2, 2+ RAID-4: 1101, 0110, 1011 RAID-5: 讀、寫性能提升 可用空間:(N-1)*min(S1,S2,...) 有容錯能力:1塊磁碟 最少磁碟數:3, 3+ RAID-6: 讀、寫性能提升 可用空間:(N-2)*min(S1,S2,...) 有容錯能力:2塊磁碟 最少磁碟數:4, 4+ 混合類型 RAID-10: 讀、寫性能提升 可用空間:N*min(S1,S2,...)/2 有容錯能力:每組鏡像最多只能壞一塊; 最少磁碟數:4, 4+ RAID-01: RAID-50、RAID7 JBOD:Just a Bunch Of Disks 功能:將多塊磁碟的空間合併一個大的連續空間使用; 可用空間:sum(S1,S2,...) 常用級別:RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD 實現方式: 硬體實現方式 軟體實現方式  CentOS 6上的軟體RAID的實現: 結合內核中的md(multi devices) mdadm:模式化的工具 命令的語法格式:mdadm [mode] <raiddevice> [options] <component-devices> 支持的RAID級別:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10;  模式: 創建:-C 裝配: -A 監控: -F 管理:-f, -r, -a <raiddevice>: /dev/md# <component-devices>: 任意塊設備 -C: 創建模式 -n #: 使用#個塊設備來創建此RAID; -l #:指明要創建的RAID的級別; -a {yes|no}:自動創建目標RAID設備的設備文件; -c CHUNK_SIZE: 指明塊大小; -x #: 指明空閑盤的個數; 例如:創建一個10G可用空間的RAID5; -D:顯示raid的詳細信息; mdadm -D /dev/md# 管理模式: -f: 標記指定磁碟為損壞; -a: 添加磁碟 -r: 移除磁碟 觀察md的狀態: cat /proc/mdstat 停止md設備: mdadm -S /dev/md# watch命令: -n #: 刷新間隔,單位是秒; watch -n# 'COMMAND'LVM2: LVM: Logical Volume Manager, Version: 2 dm: device mapper,將一個或多個底層塊設備組織成一個邏輯設備的模塊; /dev/dm-# /dev/mapper/VG_NAME-LV_NAME /dev/mapper/vol0-root /dev/VG_NAME/LV_NAME /dev/vol0/root pv管理工具: pvs:簡要pv信息顯示 pvdisplay:顯示pv的詳細信息 pvcreate /dev/DEVICE: 創建pv vg管理工具: vgs vgdisplay vgcreate  [-s #[kKmMgGtTpPeE]] VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...] vgextend  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...] vgreduce  VolumeGroupName  PhysicalDevicePath [PhysicalDevicePath...] 先做pvmove vgremove lv管理工具: lvs lvdisplay lvcreate -L #[mMgGtT] -n NAME VolumeGroup lvremove /dev/VG_NAME/LV_NAME 擴展邏輯捲: # lvextend -L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME # resize2fs /dev/VG_NAME/LV_NAME 縮減邏輯捲: # umount /dev/VG_NAME/LV_NAME # e2fsck -f /dev/VG_NAME/LV_NAME # resize2fs /dev/VG_NAME/LV_NAME #[mMgGtT] # lvreduce -L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME # mount 快照:snapshot lvcreate -L #[mMgGtT] -p r -s -n snapshot_lv_name original_lv_name文件系統掛載使用: 掛載光碟設備: 光碟設備文件: IDE: /dev/hdc SATA: /dev/sr0 符號鏈接文件: /dev/cdrom /dev/cdrw /dev/dvd /dev/dvdrw mount -r /dev/cdrom /media/cdrom umount /dev/cdrom dd命令:convert and copy a file 用法: dd if=/PATH/FROM/SRC of=/PATH/TO/DEST  bs=#:block size, 複製單元大小; count=#:複製多少個bs; 磁碟拷貝: dd if=/dev/sda of=/dev/sdb 備份MBR dd if=/dev/sda of=/tmp/mbr.bak bs=512 count=1 破壞MBR中的bootloader: dd if=/dev/zero of=/dev/sda bs=256 count=1 兩個特殊設備: /dev/null: 數據黑洞; /dev/zero:吐零機;btrfs文件系統: 技術預覽版 Btrfs (B-tree, Butter FS, Better FS), GPL, Oracle, 2007, CoW;  ext3/ext4, xfs 核心特性: 多物理捲支持:btrfs可由多個底層物理捲組成;支持RAID,以聯機“添加”、“移除”,“修改”; 寫時複製更新機制(CoW):複製、更新及替換指針,而非“就地”更新; 數據及元數據校驗碼:checksum 子捲:sub_volume 快照:支持快照的快照; 透明壓縮: 文件系統創建: mkfs.btrfs -L 'LABEL' -d <type>: raid0, raid1, raid5, raid6, raid10, single -m <profile>: raid0, raid1, raid5, raid6, raid10, single, dup -O <feature> -O list-all: 列出支持的所有feature; 屬性查看: btrfs filesystem show  掛載文件系統: mount -t btrfs /dev/sdb MOUNT_POINT 透明壓縮機制: mount -o compress={lzo|zlib} DEVICE MOUNT_POINT 子命令:filesystem, device, balance, subvolume壓縮、解壓縮及歸檔工具 compress/uncompress: .Z gzip/gunzip: .gz bzip2/bunzip2: .bz2 xz/unxz: .xz zip/unzip tar, cpio 1、gzip/gunzip gzip [OPTION]... FILE ... -d: 解壓縮,相當於gunzip -c: 將結果輸出至標準輸出; -#:1-9,指定壓縮比; zcat:不顯式展開的前提下查看文本文件內容; 2、bzip2/bunzip2/bzcat bzip2 [OPTION]... FILE ... -k: keep, 保留原文件; -d:解壓縮 -#:1-9,壓縮比,預設為6; bzcat:不顯式展開的前提下查看文本文件內容; 3、xz/unxz/xzcat bzip2 [OPTION]... FILE ... -k: keep, 保留原文件; -d:解壓縮 -#:1-9,壓縮比,預設為6; xzcat: 不顯式展開的前提下查看文本文件內容; 4、tar tar [OPTION]...  (1) 創建歸檔 tar -c -f /PATH/TO/SOMEFILE.tar FILE... tar -cf /PATH/TO/SOMEFILE.tar FILE... (2) 查看歸檔文件中的文件列表 tar -t -f /PATH/TO/SOMEFILE.tar (3) 展開歸檔 tar -x -f /PATH/TO/SOMEFILE.tar tar -x -f /PATH/TO/SOMEFILE.tar -C /PATH/TO/DIR 結合壓縮工具實現:歸檔並壓縮 -j: bzip2, -z: gzip, -J: xzbash腳本編程: if語句、bash -n、bash -x CONDITION: bash命令: 用命令的執行狀態結果; 成功:true 失敗:flase 成功或失敗的意義:取決於用到的命令; 單分支: if CONDITION; then if-true fi 雙分支: if CONDITION; then if-true else if-false fi 多分支: if CONDITION1; then if-true elif CONDITION2; then if-ture  elif CONDITION3; then if-ture  ... esle all-false fi 逐條件進行判斷,第一次遇為“真”條件時,執行其分支,而後結束; 示例:用戶鍵入文件路徑,腳本來判斷文件類型; #!/bin/bash # read -p "Enter a file path: " filename if [ -z "$filename" ]; then    echo "Usage: Enter a file path."    exit 2 fi if [ ! -e $filename ]; then    echo "No such file."    exit 3 fi if [ -f $filename ]; then    echo "A common file." elif [ -d $filename ]; then    echo "A directory." elif [ -L $filename ]; then    echo "A symbolic file." else    echo "Other type." fi 註意:if語句可嵌套; 迴圈:for, while, until 迴圈體:要執行的代碼;可能要執行n遍; 進入條件: 退出條件: for迴圈: for 變數名  in 列表; do 迴圈體 done 執行機制: 依次將列表中的元素賦值給“變數名”; 每次賦值後即執行一次迴圈體; 直到列表中的元素耗盡,迴圈結束;  示例:添加10個用戶, user1-user10;密碼同用戶名; #!/bin/bash # if [ ! $UID -eq 0 ]; then    echo "Only root."    exit 1 fi for i in {1..10}; do    if id user$i &> /dev/null; then   echo "user$i exists."    else     useradd user$i if [ $? -eq 0 ]; then    echo "user$i" | passwd --stdin user$i &> /dev/null            echo "Add user$i finished."        fi    fi done 列表生成方式: (1) 直接給出列表; (2) 整數列表: (a) {start..end} (b) $(seq [start [step]] end)  (3) 返回列表的命令; $(COMMAND) (4) glob (b) 變數引用; $@, $* 示例:判斷某路徑下所有文件的類型 #!/bin/bash # for file in $(ls /var); do    if [ -f /var/$file ]; then echo "Common file."    elif [ -L /var/$file ]; then echo "Symbolic file."    elif [ -d /var/$file ]; then echo "Directory."    else echo "Other type."    fi done 示例: #!/bin/bash # declare -i estab=0 declare -i listen=0 declare -i other=0 for state in $( netstat -tan | grep "^tcp\>" | awk '{print $NF}'); do    if [ "$state" == 'ESTABLISHED' ]; then let estab++    elif [ "$state" == 'LISTEN' ]; then let listen++    else let other++    fi done echo "ESTABLISHED: $estab" echo "LISTEN: $listen" echo "Unkown: $other" /etc/rc.d/rc3.d目錄下分別有多個以K開頭和以S開頭的文件; 分別讀取每個文件,以K開頭的文件輸出為文件加stop,以S開頭的文件輸出為文件名加start; “K34filename stop” “S66filename start”Linux程式包管理: API:Application Programming Interface POSIX:Portable OS 程式源代碼 --> 預處理 --> 編譯 --> 彙編 --> 鏈接  靜態編譯: 共用編譯:.so ABI:Application Binary Interface Windows與Linux不相容 庫級別的虛擬化: Linux: WINE Windows: Cywin 系統級開發 C C++ 應用級開發 java Python php perl ruby 二進位應用程式的組成部分: 二進位文件、庫文件、配置文件、幫助文件 程式包管理器: debian:deb, dpt redhat: rpm, rpm rpm: Redhat Package Manager RPM is Package Manager Gentoo Archlinux 源代碼:name-VERSION.tar.gz VERSION: major.minor.release rpm包命名方式: name-VERSION-release.arch.rpm VERSION: major.minor.release release.arch: release:release.OS zlib-1.2.7-13.el7.i686.rpm 常見的arch: x86: i386, i486, i586, i686 x86_64: x64, x86_64, amd64 powerpc: ppc 跟平臺無關:noarch testapp: 拆包 testapp-VERSION-ARCH.rpm: 主包 testapp-devel-VERSION-ARCH.rpm:支包 testapp-testing-VERSION-ARHC.rpm 包之間:存在依賴關係 X, Y, Z yum:rpm包管理器的前端工具; apt-get:deb包管理器前端工具; zypper: suse上的rpm前端管理工具; dnf: Fedora 22+ rpm包管理器前端管理工具; 查看二進位程式所依賴的庫文件: ldd /PATH/TO/BINARY_FILE 管理及查看本機裝載的庫文件: ldconfig  /sbin/ldconfig -p: 顯示本機已經緩存的所有可用庫文件名及文件路徑映射關係; 配置文件為:/etc/ld.so.conf, /etc/ld.so.conf.d/*.conf 緩存文件:/etc/ld.so.cache 程式包管理: 功能:將編譯好的應用程式的各組成文件打包一個或幾個程式包文件,從而方便快捷地實現程式包的安裝、卸載、查詢、升級和校驗等管理操作; 1、程式的組成組成清單 (每個包獨有) 文件清單 安裝或卸載時運行的腳本 2、資料庫(公共) 程式包名稱及版本 依賴關係; 功能說明; 安裝生成的各文件的文件路徑及校驗碼信息; 管理程式包的方式: 使用包管理器:rpm 使用前端工具:yum, dnf 獲取程式包的途徑: (1) 系統發版的光碟或官方的伺服器; CentOS鏡像: http://mirrors.aliyun.com http://mirrors.sohu.com http://mirrors.163.com (2) 項目官方站點 (3) 第三方組織: Fedora-EPEL 搜索引擎: http://pkgs.org http://rpmfind.net http://rpm.pbone.net (4) 自己製作 建議:檢查其合法性 來源合法性; 程式包的完整性;CentOS系統上rpm命令管理程式包: 安裝、卸載、升級、查詢、校驗、資料庫維護 安裝: rpm {-i|--install} [install-options] PACKAGE_FILE ... -v: verbose -vv:  -h: 以#顯示程式包管理執行進度;每個#表示2%的進度 rpm -ivh PACKAGE_FILE ... [install-options] --test: 測試安裝,但不真正執行安裝過程;dry run模式; --nodeps:忽略依賴關係; --replacepkgs: 重新安裝; --nosignature: 不檢查來源合法性; --nodigest:不檢查包完整性; --noscipts:不執行程式包腳本片斷; %pre: 安裝前腳本; --nopre %post: 安裝後腳本; --nopost %preun: 卸載前腳本; --nopreun %postun: 卸載後腳本;  --nopostun 升級: rpm {-U|--upgrade} [install-options] PACKAGE_FILE ... rpm {-F|--freshen} [install-options] PACKAGE_FILE ... upgrage:安裝有舊版程式包,則“升級”;如果不存在舊版程式包,則“安裝”; freeshen:安裝有舊版程式包,則“升級”;如果不存在舊版程式包,則不執行升級操作; rpm -Uvh PACKAGE_FILE ... rpm -Fvh PACKAGE_FILE ... --oldpackage:降級; --force: 強行升級; 註意:(1) 不要對內核做升級操作;Linux支持多內核版本並存,因此,對直接安裝新版本內核;  (2) 如果原程式包的配置文件安裝後曾被修改,長級時,新版本的提供的同一個配置文件並不會直接覆蓋老版本的配置文件,而把新版本的文件重命名(FILENAME.rpmnew)後保留; 查詢: rpm {-q|--query} [select-options] [query-options] [select-options] -a: 所有包 -f: 查看指定的文件由哪個程式包安裝生成 -p /PATH/TO/PACKAGE_FILE:針對尚未安裝的程式包文件做查詢操作; --whatprovides CAPABILITY:查詢指定的CAPABILITY由哪個包所提供; --whatrequires CAPABILITY:查詢指定的CAPABILITY被哪個包所依賴; [query-options] --changelog:查詢rpm包的changlog -c: 查詢程式的配置文件 -d: 查詢程式的文檔 -i: information -l: 查看指定的程式包安裝後生成的所有文件; --scripts:程式包自帶的腳本片斷 -R: 查詢指定的程式包所依賴的CAPABILITY; --provides: 列出指定程式包所提供的CAPABILITY; 用法: -qi PACKAGE, -qf FILE, -qc PACKAGE, -ql PACKAGE, -qd PACKAGE -qpi PACKAGE_FILE, -qpl PACKAGE_FILE, ... -qa 卸載: rpm {-e|--erase} [--
您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 假設要連接的FTP信息如下: FTP Server: FtpTest User: tester Password: 123123 打開Windows的開始菜單,執行“運行”命令,在對話框中輸入ftp,按下“確定”按鈕將會切換至DOS視窗,出現命令提示符 ftp 鍵入命令連接FTP伺服器: ftp o ...
  • PowerShell是運行在windows平臺的腳本,而Bash是運行在linux平臺的腳本 現在bash能做的事情,PowerShell也能做,PowerShell的強大之處是它可以管理windows伺服器(特別是域domain),現在的開源PowerShell 也可以管理Linux和Mac(通過 ...
  • 1、ext4文件系統在SSD硬碟是最快的 2、IO的演算法修改成noop,操作系統本身不做處理,讓SSD本身處理 echo noop > /sys/block/sdb/queue/scheduler 3、echo 4096 > read_ahead_kb 表示事先預讀數據的Kb數,預設是128 4、e ...
  • 一、NFS服務簡介 NFS是Network File System的縮寫,即網路文件系統。一種使用於分散式文件系統的協定,由sun公司開發,於1984年向外公佈。功能:通過網路讓不同的機器、不同的操作系統能夠彼此分享個別數據,讓應用程式在客戶端通過網路訪問位於服務端磁碟中的數據,是在類Unix系統間 ...
  • 有些文件不喜歡被修改,可以用chattr命令把他鎖定。如lnmp中現在目錄的文件.user.ini,虛擬主機中不喜歡客戶刪除某個目錄等等。 ...
  • 現代操作系統普遍採用虛擬記憶體管理(Virtual Memory Management)機制,這需要處理器中的MMU(Memory Management Unit,記憶體管理單元)提供支持。首先引入 PA 和 VA 兩個概念。 1.PA(Physical Address) 物理地址 如果處理器沒有MMU ...
  • HMODULE getCurrModuleHandle(){ MEMORY_BASIC_INFORMATION info; ::VirtualQuery((LPCVOID)(&getCurrModuleHandle), &info, sizeof(info)); return (HMODULE)in ...
  • 自動安裝wdcp腳本,支持Centos 很多會員在購買伺服器後不會掛載和安裝環境,抽空測試了個腳本,提供給像我一樣的小白使用,希望你會喜歡! ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...