《linux就該這麼學——筆記》第2章 常用系統工作命令

正式開始學習

超級手法:重置root密碼

1.在終端輸入代碼,確定系統版本。

[root@localhost Desktop]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.0 (Maipo)

2.重啓電腦在引導界面按下e鍵,進入內核編輯界面,如下圖。
在這裏插入圖片描述
3、在linux16這一行的末尾,追加參數rd.break 按下ctrl+X執行修改 後內核
在這裏插入圖片描述
4、進入到系統緊急救援模式。依次輸入以下代碼:

mount -o remount,rw /sysroot
chroot /sysroot
passwd
touch /.autorelabel
exit
reboot

在這裏插入圖片描述
圖中紅箭頭是我輸入的代碼。這裏出現一個錯誤,可能是我設置的密碼過於簡單重複的原因。提示:The password ia a palindrome這個密碼是迴文。
reboot後重新進入系統。密碼修改成功!Ya!

RPM紅帽軟件包

RPM有點像Windows系統中的控制面板,會建立統一的數據庫文件,詳細記錄軟件信息並能夠自動分析依賴關係。使得原先非常煩瑣頭疼的軟件安裝問題,變得簡單而有效。

格式:RPM ·參數 軟件包名稱

參數 作用
-ivh 安裝軟件包
-Uvh 升級軟件包
-e 卸載軟件包
-qpi 查詢軟件描述信息
-qpl 列了軟件文件信息
-qf 查詢軟件屬於哪個RPM

YUM軟件倉庫

Yum軟件倉庫便是爲了進一步降低軟件安裝難度和複雜度而設計的技術。Yum軟件倉庫可以根據用戶的要求分析出所需軟件包及其相關的依賴關係,然後自動從服務器下載軟件包並安裝到系統。與手機裏的應用商店很類似。

格式:YUM 參數 軟件包名稱

參數 作用
repolist all 列出所有倉庫
list all 列出倉庫中所有軟件包
info 查看所有軟件包信息
install 軟件包名稱 安裝指定的軟件包
reinstall 軟件包名稱 重新安裝軟件包
update 軟件包名稱 升級軟件包
remove 軟件包名稱 移除軟件包
clean all 清除軟件包緩存
check-update 檢查可升級的軟件包
grouplist 查看系統中已經安裝的軟件包組
groupinstall 軟件包組 安裝指定的軟件包組
groupremove 軟件包組 移除指定的軟件包組
groupinfo 軟件包組 查詢指定軟件包組

systemd初始化進程

服務名稱 命令
重啓服務 systemctl restart 服務名稱 PID值會變
啓動服務 systemctl start 服務名稱
停止服務 systemctl stop 服務名稱
加入到啓動項 systemctl enable 服務名稱
查看服務狀態 systemctl status 服務名稱
重新加載配置文件 systemctl reload 服務名稱 PID值不變

Linux開機過程

BIOS—>Boot loader—>加載內核—>Systemd
Systemd作爲Linux系統的第一個進程,它需要完成Linux系統中相關的初始化工作,爲用戶提供合適的工作環境。

system target(目標名稱) 作用
runlevel0.target, power off.target 關機
runlevel1.target,rescue.target 單用戶模式
runlevel2.target,multi-user.target 多用戶文本界面
runlevel3.target,multi-user.target 多用戶文本界面
runlevel4.target,multi-user.target 多用戶文本界面
runlevel5.target,graphical.target 多用戶的圖形界面
runlevel6.target,reboot.target 重啓
emergency.target 緊急Shell

使用修改**/etc/systemd/system/default.target**文件的鏈接,設置默認的啓動模式。

強大好用的SHELL

在這裏插入圖片描述
shell是充當人與內核(硬件)之間的翻譯官,用戶把一些命令“告訴”終端,它就會調用相應的程序服務去完成某些工作。
主流LINUX系統默認的shell終端是bash(Bourme-Again SHell)
優點
1、可以調取歷史命令;
2、Tab補全功能;
3、批處理腳本 ;
4、實用的環境變量

2.3常用系統工作命令

命令的格式

命令 參數 對象
中間要有超過一個以上的空格,嚴格區分大小寫。
短格式參數:-字母 -a -l
長格式參數:–單詞 --all --list
參數合併的原則:只有短格式參數可以合併,合併後只需要一個減號 -al

{1} echo 輸出字符串或提取Shell變量的值

echo ·[參數] [字符串]
更多參數

{2}date 查看日期時間

date [參數] [+輸出格式]
例:date “+%Y-%m-%d”

danzeng@danzeng-PC:~$ date "+%Y-%m-%d"
2020-01-20

例:date “+%H:%M:%S”

danzeng@danzeng-PC:~$ date "+%H:%M:%S"
23:18:28

更多參數

{3}reboot 重啓系統

更多參數

{4}poweroff 關閉系統

默認只有root管理員纔可以關閉電腦
更多參數

{5}wget 在終端中下載網絡文件

wget [參數] [下載地址]
默認下載到當前目錄下。

 wget http://www.linuxprobe.com/haha.rar
--2020-01-20 23:28:39--  http://www.linuxprobe.com/haha.rar
正在解析主機 www.linuxprobe.com (www.linuxprobe.com)... 222.222.88.16
正在連接 www.linuxprobe.com (www.linuxprobe.com)|222.222.88.16|:80... 已連接。
已發出 HTTP 請求,正在等待迴應... 301 Moved Permanently
位置:https://www.linuxprobe.com/haha.rar [跟隨至新的 URL]
--2020-01-20 23:28:39--  https://www.linuxprobe.com/haha.rar
正在連接 www.linuxprobe.com (www.linuxprobe.com)|222.222.88.16|:443... 已連接。
已發出 HTTP 請求,正在等待迴應... 301 Moved Permanently
位置:https://www.linuxprobe.com/ [跟隨至新的 URL]
--2020-01-20 23:28:39--  https://www.linuxprobe.com/
再次使用存在的到 www.linuxprobe.com:443 的連接。
已發出 HTTP 請求,正在等待迴應... 200 OK
長度:未指定 [text/html]
正在保存至: “haha.rar”

haha.rar                          [ <=>                                              ]  92.62K  --.-KB/s  用時 0.1s    

2020-01-20 23:28:40 (967 KB/s) - “haha.rar” 已保存 [94843]

更多參數

{6}ps 查看系統中的時程狀態

格式:ps [參數-aux]
R(運行):當前正爲用戶提供服務的進程
S(中斷):正在處於休眠狀態,等待服務的進程
D(不可中斷):不能被中斷的進程
Z(僵死):殭屍進程
T(停止):進程收到停止信號後停止運行

參數 作用
-a 顯示所有進程(包括其他用戶的進程)
-u 用戶以及其他詳細信息
-x 顯示沒有控制終端的進程
danzeng@danzeng-PC:~$ ps -aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0 165892 10688 ?        Ss   22:36   0:02 /sbin/init splash
root         2  0.0  0.0      0     0 ?        S    22:36   0:00 [kthreadd]
root         3  0.0  0.0      0     0 ?        I<   
下略-----

更多參數

{7}top命令 動態的監視進程活動與系統負載等信息

格式:top
更多參數
在這裏插入圖片描述
當前系統時間,系統已經開機的時間,系統當前終端的數量,
系統的負載情況(load average:)達到5時系統中程序有崩潰的可能,達到1是比較理想的狀態。後面的三個數字分別代表1分鐘、5分鐘、15分鐘的負載情況。
280個進程,2個正在運行,220等待運行,0個被停止,0個殭屍(zombie)進程。
CPU的負載%Cpu(s)us使用率,id空閒率
PID是進程的身份號碼
PR、NI是指進程的優先級。數值越低級別越高。
%CPU,%MEM,進程對CPU和內存的佔用比例。
TIME+ 進程運行時間

{7}pidof命令 查詢某個指定進程的PID值。

pidof [參數] [服務名稱]
更多參數

{8}kill命令 終止某個指定PID的服務進程

kill [參數][進程PID]
更多參數

{9}killall命令 用於終止某個指定名稱的服務所對應的全部進程

killall [參數][服務名稱]
更多參數## 2.4 系統狀態檢測命令

{1} ifconfig 用於獲取網卡配置與網絡狀態等信息,

格式爲“ifconfig [網絡設備] [參數]
更多參數

[root@localhost Desktop]# ifconfig
eno16777728: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        ether 00:0c:29:cd:b9:72  txqueuelen 1000  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 0  (Local Loopback)
        RX packets 258  bytes 21900 (21.3 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 258  bytes 21900 (21.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

網卡名稱:eno16777728
IP地址:
Mac地址:00:0c:29💿b9:72
RX:接收包
TX:發送包

{2}uname 用來查看系統內核版本

uname [參數-a]
更多參數

[root@localhost Desktop]# uname -a
Linux localhost.localdomain 3.10.0-123.el7.x86_64 #1 SMP Mon May 5 11:16:57 EDT 2014 x86_64 x86_64 x86_64 GNU/Linux

系統名稱,主機名稱,內核版本,架構,打包時間

{3}uptime 查看系統負載情況

uptime
更多參數

[root@localhost Desktop]# uptime
 14:12:59 up  2:18,  2 users,  load average: 0.00, 0.06, 0.07
[root@localhost Desktop]# 

{4}free 顯示當前系統中內存使用量信息

free [參數 -h]
更多參數

[root@localhost Desktop]# free -h
             total       used       free     shared    buffers     cached
Mem:          1.9G       909M       1.1G       9.7M       920K       298M
-/+ buffers/cache:       610M       1.3G
Swap:         2.0G         0B       2.0G

{5}who 查看當前登入主機的用戶終端信息

who [參數]
更多參數
在這裏插入圖片描述
顯示的是在主機系統登錄界面登錄的賬戶信息,不是在終端中切換的賬號信息。

{6}last 查看所有系統的登錄記錄

last [參數]
更多參數
這些登錄信息是以日誌式文件保存在本機中的,很容易被黑客篡改,並不能做爲確實的證據使用。

{7}history 顯示歷史執行過的命令

history [參數]
history -c 清空所有歷史命令
!編碼數字:重複執行編號所指命令一次
更多參數

{9}sosreport 收集系統配置及架構信息並輸出診斷文檔

sosreport
當linux系統發生故障時,可以用此命令收集信息,併發給技術支持人員。命令運行結束後會形成以下壓縮文件和MD5碼。
sosreport需要root權限才能運行
更多參數

Your sosreport has been generated and saved in:
  /var/tmp/sosreport-localhost.localdomain-20200123105853.tar.xz

The checksum is: 3432060a3bf0424a2459e94e0aefc9ad

2.5 工作目錄切換命令

{1}pwd 顯示用戶當前所在目錄

pwd [參數] 更多參數

{2}cd 切換工作目錄

cd [目錄名稱]
cd… 進入上一級目錄
cd - 返回上一次目錄
cd ~ 進入家目錄
更多參數

{3}ls 顯示文件夾中的文件信息

ls [選項] [文件]
ls -a 顯示文件夾中所有文件
ls -l 顯示文件詳細信息
ls -al 顯示所有文件信息,包括隱藏文件
ls -ld 顯示當前文件夾信息
更多參數

2.6文本文件編輯命令

{1}cat 查看純文本文件(內容較少的)

cat [選項] [文件]
cat -n 顯示出行號
更多參數

{2}more 查看純文本文件(內容較多的)

more [選項] [文件]
在屏幕底部會顯示出閱讀量的百分比
更多參數

{3}head 查看純文本文件的前N行

head [選項] [文件]
head -n 文件名,查看前n行的內容

{4}tail 查看純文本文件的後n行

tail [參數] [文件]
tail -n 文件名,查看後n行的內容
更多參數
tail -f 文件名,持續刷新功能,適合查看“日誌文件”

{5}tr 替換文本文件中的字符

tr [原始字符] [目標字符]
tr [原始字符] [目標字符] >> [文件名] 可以將變更存儲到文件
需要與其他命令配合使用。
例如:

 cat anaconda-ks.cfg | tr [a] [A] >> aaa.txt
[root@linuxprobe ~]# cat aaa.txt
#version=RHEL7
# System AuthorizAtion informAtion
Auth --enAbleshAdow --pAssAlgo=shA512

# Use CDROM instAllAtion mediA

只能一對一的更換,例如:不能將a替換成AAA。
更多參數

{6}wc 統計指定文本的行數、字數、字節數

wc [參數] 文本
-l 行,-w 字數, -c 字節數
若統計中文字數需要除以2
更多參數

{7}stat 查看文件的具體存儲信息和時間等信息

更多參數

[root@linuxprobe ~]# stat anaconda-ks.cfg 
  File: ‘anaconda-ks.cfg’
  Size: 1207      	Blocks: 8          IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 68976982    Links: 1
Access: (0600/-rw-------)  Uid: (    0/    root)   Gid: (    0/    root)
Context: system_u:object_r:admin_home_t:s0
Access: 2020-01-25 17:41:19.258557201 +0800
Modify: 2020-01-26 00:40:11.036988628 +0800
Change: 2020-01-26 00:40:11.036988628 +0800
 Birth: -

Access 訪問(查看)時間,最後一次查看文件內容的時間。
Modify 編輯時間(對文件內容的編輯)
Change 更改文件“屬性”的時間

{8}cut 按“列”提取文本字符

cut [參數] 文本
按行搜索命令grep,只需要提供關鍵詞就可以。
按列需要提供兩個參數:-d 間隔符;-f 列數。
間隔符用來區分列的特徵,列數確定具體位置,這樣才能正確取出來。
更多參數

{9}diff 比較多個文本文件的差異

diff [參數] 文件
比較的數量是:兩個以上的文件。
比較的對象是:文本文件
–brief 長格式參數,用來比較兩個文件是否不同,不同時給出differ。
-c 短格式參數,詳細描述文件內容的差異。
貌似–brief參數,對圖片文件也是可以比較是否相同。

[root@linuxprobe Desktop]# cp aaa.jpg bbb.jpg
[root@linuxprobe Desktop]# diff --brief aaa.jpg bbb.jpg
[root@linuxprobe Desktop]# diff --brief aaa.jpg ccc.jpg
Files aaa.jpg and ccc.jpg differ
[root@linuxprobe Desktop]# diff -c aaa.jpg ccc.jpg
Binary files aaa.jpg and ccc.jpg differ
[root@linuxprobe ~]# diff --brief anaconda-ks.cfg initial-setup-ks.cfg 
Files anaconda-ks.cfg and initial-setup-ks.cfg differ

更多參數

2.7 文件目錄管理命令

{1}touch 創建空白文本文件&設置文件時間

touch [參數] [文件]
重點是設置文件的時間。
-a 設置文件的訪問時間
-m 設置文件內容的修改時間
-d 以上兩個同時設置

[root@linuxprobe Desktop]# ls -al aaa.jpg
-rw-r--r--. 1 root root 472421 Jan 16 21:59 aaa.jpg
[root@linuxprobe Desktop]# touch -d "2020-1-25 18:55" aaa.jpg
[root@linuxprobe Desktop]# ls -al aaa.jpg
-rw-r--r--. 1 root root 472421 Jan 25  2020 aaa.jpg

更多參數

{2}cp 複製文件或目錄

cp [參數] 源文件 目標文件
-r 複製目錄
1.如果目標文件不存在,則執行正常複製
2.如果目標文件是目錄,則會把源文件得到該目錄中
3.如果有同名目標文件,則會詢問是否要覆蓋它
更多參數

{3}mv 剪切文件或將文件重新命名

mv [選項] 源文件 [目標路徑|目標文件]
更多參數

{4}dd 按照指定大小和個數的數據塊來複制文件或轉換文件

dd [參數]
這是一個非常神奇的命令,經常用在終端中讀取分區表的內容。
一個充滿哲學的設備文件/dev/zero 這個文件不佔用儲存空間,卻可以無限取出。

[root@linuxprobe ~]# dd if=/dev/sda1 of=EFI count=32 bs=64
32+0 records in
32+0 records out
2048 bytes (2.0 kB) copied, 0.00067123 s, 3.1 MB/s

dd還可以將CDROM中的光盤製作成一個iso文件。
bs與count都是用來指定容量的大小,只要能滿足需求,可隨意組合搭配方式。
最終取出的文件容量大小取爲bs×count的積。

[root@linuxprobe ~]# dd if=/dev/cdrom of=RHEL-server-7.0-x86_64-Linuxprobe.com.iso
7311360+0 records in
7311360+0 records out
3743416320 bytes (3.7 GB) copied, 40.9447 s, 91.4 MB/s
[root@linuxprobe ~]# ls
anaconda-ks.cfg      initial-setup-ks.cfg
anaconda-ks.cfg.lll  Music
Desktop              Pictures
Documents            Public
Downloads            RHEL-server-7.0-x86_64-Linuxprobe.com.iso
EFI                  Templates
etc                  Videos

速度太快了,只用了40秒。代碼指令中並沒有指定count和bs

更多參數請點擊這裏

file 查看文件的類型

file 文件名
它是通過查看文件的頭部信息來獲取文件類型,而不是像Windows通過擴展名來確定文件類型的。
更多參數請點擊這裏

2.8 打包壓縮與搜索命令

這是紅帽認證必考的題目

{1}tar 對文件進行打包壓縮或解壓

tar [選項] [文件]
Linux系統中主要使用的是:.tar .tar.gz .tar.bz2格式
tar czvf 壓縮包 打包目標
tar xzvf 壓縮包
這裏可以不用“-”號。
-c用於打包,-x用於解壓

參數 作用
-c 創建壓縮文件
-x 解開壓縮文件
-z 用Gzip壓縮或解壓縮(常用)
-j 用bzip壓縮或解壓
-v 顯示壓縮或解壓的過程
-f 目標文件名
-C 指定解壓到的目錄

更多參數請點擊這裏

{2}grep 在文本中執行關鍵詞搜索,並顯示匹配的結果

grep [選項] [文件]
行搜索:grep 關鍵詞 文件名稱
列搜索:cut -d 間隔符 -f 列號

參數 作用
-n 顯示行號
-v 反向選擇——僅列出沒有“關鍵詞”的行
-i 忽略大小寫
-b 將可執行文件(binary)當作文本文件(text)來搜索

例:查找出當前系統中不允許登錄系統的所有用戶信息

[root@linuxprobe Desktop]# grep -n /sbin/nologin /etc/passwd
2:bin:x:1:1:bin:/bin:/sbin/nologin
3:daemon:x:2:2:daemon:/sbin:/sbin/nologin
4:adm:x:3:4:adm:/var/adm:/sbin/nologin
5:lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
9:mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
10:operator:x:11:0:operator:/root:/sbin/nologin
-----以下省略-----

find 按照指定條件來查找文件

find [查找路徑] 尋找條件 操作
這是見證奇蹟的時刻,“linux系統中一切都是文件”。這是什麼都可以搜索。
尋找條件:文件名、大小、修改時間、權限等信息。
-name 匹配文件名
-user 匹配所有者
-size 匹配文件大小(+50KB,-50KB)
-exec {} ; {}表示find命令搜索出的每一個文件,並且命令的結尾必須是“;"

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