【程序員基礎篇】linux使用

linux

terminal

# 查看Ip
$ ifconfig en0
# 查找目錄
$ find (查找範圍) -name '查找關鍵字' -type d
# 獲取http response
$ curl url –o file  讀取文件內容到文件中
# 複製目錄
$ cp -r
# 創建軟鏈接
$ ln -s 源目標 目的目標
# 查看目錄下的全部軟連接
$ ls -l 目錄
# 查看日誌
$ tail -f access_log
# 解壓縮: z(具備gzip屬性);j(具備bzip2屬性);c(壓縮);x(解壓)
$ tar -z/j c/xvf 文件
# -C dir參數的做用在於改變工做目錄,其有效期爲該命令中下一次-C dir參數以前。
$ tar -xzf XXX.tar.gz -C 
# 查看端口號
$ netstat -an | grep 8080
$ ps -ef | grep <進程名>
$ lsof -i 4tcp:<port>
$ kill -9 <pid>
# 在當前目錄搜索帶'energywise'行的文件
$ grep 'energywise' *           
# 查詢命令
$ where expect
# 建立tmp目錄和其子目錄svntemp
$ mkdir -p /tmp/svntemp
# 使用ssh-keygen生成私鑰和公鑰: 參數 -t rsa 表示使用rsa算法進行加密
$ ssh-keygen -t rsa
# 輸出執行命令結果到文件中
$ [command(svn diff)] [file's filename] > [file's filename].diff
# 放入到剪貼板
$ cat file | pbcopy 
# 建立目錄並進入
$ mkdir [folder's name] && cd $_
# 不須要交互式命令
$ npm init -y

svn使用

在linux下完svn的都碰到過一個這樣的問題,怎麼一次性刪除該目錄以及子目錄下下全部.svn文件呢?遞歸刪除!
介紹兩種方法linux

  • find和exec結合
    find . -name "*.svn" -print -exec rm -rf {} ;
    作一個簡單說明
    -exec以後的rm -rf是命令以及參數,{}就是find的命令找到的結果集,;是必須輸入的
  • find和xargs結合
    find . -name "*.svn" | xargs rm -rf

bash

  • 每次修改.bashrc後,使用source ~/.bashrc能夠馬上加載修改後的設置,使之生效

切換shell的命令

$ chsh -s /bin/zsh
# 通常使用oh_my_zsh
$ git clone git://github.com/robbyrussell/oh-my-zsh.git ~/.oh-my-zsh
$ cp ~/.oh-my-zsh/templates/zshrc.zsh-template ~/.zshrc

ssh無密碼登陸

# 在Client機上生成公鑰
$ ssh-keygen -t rsa
# 到Server機user用戶的~目錄下
# 進入.ssh目錄下,檢查是否有authorized_keys文件,若是沒有,則建立一個名爲authorized_keys的文件
# 在authorized_keys文件中,加入Client的機生成的公鑰(即將Client機生成的id_rsa.pub文件的內容追加到authorized_keys文件中,注意:要單獨佔一行)

經過 ControlMaster 對 OpenSSH 進行加速,減小系統資源消耗

執行這個命令,成功登錄服務器後,客戶端與服務器創建了一個安全的 TCP/IP 鏈接。用戶每執行一次命令,就會有一個新的鏈接創建,並一直維持鏈接直到用戶退出。若是用戶有大量的鏈接請求,就須要創建並維持大量的 TCP/IP 鏈接,消耗用戶和主機的資源。git

OpenSSH 提供一個叫作 ControlMaster 的功能,能夠有效緩解這一問題。在使用 ControlMaster 後,ssh 與服務器創建一個 Master 鏈接,以後的全部鏈接均可以重用這一通道,也就是說無論有多少訪問請求,都只須要維護一個 TCP/IP 鏈接。github

如何開啓 ControlMaster

配置

ControlMaster 默認是關閉的,修改~/.ssh/config文件:算法

Host *
ControlMaster auto
ControlPath ~/.ssh/master-%r@%h:%p

其中,%r 是用戶名,%h 是遠程主機IP,%p 是端口,打開ControlMaster以後,一個ssh鏈接在後臺運行,建立一個本地套接字( controlpath 就是這個套接字的名字),之後本地再有 ssh 須要鏈接到遠端一樣的主機的時候,直接使用這個已經建立好的 socket 文件進行鏈接,不用再建立鏈接了,同理,也不須要再進行用戶身份驗證。shell

建立Master

運行 ssh -M -N -f user@1.2.3.4 以後,就會在 ~/.ssh 目錄下生成本地套接字文件:
srw------- 1 SYSADM Friends 0 Nov 3 01:23 master-user@1.2.3.4:22
其中 user 是個人用戶名,1.2.3.4 是服務器的 IP
這個第一個運行的 ssh 即爲 master ,其中 -f 表示在後臺運行,這個 ssh 自己的做用就是在後臺的一個守護進程,對鏈接上來的其它 slaver 的消息進行轉發,轉發給 sshd。npm

使用 Control Master 的好處

  • 減小系統資源消耗:
    能夠有效地減小 ssh 所產生的 TCP/IP 的數量,從多個減小到一個,達到節省系統資源的目的。
  • 加快訪問速度:
    普通非 control master 的訪問方式,客戶端都須要進行祕鑰交換、用戶受權等操做,而 Control Master 訪問方式,重用以前的鏈接,不須要進行進行祕鑰交換、用戶受權等操做,減小了對內存和 CPU 資源的使用。
  • slave 無需再手動輸入密碼:因爲 master 已經作了用戶受權的操做,全部的 salve 不須要在進行密碼的輸入或公鑰的驗證。
相關文章
相關標籤/搜索