快照功能:記錄當前的硬盤的狀態(tài)。剛建快照時快照占用內存為0,標記了當前硬盤的存儲狀態(tài)。當虛擬機對快照標記的內容改寫時,會將改寫的內容存儲進快照,與未改寫的部分整合得到完整的快照。當快照標記的部分被完全改寫,那么快照存儲空間完整記錄了當時拍攝時的內存狀態(tài)。
延邊朝鮮族網站建設公司創(chuàng)新互聯建站,延邊朝鮮族網站設計制作,有大型網站制作公司豐富經驗。已為延邊朝鮮族近1000家提供企業(yè)網站建設服務。企業(yè)網站搭建\外貿網站制作要多少錢,請找那個售后服務好的延邊朝鮮族做網站的公司定做!
參數形式
第一種:參數用一橫的說明后面的參數是字符形式。
第二種:參數用兩橫的說明后面的參數是單詞形式。
第三種:參數前有橫的是 System V風格。
第四種:參數前沒有橫的是 BSD風格。
cat、more、less、head、tail命令的比較:
cat命令可以一次顯示整個文件,如果文件比較大,使用不是很方便;
more命令可以讓屏幕在顯示滿一屏幕時暫停,按空格往前翻頁,按b往后翻頁。
less命令也可以分頁顯示文件,和more命令的區(qū)別就在于: 支持上下鍵卷動屏幕、查找;不需要在一開始就讀取整個文件,打開大文件時比more、vim更快。
head命令用于查看文件的前n行。
tail命令用于查看文件的后n行,加上-f命令,查看在線日志非常方便,可以打印最新增加的日志。
一般模式:
編輯模式:
命令模式:
編碼
多行操作(列編輯模式)
插入:ctrl+v進入列編輯模式,上下移動光標選擇需要插入的位置,然后輸入大寫I,輸入需要文本,最后按esc鍵退出,就會發(fā)現文本會在選擇的多行中插入。
刪除:ctrl+v進入列編輯模式,上下移動光標選中需要刪除的部分,然后按d,就會刪除選中的內容。
①head:顯示文件頭部內容
②tail:輸出文件尾部內容
注意:用vim和vi修改內容會刪除源文件并生成新文件,所以tail -f會失效。需要用到
追加和覆蓋語句(或),才能被tail -f監(jiān)視到。
一般用于查看小文件
查看壓縮文件中的文本內容
例:
①more:文件內容分屏查看器
②less:分屏顯示文件內容,效率比more高
1、簡單讀取
運行腳本如下
測試結果為:
2、-p 參數,允許在 read 命令行中直接指定一個提示。
運行腳本如下
測試結果為:
echo [選項] [輸出內容] (輸出內容到控制臺)
輸出給定文本的sha256加密后的內容
①顯示當前時間信息
②顯示當前時間年月日
③顯示當前時間年月日時分秒
④顯示昨天
⑤顯示明天時間
⑥顯示上個月時間
需要注意的是取下個月的命令存在bug,執(zhí)行如下命令會得到21-10,但是正常應該得到21-09,需要注意
date -d "2021-08-31 +1 month" +%y-%m
⑦修改系統(tǒng)時間
⑧獲取當前時間戳
獲取秒時間戳: date +%s
獲取毫秒時間戳:$[ (date +%s%N) /1000000]
查看日歷
(1)查看當前月的日歷
(2)查看2017年的日歷
例:
對比gzip/gunzip,zip/unzip可以壓縮文件和目錄且保留源文件。
①zip:壓縮
②unzip:解壓縮
只能壓縮文件不能壓縮目錄,不保留原來的文件。
gzip 文件 (只能將文件壓縮為*.gz文件)
gunzip 文件.gz (解壓縮文件命令)
例: crontab -e
(1)進入crontab編輯界面。會打開vim編輯你的工作。
(2)每隔1分鐘,向/root/bailongma.txt文件中添加一個11的數字
*/1 * * * * /bin/echo ”11” /root/bailongma.txt
(3)可以用tail -f 目標文件來實施監(jiān)控追加的內容
查看日志
可以用tail -f /var/log/cron.log觀察
Cron表達式見文章:
ls [選項] [目錄或是文件]
cd [參數]
例: cd -P $(dirname $p1) ; pwd 先跳轉到文件的所在目錄,再打印$p1文件的實際路徑
概述
①cp(copy):只能在本機中復制
②scp(secure copy):可以復制文件給遠程主機
scp -r test.sh hxr@hadoop102:/root
③rsync(remote sync):功能與scp相同,但是不會改文件屬性
rsync -av test.sh test.sh hxr@hadoop102:/root
④nc(netcat):監(jiān)聽端口,可以實現機器之間傳輸文件。
nc -lk 7777 (-l表示listen,-k表示keep)
強制覆蓋不提示的方法:\cp
例:scp -r test.sh hxr@bigdata1:/root
例:rsync -av test.sh hxr@bigdata1:/root
例:
nc -lp 10000 nc_test.txt
nc -w 1 hadoop102 nc_test.txt
遠程登錄時默認使用的私鑰為~/.ssh/id_rsa
生成密鑰對
將公鑰發(fā)送到本機
將密鑰發(fā)送到需要登錄到本機的服務器上
修改密鑰的權限
遠程登陸
如果有多個節(jié)點需要遠程登陸,可以在.ssh下創(chuàng)建config并輸入
再次登陸
①正向代理:
②反向代理:
所謂“反向代理”就是讓遠端啟動端口,把遠端端口數據轉發(fā)到本地。
HostA 將自己可以訪問的 HostB:PortB 暴露給外網服務器 HostC:PortC,在 HostA 上運行:
那么鏈接 HostC:PortC 就相當于鏈接 HostB:PortB。
使用時需修改 HostC 的 /etc/ssh/sshd_config 的一條配置如下,不然啟動的進程監(jiān)聽的ip地址為127.0.0.1,即只有本機可以訪問該端口。
相當于內網穿透,比如 HostA 和 HostB 是同一個內網下的兩臺可以互相訪問的機器,HostC是外網跳板機,HostC不能訪問 HostA,但是 HostA 可以訪問 HostC。
那么通過在內網 HostA 上運行 ssh -R 告訴 HostC,創(chuàng)建 PortC 端口監(jiān)聽,把該端口所有數據轉發(fā)給我(HostA),我會再轉發(fā)給同一個內網下的 HostB:PortB。
同內網下的 HostA/HostB 也可以是同一臺機器,換句話說就是 內網 HostA 把自己可以訪問的端口暴露給了外網 HostC。
例: 比如在我的內網機192.168.32.244上有一個RabbitMQ的客戶端,端口號為15672?,F在我希望在外網上訪問固定ip的云服務器chenjie.asia的6009端口,通過跳板機192.168.32.243來轉發(fā)請求到192.168.32.244:15672,從而實現在外網訪問內網服務的功能,即內網穿透。
①在192.168.32.244上啟動RabbitMQ服務
②將chenjie.asia云服務器的私鑰復制到跳板機192.168.32.243的~/.ssh下,并重命名為id_rsa。通過如下命令看是否可以遠程登陸到云服務,可以登陸則進行下一步。
③修改chenjie.asia服務器的ssh配置文件 /etc/ssh/sshd_config ,允許其他節(jié)點訪問
然后重啟sshd服務
④在跳板機192.168.32.243啟動ssh反向代理
這個進程在關閉session時會停止,可以添加啟動參數 -CPfN
例:
以 root 身份執(zhí)行的程序有了所有特權,這會帶來安全風險。Kernel 從 2.2 版本開始,提供了 Capabilities 功能,它把特權劃分成不同單元,可以只授權程序所需的權限,而非所有特權。
例如:linux不允許非root賬號只用1024以下的端口,使用root啟動命令nginx,會導致nginx權限過高太危險。所以用setcap命令
sudo setcap cap_net_bind_service=+eip /bigdata/nginx/sbin/nginx
正確的關機流程為 :sync shutdown reboot halt
(1)sync (功能描述:將數據由內存同步到硬盤中)
(2)halt (功能描述:關閉系統(tǒng),等同于shutdown -h now 和 poweroff)
(3)reboot (功能描述:就是重啟,等同于 shutdown -r now)
(4)shutdown [選項] [時間]
安裝
yum install -y telnet-server telnet
ls -i 顯示文件的節(jié)點號
find -inum 節(jié)點號 -delete 刪除指定的節(jié)點即可刪除對應的文件
啟動一個服務: systemctl start postfix.service
關閉一個服務: systemctl stop postfix.service
重啟一個服務: systemctl restart postfix.service
顯示一個服務的狀態(tài): systemctl status postfix.service
在開機時啟用一個服務: systemctl enable postfix.service
在開機時禁用一個服務: systemctl disable postfix.service
注:在enable的時候會打印出來該啟動文件的位置
列出所有已經安裝的服務及狀態(tài):
systemctl list-units
systemctl list-unit-files
查看服務列表狀態(tài):
systemctl list-units --type=service
查看服務是否開機啟動: systemctl is-enabled postfix.service
查看已啟動的服務列表: systemctl list-unit-files | grep enabled
查看啟動失敗的服務列表: systemctl --failed
查看服務日志: journalctl -u postfix -n 10 -f
命令類似systemctl,用于操作native service。
添加腳本為服務(需要指定啟動級別和優(yōu)先級): chkconfig --add [腳本]
刪除服務: chkconfig --del [腳本]
單獨查看某一服務是否開機啟動的命令 : chkconfig --list [服務名]
單獨開啟某一服務的命令 : chkconfig [服務名] on
單獨關閉某一服務的命令: chkconfig [服務名] off
查看某一服務的狀態(tài): /etc/intd.d/[服務名] status
啟用服務就是在當前"runlevel"的配置文件目錄 /etc/systemd/system/multi-user.target.wants 里,建立 /usr/lib/systemd/system 里面對應服務配置文件的軟鏈接;禁用服務就是刪除此軟鏈接,添加服務就是添加軟連接。
su 用戶名稱 (切換用戶,只能獲得用戶的執(zhí)行權限,不能獲得環(huán)境變量)
su - 用戶名稱 (切換到用戶并獲得該用戶的環(huán)境變量及執(zhí)行權限)
echo $PATH 打印環(huán)境變量
設置普通用戶具有root權限
修改 /etc/sudoers 文件,找到下面一行(91行),在root下面添加一行,如下 所示:
或者配置成采用sudo命令時,不需要輸入密碼
修改完畢,現在可以用hxr 帳號登錄,然后用命令 sudo ,即可獲得root權限進行操作。
以azkaban用戶執(zhí)行引號中的命令
gpasswd -d [username] [groupname] 將用戶從組中刪除
gpasswd -a [username] [groupname] 將用戶加入到組中
用戶組的管理涉及用戶組的添加、刪除和修改。組的增加、刪除和修改實際上就是對 /etc/group文件的更新。
0首位表示類型 - 代表文件 d 代表目錄 l 鏈接文檔(link file)
三種特殊權限suid、sgid、sticky
例子:
變更文件權限方式一
例:chmod u-x,o+x houge.txt
變更文件權限方式二
例:chmod -R 777 /mnt/ 修改整個文件夾的文件權限
在linux中創(chuàng)建文件或者目錄會有一個默認權限的,這個默認權限是由umask決定的(默認為0022)。umask設置的是權限的“補碼”,而我們常用chmod設置的是文件權限碼。一般在/etc/profile 、~/.bashprofile 或者 ~/.profile中設置umask值。
umask計算
如root用戶的默認umask為0022(第一個0 代表特殊權限位,這里先不考慮),創(chuàng)建的文件默認權限是644(即默認666掩上umask的022),創(chuàng)建的目錄是755(即默認777掩上umask的022)。
對于root用戶的umask=022這個來說,777權限二進制碼就是(111)(111)(111),022權限二進制碼為(000)(010)(010)。
上面就是一個umask的正常計算過程,但是這樣實在是太麻煩了。我們使用如下的簡單的方法快速計算。
上面的這個方法計算是非常方便的, 為何得到奇數要+1呢?
文件的最大權限是666,都是偶數,你得到奇數,說明你的umask有奇數啊,讀為4,寫為2,都是偶數,說明你有執(zhí)行權限的。
就按照上面的umask=023為例,在計算其他用戶權限的時候6-3=3 ,6是讀寫,3是寫和執(zhí)行,其實應該是讀寫權限減去讀權限的得到寫權限的,相當于我們多減去了一個執(zhí)行權限。所以結果加1。
umask修改
如果想單獨修改某個文件夾的新建文件的權限,可以使用setfacl命令。
例:遞歸改變文件所有者和所有組 chown -R hxr:hxr /mnt
例:
在shell中的條件判斷語句格式為:
其中elif和else不是必須的,如果只需判斷一次,那么if...fi即可。值得注意的是if后面中括號[]中的語句[的后面和]的前面必須要有空格。
下面通過判斷大小和文件是否存在看一下判斷語句的用法:
-gt 大于 (greater than);
-lt 小于(less than);
-eq 等于(equal);
-ne 不等于(not equal);
-ge 大于等于(greater equal);
-le 小于等于(less equal)。
顯示所有的環(huán)境變量,如果你想獲取某個變量的詳細信息,使用 echo $VARIABLE_NAME .
Example:
whereis使用系統(tǒng)自動構建的數據庫來搜索可執(zhí)行文件,源文件和手冊頁面。
Example:
它在環(huán)境變量PATH指定的目錄中搜索可執(zhí)行文件。此命令將打印可執(zhí)行文件的完整路徑。
Example:
清除窗口上的內容。
列出您的文件。 ls 有很多選項: -l 列出“長格式”的文件,其中包含文件的確切大小,擁有該文件的人員,有權查看該文件,以及何時進行上次修改。 -a 列出所有文件,包括隱藏文件。有關此命令的更多信息,請檢查此鏈接。
Example:
創(chuàng)建或更新您的文件。
Example:
它可以在UNIX或Linux下用于以下目的。
顯示文件的第一部分(用空格移動并鍵入q以退出)。
輸出文件的前10行。
輸出最后10行文件。用于-f在文件增長時輸出附加數據。
將文件從一個位置移動到另一個位置。
filename1 文件的源路徑, filename2 是目標路徑。
將文件從一個位置復制到另一個位置。
filename1 文件的源路徑, filename2 是目標路徑。
刪除文件。在目錄上使用此命令會給您顯示一個錯誤: rm: directory: is a directory 。 為了刪除目錄,你必須傳遞 -rf 去遞歸刪除目錄中的所有內容。
比較文件,并列出他們的差異。
讓您更改文件的讀取,寫入和執(zhí)行權限。
壓縮文件。
解壓縮gzip壓縮的文件。
讓你查看gzip壓縮文件,而不需要gunzip它。
打印文件。
查看打印機隊列。
Example:
從打印隊列移除某些內容。
awk是處理文本文件最有用的命令。它一行一行地在整個文件上運行。默認情況下,它使用空格分隔字段。awk命令最常用的語法是
讓我們采取以下文件 /etc/passwd 。以下是此文件包含的示例數據:
所以現在讓我們從這個文件只獲取用戶名。 -F 指定在我們要基于哪個分隔字段。在我們的例子中 : 。 { print $1 } 意味著打印出第一個匹配字段。
運行上述命令后,您將獲得以下輸出。
有關如何使用 awk 的更多細節(jié),請查看以下鏈接。
查找文件內的文本。您可以使用grep搜索與一個或多個正則表達式匹配的文本行,并僅輸出匹配的行。
Example:
您還可以通過使用 -i 選項強制grep忽略單詞大小寫。 -r 可用于搜索指定目錄下的所有文件,例如:
-w 只搜索單詞。有關 grep 詳細信息,請查看以下鏈接。
告訴你一個文件中有多少行,多少單詞和多少字符。
Example:
7459 是行數, 15915 是單詞數, 398400 是字符數.
用于過濾和轉換文本的流編輯器。
example.txt
用連字符替換所有空格
使用"d"替換所有的數字
排序文本文件的行
example.txt
sort example.txt
隨機化一個排序的example.txt
報告或省略重復的行
example.txt
只顯示example.txt的唯一行(首先你需要排序,否則看不到重疊)
顯示每行的唯一項,并告訴我找到了多少個實例
從每行文件中刪除部分。
example.txt
顯示第2,7和9欄的空格作為分隔符
顯示一行文字
顯示 "Hello World"
用字母之間的換行顯示 "Hello World"
簡單的最佳文本格式化程序
example: example.txt (1 line)
將example.txt的行輸出為20個字符的寬度
翻譯或刪除字符
example.txt
把所有小寫字母變成為大寫
把所有的空格變成換行符
顯示文件的行數
example.txt
帶行號顯示 example.txt
打印匹配模式的行 - 擴展表達式(別名為:'grep -E')
example.txt
在其中顯示“Lorem”或“dolor”的行
打印匹配模式到的行 - FIXED模式匹配(別名為:'grep -F')
example.txt
在example.txt中找到具體的字符串'(Lorem | doloar)'
生成一個新的目錄。
執(zhí)行這個,從一個目錄轉移到另外一個目錄。
將你移動到主目錄。此命令接受可選的 dirname ,將你移動到該目錄。
告訴你你目前所在的目錄。
ssh (SSH client) 是一個用來在登錄到遠程機器并執(zhí)行的命令的程序。
此命令還接受 -p 可用于連接到特定端口的選項。
返回當前登錄用戶名。
允許當前登錄的用戶更改其密碼。
顯示您的磁盤配額。
顯示當前日期和時間。
顯示月份的日歷。
顯示當前的正常運行時間。
顯示誰在線
Displays information about user.
顯示內核信息。
顯示指定命令的手冊。
顯示磁盤使用情況。
顯示文件名中文件和目錄的磁盤使用情況(du -s只給出一個總數)。
列出您最后登錄的指定用戶。
列出您的進程。
使用您所提供的ID殺死(結束)進程。
用名稱殺死所有進程。
顯示當前活動的進程。
列出停止的或后臺工作的Job; 恢復在后臺停止的Job。
前臺化最近的Job。
Brings the most recent job in the foreground.
Pings主機并輸出結果。
獲取域的whois信息。
獲取域的DNS信息。
下載文件。
在本地主機和遠程主機之間或兩臺遠程主機之間傳輸文件。
從本地主機復制到遠程主機
從遠程主機復制到本地主機
此命令還接受 -P 選項可用于連接到特定的端口。
在bash中你將編寫第一行腳本文件,被叫做 shebang 。任何腳本中的這一行來確定腳本的執(zhí)行能力,如獨立的可執(zhí)行文件,而不是在終端中預先鍵入sh,bash,python,php等。
Example:
上面的一行創(chuàng)建一個變量str并給它賦值“hello world”。通過 $ 放在變量名的開頭來檢索變量的值。
Example:
像其他語言一樣,bash也有數組。數組是包含多個值的變量。數組的大小沒有最大限制。bash中的數組為零。第一個元素被索引為元素0.在bash中創(chuàng)建數組有幾種方法。以下給出了哪些。
Examples:
要在特定索引處顯示值,請使用以下語法:
如果沒有提供索引,則假定為數組元素0。要了解數組中有多少值,請使用以下語法:
Bash也支持三元條件。下面是一些例子。
檢查一些關于如何操作字符串的語法
Example:
當您運行上述示例時,該hello函數將輸出“world!”。上述兩個功能 hello 和 say 是相同的。主要區(qū)別是功能 say 。此功能打印其接收到的第一個參數。函數內的參數以與給腳本的參數相同的方式進行處理。
bash中的條件語句與其他編程語言相似。條件有許多形式,如最基本的形式是 if 表達式 then 語句,其中語句只有在表達式為真時執(zhí)行。
有時,如果條件變得混亂,所以你可以使用相同的條件 case statements 。
Expression Examples:
bash 中有三種不同類型的循環(huán)。 for , while 和 until .
for 語法:
while 語法:
until 語法:
bash_profile 可以通過運行后面的命令打開。 nano ~/.bash_profile
nano ~/.bashrc
source ~/.bashrc
cd hotellogs
您可以通過傳遞不同的選項來輕松地調試bash腳本bash。例如-n,不會運行命令并僅檢查語法錯誤。-vecho命令在運行它們之前。-x命令行處理后的echo命令。
Linux常用的命令可以分為以下幾類:安裝和登錄命令、文件處理命令、系統(tǒng)管理相關命令、網絡操作命令、系統(tǒng)安全相關命令、其它命令。
安裝和登錄命令:login、shutdown、halt、reboot、install、mount、umount、chsh、exit、last。
文件處理命令:file、mkdir、grep、dd、find、mv、ls、diff、cat、ln。
系統(tǒng)管理相關命令:df、top、free、quota、at、lp、adduser、groupadd、kill、crontab。
網絡操作命令:ifconfig、ip、ping、netstat、telnet、ftp、route、rlogin、rcp、finger、mail、 nslookup。
系統(tǒng)安全相關命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo ps、who。
其它命令:tar、unzip、gunzip、unarj、mtools、man、unendcode、uudecode。
Linux簡介
Linux,全稱GNU/Linux,是一套免費使用和自由傳播的類Unix操作系統(tǒng),是一個基于POSIX的多用戶、多任務、支持多線程和多CPU的操作系統(tǒng)。伴隨著互聯網的發(fā)展,Linux得到了來自全世界軟件愛好者、組織、公司的支持。
它除了在服務器方面保持著強勁的發(fā)展勢頭以外,在個人電腦、嵌入式系統(tǒng)上都有著長足的進步。使用者不僅可以直觀地獲取該操作系統(tǒng)的實現機制,而且可以根據自身的需要來修改完善Linux,使其最大化地適應用戶的需要。
Linux不僅系統(tǒng)性能穩(wěn)定,而且是開源軟件。其核心防火墻組件性能高效、配置簡單,保證了系統(tǒng)的安全。在很多企業(yè)網絡中,為了追求速度和安全,Linux不僅僅是被網絡運維人員當作服務器使用,甚至當作網絡防火墻,這是Linux的一大亮點。
1)使用less [file]?命令查看
2)[g]?跳到文件頭
3)[G]?跳到文件尾部
4)[/]?向下查找
5)[?]?向上查找
6)[n]?查找后找下一個
7)[N]?查找后找上一個
8)[b]?向上翻頁
9)[d]?向下翻頁
10)[ctrl+c]打斷當前操作
11)\q? q!退出當前操作
12)cd ..是返回上一層目錄, cd -是返回到上一次的工作目錄
如果當前目錄是 /usr/local
再執(zhí)行cd ..就是到 /usr
而執(zhí)行cd -就是到/
13)tail -f
14)ctrl+c退出tail
15)exit退出當前登陸的用戶名
16)less 進入文件
17)ll 展開
18)vim 編輯
19)alias 設置別名
20)cat 將某個文檔中的內容顯示出來
21)創(chuàng)建文件
touch 創(chuàng)建二進制文件? mkdir 創(chuàng)建文件夾? vi 創(chuàng)建文件
22)grep 檢索目標行命令
23)sudo su root 切換用戶
24)chmod 777? 修改權限
chown www-data:www-data 修改所屬用戶和分組