參考: https://blog.csdn.net/zygblock/article/details/53384862
html
diff和patch是 版本控制 git 的不可缺乏的工具linux
diff 是用來比較 源文件( 目錄) / 和 目標文件(夾)的 差別, 一般是用來比較 文本文件的, 通常不用來比較 二進制文件git
diff的輸出 是一種 patch格式的, 能夠 把 輸出結果 重定向保存爲 foo.patch 文件 , 而後 供 patch命令 來使用, 因此, 一般 diff和 patch是 聯合使用的shell
patch 是 根據 patch文件( 包含差別列表的文件, 即 difflisting文件) 來將 舊文件 (源文件) -> 打補丁/ 升級 爲 新文件 (升級文件) 的程序bash
======================================工具
關於diff 主要是 要掌握它的 幾種 輸出格式:優化
製做 補丁文件: diff -u file.old file.update > difflisting
給源文件 打補丁: patch -i difflisting -b file.old
-b的做用是 原來的file.old將被打補丁, 同時 源文件被保存一個副本 file.old.orig
patch -i difflisting -o file.new file.old
-o 表示原來的文件被打補丁成爲 file.new, 而源文件 仍是被保存不變.操作系統
關於補丁的應用 參考: http://linux-wiki.cn/wiki/%E8%A1%A5%E4%B8%81%28patch%29%E7%9A%84%E5%88%B6%E4%BD%9C%E4%B8%8E%E5%BA%94%E7%94%A8
補丁(patch)的製做與應用
製做補丁時的選項: -r主要是對目錄應用的, 第歸裏面的文件和子目錄. -N : 是正確處理已經 應用過補丁的 文件 或 已經被 刪除 的文件 ;
應用補丁的 選項: -p num 主要是 指忽略仍是不忽略 目錄的層次,
-R 則是 取消打補丁
而 應用補丁或取消 補丁的 時候, 均可以 使用 輸入重定向的 方式: patch old_file < patch_file
.net
patch後, 舊文件將和 新文件 (更新後的文件) 徹底一致!版本控制
確實是這樣的!
可是 patch的主要目的, 並非 用來 給 1個文件來 打補丁的, 它主要是用來 給一個文件夾 中的不少文件 / 不少子目錄 來打補丁, 來進行升級的, 這個 纔是patch 的主要用途! 是linux用來升級的 主要手段 .也就是說, patch 主要是用來 給 linux等 進行升級的, 固然在版本控制中 也會用到!
Linux patch命令用於修補文件。 參考: http://www.runoob.com/linux/linux-comm-patch.html "patch指令讓用戶利用設置修補文件的方式,修改,更新原始文件。假若一次僅修改一個文件,可直接在指令列中下達指令依序執行。若是配合修補文件的方式則能一次修補大批文件,這也是Linux系統核心的升級方法之一。"
即: 一個補丁文件中, 能夠包含多個補丁, 每一個補丁中 包含 一個 補丁頭, 一個塊.....
==========================================
ls == echo * 來替換
install和cp的區別? 主要在與 處理 已經存在的文件和 正在 運行的 文件 時的差異上!
install 通常用在 makefile中, cp通常場合
cp是先將原來 的文件內容 清空, 而後寫入新內容
install 則是將原文件刪除, 從新建立一個新文件, 而後再寫內容.
所以, install不只能 更換句柄, 並且能夠設置 文件的新屬性, 能夠解決 若是目標文件正在運行 或 持續寫入內容的句柄 更換問題.
=========================
runlevel
init 3
ctrl+alt+f1~6, ctrl_alt+f78, 注意切換字符界面,是用ctrl+alt+功能鍵, 而不是 只用 alt + 功能鍵
https://wenku.baidu.com/view/b861ed9c69dc5022aaea00c2.html
target: 就是runlevel文件。
從 fedora16 開始 就再也不使用initab 而是使用target來配置啓動級別了,
multi-user.target, analogous to runlevel 3
graphical.target.
target:啓動的對象,啓動(服務的)對象
開發Systemd的主要目的就是減小系統引導時間和計算開銷
Systemd引入了並行啓動的概念,它會爲每一個須要啓動的守護進程創建一個套接字,這些套接字對於使用它們的進程來講是抽象的,這樣它們能夠容許不一樣守護進程之間進>行交互。Systemd會建立新進程併爲每一個進程分配一個控制組(cgroup)。處於不一樣控制組的進程之間能夠經過內核來互相通訊。systemd處理開機啓動進程的方式很是漂亮,和傳統基於init的系統比起來優化了太多。讓咱們看下Systemd的一些核心功能
查看linux機器是32位仍是64位的方法:
file /sbin/init 或者file /bin/ls
當登錄一個linux系統時,bash shell依次會從4個不一樣的地方啓動文件裏的讀取命令,順序是:
1: /etc/profile
2:$HOME/.bash_profile
3:$HOME/.bash_login
4:$HOME/.profile
/lib 系統級別,系統的lib /usr/lib 操做系統自帶的程序級別,二進制安裝包的lib