linux study

虛擬機以及安裝linux系統

安裝新的virtualBox
    1. VB ---> new aaa--->...new disk...--->finish
    2. open aaa--->choose ubuntu-12.04-desktop-i386.iso --> ...click icon of install unbuntu --> about 30m, it'll restart --> 右下角圖標,點擊移除iso磁碟                  
    3. install guest addtional in ubuntu menu   // 共享,粘貼等重要功能
          安裝失敗:sudo apt-get install build-essential  // 安裝一堆開發工具gcc,make等
    4. 打開命令行:  ctrl + alt + t
使window與virtualBox互相粘貼:
    可直接在設置中修改:設置--〉一般--〉進階
設置VB與window互訪:
    設置--〉共用資料夾  全勾選後並不需要下面的操作
    ( mount   -t   vboxsf   win_folder   /mnt/windows      // write this to  /etc/rc.local  )
    訪問windows文件夾:ll /media/windowBag/
vdi文件的位置:設置--〉存放裝置
    F:\A_myTOP\ubuntu_12.04.1_null.vdi
    D:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso
vb擴容:用UUID或者vdi文件來設置
    (1) D:\Program Files\Oracle\VirtualBox>VboxManage list hdds 
         VBoxManage modifyhd    96fe8d50-7b14-4acf-a2f6-fd63ba59debd                    --resize 20480 
         VBoxManage modifyhd    E:\wiUCS_project\webRTC\dld_doc\ubuntu_12.0.4.vdi.vdi   --resize 20480  // 單位MB,so 20G
    (2)fdisk ,   mkfs,   mount 
         原來的擴張分區,導致新的磁盤空間無法在fdisk中顯示    // 刪除擴展分區後,再加入新分區,就 OK了
               fdisk /dev/sda;   m == menu ;    d == del;  n = new;  w==write;
         加入分區後要重啓後,系統才認得。 mkfs -t ext3 /dev/sda2   ;   mount  /dev/sda2  /home/ding/extented_disk
安裝新的VMware
VMware 配置
      v0 : bridge  v1 : host-only    v8 : NAT(多了DHCP,NAT server )
    新建aaa--->打開aaa,裝入CentOS-6.3-x86_64-bin-DVD1.iso後,安裝mini--->install vmware tools(自帶,互相粘貼等功能)
     1。需要修改網絡配置:改爲橋接後,/etc/sysconfig/network-script/ifcfg-eth0,另onboot=yes,MM_controlled=no
     2. 修改DNS: echo "nameserver 8.8.8.8" > /etc/resolv.conf
     3. 控制檯沒有滾動條,用shift+pageUp翻頁
通過filezilla訪問linux
     sudo apt-get install openssh-server   // 在VB中安裝ssh/ftp server ,上傳失敗時以root登錄
      sudo passwd root       // 修改密碼
進入其它linux系統
     sudo -s    // 只有root用戶,是所有機器上都有的角色;切換到root用戶後,以root登陸ssh服務器
      ssh  other's IP  //  ssh user@ip
文件傳輸
     安裝ssh server, 用sftp進行安全的文件傳輸。其實sftp就是ssh 的一個程式
    sftp [email protected]
    下載: sftp > get /remote/index.php  /local/
    上傳: sftp > put /local/Linuxgl.pdf /remote/fuyatao/
    遠端的命令: pwd命令可以幫您查詢遠程主機的當前路徑。查詢本機當前工作目錄 lpwd. // 本機都加l=local
訪問ftp服務器
     sudo ftp 10.5.90.10 //windows上的
        name: anonymous
     ftp > cd temp/Whiteboard/lynckia_bag
     ftp > ls
     ftp > get lynckia_jinwei.tar.gz newName_lynckia.tar.gz

安裝

在線安裝
    ubuntu:   apt-get install XXX XXX
      更新源:備份後搜索源來更新此文件 /etc/apt/source.list ; 再執行 sudo apt-get update
   centos:   yum -y install XXX XXX 
包安裝
    ubuntu:  dpkg -i XXX.deb   
   centos:  rpm -ivh XXX.rpm  // http://rpm.pbone.net/ ——這是一個給力的rpm包網站。
          (-i==install, v=詳細信息,h=hash, -e=erase刪除,-U=升級)   
安裝包的轉換rpm--->deb
    apt-get install alien    
    alien --scripts *.rpm    
檢查是否已經安裝
    centos:   rpm -qa |grep dhcp        
    ubuntu:  dpkg --get-selections | grep office    // 查找libreoffice是否卸載完成,否則用purge清除
                apt-get purge libreoffice*
更新ubuntu
     ubuntu--->system--->manager--->upgrade
mini版本安裝後用yum下載
     1。需要修改網絡配置:改爲橋接後,/etc/sysconfig/network-script/ifcfg-eth0,另onboot=yes,MM_controlled=no
    2. 修改DNS: echo "nameserver 8.8.8.8" > /etc/resolv.conf
    3. yum -y update
    4. yum search XXX;  yum install -y XXXX
yum建立本地源後進行安裝:
    Yum: Yellowdogy Updater Modified.軟件倉庫(repository)的源,可以是http,ftp站點,或者是本地的資源。
    createrepo這個軟件可以解決軟件之間的依賴。
    1. 在線下載nfs安裝包: 先修改配置文件vi /etc/yum.conf   另 keepcache =1
       yum install nfs-utils.x86_64     
   2. 默認從網上下載的安裝文件存放在:/var/cache/yum,把之下的nfs相關的rpm包全部拷貝到/mnt/nfsSrc/x86_64 
        cp  *.rpm  /mnt/nfsSrc/x86_64
   3. 創建軟件庫 
         createrepo /mnt/nfsSrc/
        vi /etc/yum.repo.d/base.repo  另 baseurl=file:///mnt/nfsSrc/
   4. 從本地源安裝  
        yum install nfs-utils.x86_64
配置安裝NFS
   直接在本地包中安裝:cd /mnt/nfsSrc/ ;   rpm -ivh *.rpm
   服務器: 
        配置: cat /etc/exports
          /mnt/nfsServer 10.50.141.0/24(ro,no_root_squash)   // 把某目錄給這些地址共享(只讀,root權限)
        啓動:/etc/init.d/rpcbind start   
           /etc/init.d/nfs start
      檢查:showmount -a
   客戶端:
       檢查服務器是否可用:  showmount -e 10.50.141.22   
      掛載到服務器: mount -t nfs 10.50.141.22:/mnt/nfsServer  /mnt/nfsClient -o nolock   
   未做的:
       yum install rpcbind(centos6)
      將nfs加入開機啓動項chkconfig nfs on
安裝配置jdk
    0. 查看已經安裝的版本:  java -version
    1. 安裝bin或者把得到的jdk包直接拷貝到某目錄
     2. 設置環境變量: centos: vi /etc/profile ;  source /etc/profile
          export JAVA_HOME=/usr/java/jdk1.7.0_45
          export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
          export PATH=$PATH:$JAVA_HOME/bin 
    3. 更新java版本 
          update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0/bin/java 60
         update-alternatives --config java
    4. 驗證:  java 
安裝eclipse
     ubuntu_eclipse_install      // install package
     安裝jdk:     sudo dpkg -i java-1.6.0-openjdk_1.6.0.0-2.7_i386.deb
     安裝eclipse: eclipse-linuxtools-helios-SR1-incubation-linux-gtk.tar.gz
     配置:        sudo cp -r /usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre  ./ 

linux環境變量

    顯示變量:   env; export; echo $WELCOME
    設置新的:   set env var; export WELCOME="hello";
    設置只讀:   readonly WELCOME  // (unset WELCOME) can't clear or modify
    僅當前shell(控制檯)有效:   PATH=$PATH:/home/myplugin   //  linux用冒號分隔,window用分號 
     export:
         1. 在控制檯中執行腳本時,控制檯是父shell, 腳本運行在子shell
        2. 環境變量僅僅在當前shell中有效;當用export導出變量時,變量將在子shell中有效
             so 當前和子shell(控制檯中執行的script)有效: 控制檯中執行 export PATH=$PATH:/home/temp    
    重啓後仍有效:  將export那句添加到配置文件
         centos:   /etc/profile          // all user  
                  /home/brian/.bashrc   // only user brian
                  source /etc/porfile   // 配置文件立即生效      
    將腳本的執行結果導入到當前的shell:    .   ./ding_exec.sh   or .   /var/psbl_env
       /var/psbl_env  導出某變量,這個結果導入到當前shell(控制檯)。所以在控制檯中執行的CLI(子shell)能夠通過 getenv() 得到該變量

啓動

1. 圖形界面和字符界面的切換
    alt+ctrl+F1-6 :  圖形->字符
    alt+ctrl+F7   :  字符->圖形
2. 啓動時指定界面: 3:字符  5:圖形
    vi /etc/inittab  // 0:停止, 1:單用戶, 2:多用戶無NFS, 4:無用, 6:重啓
3. 重新啓動: alt+ctrl+Backspace
4. 當前運行級別時間: who -r

網絡

顯示以及臨時修改
ifconfig  eth0:0 XXX  netmask XXX  [boardcast XXX]  // 在eth0上增加另一個IP
    ifconfig eth0:0 down   // 刪除eth0:0 
    ifconfig eth0 XXX netmask XXX  
route -n == netstat -rn
    route add -net XXX  netmask XXX  gw XXX  // route del -net...   
    route add default gw 192.168.1.1
hostname XXX

centos配置文件:                              
    修改IP:  /etc/sysconfig/network-scripts/ifcfg-eth0    //配置靜態的  BOOTPROTO=static
        1.拷貝VMware後,需要修改mac地址(在VM設置中), service network restart/reboot(卸載virtualBox可能網卡被佔用)
        2.增加一個網口,拷貝ifcfg-eth0後,修改重啓即可。
    DNS域名修改:  /etc/resolv.conf
   修改HOSTNAME:  /etc/sysconfig/network  
ubuntu配置文件: 
     修改IP: /etc/network/interfaces   // address 192.168.0.111... 
    重啓: sudo /etc/init.d/networking stop/start   
下載分享
     $ wget http://192.168.30.140/cgiPic/screen.bmp -O ./ttt.bmp  // 其他類似工具axel, lftp   
    $ curl http://192.168.30.140/CGI/Screenshot -u dld:dld  // 密碼       
    python -m SimpleHTTPServer 8080  // 在需要共享的文件夾下執行此命令。 通過http://ip:8080來訪問
sudo dhclient // client obtain ip via dhcp server      

信號

# kill -l                                                                          
               4) SIGILL       5) SIGTRAP
 6) SIGABRT      7) SIGBUS       8) SIGFPE            10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     16) SIGSTKFLT        18) SIGCONT     19) SIGSTOP     ...... 
信號0: // 退出shell。 ctrl+D       
1) SIGHUP   // 父進程結束,子進程收到。比如wget能捕獲SIGHUP信號,並忽略它,這樣就算退出了Linux登錄,wget也 能繼續下載。
2) SIGINT   // 來自鍵盤的終止: ctrl+C
3) SIGQUIT  // 從鍵盤退出: ctrl+\  
9) SIGKILL  // 無條件終止: kill -9 進程號
15) SIGTERM  // 程序正常退出時的處理   
17) SIGCHLD  // 子進程結束時,父進程會收到
20) SIGTSTP  // 暫停並掛起,在屏幕上顯示掛起的進程號: crtl+Z 

進程

後臺運行
    crtl+Z     // 暫停並掛起,在屏幕上顯示掛起的進程號     
    bg num     // 將暫停的程序放到後臺運行
    jobs       // 顯示後臺運行的程序
    fg num     // 將暫停的程序放回前臺運行
殺死
    通過名字    sudo killall/pkill node 
    通過關鍵字殺掉多個相同的進程  PIS=`ps -efww | grep "$1" | grep -v "grep" | awk '{print $2}'`   
                              echo ${PIS} | xargs kill  
查詢  
    ps -ef|grep careStr     // ps -aux  
    netstat -apn |grep :22  // t=tcp, n=num, p=program, l=listen, a=all
    lsof -i :22             // 根據端口號,誰在用22端口
讓終端忽略掛斷信號nohup: no hangup
    &             // 讓命令在後臺運行;  
    >file 2>&1    // 輸出到某文件,否者輸出到nohup.out
        nohup $DAEMON_SH $PROCESS_CVT > $CVT_HOME/log/cvt.log 2>&1 &  
打印進程中的線程個數  
    ps max -o %mem, lstart,lwp,pid,nlwp,cmd   // 打印進程的:開始時間,tID,pID, 線程的個數,命令名
         # ps max -o pid,nlwp,cmd |grep 3067
          3067  270 node erizoController.js  // 驗證: ls /proc/3067/task  通過進程的pid可以得到線程的tid
線程:linux中每個進程的最大線程個數  =  VIRT /  棧的大小
    VIRT:virtual memory usage ; 棧大小用 ulimit -a查看
    NTPL : linux中線程的實現的庫 # getconf GNU_LIBPTHREAD_VERSION 

系統

df -[ikmh] // 查看硬盤使用容量 h = human        
du -[acs bkm] 目錄  //查看檔案的容量
        du -sh /share/dld/            // 查看某個目錄的大小
        du --max-depth=1 -h  ./       // 查看一級目錄的大小
top -b -n 1    // 查看CPU,內存
      top裏顯示的所有的cpu加起來的使用率,你的機子是多核吧,你運行top後按大鍵盤1看看,可以顯示每個cpu的使用率,
從系統文件得到系統信息
    pid:      /proc/num               
   cmd:      /proc/xxx/cmdline   
   task:     /proc/xxx/task
   status:   /proc/xxx/status : short_cmd | state | ppid | time ...:
   route:    /proc/net/route   
   netstat:  /proc/net/tcp
   uid/gid:  stat("/proc/xxx", &sb)   getpwuid(uid)              

重定向

0輸入  1輸出  2錯誤
    ls >/dev/null   2>&1        // ls的標準輸出不顯示,標準錯誤同標準輸出一樣處理
    cmd < file                  // file作爲cmd的輸入 
    cmd 2>> file                   // 把 stderr 重定向到 file 文件中(追加)  
   cmd 1>file                      // 把標準輸出重定向到文件。 1> 等同於 >,   0< == <
   echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward   // 是在不影響原本 I/O 的情況下,將 stdout 複製一份到檔案
    cmd <  inputFile  >  outputFile // 
   cmd < &m                     // 把文件描述符m作爲標準輸入

常用命令

find . -type d -name "*.svn"|xargs rm -rf
find . -name "*.sh" -exec chmod +x {} \;         
        find . -ctime 1         // 一天內新增的目錄或檔案
         find . -newer .bashrc   // 比 .bashrc 還要新的檔案
         find . -user test       // 擁有者爲 test 的檔案 
                         find | grep "mux"         // 文件名含有mux的
                         find | xargs grep "mux"   // 文件內容含有...
                      find | wc -l     // 統計行數,即文件個數  
tar zxvf xxx.tar.gz -C newDir  // -C:在新目錄中解壓; -z zip; -x extract; -v verbose; -f archFile 
    tar zxmvf openssl-1.0.1e.tar.gz  // 可以用 -m參數來把文件的時間(modify time)設置爲當前系統的時間
          或者解壓後修改每個文件的時間  find . -exec touch -am '{}' \; 
    tar zcvf SMBIOS.tar.gz  SMBIOS/      // 壓縮 : -c creat/compansion
    tar jxvf FileName.tar.bz2            // 解壓bz2 :  -j  
    tar jcvf FileName.tar.bz2 DirName
        tar tvf xxx.tar.gz  // 查看包裏的內容                    
檔案與目錄管理: ls, cp, rm, mv, basename, dirname, 
    rm  -rf  XXX     // 刪除以及子目錄
     ll -trh         // t=time, r=reverse, h=human
    ll | grep "^d"   // 查看目錄,查看文件 grep "^-"
    basename /etc/fstab   //   fstab
    dirname /etc/fstab    //   /etc
    mkdir  -p XXXdir; touch XXXfile   // 創建目錄(-p 存在不創建)以及文件
檔案與目錄權限: chown, chmod, umask, chattr, lsattr, 
    chmod -R 777 XXX  //  -R: 子目錄也 
         r=4, w=2, x=1;  Usr/Group/Other/All ;   // 對於目錄, r=列出文件, w=增刪文件, x=進入目錄
     ls -l /usr/bin/passwd   -rwsr-xr-x    // 以lidanding用戶進入linux, 在執行時具有root權限 ; 若無x屬性,則爲大S
        suid = 4, guid = 2; Set UID ( SUID ) 的主要功能是在『某個檔案執行的期間具有檔案擁有者的權限』
         具有 sticky bit 屬性的該”目錄”下的檔案,其檔案或目錄只有檔案擁有者及 root 纔有權力刪除!
             755 + sticky bit = chmod 1755 file  // sticky == 1  
    文件屬性:只能添加,不可修改。。。 +i   // 文件不可改變  
          lsattr ../showCmd.c                   //  ------------- ../showCmd.c
         sudo chattr +i ../showCmd.c
         lsattr ../showCmd.c                   //  ----i-------- ../showCmd.c
         sudo rm -rf ../showCmd.c        //   rm: cannot remove `../showCmd.c': Operation not permitted             
文件中字符替換
    替換一個文件: cat file|sed 's/old/new/g' > file2
    批量替換:    sed -i "s/oldString/newString/g" `grep oldString -rl /path`  
                grep oldString -rl /path | xargs sed -i "s/oldString/newString/g" 
window,linux文件轉換(win: /r/n == unix: /n,   so need to del /r )     
       回車(return to head)== \r == ^M ==CR == 0D 
      換行(new line)      == \n == ^J ==LF == 0A                        
  在linux上檢查window文件是否非法:            
        cat -v filename // cat -A winFile 
       :set ff=unix   // 用vi來查看                               
  文件轉換win--->unix         
        dos2unix  winFile  unixFile     
        :%s/^m//g   // 用vi來刪除              
文件查看: cat, tac, more, less, head, tail, nl, od, 
     wc -l file    // -l 行數  -w 字數  -c 字符
     cut -b5-9 file   // 輸出文件的5-9行
     echo "a b c" | cut -d' ' -f 2  //   -d 分隔符  -f 第幾個域   結果:bc
    cat >> log.txt << ding   // 在log.txt中通過命令行輸入,以ding結束,否則以ctrl+D結束
     less xxx.c   // 可上下翻頁,可/Half 按 n 查找
     nl xxx.c   // == cat -n  顯示行號
     sudo od core-CLI-759-1331002286  // 查看二進制文件
查找文件或目錄: which, whereis, locate, find, 
    locate dld       // 記錄在數據庫文件中,所以先要同步 $ sudo updatedb
    whereis -b ls    // 也是數據庫,只找到執行檔?
     which ls         // 根據 PATH, 只找執行檔
# lsb_release  -a  // 查看是什麼linux系統以及版本  == cat /etc/issue
# uname -a         // 查看處理器,硬件平臺等
# file /bin/ls     // 查看文件屬性,文件類型
type -a pwd        // 查看命令類型,是否是shell builtin
# getconf LONG_BIT  // 查看系統的位數
cd /media/XXX     // enter linux CD 
多命令處理      
      find -type f | xargs dos2unix   // 批量轉換      
      tar   lastfile.tar.gz  `find . -mtime 1 -type f -print`   // 將 `命令執行的結果` 當做參數
      ls -l && pwd      // first is ok, then exec second
     cp 1.txt 2.txt || echo "fail to cp 1 to 2"     // first is fail, then second

文字文本處理

正則表達式
     // js中運用:用戶名只能: 字母 數字 _ ()
          var usern = /^[a-zA-Z0-9_\(\)]{1,}$/;
          !username.match(usern)          
    ^...$              // ^開頭  $結尾   . 點爲任意字符數字  ^$ 空行
        [Aa]\{2, 4\}       // A或a 出現2到4次 
        [^0-9\$]           // ^在這裏表示非,非數字或美元標識,
        [Dd|ld]\.          // Dld. dld. 
       以一個句點和兩個數字開始   ^\.[0-9][0-9]
       至少一個小寫字母   [a-z][a-z]* 
       日期格式d d - m m - y y y y   [0-9]\{2\}-[0-9]\{2\}-[0-9]\{4\}
       以t h e開頭行     ^[the]
       包含m a y大寫或小寫字母的行   [mayMAY]
       匹配任意行  [^.*$]
sed :以行爲單位,處理字串的增,刪,改
           sed [-nefr] [動作]  文件         // 動作:del, read, write, quit, print,          
             TLINE=`sed   -n   '/^exit 0$/='   $0`        // =行數   `反引號`  $0這個表示腳本文件
                sed   "1,${TLINE}d"   $0 >"${TMP_PATH}/wiucs.tar.gz"        // d刪除
                sed  -n  '1,$p'  a.txt                       // 打印1到最後一行;$表示最後一行
                sed  -n  -e  '/\$/'p  -e  '/\$/='  a.txt    // 打印最後一行,以及它的行號; =表示行數;-e 多個條件
                sed -i "s|\.\./wiucs-cvt|/opt/wiucs-cvt|" webmCvtServer.js
awk :以行爲一次處理單位,以字段爲處理單元,適用於數據庫表  
       awk    '條件類型1{動作1}    條件類型2{動作2}'    filename
        awk  '{print $0}'  data.txt    // 打印   $0 == 所有域,$2 == 第二列 
          awk  '{if($1~/34/)  print $0}'  data.txt   // ' { if() print } '
        awk  '$2 == "dld" {print $0}'  data.txt  //  ' ==  {print} '
        awk  'END  {print NR}'   data.txt         // NR == 行個數  NF == 域個數
          awk  -F/  '{print $NF}'  // 當前目錄名字,-F 設置域分隔符
grep  :以行爲單位,提取行中的字符串
       grep [-acinv]    '搜尋字符串'    filename
        grep -c "48" data.txt  // count: data.txt中有幾行包含48
        grep -n "48" data.txt  // num: 打印出行號以及行
          grep -v "48" data.txt  // 打印出不包含的行
          grep -E '1|73' data.txt   //擴展模式,正則表達式 查找含有1或者73的行
      ll |grep  '^d'    // 僅僅查詢目錄, grep '^[^d]'  查詢非目錄
      grep -r sys_getenv * // grep   根據文件的內容查找

shell

shell函數
    NAME="aa bb"
    functionA(){  // 
 	echo $1  // 這裏的$1是函數的參數
 	echo $2  // 這裏的$2是函數的參數 
    }
    functionA $NAME   $1  // 這裏的$1的是腳本的參數,結果: aa \n bb
    functionA "$NAME" $1  // 加引號後作爲整體傳入參數,結果: aa bb \n cc
     ./funcA cc :  結果如上
shell腳本做成命令
    chmod +x xxx.js
    sh xxx.js stop // 執行腳本 
    cd /usr/bin ; ln -s xxx.sh wiucs // 軟鏈接成命令
    wicus stop // 執行命令
語法
     num=2
      echo "this is ${num}nd"  // 結果:# this is 2nd,要帶括號,否則不認得numnd
    echo '$SHELL' = echo \$SHELL  // 輸出爲 $SHELL,  
      echo "$AA" == echo $AA // 輸出爲AA的值
    [ -x "file" ] || { echo "can't be exe"; exit 1; }     // -n 非空串  -z  空串 -x可執行 -f 文件
    [ "$var" = "$var2" ]  [ $# -lt 3 ] // 等於,
    if ...; then  // 用分號代表括號,簡寫elif,倒序esac, 結束done,列舉in
位置變量 :  
    $?  檢查腳本返回的狀態;
     $0  腳本的名字;
     $1  第一個參數;
     $*  所有的參數
     $#  參數的個數;  
     $$  processID 
常用
    USER='id -u'    // 用戶的id, root == 0.   `這個不是單引號,是左上角的那個反引號`                               
    read -p "yes or no?" ANSWER  // echo $ANSSER




 

 

磁盤管理: 分區 fdisk --> 格式化 mke2fs --> 掛載 mount
     fdisk -l     // 直接查看分區情況
         fdisk  磁盤  // enter
         m           // 幫助 manual
         p            // 查看 print

    系統最多支持4個主分區,爲解決分區不夠的問題,又產生了擴展分區(extended)的概念。
            這樣,系統最多可以有3個主分區,一個擴展分區。在擴展分區中,又可以再分爲多個邏輯分區,能從5分到16
    mke2fs /dev/fd0    // 格式化軟盤爲ext2:linux標準檔案系統,包括inode table(檔案的屬性以及內容的指針),block area(檔案的內容)
          -j          // ext3
         -b -i      // 修改 block, inode 大小
         -c -L     // 檢查, 標籤
    e2label  分區  label
    mount  -t ext2   /dev/sdb   /home   // 掛載  參數  誰  掛在哪裏 

          mount   -t nfs   -o nolock,rsize=1024,wsize=1024   XXXIP:/share   /home/ding     // 把網絡上其他用戶的共享文件夾,掛載到本地文件夾

          mount   //IP/winFolder    /linux/folder  -o username=wh1103028,passwd=wh118991!     // 把window下的文件夾,掛載到linux下。 

                   cat /etc/fstab  // 設定開機時即掛載的方式  # <file system> <mount point>   <type>  <options>       <dump>  <pass>

                           寫到 fstab(smbfs == cifs) :   //IP/VOIP    /home/.../voip   cifs   defaults,auto,username=admin,passwd=wh1103028!    0    0   
          -a -l -h -V  // 掛fstab中的, 顯示目前掛的 , 幫助, 版本
          mount -o remount,rw /    // 根目錄重新掛載爲讀寫
          unmount /dev/sda         // if 強制,退出目錄後執行,卸載後才能把磁盤移走

    切割與格式化硬盤:分區fdisk, 格式化mke2fs, e2label, mknod,
    檢查硬盤壞軌與數據同步化寫入:磁盤檢查fsck, badblocks, sync,
    關於軟盤開機片: 啓動mkbootdisk, 低格fdformat, 
    虛擬內存 Swap: swap partition, swap file, dd, mkswap, swapon, swapoff, 

VI

Vi有三種基本的工作模式:指令模式、文本輸入模式、行末模式。
      指令模式(Command Mode)   輸入 a、i、o >>>    文本輸入模式(Input Mode)
                              <<<按ESC進入        
      指令模式(Command Mode)   輸入 : 冒號>>>      末行模式(Last line Mode)
                                   <<<指令錯誤
  指令模式
          光標 :  光標移動同方向鍵  ( h 左    j 下   k 上   l 右)   ;    第一列的上,中,下(H M L)
          命令:   x(刪除當前光標字符) / X(刪除光標前的字符)    d(刪除一行) / D(刪除一行中從光標開始後面的字符)
               i(光標前添加字符) / I (行首插入)    a(光標後面添加字符) / A(行尾添加)       o(下方插入空行) / O(上方)
  末行模式
          顯示行號:   :set nu
         退出:      :wq   :q! (不保存)  :x
         查詢:      /hi (查找hi)    n(順序找下一個) / N(反序) 
         替換:  
  複製: 
          指令模式下:  複製3行/粘貼:3yy/p;    複製部分:v --->l------>y, p
         末行模式下:  1, 3  co 5  //1到3行復制到第五行; 命令:co, m, d,   // copy, move, delete
         指令+末行  :  用ma,mb,mc在指令模式下做標誌, 'a, 'b  m 'c  //  把a,b標記之間的行復制到c處
          多個文件之間的複製
             vi -o  1.sh  2.sh   或者  :sp 2.sh    //  ctrl + ww  == ^ww, 進行切換; sp == split


 

linux bin文件的製作: bin =  install.sh(安裝腳本) + xxx.tar.gz(安裝文件)

        cat install.sh  xxx.tar.gz > yyy.bin (因此,bin中的install.sh需要把它後面的二進制數據恢復成xxx.tar.gz,然後執行安裝過程)

        sed -n -e '1,/^exit 0$/!p' $0 > "${dir_tmp}/xxx.tar.gz" 2>/dev/null      //去掉第一行到"exit 0"間的數據,後面的數據保存爲xxx.tar.gz

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章