linux系統管理基礎

硬件基礎
  1、機箱:劣質的會引發共振
  2、電源:保障服務器的電源供應
        劣質電源影響其餘硬件,重要服務器可採起雙電源,雙線路供電等。集羣能夠考慮不使用雙電
      
  3、主板 主板芯片組:負責管理cpu、內存總線擴展及外設的支持 BIOS芯片(cmos芯片):主板通電後各部件自檢、設置、保存。一切正常後才能啓動,記錄列電腦最基本的信息,是軟硬件打交道的最基礎橋樑。常見的Award/AMI/Phoenix。 總線擴展槽:按功能可分爲內存插槽、PCI
/ISA插槽,AGP,PCI,PCIE顯示卡插槽等 各種i/o接口:軟硬盤、鍵盤、鼠標、打印機、USB、com1/com2等   4、CPU:負責運算和控制,數據的輸入、存儲、程序的運行、屏幕的顯示、結果打印都在其的控制下完成.   5、風扇:cpu散熱   6、硬盤:存儲數據
    接口類型:
      IDE  並口  133Mbps
      SATA  串口  6gbps
      SCSI  並口  640Mbps
      SAS  串口  6gbps

  機械3.5寸IDE硬盤,缺點慢   機械SICI :sata sas(生產環境多用),2個兼容   ssd:用固態電子存儲芯片陣列而製成的硬盤,接口:SATA口和PCI-E,壽命短,價格高   性能 ssd
>sas>sata    常規企業使用sas (15000轉/分),不對外的線下數據備份等使用sata 7200-10000轉)    高併發,小數據量ssd   淘寶企業案列:服務器會把sata和ssa結合起來用,熱點存儲,程序動態調度。    磁盤陣列卡   冗餘度 1 0 5 10
  性能 0 10 5 1
     成本 0 5 1 10
  7、內存:臨時存儲器,負責數據中轉    做用:cpu是可以直接訪問的存儲器,cpu從內存中讀取操做指令和數據,又把運算和處理結果返回 內存   寫入數據到內存,這個數據的內存空間稱爲buffer緩衝區
   從內存讀取數據,這個存數據的內存空間稱爲cache緩衝區

CPU (L1 L2 CACHE) ——>  內存——>   ssd  ——普通硬盤, 所以,優化網站、服務器的關鍵:儘可能使用內存php

IO各層次性能彙總html

延時java

 

帶寬node

CPU L1 L2 L3linux

0.5-15nsios

 

20-60GB/秒nginx

內存web

30-100nsredis

 

2-12G/s算法

SSD

10us-1ms

 

50M-2G/s

普通硬盤

5-20ms

 

50-20M/s

網卡

100us-1ms

 

10M-10G/s



















根據業務類型優化I/O

  一、解決瀏覽網頁的壓力,讀壓力,90%網站讀取爲主
      寫入硬盤,讀入到內存,提供給客戶訪問
  二、解決微信,微博等應用寫壓力更大的業務。
      考慮寫到內存,根據企業可以接受的數據丟失是程度,選擇頻率寫到磁盤。
  三、更高的要求,高併發大數據量
      即寫到內存,又不但願數據丟失。(UPS電源、安裝FLUSH電池 )
      先把數據寫內存,達到必定量,定時或定量寫到磁盤,減小磁盤IO,最終仍是會加載到內存對外服務
    提醒:這裏提到的優化是指有多臺機器組成的集羣架構環境memcached/redis 軟件實現上述功能


企業裏的PC服務器常見品牌及型號
    互聯網公司服務器品牌:DELL\HP\IBM(百度)\浪潮\聯想\航天聯志
    DELL服務器品牌:1U=4.45cm
        2010之前: 1U1850,1950、2U2850,2950
        2010-2013:1U R410 R610,2U R710
        2014-2016:1u R420/430 ,R620/630  2u R720/R730
    IBM品牌
        2U 3750/2850/3950
    HP品牌
        DL380G7 2u

Linux特色
  開放源代碼,自由修改
  與Unix兼容,具有幾乎全部Unix優秀特性
  可自由傳播,無商業化版權制約
  適合Intel等X86 CPU系列架構的計算機
  POSIX表示可移植操做系統接口(Portable Operating System Interface of UNIX,縮寫爲 POSIX )

Unix 1969 貝爾實驗室
  分支BSD 1977
    -SUN Solaris
    -IBM AIX
    -HP UNIX

Unix的5大特性
  技術成熟,可靠性高
  極強的可伸縮性,支持的CPU體系架構很是多
  強大的網路功能
  強大的數據庫支持能力
  強大的開發功能

1984 Richard Stallman 成立FSF 和 GNU項目(Emacs、gcc、bash、gawk)
1984 譚邦寧 教學用UNIX(Minix)
  -1989 Ninix運行於X86 PC

1990 芬蘭赫爾辛基大學 Linus Torvalds 學習Minix
  1991 在Minux上編寫各類驅動程序等操做系統內核組件
  1991年末 公開Linux 0.02內核源碼(kenel部分)
  1993 Linux 1.0發行 轉向GPL版權協議
  1994 Linux的第一個商業發行版Slackware問世
  2000後,日益成熟

  

GPL(general public license)
  保證任何人有共享及修改自由軟件的自由,任何人有取得、修改和從新發布自由軟件的源代碼的權利,可是都必須同時給出具體更改的源代碼

Linux系統的核心組成原理
  外圍應用程序-->shell-->系統核心(kernel、lib、API)-->硬件








SSH(Secure Shell Protocol)遠程鏈接原理(默認端口:22) 分爲openssh-clients和openssh-server(包括openssl 加密,openssh提供服務) 經常使用工具:xshell secureCRT putty 不兼容的兩個版本:SSHv1和 SSHv2
   CRT 的另外一個功能:批量執行 一、打開多個標籤 2、crt的view菜單下的Chat Windows,以後再在下方空白處右鍵選擇send chat to session
SSH鏈接故障排查   
1ping (使用ICMP協議,默認64字節的包) a、iptables b、物理線路   2、服務是否正常,測試端口是否能連通 a、iptables b、ssh服務 c、端口是否被改 windows與linux互傳軟件   ftp/wincp/http/rz-sz   #yum install lrzsz -y   rz 回車 上傳 -y 覆蓋   sz 文件 回車下載 -y 覆蓋 windows與linux文檔轉換   # yum install unix2dos   解決將公司服務器上腳本導到windows上打開串行的問題,這是由於windows和linux處理回車不一樣 查看linux系統版本信息(linux多任務、多進程、多cpu、多用戶)   # cat /etc/redhat-release CentOS release 6.7 (Final) 版本   # uname -r 2.6.32-573.el6.x86_64 內核版本   # uname -m x86_64 32位仍是64位   # hostname     主機名 [root@test01 ~]# 用戶名@主機名-家目錄 [\u@\h \W]\$ [root@test01 ~]# echo $PS1 ==>能夠經過/etc/profile調整PS1 衡量運維人員的3個基本標準   1、網站訪問快,且24小時服務不間斷   2、網站數據不丟失、即便機器故障,也能夠隨時恢復找回丟失的數據,且對業務不影響。   3、爲公司省錢,提高工做效率     a、經過對網站架構優化調整節省服務器數量、帶寬     b、使用雲計算、開發自動化平臺提升工做效率,節省人力成本

 

安裝Linux系統後的調優及安全設置

關閉SELinux (配置文件/etc/selinux/config)。
  #sed -i 's#SELINUX=enforcing#SELINUX=disable#g' /etc/selinux/config 以後須要重啓服務器
  以下操做,臨時生效
  #getenforce   ====>Enforcing
  #setenforce 0
  #getenforce 0 ====>Permissive 

關閉防火牆   #iptables
-L -n 查看防火牆   #/etc/init.d/iptables stop #chkconfig iptables off 或   #iptables –F   #/etc/init.d/iptables save
LINUX運行級別   配置文件
/etc/inittab   #runlevel 顯示當前運行模式   #init 切換運行級別 Linux開機系統啓動優化   新安裝linux必需要保留的開機自啓動任務有5個,具體以下   1、sshd   2、rsyslog centos6之前的名字爲syslog,是操做系統提供的一種機制,系統的守護程序一般會使用,rsyslog將各類信息寫入到系統日誌文件中   3、network   4、crond   5、sysstat [sysstat]軟件包集成的主要工具 [iostat] 提供CPU使用率及硬盤吞吐效率的數據           [mpstat] 提供與單個或多個處理器相關的數據 [sar] 負責收集、報告並存儲系統活躍的信息 服務開啓與關閉   使用#setup取消相關服務=#ntsysv   使用#chkconfig 查找3級別啓動的服務 chkconfig --list | grep 3:on    chkconfig --level 345 servicename off   批量關閉開機自啓動服務     #for name in `chkconfig --list | awk '{print $1}' | grep -Ev "sshd|network|rsyslog|crond|sysstat"`; do chkconfig $name off; done
    #chkconfig --list | grep 3:on | awk '{print $1}' | grep -Ev "sshd|network|rsyslog|crond|sysstat" | sed -r 's#(.*)#chkconfig \1  off#g' | bash
    #chkconfig --list | grep 3:on | awk '{print $1}' | grep -Ev "sshd|network|rsyslog|crond|sysstat" | awk '{print "chkconfig "  $1  " off"}' | bash
Linux系統安全最小化原則   1、安裝最小化   2、開機服務最小化   3、操做命令最小化   4、登錄用戶最小化   5、普通用戶受權最小化   6、文件目錄權限設置最小化,禁止隨意建立更改 linux優化   1、創建普通帳號,能夠刪除無用的帳號,平時管理電腦只用普通用戶,禁止用root管理員 50%事故來自內部   2、處理SELINUX   3、處理防火牆   4、精簡開機自啓動服務 sshd network crond rsyslog sysstat   5、linux最小化安全理念 更改ssh服務遠程配置/etc/ssh/sshd_config(記得修改以前要備份)   a、能夠改變端口 (The remote system refused the connection.記得關防火牆,驗證有影響)   b、能夠PermitRootLogin 能夠改爲no   c、能夠Use DNS能夠改爲no   d、能夠限制ListenAddress 綁定內網卡ip   e、能夠將GSSAPIAuthentcation改爲no   改好後能夠比較,用diff或vimdiff比較   重啓服務後生效# /etc/init.d/sshd reload 平滑加載 PATH環境變量   臨時修改: export PATH="/tmp:$PATH"   永久生效: 修改/etc/profile使用source使得馬上生效 Linux 中文顯示設置#locale   字符集就是一套文字符號及編碼,目前Linux下的經常使用字符集:/etc/sysconfig/i18n #source生效   #sed -i 's#LANG="en_US.UTF-8"#LANG="zh_CN.GB18030"#' /etc/sysconfig/i18n     a、GBK:定長,雙字節,不是國際標準     b、UTF8:非定常,1-4字節,普遍支持   字符集:設置LANG=zh_CN.UTF-8 並在ssh客戶端設置一致   #echo $LANG 顯示當前字符集
設置Linux服務器時間同步   [root@c64 test]# date -s "2016/04/25 01:31"
  Mon Apr 25 01:31:00 CST 2016   [root@c64 test]# hwclock #query and set the hardware clock (RTC)   Fri 22 Apr 2016 02:01:31 AM CST -0.189935 seconds   -w  將當前系統時間寫入hw時間   在生產中5到10分鐘作時間同步   同步互聯網時間ntpdate time.nist.gov並寫入crond   [root@test85 ~]# ntpdate s1a.time.edu.cn 北京郵電大學ntp.stju.edu.cn 設置history歷史記錄   默認1000 相對來講越少越安全   #history -c清空歷史記錄   #history -d 數字,清除那一行   #export HISTSIZE=10 臨時控制當前歷史記錄回滾數   #export HISTFILESIZE=10 臨時控制歷史記錄文件的命令數量變量cat ~/.bash_history 設置登錄超時時間,配置文件/etc/profile (source生效) #export TMOUT=10 (可寫入到profile) 調整服務器文件描述符(配置文件/etc/security/limits.conf,從新登錄後生效)   文件描述符是一個簡單的整數,用以標明每個被進程所打開的文件和socket   [root@test ~]# ulimit -a 查看當前的一些shell資源限制信息   core file size (blocks, -c) 0   data seg size (kbytes, -d) unlimited   scheduling priority (-e) 0   file size (blocks, -f) unlimited   pending signals (-i) 3805   max locked memory (kbytes, -l) 64   max memory size (kbytes, -m) unlimited   open files (-n) 1024   pipe size (512 bytes, -p) 8   POSIX message queues (bytes, -q) 819200   real-time priority (-r) 0   stack size (kbytes, -s) 10240   cpu time (seconds, -t) unlimited   max user processes (-u) 3805   #這個值是由系統本身算出   virtual memory (kbytes, -v) unlimited   file locks (-x) unlimited
文件描述符
  #ulimit
-n查看當前數量,調整方法以下   #ulimit -n 65535設置當前有效 (可放到rc.local)   修改配置文件從新登錄後生效#echo '* - nofile 65535'>> /etc/security/limits.conf 調整最大用戶進程數 [root@localhost home]# ulimit -u 3805 * soft nproc 1024==>3805 root soft nproc unlimited 調整內核參數文件/etc/sysctl.conf 修改後#sysctl -p生效 說明:本優化適合apache,nginx,squid多種等web應用,特殊的業務也可能須要略做調整 # vi /etc/sysctl.conf net.ipv4.tcp_fin_timeout = 2 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_keepalive_time =600 net.ipv4.ip_local_port_range = 4000 65000 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.route.gc_timeout = 100 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.core.somaxconn = 16384 net.core.netdev_max_backlog = 16384 net.ipv4.tcp_max_orphans = 16384 #如下參數是對centos5.4 iptables防火牆的優化,防火牆不開會有提示,能夠忽略不理。 net.ipv4.ip_conntrack_max = 25000000 net.ipv4.netfilter.ip_conntrack_max = 25000000 net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 180 net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait = 120 net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait = 60 net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 120 另外,在此優化過程當中可能會有報錯: 15.8版本上 error: "net.ipv4.ip_conntrack_max"is an unknown key error: "net.ipv4.netfilter.ip_conntrack_max"is an unknown key error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_established"is an unknown key error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_time_wait"is an unknown key error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_close_wait"is an unknown key error: "net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait"is an unknown key 這錯誤多是你的防火牆沒有開啓或者自動處理可載入的模塊ip_conntrack沒有自動載入,解決辦法有二 一是開啓防火牆, 二是自動處理開載入的模塊ip_conntrack #modprobe ip_conntrack #echo "modprobe ip_conntrack">> /etc/rc.local 26.4版本上 error: "net.nf_conntrack_max"isan unknown key error: "net.netfilter.nf_conntrack_max"isan unknown key error: "net.netfilter.nf_conntrack_tcp_timeout_established"isan unknown key error: "net.netfilter.nf_conntrack_tcp_timeout_time_wait"isan unknown key error: "net.netfilter.nf_conntrack_tcp_timeout_close_wait"isan unknown key error: "net.netfilter.nf_conntrack_tcp_timeout_fin_wait"isan unknown key 這錯誤多是你的防火牆沒有開啓或者自動處理可載入的模塊ip_conntrack沒有自動載入,解決辦法有二,
   一是開啓防火牆, 二是自動處理開載入的模塊ip_conntrack #
modprobe nf_conntrack #echo "modprobe nf_conntrack">> /etc/rc.local 36.4版本上 error: "net.bridge.bridge-nf-call-ip6tables"isan unknown key error: "net.bridge.bridge-nf-call-iptables"isan unknown key error: "net.bridge.bridge-nf-call-arptables"isan unknown key 這個錯誤是因爲自動處理可載入的模塊bridge沒有自動載入,解決辦法是自動處理開載入的模塊 #modprobe bridge #echo "modprobe bridge">> /etc/rc.local (虛擬文件proc對應的東西,也能夠直接修改proc內文件,可是重啓失效) http://yangrong.blog.51cto.com/6945369/1321594 linux內核參數註釋與優化 http://oldboy.blog.51cto.com/2561410/1336488 CentOS(5.86.4)linux生產環境若干優化實戰 -------------------隱藏linux版本信息   # > /etc/issue   #vi /etc/motd 新文件,登錄時的提示信息 (也能夠區別測試或生產環境) 鎖定重要系統文件 (帳號口令相關文件 inittab等)   #chattr +i 文件名進行鎖定 (能夠將命令配置文件移動到其餘地方,防止黑客解除鎖定)   #lsattr   #chattr +a 只能加東西不能刪除   [root@c64 ~]# chattr +i /etc/passwd   [root@c64 ~]# chattr +i /etc/inittab   [root@c64 ~]# chattr +i /etc/group   [root@c64 ~]# chattr +i /etc/shadow   [root@c64 ~]# chattr +i /etc/gshadow 使用chattr命令後,爲了安全咱們須要將其更名   [root@c64 ~]# /bin/mv /usr/bin/chattr /usr/bin/任意名稱 grub加密 #/sbin/grub-md5-crypt 設置密碼 #password --md5 $1$.H4Sl$aw5mqwrqcm2XHDKKc4PH61 加到/etc/grub.conf中(/etc/grub.conf -> ../boot/grub/grub.conf)hiddenmenu與title中間 配置yum更新 配置文件/etc/yum.repos.d/CentOS-Base.repo   打開網站,找到對應版本,點擊幫助得到命令   #wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo   yum安裝軟件,默認獲取rpm包的途徑從國外官方源,改爲國內的源。   國內較快的兩個站點:搜狐鏡像站點、網易鏡像站點   法1:本身配置好安裝源配置文件,而後上傳到linux。   法2:使用鏡像站點配置好的yum安裝源配置文件 [root@c64 ~]# cd /etc/yum.repos.d/
[root@c64 yum.repos.d]# /bin/mv CentOS-Base.repo CentOS-Base.repo.bak
[root@c64 yum.repos.d]# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo


接下來執行以下命令,檢測yum是否正常 [root@c64 yum.repos.d]# yum clean all #清空yum緩存 [root@c64 yum.repos.d]# yum makecache #創建yum緩存
而後使用以下命令將系統更新到最新 [root@c64
yum.repos.d]# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY* #導入簽名KEY到RPM [root@c64 yum.repos.d]# yum upgrade -y #更新系統內核到最新 yum -y update 升級全部包,改變軟件設置和系統設置,系統版本內核都升級 yum -y upgrade升級全部包,不改變軟件設置和系統設置,系統版本升級,內核不改變
epel源   epel源http:
//fedoraproject.org/wiki/EPEL   http://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm   https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm   repoforge源 http://repoforge.org/use/ Linux基礎優化安全重點   1、使用普通用戶登陸   2、更改ssh端口,或者只監聽內網   3、同步時間   4、配置yum 更新源,從國內更新   5、管理selinux及iptables   6、調整文件描述符   7、定時清理垃圾文件   8、精簡開機服務   9、linux內核優化   10、更改字符集   11、文件鎖定   12、清空issuse信息   13、清除多餘的系統虛擬帳號   14、grub加密   15、禁ping  #不建議,能夠經過防火牆實現   16、升級漏洞軟件 yum upgrade 根據須要

 

linux目錄結構知識

linux基本文件結構:www.pathname.com/fhs 
# ls
  bin   dev  home  lib64       media  opt   root  selinux  sys  usr
  boot  etc  lib   lost+found  mnt    proc  sbin  srv      tmp  var

  /dev/ 設備目錄
  /etc  系統配置及服務配置文件、啓動命令的目錄
  /proc 顯示內核及進程信息的虛擬文件系統
  /tmp   臨時文件目錄,公共廁所,客廳。
  /home  普通用戶家目錄,大臣的家。
  /root  超級管理員的家目錄,皇宮。
  /var   變化的目錄,通常是日誌文件,cache的目錄。
  /usr   用戶程序,及數據、幫助文件、二進制命令等的目錄。
  /bin和/sbin和/usr/sbin/  用戶命令的目錄
http://yangrong.blog.51cto.com/6945369/1288072 目錄總結

重要linux目錄文件
 /etc/sysconfig/network-scripts/ifcfg-eth0                            網卡配置信息
/etc/resolv.conf  nameserver配置
/etc/hosts 一、開發,產品,測試等人員,用於經過正式的域名測試產品
二、服務器之間的調用能夠用域名(內部dns),方便遷移
/etc/sysconfig/network 主機名配置文件

/etc/fstab 設置文件系統掛載信息的文件,使得開機可以自動掛載分區或設備

格式:分區|設備|UUID|標籤    掛載點        文件系統類型     各項參數選項     是否dump   是否fsck
/etc/fstab 是啓動時的配置文件,實際 filesystem 的掛載是記錄到 /etc/mtab 與 /proc/mounts 這兩個文件當中的。
每次咱們在更新filesystem 的掛載時,也會同時改動這兩個文件
#blkid   顯示磁盤分區與UUID對應信息

/etc/profile
/etc/profile.d/
全局環境變量,對全部用戶有用
.bashrc文件(在用戶的家目錄下) 環境變量的編輯,只對當前用戶有用

登錄式shell執行順序/etc/profile-->/etc/profile.d/*-->~/bash_profile-->~/.bashrc-->~/etc/bashrc

非登錄式shell執行順序 ~/.bashrc-->/etc/bashrc-->/etc/profile.d/*

/etc/redhat-release 操做系統版本
/etc/issue 發行版本註記,能夠清空
/etc/passwd  系統帳號文件
/etc/shadow  系統帳號密碼文件
/etc/group    組帳號文件
/etc/gshdow   組帳號密碼文件

系統帳號文件
系統帳號密碼文件
組帳號文件
組帳號密碼文件
/etc/sudoers visudo配置
/usr/local 通常存放自編譯軟件,編譯指定此目錄
/usr/src 內核源代碼存放目錄,源代碼存放位置
/var/log/
/var/log/messages   系統日誌,自動輪詢按周,由rsyslog控制
/var/log/secure     安全日誌, ssh鏈接日誌
系統日誌,自動輪詢按周,由rsyslog控制
安全日誌, ssh鏈接日誌
/proc
cat /proc/loadavg      #<==負載(系統繁忙程度top,uptime)
cat /proc/meminfo    #<==內存信息
cat /proc/cpuinfo       #<==cpu信息
cat /proc/mounts      #<==掛載信息
cat /proc/interrupts   正在使用的中斷,和曾經有多少箇中斷
 
/etc/inittab 設定runlevel級別
/etc/init.d/ 包含系統各類服務的啓動和中止腳本
/etc/rc.d/rcN.d N爲1到6,是對應於不一樣runlevel下起不一樣的服務,這些目錄下都是些符號鏈接,S或K後面的數值是個優先級,這個優先級使用chkconfig來維護,例如# vi /etc/init.d/network
#! /bin/bash
# network       Bring up/down networking
## chkconfig: 2345 10 90
Centos7的字符集配置文件爲/etc/locale.conf   
Centos7以前的字符集配置文件爲/etc/sysconfig/i18n  

#yum install kde-l10n-Chinese

#yum -y groupinstall chinese-support

    


















































掛載設備 (mount掛載和fstab問題,NFS網絡文件系統掛載時,網卡未起就加載fstab了,因此此種建議放在rc.local)   
1、格式化設備 (測試建立loop 空設備dd if=/dev/zero of=dev/sdb1 bs=4096 count=100)   2、掛載 如需開機掛載,寫入fstab (也能夠將掛載命令寫入到rc.local)(測試mount -t ext4 loop,natime,noexec /dev/sdb1 /目錄)   3、可以使用mount -a掛載全部 fstab加載錯誤解決方法:   1.輸入root密碼以單用戶方式登陸系統.   2.從新加載根分區: #mount -o remount,rw /   3.編輯加載項: #vi /etc/fstab   4.用此命令校驗全部的加載項: #mount -a 這個命令實際上能夠避免因爲打字錯誤引發沒法加載錯誤。   5.沒有問題的狀況下,重啓系統 讓一個程序開機啓動的方法   1、chkconfig (/etc/init.d/下的服務)   2、/etc/rc.local 工做中做爲服務器的檔案文件,可做爲規範。註釋、備份

 

CENTOS6開機流程詳解

  1、加載BIOS硬件信息,根據設定取得第一個可開機引導設置,如:光驅、硬盤、網絡、usb,若是硬盤爲第一引導
  2、讀取硬盤中MBR的boot loader(即grub、Lilo等程序)
       硬盤的0柱面、0磁頭、1扇區稱爲主引導扇區(也叫主引導記錄MBR)。它由3部分組成:主引導程序、硬盤分區表DPT和硬盤有效標誌magic number(55AA)16*4+446+2=512
      注:硬盤默認一個扇區大小512字節,其中
        第一部分:主引導程序(boot loader)佔446字節,主引導程序,它負責從活動分區中裝載並運行系統引導程序
        第二部分:分區表(DPT),佔64字節,硬盤中分區有多少以及每一個分區大小都記錄在其中,每一個分取消項長16字節
        第三部分:MBR有效表示位:佔2字節,固定爲55AA,若是這個標誌位0xAA,就認爲這個是MBR
        GRUB(Grand Unified Bootloader)是一個來自GNU項目的多操做系統啓動程序   
3、依據boot loader的設定(grub),到引導分區加載Kernel,Kernel會開始偵測硬件並加(ramdisk)載驅動程序   4、在硬件驅動成功後,Kernel會主動執行init程序,從inittab中取得run-level信息   5、init執行/etc/rc.d/rc.sysinit,進行初始化:網絡、時區、mount、主機名、激活swap、加載mod等設定   6、init執行run-level下各個服務並啓動(script)   7、init執行開機後自動運行腳本/etc/rc.local文件   8、init執行虛擬終端機控制程序mingettty來啓動login程序,等待用戶登陸

 

 

 CENTOS6開機流程詳解systemd

init啓動兩個缺點:
  啓動時間長,init進程是串行啓動,依次啓動各個進程
  啓動腳本複雜,init只是執行啓動腳本,無論其餘事情,腳本須要本身處理各類狀況,使得腳本變得很長

Systemd解決了兩個缺點,設計目標是爲系統的啓動和管理提供一套完成的解決方案。可是體系龐大,很是複雜。

centos7啓動過程:systemd初始化進程服務採用了併發啓動機制,開機速度提高
  bios開機自檢
  進入啓動菜單,加載系統內核
  內核進行初始化
  啓動初始化進程


systemd與System V init的區別以及做用

System V init運行級別 systemd目標名稱 做用
0 runlevel0.target, poweroff.target 關機
1 runlevel1.target, rescue.target 單用戶模式
2 runlevel2.target, multi-user.target 等同於級別3,不包含NFS
3 runlevel3.target, multi-user.target 多用戶的文本界面
4 runlevel4.target, multi-user.target 等同於級別3
5 runlevel5.target, graphical.target 多用戶的圖形界面
6 runlevel6.target, reboot.target 重啓
emergency emergency.target 救援模式
 

#rh7前
  #init N    #改變當前運行界別
  #runlevel   #查看當前運行級別

#rh7
  #systemctl get-default   #查看系統默認運行級別
  # systemctl set-default multi-user.target    #設置運行級別
  rm '/etc/systemd/system/default.target'
  ln -s '/usr/lib/systemd/system/multi-user.target' '/etc/systemd/system/default.target'
  # systemctl isolate 級別   #切換運行級別 

 

systemctl管理服務的啓動、重啓、中止、重載、查看狀態等經常使用命令

System V init命令(RHEL 6) systemctl命令(RHEL 7) 做用
service foo start systemctl start foo.service 啓動服務
Service foo restart systemctl restart foo.service 重啓服務
Service foo stop systemctl stop foo.service 中止服務
Service foo reload systemctl reload foo.service 從新加載配置文件(不終止服務)
Service foo status systemctl status foo.service 查看服務狀態
loaded 單元配置文件已經處理
active(running) 服務運行正常
active(exited)成功完成一次性配置
active(waiting)運行中,等待事件
inactive
enabled 隨機啓動
static 沒法啓用,但能夠由某一啓動單元自動啓動

     

systemctl設置服務開機啓動、不啓動、查看各級別下服務啓動狀態等經常使用命令

System V init命令(RHEL 6) systemctl命令(RHEL 7) 做用
chkconfig foo on systemctl enable foo.service 設置開機自動
chkconfig foo off systemctl disable foo.service 開機不自動啓動
chkconfig foo systemctl is-enabled foo.service 查看特定服務是否爲開機自啓動
chkconfig --list Systemctl list-unit-files --type=service 查看各個級別下服務的啓動與禁用狀況


  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  

 












 

經常使用systemctl命令
  systemctl        查看全部單元狀態
  systemctl --type=service    查看服務單元狀態
  systemctl status sshd –l    查看某服務單元狀態
  systemctl is-active sshd
  systemctl is-enabled sshd
  systemctl list-unit-files –type=service
  systemctl --failed –type=service

 

tar解壓打包 #tar zcvf ect.tar.gz /etc
#tar tf etc.tar.gz   查看文件
--exclude=文件      文件排除
-X                 exclude from listfile
-C                 指定目錄 
#find /etc/ -type f | xargs tar zcvf name.tar.gz
#tar zcvf etcfile.tar.gz `find /etc -type f`
#find /etc/ -type f | tar zcvf name.tar.gz   錯誤
#find /etc/ -type f -exec tar zcvf name.tar.gz {} \;錯誤

tar使用相對路徑和絕對路徑的區別
[root@test85 test]# find /home/test/ -name "access*" | xargs tar zcvf accessA.tar.gz
[root@test85 test]# tar tf accessA.tar.gz 
home/test/access_www_2016-04-11.log
home/test/access_www_2016-04-14.log
[root@test85 test]# find ./ -name "access*" | xargs tar zcvf accessB.tar.gz  
[root@test85 test]# tar tf accessB.tar.gz  
./access_www_2016-04-11.log
./access_www_2016-04-14.log




查看文件有多少行
#wc -l 統計行數
#cat -n /etc/service | tail -1
  -l, --lines
              print the newline counts
  -L, --max-line-length
              print the length of the longest line
  -c 字節數,即文件大小 -m沒中文的話相同
  -w 單詞數


index node詳解

  #ls -li    i==inode  文件在磁盤的惟一標識(即index node)linux讀取文件首先要讀取到這個索引節點,相等於書的目錄
[root@test01 home]# ls -lhi
  39     drwxr-xr-x.           3     root root 4.0K   Apr 27 00:57   aaamulu
  23     -rw-r--r--.           1     root root  134   Apr 26 15:24   aaa
 inode  文件類型權限位 點selinux相關  文件的硬鏈接數 屬主 屬組  文件大小   修改時間    文件名
 
磁盤格式化後   第一部分是inode  第二部分是block
  inode存放文件的屬性(除文件名,還包含指向文件實體的指針功能),inode是有大小的,格式化後沒法更改,因此格式化時能夠指定大小
  inode包含文件的元信息,具體來講有如下內容:
    * 文件的字節數
    * 文件擁有者的User ID
    * 文件的Group ID
    * 文件的讀、寫、執行權限
    * 文件的時間戳,共有三個:ctime指inode上一次變更的時間,mtime指文件內容上一次變更的時間,atime指文件上一次訪問的時間。
    * 連接數,即有多少文件名指向這個inode
    * 文件數據block的位置,文件實體的指針


dumpe2f命令
   - 查看ext2/ext3/ext4 filesystem information
  #dumpe2fs /dev/sda3 | grep "Inode size"  查看inode大小


#df -i 可查看每一個分區inode使用量信息 #df -T查看文件系統類型
inode相關知識
  一、磁盤格式化後生成必定數量的inode和block
  二、inode是索引節點,存放文件屬性,指向文件實體block
  三、ext3/4 文件系統的block存放文件的實際內容
  四、inode是塊存儲空間。c6非boot分區默認大小256字節,c5默認128Bytes  
  五、inode是一串數字,不一樣文件對應得inode在文件系統中惟一  
  六、inode相同,互爲硬連接文件   
  七、block大小通常爲 一、二、4k 引導分區通常爲1k
  八、一個文件被建立後至少要佔用一個inode和一個block  
  九、若是文件很大,佔用多個block,若是不多,佔用一個,剩餘就浪費
  十、mkfs.ext4 -b 2048 -I 256 /dev/sd? 格式化時指定,通常不必
      非boot分區,ext4  block:4096  inode:256
[root@test80 home]# dumpe2fs /dev/sda1 | grep -i "Inode size"  (grep -i 不區分大小些)
dumpe2fs 1.41.12 (17-May-2010)
Inode size:               128 boot分區
[root@test80 home]# dumpe2fs /dev/sda2 | grep -i "Inode size"
dumpe2fs 1.41.12 (17-May-2010)
Inode size:               256

block相關知識
  一、磁盤讀取數據是按block爲單位  
  二、一個文件可能佔用多個block,讀取一個就是一次I/O
  三、若是要提高磁盤io性能,儘量一次讀取數據儘可能的多  
  四、一個block只能存放一個文件內容
  五、因此block不是越大越好,大文件通常設置block大點,小文件多的小點,若是設置成4k,文件都是0.1k的,大量浪費空間


案例:系統提示文件系統滿 df -h 發現沒滿
  解答:可能inode滿了  可df -i查看
  企業工做郵箱臨時隊列/var/spool/clientqueue這裏很容易被大量小文件佔滿  只有安裝列sendmail纔會有這目錄   centos5.8默認安裝列sendmail   centos6 postfix也有郵件隊列目錄/var/spool/postfix/maildrop
  服務關掉也不行
  手動清理後寫定時任務
  #find /var/spool/clientqueue或/var/spool/postfix/maildrop -type f | xargs rm -rf

文件名
存放在上級目錄的block,刪除文件就是修改上級目錄的block

連接========================================================================================================================

    一、硬連接     #ln       源文件   目標文件
    二、軟鏈接     #ln  -s   源文件   目標文件
    (目標文件不能事先存在)

硬連接  經過索引節點來進行連接 ext2 3 4中。多個文件名指向同一個索引節點
      有多個硬連接的狀況下,刪除其中一個,不影響其餘幾個。只有全部的刪除時,文件被刪除(指靜態文件,即不被進程調用的文件)

硬連接知識小結
    1)具備同inode節點號的多個文件互爲硬連接文件(inode相同),硬連接其實就是文件的另外一個入口
    2)刪除其中之一,文件實體並未刪除,只有刪除源文件及所對應的硬連接文件,文件實體纔會被刪除
    3)刪除源文件及所對應的硬連接文件後,再存放新的數據佔用這個文件的空間或者磁盤fsck檢查的時候,刪除的數據會被系統回收
    4)能夠經過給文件設置硬連接文件,防止重要文件被誤刪除
    5)對於靜態文件(沒有進程正在調用的文件)來說,對應的硬連接數(i_link)爲0,文件就被刪除
    6)目錄的硬連接不能跨越文件系統

linux文件刪除控制的變量
    i_link文件硬連接的數量
    i_count 引用計數(有一個程序使用就+1)
    文件刪除的條件:i_link=0   and  i_count=0

新增硬盤步驟
    fdisk/parted
    mkfs -t ext4 /dev/sdb
    tune2fs -c -1 /dev/sdb1  設置不檢查
    mount -t ext4 -o defaults /dev/sdb 掛載點


案例 某httpd服務器(也驗證了硬連接文件刪除時被進程調用的狀況)
    acesslog 巨大,磁盤佔滿空間,刪除此文件後df -h 發現未釋放
    能夠重啓httpd 重啓解決


目錄的硬連接
    目錄不容許ln作硬連接,硬連接不容許跨文件系統
        以點開頭的文件爲隱藏文件
        新建立一個目錄會發現硬連接數爲2,是由於 .  即當前目錄   ..和上級目錄的inode相同
        你會發現有時目錄的inode數字挺大,是由於其下一級目錄..指向。

軟鏈接
    軟連接即符號連接,文件系統類型爲l。能夠理解爲一個文本文件,這個文件中包含有軟連接指向另外一源文件的位置信息內容(源文件的所在絕對路徑)
軟連接知識小結
    一、相似windows快捷方式
    二、軟鏈接相似一個文本文件,存放源文件路徑,指向源文件實體
    三、刪除源文件,軟鏈接依然存在,可是沒法訪問指向的源文件路徑內容了
  四、失效的時候通常是白字紅底閃爍提示
  五、軟鏈接和源文件是不一樣類型的文件,也是不一樣的文件,inode號也不一樣

目錄的軟鏈接生產場景
  一、編譯軟件時指定版本號(/usr/local/apache2.2.23),訪問時但願去掉版本號,能夠設置軟鏈接/usr/local/apache,全部程序都訪問/usr/local/apache。當軟件升級高版本後,只須要刪除連接文件刪除原先軟連接,重建新軟連接指向新版本目錄
  二、企業代碼發佈時(發佈php程序不須要重啓服務,須要把全部代碼傳到一個新的臨時目錄或者新的站點目錄,發佈時要麼一個mv,也能夠重建軟鏈接指向到這個新的臨時目錄或新的站點目錄)
  三、不方便移動目錄,就可使用軟鏈接



linux用戶管理=============================================================================================
  用戶的角色經過uid、gid識別
    用戶分爲三類
      一、超級用戶 root  uid=gid=0
      二、虛擬(系統)用戶 知足文件或程序運行的須要而建立,如nginx默認使用nobody,不能登錄,不能使用 nologin,uid範圍1-499
      三、普通用戶 uid  gid 從500開始

/etc/passwd文件
  gtms : x : 500 : 500 : : /home/gtms :/bin/bash
  帳號名  密碼佔位符  uid  gid  帳號說明   家目錄   登陸shell

/etc/shawdow文件(/etc/login.defs控制
  gtms:$6$ShZTB/rrxlSqkvw.OD/:17195:0:99999:7:::
  用戶名
  加密後的密碼:$6$ShZTB/rrxlSqkvw.OD/ 加密算法/salt隨機值/加密後的值,未設置時爲!!
  最近一次密碼更改時間: 從1970年算起
  密碼不能更改的天數:0表示隨時修改
  密碼最長使用天數:多少天必須修改,99999表示永不過時
  密碼過時前警告時間: 過時前多少天提醒用戶,默認7天
  密碼到期後保持活動的天數: 超過指定天數後,帳戶鎖定
  保留
chage  
  change user password expiry information
    -l username  查看用戶帳號密碼過時信息
    -d 設置最近一次更改密碼時間,0表示下次登陸時強制修改密碼
    -m 設置用戶兩次修改密碼之間的使用最小天數
    -M 設置用戶兩次修改密碼之間的使用最大天數
    -W 設置密碼過時警告天數
    -I 設置密碼過時幾天後,密碼失效
    -E 設置用戶過時時間,帳戶失效後沒法登錄
  #chage -m7 -M60 -W10 -I30 username 七天內不能改密碼,60天后必須改密碼,過時前幾天通知用戶,過時後30天禁止用戶登陸


useradd  (userdel刪除用戶,-r選項刪除主目錄,usermod屬性改變)
  語法: useradd username
    -u   uid 
    -d  主目錄 
    -g  初始組
    -G  附加組(逗號分)
    -s  指定shell
    -M  不創建家目錄
    -m  指定家目錄  
    -f  幾往後停權,指定在密碼過時後多少天即關閉該賬號
    -e  帳號過時時間
    -c  帳號描述
    -r  建立系統帳戶,沒有家目錄
usermod (groupmod)修改用戶信息
    -u uid 改變用戶ID 
    -g gid 改變初始組
    -G 指定附加組,可多個,可是會覆蓋原有附加組
    -a 追加附加組,必須和-G一塊兒用,-aG
    -md 家目錄遷移,移動用戶的家目錄到新的位置
    -d 指定家目錄新位置
    -c 修改用戶註釋信息
    -s 更改用戶使用的shell
    -l 更改用戶登陸名
    -L 鎖定用戶
    -U 解鎖用戶

finger 查詢用戶信息及登陸信息
chfn 修改用戶信息    
 
passwd   --stdin 從stdin讀入密碼
         -x 改密碼最小天數     
      -w距離過時前幾天提醒用戶
         -i過時後多少天禁用    其餘瞭解
#echo "123456" | passwd --stdin username

mkpasswd  隨機密碼生成(yum install expect)
# mkpasswd -l 15 -d 3 -c 5 -C 5 -s 2
2h3qoqSMR<"IY3c
  -l  長度
  -d  數字個數
  -c  小寫字符個數
  -C  大寫字符個數
  -s  特殊字符


建立用戶相關
  /etc/skel目錄       存放新用戶配置文件的目錄(建立新用戶即複製此目錄下的文件)
  /etc/default/useradd(#useradd調用這個配置,包括cp skel下的文件)useradd -D改變其中的參數
  /etc/login.defs(瞭解)mail路徑配置,密碼有效期,過時時間,最小長度 uid 受否建立家目錄 umask等的一些設置,通常沒需求去改

組帳號文件信息
  /etc/group  bin:x:1:mem  組名稱/密碼佔位/GID/附加成員(passwd中基本組)
  /etc/gshadow  bin:::  組名稱/組密碼/組管理員/附加成員    


# useradd -u 1000 panwei
# id panwei
 uid=1000(panwei) gid=1000(panwei) groups=1000(panwei)

# useradd -g panwei panwei1 #再也不建立panwei1組
# id panwei1
 uid=1001(panwei1) gid=1000(panwei) groups=1000(panwei)

# useradd -G panwei panwei2  #還會建立
# id panwei2
uid=1002(panwei2) gid=1002(panwei2) groups=1002(panwei2),1000(panwei)
#newgrp  groupname #所在組的其中一個組,臨時生效


非交互設置密碼
  # echo 123456 | passwd --stdin gtms
  Changing password for user gtms.
  passwd: all authentication tokens updated successfully.

centos6 passwd採用sha512加密方法
  123456 ->sha512->6$sq47y43q$QfCuJ9
  123456 ->sha512->(隨機值) 6$sq47y43q$QfCuJ9
  驗證 123456 +隨機值-> sha512 ->6$sq47y43q$QfCuJ9

# stat aaa   查看文件狀態
  File: `aaa'
  Size: 134             Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d    Inode: 47          Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-04-27 15:55:14.209951619 +0800   訪問時間 find  -atime
Modify: 2016-04-27 15:55:14.218953040 +0800    修改時間  find  -mtime
Change: 2016-04-27 16:18:15.025953046 +0800    包含modify,權限,屬主等屬性find -ctime


用戶查詢相關命令
  id      username
  w       Show who is logged on and what they are doing.
  who     show who is logged on
  whoami  print effective userid
  last    登錄記錄show listing of last logged in users
  lastlog  reports the most recent login of all users or of a given user







Linux系統文件權限體系=====================================================================================
-->除ugo的rwx權限外,另外的特殊權限位 t  T   s  S   X  +

linux普通文件的讀、寫、執行權限說明
    可讀r  表示能夠讀取文件內容
    可寫w  表示能夠新增、修改內容(若是沒有r,那麼vi沒法編輯,若是強制編輯形成數據丟失,可是能夠echo追加
    可執行x 表示具備執行文件的權限
            一、文件自己要能執行
            二、普通用戶同時還具有r權限(即能讀到內容纔可執行)
            三、root均可執行
特別提示:刪除文件,修改文件名等的權限是受父目錄的權限控制,和文件自己無關

linux目錄的讀、寫、執行權限說明
    可讀r:   表示具備瀏覽目錄內文件的權限,可ls,可是不能cd進目錄。若是沒有x權限,ls能夠看到文件名,可是會提示無權訪問權限。
         若是ls -l列表,全部的屬性會帶有問號,也會提示無權訪問目錄下的文件,可是能夠看到文件名
    可寫w:   表示具備增長、刪除或修改目錄內的文件名(通常指文件名)的權限(須要x權限配合)
    可執行x:  表示具備進入訪問目錄的權限,可是沒有r沒法列表,沒有w沒法新建和刪除。

網站文件和目錄權限,安全臨界點
    d   755  root   root
    f   644  root   root

UMASK  (/etc/bashrc)
    UMASK控制用戶建立目錄和文件的權限
    默認root umask  0022   建立目錄用777減,默認文件用666減
    默認user umask  0002   建立目錄用777減,默認文件用666減
=>對於文件,若是umask有奇數,減法作好後須要在奇數位上加1。即 022和032建立的文件權限相同

setuid 和setgid
  當執行命令時,能夠擁有這個命令對應屬主的權限(例如/usr/bin/passwd),普通用戶修改密碼臨時獲得執行權限
  [test@test01 ~]$ ls -l /usr/bin/passwd
  -rwsr-xr-x. 1 root root 30768 Feb 22  2012 /usr/bin/passwd (若是s位原來沒有x,則s會是大寫)

suid知識小結針對命令和二進制程序
  一、用戶或屬主對應的權限位x位上若是是s,即設置列suid,若是s位原來沒有x,則s會是大寫
  二、做用是讓普通用戶能夠以root(或其餘)用戶角色運行只有root(或其餘)用戶帳號才能運行的程序或命令(注意和su和sudo管理的權限)
  三、問題:但願某個用戶可以得到刪除本來無權刪除的文件
    a、sudu受權  b、給rm命令設置suid c、設置上級目錄權限
  四、僅對二進制命令有效,不能用在shell等相似腳本文件,二進制命令還須要有x配合
  五、只在執行過程當中有效
  六、雙刃劍,比較危險。

sgid知識總結
  一、與suid不一樣的是,sgid既能夠針對文件也能夠針對目錄
  二、sgid是針對用戶組權限位修改的
      sgid僅對二進制命令程序有效
      二進制命令或程序須要可執行權限
      執行程序的任意用戶能夠得到該命令執行期間所屬組的權限

    
u+s  以擁有文件的用戶身份執行  無影響
g+s  以擁有文件的組身份執行   在目錄中最新建立的文件將其全部者設置爲與目錄的組全部者相匹配
o+t  無影響           對目錄具備寫權限的用戶僅可刪除其擁有的文件,而沒法刪除或強制保存到其餘用戶所擁有的文件  


crond定時任務==============================================================================
  getfacl  顯示文件訪問控制列表
  setfacl  設置文件訪問控制      通常沒啥用
        -m  modify
        -x   remove
        -b   remove
        -R  rescursive

定時任務crond介紹
  crond是linux系統中用來按期執行命令或指定程序的一種服務或軟件。
  檢測頻率  每分鐘檢測,分鐘如下的解決不了,要麼使用第三方工具
或者自行寫腳本
  #/bin/bash
  while true
   do
     echo "i am gtms「
     sleep 1
   done


linux系統中定時任務調度的工做
    linux系統自身按期執行的任務工做(日誌文件/var/log/cron*)
        /etc/logrotate.d/syslog

#crontab -l  查看用戶的定時任務

linux系統下的定時任務  
  一、at    (服務名atd)  適合僅執行一次的定時任務
  二、crontab (服務名crond)   
  三、anacron 主要用戶非7*24小時開機的服務器準備,以天爲週期或系統每次開機後執行的任務工做,他會檢測停機時間應該執行,可是沒有進行的任務工做,並將該任務執行一遍
提示
  一、咱們全部的crond服務是運行的程序,而crontab命令是用戶用來設置隊則的命令
  二、crond服務是企業生產工做中經常使用的重要服務。at和anacron不多用
  三、幾乎每一個服務器都會用到crond服務

crond的使用(/var/spool/cron下生成對應用戶文件)
  usage:  crontab [-u user] file  (crontab命令加了suid所以普通用戶能夠設置本身的crontab)
        crontab [-u user] [ -e | -l | -r
        -e      (edit user's crontab)  ===vi /var/spool/cron/root
        -l      (list user's crontab)    ===cat /var/spool/cron/root
        -r      (delete user's crontab)
        -i      (prompt before deleting user's crontab)
        -s      (selinux context)

定時任務格式

分鐘(00-59)    小時(00-23)    日(01-31)     月(01-12)     周(0-7)   
crontab中特殊符號的含義
  *     表示任意時間,每的意思
  -      分隔符,表示時間範圍,區間段       00 17-19 * * * 天天17 18 19點
  ,     表示分隔時段                     30 17,18,19 * * * 天天17點30,18點30,19點30
  /n     每單位時間                       */10 * * * *  每10分鐘

cron運行條件
  一、chkconfig crond on
  二、ps -ef | grep crond | grep -v grep

舉例:
  30 3,12 * * * /bin/sh/scripts/my.sh        天天3點半,12點半
  30 */6 * * *  /bin/sh/scripts/my.sh        每6小時點半點時刻
  30 8-18/2 * * *  /bin/sh/scripts/my.sh      天天8到18點,每隔2小時的半點時刻
  30 21 * * *  /usr/local/apache/bin/apachect1 graceful  天天21點30
  45 4 1,10,22 * * /usr/local/apache/bin/apachect1 graceful   每個月1號10號22號 4點45分
  10 1 * * 6,0    /usr/local/apache/bin/apachect1 graceful   每週六,週日上午1點10分
  0,30 18-23 * * *                   天天18到23的每隔30分鐘(提示,最後一次執行任務時23點30分)
  00 */1 * * *                      每隔1小時的整點
  00 11 * 4 1-3                     每一年4月的週一到週三 天天11點    周和日儘可能不要同用
  * 23,00-07/1 * * *                 天天23到7點每分鐘     不規範,不對,分必定要定義

生產環境crontab專業實例
  例1:每分鐘打印一次本身的名字拼音到/server/log本身的名字命名文件
  * * * * * /bin/echo "gtms">>/root/gtms  


  例2:每週六週日上午9點和14點,執行一個腳本腳本要求打印當天日期
  00 09,14 * * 6,0 /bin/sh 路徑/腳本.sh  >/dev/null 2>&1 任務執行一次都會發給root,若是郵件沒開,郵件隊列小文件隊列堆積致使inode滿sendmail /var/spool/clientmqueue  postfix /var/spool/postfix/maildrop

書寫定時任務注意點
  一、爲定時任務規則加必要的註釋(習慣規範)
  二、定時任務命令或程序最好寫到腳本里執行
  三、cron中執行shell腳本任務前加/bin/sh,即命令的絕對路徑
  四、定時任務命令或腳本結尾加>/dev/null 2>&1 (&>dev/null,1>/dev/null 2>/dev/null)
  五、在指定用戶下執行相關的定時任務(普通用戶能解決的建議用普通用戶執行)
  六、生產任務程序不要隨意打印輸出信息
  七、定時任務執行的腳本要規範路徑(/server/scripts)
  八、配置定時任務規範操做過程 a、首先命令行測試成功 b、複製到腳本進行測試c、測試環境測試,再部署到正式環境
另外
  一、到目標內容的上級目錄打包
  二、打包的頻率是分,包名必須精確分
  三、確保命令執行正確,而後複製到腳本
  四、定時任務命令或程序最好寫到腳本執行
  五、測試腳本正確性(定時任務怎麼寫,命令行就怎麼測試)
  六、腳本測試好了,命令行的命令也要複製
  七、腳本路徑要有規範
  八、定時打包或處理其餘工做,不要屏幕輸出,能夠打到日誌文件裏

#vi data_tar.sh
cd /etc &&\
tar zcf /tmp/service_$(date +%F-%H).tar.gz ./services  (%若是不寫腳本,直接寫cron,%須要轉義)
進行測試/bin/sh  /server/scripts/data_tar.sh
#crontab-e
#註釋
00 */2 * * * /bin/sh  /server/scripts/data_tar.sh >/dev/null 2>&1

工做中調試定時任務的方法
  一、增長執行任務頻率調試任務(某些任務不能用於生產環境,沒有測試機會)
     代碼發佈:我的開發環境---辦公室測試環境---ID機房測試環境---IDC正式(分組,灰度發佈)
  二、調整系統時間進行任務調試(不能直接用於生產環境),通常5分鐘
  三、經過腳本日誌輸出調試定時任務
  四、(************>>/tmp/a.log  /dev/null 2>&1  )有了定向輸出就不用nul了
  五、注意環境變量致使的定時任務故障(注意java類,java環境應該在腳本中從新定義)
  六、經過crond日誌調試定時任務



案例:如何取得某文件的權限對應的數字,如-rw-r--r--爲644,要求使用命令取得644或0644這樣的數字
#stat /etc/hosts
  File: `/etc/hosts'
  Size: 158             Blocks: 8          IO Block: 4096   regular file
Device: 803h/2051d      Inode: 42          Links: 2
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2016-05-02 05:09:56.914938051 +0800
Modify: 2010-01-12 21:28:22.000000000 +0800
Change: 2016-04-12 07:33:12.820242336 +0800
  方法1、#stat /etc/hosts| sed -n '4p'| awk -F '[0/] '{print $2}''
  方法2、#stat /etc/hosts | awk -F '[0/]' 'NR==4 {print $2}'
  方法3、#stat /etc/hosts | sed -nr '4s#^.*\(0(.*)/-.*$#\1#gp'
  方法4、#stat -c  %a /etc/hosts  (man stat)

打包加時間(解析命令)
  #tar -zcf name-`date  +%F`.tar.gz /etc/
  #tar -zcf name-$(date +%F).tar.gz /etc 建議此種

命令編輯快捷方式ctrl+
a    切換到命令行開始    e    切換到命令行末尾    c 終止當前命令或腳本    d    退出當前shell
u    清除(剪切)光標以前的內容    k    清除(剪切)光標以後的內容
r    查找    y    粘貼        



linux系統網絡知識基礎================================================================================

DNS相關命令
nslookup  域名
   [root@node89 ~]# nslookup www.baidu.com
    Server:         202.101.8.18
    Address:        202.101.8.18#53
    Non-authoritative answer:
    www.baidu.com   canonical name = www.a.shifen.com.
    Name:   www.a.shifen.com
    Address: 115.239.211.112
    Name:   www.a.shifen.com
    Address: 115.239.210.27

dig 域名
    root@node89 ~]# dig www.baidu.com
    ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> www.baidu.com
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64556
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 0

    ;; QUESTION SECTION:
    ;www.baidu.com.                 IN      A

    ;; ANSWER SECTION:
    www.baidu.com.          172     IN      CNAME   www.a.shifen.com.
    www.a.shifen.com.       79      IN      A       115.239.211.112
    www.a.shifen.com.       79      IN      A       115.239.210.27

    ;; Query time: 26 msec
    ;; SERVER: 202.101.8.18#53(202.101.8.18)
    ;; WHEN: Mon Jan 30 18:48:10 2017
    ;; MSG SIZE  rcvd: 90

host 域名
[root@node89 ~]# host www.baidu.com
    www.baidu.com is an alias for www.a.shifen.com.
    www.a.shifen.com has address 115.239.210.27
    www.a.shifen.com has address 115.239.211.112



網關網絡相關命令
netstat  - Print network connections, routing tables, interface statistics, masquerade connections,and multicast memberships
      -r  Display the kernel routing tables.
        -l, --listening            display listening server sockets
        -n, --numeric              don't resolve names
        -p, --program       Show the PID and name of the program to which each socket belongs.-u
ifconfig  - configure a network interface
route    - show / manipulate the IP routing table
      #route add/del  default gw ip
      #route add -net 192.56.76.0 netmask 255.255.255.0 dev eth0
hostname  - show or set the system's host name
lsof    - list open files


網卡相關
單網卡多IP,別名ip,虛擬ip,重啓失效 #ifconfig eth0:1 192.168.0.222/24
輔助IP形式:keepalive高可用一直都是用的輔助IP,將來趨勢,重啓失效
#ip addr add 192.168.0.222/24 dev eth0:1
SO:寫到/etc/sysconfig/network-scripts/ifcfg-eth0

網絡及服務故障排查
ping  (icmp,linux 是否禁止icmp)
traceroute  域名   路由跟蹤
telnet 域名 80  不通 一、沒開或不存在2 防火牆3服務監聽端口不在鏈接的ip上 四、isp運營商默認不開端口,申請開通

抓包工具
  tcpdump
    tcpdump -n icmp -i eth0
  nmap
  windows:sniffer wireshark,科來網絡

案例
一、局域網某pc沒法上網(略)
二、網站打開慢
是否只是個案?
本身測試,若是一樣的問題
一、ping 不丟包的話,懷疑服務問題了(資源過載?)。若是丟包,機房帶寬不穩定?線路不穩定?嘗試ping百度
二、tracert 若是是客戶端到服務器之間的各個線路,讓機房配合查
三、telnet http端口、 curl 域名
四、硬件資源狀況
五、購買的帶寬是否滿了
六、內鏈外鏈  用軟件調試a、火狐firebug ,yslow b、le  httpwatch

集羣架構問題?
登錄數據庫,看是否有慢查詢語句show proceslist
存儲?IO? NFS負載?


網絡基礎須要必會的
  一、tcp/ip協議的三次握手和四次斷開過程
  二、http協議的工做原理
  三、機器沒法上網
  四、網站打開慢
  五、DNS解析原理
  六、OSI7層網絡模型
  七、如何查看端口對應服務名
  八、route如何添加一個網絡路由




===============================================================================
L027企業項目案例1-linux用戶權限集中管理方案-9節
L028企業項目案例2-linux用戶行爲日誌審計管理方案-5節
生產環境日誌審計解決方案
    所謂日誌審計,就是記錄全部系統及相關用戶行爲的信息,而且能夠自動分析、處理、展現(包括文    本或者錄像)
    方法一、經過環境變量命令及syslog服務進行所有日誌審計(信息太大,不推薦)
    方法二、sudo配合syslog服務進行日誌審計(信息較少,效果不錯)
    方法三、在bash解釋器程序嵌入一個監視器,讓全部被審計的用戶使用修改過的增長列監視器的特殊    bash程序做爲解釋程序。
    方法四、齊治的堡壘機:商業產品

方法二、sudo配合syslog服務進行日誌審計(信息較少,效果不錯)
    只記錄sudo用戶的操做(命令前加su就記錄)
    一、安裝sudo命令,syslog服務(centos爲rsyslog服務)
    [root@test01 ~]# rpm -qa | egrep "sudo|rsyslog"
    rsyslog-5.8.10-10.el6_6.x86_64
    sudo-1.8.6p3-19.el6.x86_64
    二、配置/etc/sudoers (visudo -c檢查語法)
    增長配置#echo "Defaults    logfile=/var/log/sudo.log" >>/etc/sudoers
    三、配置rsyslog 並/etc/init.d/rsyslog restart(好像能夠不用?)
    echo "local2.debug    /var/log/sudu.log">>/etc/rsyslog.conf"


提示:
一、linux系統的特性是將系統不用的物理內存緩存起來,所以721不是真實可用內存
二、系統真正系統可用內存是850
三、buffers爲寫入緩衝區,sync將緩衝區數據寫入磁盤
四、cache爲讀取緩衝區
五、磁盤是機械的,不管是寫入仍是讀取都太慢列。因此讀取和寫入都是用列緩存技術
六、門戶架構網站都會用緩存技術,來讓用戶寫入讀取儘量不涉及硬盤


Disk  磁盤  
Head  磁頭   
Sector 扇區  硬盤最小存儲單位,512字節
Track 磁道
Cylinder 柱面  Units 單元快  
Block 數據塊  操做系統讀取硬盤的時候,不會一個個扇區地讀取,這樣效率過低,而是一次性連續讀取多個扇區,即一次性讀取一個"塊"(block)。這種由多個扇區組成的"塊",是文件存取的最小單位。"塊"的大小,最多見的是1KB,即連2個 sector組成一個 block。  4K =8扇區
查看系統塊大小
RHEL6操做系統:
[root@test84 vitest]# tune2fs -l /dev/sda1  | grep "Block size"
Block size:               1024
RHEL7操做系統
[root@localhost ~]#xfs_info /dev/sda1 | grep size

Inode 索引節點


 


CHS結構體系的磁盤
比較古老的CHS (Cylinder/Head/Sector)結構體系. 由於好久之前,在硬盤的容量還很是小的時候,人們採用與軟盤相似的結構生產硬盤。也就是硬盤盤片的每一條磁道都具備相同的扇區數,由此產生了所謂的3D參數(Disk Geometry),便是磁頭數(Heads)、柱面數(Cylinders)、扇區數(Sectors)以及相應的3D尋址方式。
這種結構有問題:
之前老式的磁盤,每一個磁道的扇區都同樣,這樣外磁道整個弧長要大於內部的扇區弧長,於是其磁記錄密度就要比內部磁道的密度要小。最終,致使了外部磁道的空間浪費。

ZBR結構體系的磁盤
如今硬盤都採用這種技術:ZBR(Zoned Bit Recording)區位記錄        (Zoned  zōnd )
Zoned-bit recording(ZBR 區位記錄)是一種物理優化硬盤存儲空間的方法,此方法經過將更多的扇區放到磁盤的外部磁道而獲取更多存儲空間。


備份MBR(恢復反過來 通常不用)
#dd if=/dev/sda of=mbr.bin bs=512 count=1

文件系統是對一個存儲設備上的數據和元數據進行組織的一種機制
sas/sata硬盤文件系統選擇
一、reiserfs 大量小文件業務首選(100k之內)
二、xfs  有的門戶的數據庫MySql業務
三、ext4  視頻,流媒體,數據庫,小文件業務也可
centos5--ext3   centos6--ext4   centos7--xfs

補充
route命令
http://oldboy.blog.51cto.com/2561410/1119453
router add default gw  網關地址 (臨時生效) 放到rc.local有問題,重啓網絡就沒了
router add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1


rpm包查找相關網站
  http://rpmfind.net/
  http://rpm.pbone.net/
  http://www.rpmseek.com/index.html


擴展swap分區
  一、新建分區
  二、格式化sdb1分區爲swap格式
  三、#mkswap /dev/sdb1
    Setting up swapspaceversion 1, size = 96252 KiB
    no label,UUID=d6e96d3b-9d74-4eda-8bdf-387754dca90e
  四、#swapon /dev/sdb1
  五、設置開機自動掛載swap分區
    #vim /etc/fstab
    /dev/sdb1               swap                    swap    defaults        0 0
  >>說明:只有重啓才能生效,mount -a 沒法自動擴展swap分區的。
    #swapoff /dev/sdb1

RPM包管理
# rpm -q lrzsz    查詢rpm包是否被安裝過
# rpm -qa | grep lrzsz   查詢全部安裝的rpm包,一般使用grep過濾
# rpm -ql lrzsz     lrzsz的rpm包安裝了那些文件和目錄
# rpm -qf /usr/bin/rb    查詢rb文件是哪一個rpm包安裝
lrzsz-0.12.20-27.1.el6.x86_64
# rpm -pql lrzsz-0.12.20-27.1.el6.x86_64  預先查看軟件包將生成哪些文件和目錄
# rpm -pqi lrzsz-0.12.20-27.1.el6.x86_64  查看軟件包的做用
導入RPM-GPG-KEY,安裝rpm時,對rpm簽名進行驗證,安裝時再也不有nokey提示
# rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
驗證原理:非對稱加密,導入公鑰,驗證rpm中的簽名是不是對的



配置本地yum源
[c6-media]  區別各個不一樣的yum庫,必須惟一
name=CentOS-$releasever - Media    對yum庫的描述
baseurl=file:///media/CentOS/     repodata目錄所在目錄
        file:///media/cdrom/
        file:///media/cdrecorder/
gpgcheck=1     使用公鑰驗證rpm包的正確性
enabled=1      啓用
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6


安裝src.rpm源碼rpm包
# cat /etc/redhat-release
CentOS release 6.7 (Final)
# uname -a
Linux node84 2.6.32-573.el6.x86_64 #1 SMP Thu Jul 23 15:44:03 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux
# rpmbuild --rebuild lrzsz-0.12.20-27.1.el6.src.rpm         編譯成可執行二進制文件# ls /root/rpmbuild/RPMS/x86_64/lrzsz-0.12.20-27.1.el6.x86_64.rpm  lrzsz-debuginfo-0.12.20-27.1.el6.x86_64.rpm    生成目錄及rpm包# rpm -ivh /root/rpmbuild/RPMS/x86_64/lrzsz-0.12.20-27.1.el6.x86_64.rpm     rpm包安裝
相關文章
相關標籤/搜索