1. 程式人生 > >linux日常筆記-01

linux日常筆記-01

多參數 btrfs copy aps gre editor 正則表達 搜索 ubunt

1.Openstack

   監控工具:zabbix

   大數據處理:Hadoop ,Spark ,Storm,elk 

Docker
Python

  1. RHCSA, RHCE, RHCA(認證)
    Linux發行版:
    Slackware:
    Suse, Opensuse

    Debian:
    Ubuntu, mint

    Redhat:
    Rhel, fedora, centos

    Archlinux

    Gentoo

    LFS:linux from scratch

3.程序包管理器:
rpm:
RHEL, Fedora, Suse, CnetOS

dpt:
Debian, Ubuntu

區別內外部命令:
#:type command

/usr: (universal shared read-only data)

4.set -C 禁止將內容覆蓋輸出至已有文件中

 tr 轉換或刪除字符

5.Linux文本處理三劍客:
grep:文本過濾工具(grep,egrep,fgrep)

  sed:stream editor,文本編輯工具

  awk:linux上實現gawk,文本報告生成器

 grep:global search regular expression and print out the line
 作用:文本搜索工具,根據用戶指定的“模式”對目標文本逐行進行匹配檢查:打印匹配到的行
 模式:由正則表達式字符及文本字符所編寫的過濾條件

6.只讀變量:
readonly name , declare –r name

7.自定義退出碼:
exit [n]

8.Vim編輯
(行號)
set nu
set nonu
(括號匹配)
set sm
set nosm
(自動縮進)
set ai
set noai
(高亮搜索)
set hlsearch set nohlsearch
(語法高亮)
syntax on syntax off
(忽略字符的大小寫)
set ic set noic

9.bash 條件測試

[ expression ] [[ expression ]]
組合條件測試:
第一種方式;
command1 && command2

command1 || command2
! command
[ -e file ] && [ -r file ]
第二種方式:
expression1 –a Expression2
expression1 –o Expression2
! expression
必須使用測試命令進行:
eg: [ -f /bin/cat –a –x /bin/cat ] && cat /etc/fatab

10.文件查找:
locate,find
locate:查找速度快,模糊查找,非實時查找
locate keyword
find:查找速度略慢,精確查找,實時查找
find [option] … [查找路徑] [查找條件][處理動作]
組合條件:
與: -a
或: -o
非: -not,!
!A –a !B = !(A –o B)
!A –o !B= !(A –a B)
eg:find /tmp ( -not –user root –a –not –name ‘fstab’ ) –ls
find /tmp -not ( -user root -o -name ‘fstab’ ) –ls
根據文件大小查找:
-size [+|-] #UNIT
常用單位:k,M,G
根據時間戳:
以天為單位:
-atime, -mtime, -ctime
以分鐘為單位:
-amin, -mmin, -cmin
根據權限查找:
-perm [+|-]MODE
處理動作:
-print:默認的處理動作,顯示至屏幕
-ls:類似於對查找到的文件執行“ls -l”命令
-delete:刪除查找到的文件
-ok COMMAND {}\; 對查找到的每個文件執行由COMMAND指定的命令:對於每個文件執行前都會進行交互;
-exec COMMAND {}\; 對查找到的每個文件執行由COMMAND指定的命令;
註意:有些命令不能接受過多參數,此時命令執行時可能會出錯,下面方法可規避此問題:
find |xargs COOMAND
eg:find /etc -size +1M -type -f
find / -nouser –a -nogroup -a -atime -7
find /etc -not -perm +222

11.Linux磁盤管理:
磁盤管理,文件系統管理
RAID基礎原理、LVM2
網絡管理:TCP/IP協議、linux網絡屬性配置
程序包管理:rpm、yum
進程管理:htop、glance、tsar
Sed和awk
I/O Ports: I/O設備地址;
一切皆文件;

12.硬盤接口類型:
並行:
IDE:133MB/s
SCSI:640MB/s
串口:
SATA:6Gbps
SAS:6Gbps
USB:480MB/s
/dev/DEV_FILE 磁盤設備的設備文件命名:
IDE:/dev/hd…
SCSI,SATA,SAS,USB:/dev/sd…

  1. 查看內核是否已經識別新的分區:
    cat /proc/partitions
    通知內核重新讀取硬盤分區表:
    partx -a /dev/DEVICE
    -n M:N
    kpartx -a /dev/DEVICE
    -f force
    centos 5:使用partprobe
    Partprobe [/dev/DEVICE]

14.創建文件系統:
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 #:為管理人員預留的空間占據的百分比
mkswap:創建交換分區
mkswap [options] device
-L ‘LABEL’
前提:調整其分區的ID為82
其他常用工具:
Blkid:塊設備屬性信息查看
Blkid [OPTION] …[DEVICE]
-U UUID:根據指定的UUIDl來查找對應的設備
-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:查看超級塊信息

  1. 文件系統檢測:
    fsck:file system check
    fsck.FS_TYPE
    fsck –t FS_TYPE
    -a:自動修復錯誤
    -r:交互式修復錯誤
    note:FS_TYPE一定要與分區上已有的文件類型相同
    e2fsck:ext系列文件專用的檢測修復工具
    -y :自動回答為yes
    -f :強制修復

16.文件系統掛載:
mount DEVICE MOUNT_POINT
mount:顯示當前系統已掛載的所有設備
mount [-fnrsvw] [-t vfstype] [-o options] device dir
device:指明要掛載的設備:
(1) 設備文件:例如/dev/sda4
(2) 卷標: -L LABEL
(3) UUID,-U UUID
(4) 偽文件系統名稱
dir:掛載點
事先存在,建議使用空目錄
常用選項:
-t vsftype:指定要掛載的設備上的文件系統的類型:
-r readonly
-w read and write
-n 不更新/etc/mtab
-a 自動掛載所有支持自動掛載的設備(定義在/etc/fstab文件中)
-L LABEL 以卷標指定掛載設備
-U UUID 以UUID指定要掛載的設備
註意:查看內核追蹤到的自己掛載的所有設備:cat /proc/mounts
-o options (掛載文件系統的選項)
async:異步模式
sync: 同步模式
atime/noatime:包含目錄和文件
diratime/nodiratime:目錄的訪問時間戳
auto/noauto:是否支持自動掛載
exec/noexec:是否支持將文件系統上的應用程序運行為進程
dev/nodev:是否支持在此文件系統上使用設備文件
remount;重新掛載
卸載命令:
umount
查看正在訪問指定文件系統的進程:
fuser -v mount_point
終止所有在訪問指定文件系統的進程:
fuser -km mount_point
掛載交換分區:
啟用:swapon [OPTION] …[DEVICE]
-a:激活所有的交換分區
-p PRIORITY:指定優先級
禁用:swapoff [OPTION]…[DEVICE]
內存空間使用狀態:
free [OPTION]
-m | -g

17.bash腳本編程之用戶交互:
read [option] … [name …]
-p PROMPT
-t TIMEOUT
bash -n /path/to/some_script
檢測腳本中的語法錯誤
bash -x /path/to/some_script
調試執行

18.RAID:
Redundant Arrays of Inexpensive Disks
提高IO能力:
磁盤並行讀寫
提高耐用性:
磁盤冗余
級別:多塊磁盤組織在一起的工作方式有所不同
RAID實現的方式:
外接式磁盤陣列:通過擴展卡提供適配能力
內接式RAID:主板集成RAID控制器
Software RAID:
級別:level
RAID—0:
RAID—1:
RAID—2:

RAID—5:
RAID—6:
RAID—10:
RAID—01:
RAID—0:
讀、寫性能提升:
可用空間:Nmin(S1,S2…)
無容錯能力
最少磁盤數:2,2+
RAID—1:
讀性能提升寫性能略有下降:
可用空間:1
min(S1,S2…)
有冗余能力
最少磁盤數:2,2+
RAID—5:
讀、寫性能提升:
可用空間:(N-1)min(S1,S2…)
有容錯能力:一塊磁盤
最少磁盤數: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:
JBOD:
將多塊磁盤的空間合並成一個大的連續空間使用
實現方式:
硬件實現方式、軟件實現方式
Centos 6上的軟件RAID的實現:
結合內核中的md(multi devices)
Mdadm:模式化工具
格式:mdadm [mode] <raiddevice> <component-device>
支持的RAID級別:
LINEAR, RAID0,RAID1,RAID4,RAID5,RAID6,RAID10等
模式:
創建:-C
裝配:-A
監控:-F
管理:-f,-r,-a
<raiddevice>:/dev/md#
<component-devices>:任意塊設備
-C:創建模式
-n # :使用n個塊設備來創建此RAID
-l #:指明要創建的RAID級別
-a {yes|no}:自動創建目標RAID設備的設備文件
-c CHUNK_SIZE:指明塊大小
-x #:指明空間盤的個數
-D:顯示RAID的詳細信息
mdadm –D /dev/md#
管理模式:
-f:標記指定磁盤為損壞
-a:添加磁盤
-r:移除磁盤
觀察md的狀態:
cat /proc/mdstat
停止md設備:
mdadm -S /dev/md#
watch命令:
-n #:刷新間隔,單位是秒:
Watch -n# ‘COMMAND’

19.LVM2
LVM:Logical Volume Manager Version 2
dm:device mapper:將一個或多個底層塊設備組織成一個邏輯設備的模塊
pv管理工具:
pvs:簡要pv信息顯示
pvdisplay;顯示pv的詳細信息
pvcreate /dev/DEVICE:創建pv
vg管理工具:
vgs
vgdisplay
vgcreate
vgextend
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

  1. dd命令: convert and copy a file
    dd if =/PAATH/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=512 count=1
    兩個特殊設備:
    /dev/null:數據黑洞
    /dev/zero:吐零機

21.btrfs文件系統:
文件系統的創建:
mkfs.btrfs
-L ‘LABEL’
-d <type>: raid 0 等
-m <profile> : raid 0 raid 1 等
-O<feature>
-O list-all:列出支持的所有feature
屬性查看:
btrfs filesystem show
掛載文件系統:
mount -t btrfs /dev/sdb MOUNT_POINT

     列表生成方式:
     (1)    直接給出列表
     (2)    整數列表
           (a){start…end}
           (b)$(seq [start [step]  end])
     (3)返回列表命令:
               $(COMMAND)

22.Linux程序包管理:
API:Application Programming Interface
POSIX: Portable OS
程序源代碼?預處理?編譯?匯編?鏈接
靜態編譯
共享編譯
ABI:Application Binary Interface
Windows與Linux不兼容
庫級別的虛擬化:
Linux:WINE
Windows:Cywin
系統級開發:c,c++
應用級開發:java,Python,php,perl,ruby
二進制應用程序的組成部分:
二進制文件,庫文件,配置文件,幫助文件
程序包管理器:
Debian:deb,dpt
Redhat:rpm

23.查看二進制程序所依賴的庫文件:
Idd /PATH/TO/BINARY_FILE
管理及查看本機裝載的庫文件:
Idconfig
/sbin/Idconfig -p :顯示本機已經緩存的所有可用庫文件名及文件路徑映射關系
配置文件為: /etc/Id.so.conf,/etc/Id.so.conf.d/*.conf
緩存文件:/etc/Id.so.cache
程序包管理:
功能:將編譯好的應用程序的各組成文件打包一個或幾個程序包文件,從而方便快捷地實現
程序包的安裝、卸載、查詢、升級和校驗等管理操作
管理程序包的方式:
使用包管理器:rpm
使用前端工具:yum、dnf
man rpm
包來源性驗證及合法性驗證:
完整性驗證:
公鑰加密:
對稱加密:加密、解密使用同一密鑰
非對稱加密:密鑰成對(公鑰、私鑰)
導入所需要公鑰:
rpm --import /PATH/FROM/GPG_PUBKEY_FILE

24.數據庫重建:
rpm {--initdb|--rebuilddb}
Initdb:初始化
如果事先不存在數據庫,則新建之;否則,不執行任何操作
rebuilddb:重建
無論當前存在與否,直接重新創建數據庫

25.編譯C源代碼:
第一步:configure腳本
--help
選項分類:
安裝路徑設定:
--prefix=/PATH/TO/SOMEWHERE :指定默認安裝位置
--sysconfdir=/PATH/To/SOMEWHERE:配置文件安裝位置
第二步:make
第三步:make install
安裝後的配置:
(1) 導出二進制程序目錄至PATH環境變量中:
編輯文件 /etc/profile.d/NAME.sh
export PATH=/PATH/TO/BIN
(2) 導出庫文件路徑
編輯 /etc/ld.so.conf.d/NAME.conf
添加新的庫文件所在目錄至此文件中
讓系統重新生成緩存:
Idconfig [-v]
(3) 導出頭文件:
基於鏈接的方式實現:
In -sv
(4) 導出幫助手冊
(5) 編輯/etc/man.conf文件
(6) 添加一個MANPATH

linux日常筆記-01