前言
在學習命令之前先學習我們該如何去學習linux 命令。
幾乎每一個命令都有參數,每個參數的含義是什么,我們一般也不是全部都能記住,所以我們必須有一個可以知道每一個命令下各個參數的含義的方法。
命令 --help 這個就是查詢每一個命令的使用方式和各個參數的使用說明。
舉例:mkdir --help
我們可以看到顯示的信息對mkdir 做了說明,對-p -m -v -z 這幾個參數也一一做了說明。
1. 文件和目錄
cd 打開文件夾的命令,通過cd命令我們可以自由的操作文件的切換。
cd /home 打開home文件夾
cd .. 打開上級目錄
cd ../.. 打開上上級目錄
cd ~ 打開自己的主目錄
cd - 打開上次訪問的目錄
ls 是查看當前目錄下的文件夾和文件的情況。
ls 查看當前目錄下的文件夾和文件
ls -l (ll) 查看當前目錄下的文件夾和文件的詳細信息。 ll 是ls -l 的簡寫
ls -a 查看當前目錄下的文件夾和文件包含隱藏文件
ls -lh 查看當前目錄下的文件夾和文件並且帶上文件的大小信息
ls *[j]* 查看當前目錄下的帶j的文件夾及文件夾里面的內容
pwd 顯示當前目錄的全路徑。
du -sh * 顯示當前目錄下的各個文件和文件夾的大小
mkdir 創建文件夾。
mkdir xxx 創建一個叫xxx的文件夾
mkdir -p xxx/xxx 創建xxx文件和xxx文件里面的xxx文件
mkdir bbb ccc 創建bbb和ccc兩個文件夾
touch 用於創建文件。
touch bbb.txt 創建一個bbb.txt文件
vi 用於編輯文件內容,vi 等同於 vim.
vi bbb.txt 進入文件bbb.txt,默認不能修改。 修改需要按下鍵盤“i”字母
文件底部會出現INSERT, 這個時候就表示可以輸入內容了。
i 在vi下表示進入編輯狀態。
輸入信息后,先按Esc推出編輯模式,然后輸入“:wq” 表示保存並退出。
:wq 表示保存並退出
:q 表示直接退出
:q! 表示強行退出
:set fileencoding=utf-8 設置文件編碼為utf-8(文件內容不會變化)
/字符串 表示查詢
這個時候再使用vi查看,就可以看到我們輸入的信息了。vi命令是我們最常用的命令,vi 下還包含大量快速操作文本的命令,有需要的自學。^-^!
rm 用於刪除文件和文件夾。
rm aaa.txt 表述刪除文件aaa.txt。 這個命令會給出一個提示是否需要刪除,選擇y就是刪除,選擇n 就是不刪除
rm -f bbb.txt -f 參數表示刪除文件的意思,這個時候刪除就不會有提示,直接刪除
rm -rf aaa -rf參數表示刪除文件夾及文件夾里面的全部內容
rmdir bbb 表示刪除文件夾,文件里面不能包含內容。
rm -rf * 刪除當前目錄下的全部文件和文件夾
mv 移動文件或文件夾,還有修改文件名的功能。
mv aaa.txt aaa 表示移動文件aaa.txt 到目錄aaa下面。
mv bbbb aaa 表示將bbbb文件夾移動到aaa下面。
mv aaa.txt bbb.txt 表示將文件aaa.txt改名成bbb.txt
cp 復制文件夾或者文件信息
cp aaa.txt bbb.txt 復制文件aaa.txt 的內容到bbb.txt,當bbb.txt 不存在的時候的會創建一個。存在會覆蓋,覆蓋會有提示。
cp -a /home/bbbb /home/aaa/ 復制文件夾到另外一個文件夾
cat 命令用於連接文件並打印到標准輸出設備上。
cat aaa.txt 查詢aaa.txt 文件內容,打印到輸出設備上
cat -n aaa.txt 給輸出信息編上行號。
tail 命令可用於查看文件的內容,有一個常用的參數 -f 常用於查閱正在改變的日志文件。
tail aaa.txt 顯示文件尾部10行信息
tail -f aaa.txt 顯示文件尾部10行信息,並且不斷更新信息,適合查詢程序運行中日志的打印情況,Ctrl + c 退出文件顯示
tail -f -n20 aaa.txt 顯示文件尾部20行信息,並且不斷更新信息,適合查詢程序運行中日志的打印情況,Ctrl + c 退出文件顯示
find 命令用來在指定目錄下查找文件。
find . -name "*.txt" 將目前目錄及其子目錄下所有擴展名是 txt 的文件列出來
find . -name "aaa.txt" 將目前目錄及其子目錄下所有aaa.txt的文件列出
find /home/aaa/ -name "aaa.txt" 將指定目錄及其子目錄下所有aaa.txt的文件列出
find / -user jar 將根目錄下屬於用戶jar的文件全部列出
find . -ctime -20 將目前目錄及其子目錄下所有最近 20 天內更新過的文件列出
file 該命令用於辨識文件類型
file aaa.txt 查看aaa.txt的文件的編碼,文件類型。
iconv 該命令用於轉換指定文件的編碼,默認輸出到標准輸出設備,亦可指定輸出文件。
iconv -f utf-8 -t gb2312 aaa.txt >bbb.txt 將aaa.txt文件內容復制到bbb.txt中並且將編碼從utf-8改成gb2312
2. 用戶、組
/etc/group 存儲當前系統中的用戶組信息
注意:
1.當該組內只有一個用戶,並且用戶名和組名相同時,在組列表中,包含用戶一列可以為空
2.系統中root分組的組編號一定為0
3.組號1~499為系統預留的組編號,一般是預留給系統安裝的軟件或者服務的編號,越早安裝的軟件或者服務的組編號約早。用戶手動創建的用戶組編號從500開始
4.組密碼占位符,無一例外,全部用x表示
/etc/gshadow 存儲當前系統中用戶組的密碼信息
注意:
1.如果組密碼處為“*” “!”或者為空時候,則該組沒有密碼
2.如果組管理者為空,則表示該組內所有成員都可以管理該組
/etc/passwd 存儲當前系統中所有的用戶信息
/etc/shadow 存儲當前系統中所有用戶的密碼信息
useradd 創建用戶。
useradd hu 創建一個名叫hu的用戶
在下面兩個地方可以看到我們的創建信息
1.會在/etc/passwd文件中添加xxx用戶的信息
2.會在/etc/group文件中添加一個名為xxx的用戶組信息
useradd -d /home/helloworld hu 創建用戶和用戶的home目錄
useradd -m hello 創建用戶和home文件夾,文件夾在當前路徑下新建
useradd -g root hello 創建用戶hello,並為其分配已經存在的組
usermod 修改用戶信息。
usermod -l huu hu 將hu用戶的名字修改成huu
usermod -u 888 huu 修改huu用戶的id
usermod -d aaa huu 修改用戶huu的home目錄
usermod -g root huu 修改用戶的主用戶組
userdel 刪除用戶信息。
userdel hu1 刪除用戶信息
在/etc/passwd文件中就看不到hu1用戶的信息
userdel -r huu 刪除用戶信息及用戶的home目錄信息
groupadd 創建一個用戶組。
groupadd hu 創建一個用戶組hu
groupmod 修改用戶組信息。
groupmod -n hu4 hu 修改用戶組hu3成hu4
groupdel 刪除用戶組信息。
groupdel hu4 刪除用戶組hu4
chgrp 修改所屬用戶組信息。
chgrp hello hu 將文件夾hu的所屬用戶組改成hello
chown 修改文件或者文件夾的所屬用戶和用戶組信息
chown hu2:hu2 hu 將文件夾hu的所屬用戶和用戶組改成hu2
chown hello hu 將文件夾hu的所屬用戶改成hello
su 切換用戶
su hu 切換成hu用戶
3. 權限
如圖所示:
文檔類型說明:
d - 目錄,例如上表檔名為『.gconf』的那一行;
- - 文檔,例如上表檔名為『install.log』那一行;
l - 連結檔(link file);
b - 裝置文件里面的可供儲存的接口設備(可隨機存取裝置);
c - 裝置文件里面的串行端口設備,例如鍵盤、鼠標(一次性讀取裝置)。
權限由rwx三個字幕表示,分別表示為可讀、可寫、可執行,如果沒有該權限,則用“ - ”表示,對於目錄來說,必須有x權限,否則無法讀取目錄內容
如果文件名前面有“ . ”,則表示這個文檔或目錄是隱藏的
chmod 修改文件或者文件夾權限。
chmod 777 hello 修改文件夾hello的權限,改成最大權限
rwxst r 讀權限; w 寫權限; x 可執行權限; s 執行文件時,擁有該文件所有者的權限; t 臨時擁有權限可讀可寫,但是都只能操作自己的文件,不能操作別人的文件。
-rw------- (600) -- 只有屬主有讀寫權限。
-rw-r--r-- (644) -- 只有屬主有讀寫權限;而屬組用戶和其他用戶只有讀權限。
-rwx------ (700) -- 只有屬主有讀、寫、執行權限。
-rwxr-xr-x (755) -- 屬主有讀、寫、執行權限;而屬組用戶和其他用戶只有讀、執行權限。
-rwx--x--x (711) -- 屬主有讀、寫、執行權限;而屬組用戶和其他用戶只有執行權限。
-rw-rw-rw- (666) -- 所有用戶都有文件讀、寫權限。這種做法不可取。
-rwxrwxrwx (777) -- 所有用戶都有讀、寫、執行權限。更不可取的做法。
操作權限的另外一種方式:
chmod u+w hello 給文件或者文件夾所屬用戶加上w權限
chmod g-r hello 給文件或者文件夾所屬用戶組去掉r權限
chmod a+x hello 給用戶,組,其他都加上x權限
root 用戶之所以可以再任何地方執行任何文件,就是/etc/sudoers 文件配置的。
/etc/sudoers
上圖可以看到有好幾種設置權限的地方。
4. 進程、端口
執行 top 命令會顯示下圖信息
PID 進程號
USER 進程所屬用戶信息
PR piriority,優先級,數字越小越優先被執行
NI nice,與priority相關,也是數字越小越先被執行
VIRT 占用虛擬內存的總量
RES 進程占用的物理內存
SHR 共享內存大小
S 進程狀態 R 運行狀態、S 睡眠狀態、D 不可中斷的睡眠狀態、T 暫停狀態、Z 退出狀態,僵死進程、X 退出狀態,進程即將被銷毀
%CPU CUP使用占比
%MEM 內存使用占比
TIME+ 進程累計使用cpu進行運算的時間
COMMAND 進程名稱
ps 命令用於顯示當前進程 (process) 的狀態。
ps -ef 查看全部進程情況(信息全)
ps -aux 與ps -ef 效果差不多
ps -axjfc 查看全部進程情況,進程名顯示簡稱
ps aux | grep tomcat 查詢用戶tomcat使用的全部進程情況
top 展示系統的當前狀態以及進程信息,並且定時刷新.
top -p 21481 查詢PID 等於 21481的進程詳情
top -H -p 21481 查詢PID 等於 21481的全部線程程詳情
top -u jar 查詢用戶為jar的進程詳情
因為top命令顯示的是動態結果:我們就會存在如下需求,能不能顯示結果按照內存大小排序,按照CUP使用情況排序等。
以下是交互命令:
按“h”或者“?”,會顯示幫助,如下
Z:改變顏色;B:加粗
t:顯示和隱藏任務/cpu信息;m:內存信息
1:監控每個邏輯CPU的狀況;
f:進入字段顯示配置模式,可增加或者移除顯示字段,按相應的字母新增或去除;o:進入字段順序設置模式,可配置顯示位置順序,按相應的字母往下移動,按“shift+相應的字母”往上移動 ---------常用
F:進入字段排序配置模式,可設置排序的字段;
R:正常排序/反向排序;
s:設置刷新的時間--------常用
u:輸入用戶,顯示用戶的任務
i:忽略閑置和僵死進程。這是一個開關式命令。
r:重新安排一個進程的優先級別。系統提示用戶輸入需要改變的進程PID以及需要設置的進程優先級值。輸入一個正值將使優先級降低,反之則可以使該進程擁有更高的優先權。默認值是10。
c:切換顯示命令名稱和完整命令行。
M:根據駐留內存大小進行排序。-------------常用
P:根據CPU使用百分比大小進行排序。-----------常用
H:顯示線程
kill 該命令用於刪除執行中的程序或工作.
kill 123456 殺死PID為123456的進程
kill -KILL 123456 強制殺死PID為123456的進程
kill -9 123456 徹底殺死PID為123456的進程
ss 該命令可以用來獲取socket統計信息。
ss -napt | grep 18910 通過進程號,查詢使用的端口號
圖中8080就是進程18910使用的端口號。
ss -lntpd | grep :8080 通過端口號查詢進程號信息
圖中18910就是端口8080使用的進程號。
netstat 因為已經全面被ss 命令替代,故這里直接跳過。
grep 命令用於查找文件里符合條件的字符串,經過配合其他命令一起使用,單獨使用較少。
grep jj *txt 查詢后綴為txt文件中出現jj的行信息並且打印到控制台。
grep -n '2019-10-24 00:01:11' *.log 查詢后綴為log文件中出現'2019-10-24 00:01:11' 的行信息,帶行號並且打印到控制台。
grep -e '^j' *.txt -e 是正則表達式查詢信息,^j 是首字母為j的意思。
5. 在線軟件下載安裝和刪除
yum( Yellow dog Updater, Modified)是一個在Fedora和RedHat以及SUSE中的Shell前端軟件包管理器。
yum list | grep zip 查詢當前系統是否已經安裝zip
yum install zip 安裝zip,執行完該命令侯,zip命令就可以使用了,我們可以通過zip壓縮文件
yum update zip 更新軟件包
yum remove zip 卸載zip
6. 打包、解包
tar 該命令用於備份文件。
tar cvf aaa.tar aaa.txt 將aaa.txt 打包進aaa.tar 中
tar cvf aaa.tar bbb.txt aaa.txt 將多個文件打包進aaa.tar 中
tar tvf aaa.tar 列出aaa.tar包中的文件信息
tar xvf aaa.tar 解壓aaa.tar包中文件到當前目錄下
tar xvf aaa.tar -C dddd 解壓到指定目錄dddd下
文件后綴為.tar.gz,在linux 中更加常見。
tar zcvf aaa.tar.gz aaa.txt 將aaa.txt 打包進aaa.tar.gz 中
tar zcvf aaa.tar.gz bbb.txt aaa.txt 將多個文件打包進aaa.tar 中
tar ztvf aaa.tar.gz 列出aaa.tar包中的文件信息
tar zxvf aaa.tar.gz 解壓aaa.tar包中文件到當前目錄下
tar zxvf aaa.tar.gz -C dddd 解壓到指定目錄dddd下
zip 該命令用於壓縮文件。
zip -q -r dddd.zip /home/dddd/ 壓縮dddd文件夾到dddd.zip中
zip -q -r dddd.zip * 壓縮當前文件夾的全部內容到dddd.zip中
unzip 命令用於解壓縮zip文件。
unzip dddd.zip 解壓dddd.zip將文件放到當前目錄
unzip -l dddd.zip 查看壓縮包里面的文件列表
unzip dddd.zip -d ee 解壓文件到指定目錄ee下面,這個路徑也可以是絕對路徑
7. 遠程協議登錄
ssh 遠程登錄協議。
ssh -l root 149.225.47.23 linux服務中遠程連接ip為149.225.47.23 服務器,root是用戶,后面還會讓你輸入密碼,輸入正確密碼即可,退出通過exit 命令即可
免密登錄設置:
ssh-keygen -t rsa 生成秘鑰,按多次回車直到秘鑰生成
ssh-copy-id 149.225.47.23 連接遠程機器,第一次需要輸入密碼, 再次使用命令(ssh -l root 149.225.47.23) 就可以直接登錄,不需要密碼了
進入“.ssh”會生成以下幾個文件
authorized_keys:存放遠程免密登錄的公鑰,主要通過這個文件記錄多台機器的公鑰
id_rsa : 生成的私鑰文件
id_rsa.pub : 生成的公鑰文件
know_hosts : 已知的主機公鑰清單
如果希望ssh公鑰生效需滿足至少下面兩個條件:
1) .ssh目錄的權限必須是700
2) .ssh/authorized_keys文件權限必須是600
scp 命令用於 Linux 之間復制文件和目錄。
scp id_rsa.pub root@149.225.47.23:/root/.ssh/authorized_keys 將本系統文件id_rsa.pub,復制到 root@149.225.47.23:/root/.ssh/authorized_keys下面
scp id_rsa.pub 49.235.147.233:/root/.ssh/authorized_keys 復制文件還可以簡單的使用這個命令
scp -r .ssh 49.235.147.233:/root/ 加-r 復制整個文件夾。
8. 其他常用命令
> test.log 清空文件內容
sh 是shell命令語言解釋器,執行命令從標准輸入讀取或從一個文件中讀取. (簡單的說是執行可執行文件使用)。
sh d.sh 執行d.sh 文件
文件里面就寫了一句:
重點說明:當文件沒有執行權限我們才用sh。 有執行權限我們可以通過./ 來執行
./d.sh 執行d.sh 文件
date 用於顯示和修改時間的命令
date 顯示系統日期
date '+%Y-%m-%d %H:%M:%S' 顯示我們習慣的日期顯示方式
date '+%Y-%m-%d %H:%M:%S %A' 顯示我們習慣的日期顯示方式加上星期的顯示
date '+%Y-%m-%d %X %A %Z' 也可以顯示時間
date -s 05/08/20 修改系統年月日
date -s '2020-05-07 09:09:09' 修改系統年月日時分秒
ntpdate 同步時間命令。
ntpdate -u ntp.ntsc.ac.cn 同步時間與國家授時中心時間對齊(對齊時間之前需要先確認你的時區設置是否有問題)
hostname 顯示主機名。
hostname myzjm 修改主機名,重啟無效
set 查看當前進程中的變量。
clear 該命令用於清除屏幕。
locale 查詢linux系統編碼
export LANG=en_US.UTF-8 修改linux系統編碼
rz 上傳命令 一般默認沒有,需要下載安裝(yum install -y lrzsz)
選擇文件上傳即可。
rz -y 上傳的文件覆蓋已有文件
rz -b 使用二進制傳輸
sz 下載命令 一般默認沒有,需要下載安裝(yum install -y lrzsz)
sz 新建文本文檔.txt 下載新建文本文檔.txt 到你的電腦。
sz -b 新建文本文檔.txt 使用二進制傳輸下載。
ping 網絡主機發送ICMP回傳請求
ping baidu.com 一直請求和接收反饋信息。
ping -c 5 baidu.com 5次請求和接收反饋信息。
which 在環境變量$PATH設置的目錄里查找符合條件的文件
which mysqld 在環境變量$PATH設置的目錄里查找mysqld 文件。
ifconfig -a 查詢linux ip地址。
scp -P 55255 root@10.23.185.16:/usr/local/xxx.jar /usr/local/xxx.jar -- 55255 表示端口,如果是22端口可以不寫,root是用戶。
輸入密碼即可。
ln -s /usr/local/mysql/mysql-5.7.22-linux-glibc2.12-x86_64/bin/mysql /usr/bin -- 建立軟鏈接,就相當於windows 的創建快捷方式
passwd 用戶名 -- 登入root用戶,修改其他用戶的密碼。
大家在學習和工作中遇到的常用命令歡迎留言。。。。。。