1. 程式人生 > >Linux-學習筆記-03

Linux-學習筆記-03

一、上堂回顧

cat:檢視檔案的內容 -n -b

head和tail:檢視頭部和尾部

more:檢視檔案

echo:向終端輸出內容

| > >>

tree:檢視指定路徑的目錄結構,以樹型結構顯示

mv:移動檔案 重新命名檔案【常用】

cp:複製

mkdir/touch 建立目錄或者檔案

rmdir【只能刪除空目錄】rm【刪除目錄和檔案,-rf:強制刪除】

​ 注意:rm 路徑,如果路徑代表的是目錄,則無法刪除,需要新增選項-r

ln:建立連結檔案【區別軟連線和硬連結】

grep:搜尋

find:按照指定條件查詢檔案【-name -size -empty】

sort:給文字內容排序

cut:提取資料【-d ;分隔,-f:提取】

tee:從終端向檔案中寫入內容【-a】

sed:操作文字內容

tar和gzip:打包和壓縮

ifconfig

二、常用命令

1.vi/vim編輯器

vi命令是UNIX作業系統最通用的全螢幕純文字編輯器。Linux中的vi編輯器叫vim,它是vi的增強版(vi Improved),與vi編輯器完全相容,而且實現了很多增強功能

vim編輯器工作模式有三種:命令模式,輸入模式【編輯模式】,末行模式

說明:編輯模式可以完成文字的編輯功能,命令模式可以完成對檔案的操作命令,末行模式只是充當了一個轉換的功能

學習思路:熟練掌握三種工作模式之間的切換

切換方式:vim filename---->進入命令模式----》按下a或者i鍵進入編輯模式----》按下esc鍵進入命令模式----》輸入:切換到末行模式-----》按下回車鍵切換命令模式----》退出

進入vi的命令 
    vim filename :開啟或新建檔案,並將游標置於第一行首 
    vim +n filename :開啟檔案,並將游標置於第n行首 
    vim + filename :開啟檔案,並將游標置於最後一行首
    vim filename1 filename2   :同時開啟多個檔案
    
演示命令:
[email protected]
:~$ cd Desktop/ [email protected]:~/Desktop$ rm -rf * [email protected]:~/Desktop$ ls [email protected]:~/Desktop$ touch a1.txt [email protected]:~/Desktop$ ls a1.txt [email protected]:~/Desktop$ tee a1.txt ghsjfgh ghsjfgh hello hello abc abc 1246734 1246734 ^C      #強制結束執行 [email protected]:~/Desktop$ cat a1.txt ghsjfgh hello abc 1246734 [email protected]:~/Desktop$ gedit a1.txt [email protected]:~/Desktop$ cat a1.txt ghsjfgh hello abc 1246734 gjgag [email protected]:~/Desktop$ vim a1.txt [email protected]:~/Desktop$ [email protected]:~/Desktop$ vim a1.txt [email protected]:~/Desktop$ vim +3 a1.txt [email protected]:~/Desktop$ vim + a1.txt ​ 插入文字類命令 i :在游標前   insert I :在當前行首 a:游標後      append A:在當前行尾 o:在當前行之下新開一行 O:在當前行之上新開一行 r:替換當前字元 R:替換當前字元及其後的字元,直至按ESC鍵 #i表示在游標之前插入,a表示在游標之後追加,o表示新開闢一行   移動游標 j或下箭頭 向下移動一行 k或上箭頭 向上移動一行 h或左箭頭 左移一個字元 l或右箭頭 右移一個字元 w     右移一個詞    word W     右移一個以空格分隔的詞 b     左移一個詞    back B     左移一個以空格分隔的詞 0     移到行首 Ctrl-F  向前翻頁 Ctrl-B  向後翻頁 nG    到第n行  ------》先按下數字,再按下G G     到最後一行 gg     第一行   -----》先按下g,再按下g n+       游標下移n行 n-       游標上移n行     esc:退出輸入模式 ​ :set number:在命令模式下,用於在最左端顯示行號; :set nonumber:在命令模式下,用於在最左端不顯示行號; ​ 儲存退出 :wq 執行存檔退出操作;      -----》對內容做修改之後使用 :w 執行存檔操作; :w! 執行強制存檔操作; :q 執行退出vi操作; :q! 執行強制退出vi操作;     -----》如果沒有任何修改的時候使用 :e檔名 開啟並編輯指定名稱的檔案; :n! 如果同時開啟多個檔案,則儲存上個檔案繼續編輯下一個檔案; :f 用於顯示當前的檔名、游標所在行的行號以及顯示比例; #如果對檔案內容有改動,則使用:wq儲存退出,如果報錯則使用:wq!強制儲存退出 #如果對檔案內容沒有任何改動,則使用:q退出,如果報錯則使用:q!強制退出 刪除操作【注意:和上面的插入文字類沒有關係,進入vim後直接使用】 x 刪除游標處的單個字元 dd 刪除游標所在行 dw 刪除當前字元到單詞尾(包括空格)的所有字元 de 刪除當前字元到單詞尾(不包括單詞尾部的空格)的所有字元 d$ 刪除當前字元到行尾的所有字元 d^ 刪除當前字元到行首的所有字元 J 刪除游標所在行行尾的換行符,相當於合併當前行和下一行的內容 替換操作 :s/old/new 將當前行中查詢到的第一個字元“old” 串替換為“new”    #只替換當前行 :#,#s/old/new 在行號“#,#”範圍內替換所有的字串“old”為“new”   #替換指定區間 :%s/old/new    在整個檔案範圍內替換所有的字串“old”為“new” #替換全部 :s/old/new/c 在替換命令末尾加入c命令,將對每個替換動作提示使用者進行確認   #互動式替換 #confirm 確認 撤消操作 【注意:直接在命令模式下使用】 u取消最近一次的操作,並恢復操作結果 可以多次使用u命令恢復已進行的多步操作 U取消對當前行進行的所有操作 Ctrl + r對使用u命令撤銷的操作進行恢復         演示命令: [email protected]:~/Desktop$ cat a1.txt ghsjfgh hello abc 1246734 [email protected]:~/Desktop$ gedit a1.txt [email protected]:~/Desktop$ cat a1.txt ghsjfgh hello abc 1246734 gjgag [email protected]:~/Desktop$ vim a1.txt [email protected]:~/Desktop$ [email protected]:~/Desktop$ vim a1.txt [email protected]:~/Desktop$ vim +3 a1.txt [email protected]:~/Desktop$ vim + a1.txt [email protected]:~/Desktop$ vim a1.txt ` > ^C [email protected]:~/Desktop$ vim a1.txt [email protected]:~/Desktop$ vim a1.txt [email protected]:~/Desktop$ vim a1.txt [email protected]:~/Desktop$ vim a1.txt [email protected]:~/Desktop$ vim a1.txt [email protected]:~/Desktop$ vim a1.txt

2.使用者管理

使用者管理包括使用者和使用者組的管理

linux使用檔案儲存使用者資訊 
/etc/passwd 使用者賬戶資訊。
/etc/shadow 安全使用者賬戶資訊。
/etc/group 組賬戶資訊。
/etc/gshadow 安全組賬戶資訊。
/etc/default/useradd 賬戶建立的預設值。
/etc/skel/ 包含預設檔案的目錄。
/etc/login.defs Shadow 密碼套件配置。

1>whoami 檢視當前系統當前使用者的使用者名稱

演示命令:
[email protected]:~/Desktop$ cd ..
[email protected]:~$ pwd
/home/yangyang
[email protected]:~$ whoami
yangyang
[email protected]:~$ su root
密碼: 
[email protected]:/home/yangyang# whoami
root

2>who 檢視當前所有登入系統的使用者資訊

-q:只顯示使用者的登入賬號的和登入使用者的數量
-u:顯示列標題
​
演示命令:
[email protected]:/home/yangyang# who
yangyang tty7         2018-09-06 17:05 (:0)
[email protected]:/home/yangyang# su yangyang
[email protected]:~$ who
yangyang tty7         2018-09-06 17:05 (:0)
[email protected]:~$ who -q
yangyang
# 使用者數=1
[email protected]:~$ who -u
yangyang tty7         2018-09-06 17:05 01:21        1830 (:0)

3>exit 退出

如果是圖形化介面,則退出當前終端
如果是切換後的登入使用者,則返回上一個登入賬號

4>sudo 用來以其他身份來執行命令,預設的身份為root

#讓當前普通使用者暫時以管理員的身份執行命令
#注意:如果想要一個普通使用者可以使用sudo命令,則需要在/etc/sudoers進行配置
配置方式
普通使用者名稱  ALL(ALL:ALL) ALL

5>su 切換使用者

注意:
su :切換使用者,沒有引數時,預設切換到root
    su -:切換到root使用者,並載入普通使用者的環境配置
    su - user1:切換到普通使用者user1
​
常用:從普通使用者---》root使用者使用su root
     從root使用者----》普通使用者使用su  user1
​
演示命令:
[email protected]:~$ su root
密碼: 
[email protected]:/home/yangyang# exit
exit
[email protected]:~$ su
密碼: 
[email protected]:/home/yangyang# exit
exit
[email protected]:~$ su -
密碼: 
[email protected]:~# su yangyang
[email protected]:/root$ su - root
密碼: 
[email protected]:~# pwd
/root
[email protected]:~# su - yangyang
[email protected]:~$ pwd
/home/yangyang

6>useradd 新增使用者

作用:在當前系統中新增普通使用者

注意:需要通過管理員的身份進行操作

-c 備註 加上備註。並會將此備註文字加在/etc/passwd中的第5項欄位中
-d 使用者主資料夾。指定使用者登入所進入的目錄,並賦予使用者對該目錄的的完全控制權        
-e 有效期限。指定帳號的有效期限。格式為YYYY-MM-DD,將儲存在/etc/shadow         
-f 緩衝天數。限定密碼過期後多少天,將該使用者帳號停用       
#-g 主要組。設定使用者所屬的主要組  www.cit.cn   #group        
-G 次要組。設定使用者所屬的次要組,可設定多組         
-M 強制不建立使用者主資料夾         
#-m 強制建立使用者主資料夾,並將/etc/skel/當中的檔案複製到使用者的根目錄下         
#-p 密碼。輸入該帳號的密碼         
-s shell。使用者登入所使用的shell         
-u uid。指定帳號的標誌符user id,簡稱uid
​
#存在的問題
[email protected]:/home$ su - zhangsan
密碼: 
$ su yangyang
密碼:
​
#原因:
    在新使用者下面缺少配置檔案
#解決辦法;
需要將.bashrc和.logout兩個檔案中的內容拷貝到新使用者的/etc/skel,然後將/etc/passwd裡面的內容更改【在新增的普通使用者的後面新增/bin/bash】
​
演示命令:
[email protected]:~$ ls /home/
yangyang
[email protected]:~$ cd Desktop/
[email protected]:~/Desktop$ sudo useradd zhangsan
[sudo] yangyang 的密碼: 
[email protected]:~/Desktop$ cd /home/
[email protected]:/home$ ls
yangyang
[email protected]:/home$ ls -l
總用量 4
drwxr-xr-x 30 yangyang rock 4096 9月   6 18:00 yangyang
[email protected]:/home$ sudo mkdir /home/zhangsan
[email protected]:/home$ ls -l
總用量 8
drwxr-xr-x 30 yangyang rock 4096 9月   6 18:00 yangyang
drwxr-xr-x  2 root     root 4096 9月   6 18:46 zhangsan
[email protected]:/home$ sudo chown zhangsan:zhangsan /home/zhangsan
[email protected]:/home$ ls -l
總用量 8
drwxr-xr-x 30 yangyang rock     4096 9月   6 18:00 yangyang
drwxr-xr-x  2 zhangsan zhangsan 4096 9月   6 18:46 zhangsan
[email protected]:/home$ sudo passwd zhangsan
輸入新的 UNIX 密碼: 
重新輸入新的 UNIX 密碼: 
passwd:已成功更新密碼
[email protected]:/home$ su - zhangsan
密碼: 
$ su yangyang
密碼: 
[email protected]:/home/zhangsan$ su - zhangsan
密碼: 
$ ls -a /home/yangyang/.bash*
/home/yangyang/.bash_history  /home/yangyang/.bashrc
/home/yangyang/.bash_logout
$ ls -a /etc/skel/
.  ..  .bash_logout  .bashrc  examples.desktop  .profile
$ cp /etc/skel/.bash* .
$ ls -a
.  ..  .bash_logout  .bashrc
$ 登出
[email protected]:/home/zhangsan$ sudo vim /etc/passwd
[email protected]:/home/zhangsan$ su - zhangsan
密碼: 
[email protected]:~$ su - yangyang
密碼: 
[email protected]achine:~$ cd /home/
[email protected]:/home$ sudo useradd -m -s /bin/bash lisi
[sudo] yangyang 的密碼: 
[email protected]:/home$ ls
lisi  yangyang  zhangsan
[email protected]:/home$ ls -l
總用量 12
drwxr-xr-x  2 lisi     lisi     4096 9月   6 19:21 lisi
drwxr-xr-x 30 yangyang rock     4096 9月   6 19:04 yangyang
drwxr-xr-x  2 zhangsan zhangsan 4096 9月   6 19:02 zhangsan
[email protected]:/home$ cd ..
[email protected]:/$ cd /home/yangyang/
[email protected]:~$ sudo useradd -m zhaosi
[email protected]:~$ ls /home/
lisi  yangyang  zhangsan  zhaosi
[email protected]:~$ sudo passwd zhaosi
輸入新的 UNIX 密碼: 
重新輸入新的 UNIX 密碼: 
passwd:已成功更新密碼

7>userdel 刪除使用者

userdel 使用者名稱:只是刪除/etc/passwd中的使用者資訊,但是home目錄下的資訊並沒有被刪除
userdel -r 使用者名稱:將/etc/passwd和home目錄下的資訊全部刪除
​
#注意:刪除普通使用者之前,需要將需要被刪除的使用者登出掉【ctrl + d】,執行了userdel命令之後,如果出現xxx在郵件池中未找到表示刪除成功
​
演示命令:
[email protected]:~$ sudo userdel lisi
[email protected]:~$ ls /home/
lisi  yangyang  zhangsan  zhaosi
[email protected]:~$ sudo rm -rf lisi
[email protected]:~$ ls /home/
lisi  yangyang  zhangsan  zhaosi
[email protected]:~$ sudo rm -rf /home/lisi
[email protected]:~$ ls /home/
yangyang  zhangsan  zhaosi
[email protected]:~$ cd /home/
[email protected]:/home$ sudo userdel -r zhaosi
userdel: zhaosi 郵件池 (/var/mail/zhaosi) 未找到
[email protected]:/home$ ls
yangyang  zhangsan
[email protected]:/home$ cd /home/yangyang/
[email protected]:~$ su - zhangsan
密碼: 
[email protected]:~$ su - yangyang
密碼: 
[email protected]:~$ cd /home/
[email protected]:/home$ sudo userdel -r zhangsan
userdel: user zhangsan is currently used by process 4028
[email protected]:/home$ 登出
[email protected]:~$ 登出
[email protected]:~$ cd /home/
[email protected]:/home$ duso userdel -r zhangsan
duso:未找到命令
[email protected]:/home$ sudo userdel -r zhangsan
userdel: user zhangsan is currently used by process 4028
[email protected]:/home$ 登出
[email protected]:~$ 登出
[email protected]:/home/zhangsan$ exit
$ 登出
[email protected]:/home$ sudo userdel -r zhangsan
userdel: zhangsan 郵件池 (/var/mail/zhangsan) 未找到

8>passwd 設定密碼

前提:在root使用者下,passwd root:修改root使用者的密碼

9>檢視使用者組

檢視/etc/group

10>groupadd 新增組

組的作用:將多個使用者管理在同一個組下,可以給不同的使用者設定相同的許可權

useradd -m 使用者名稱 -g 組名  :建立一個新的普通使用者,並將其指定到相應的組下
注意:這裡的組名最好是事先建立好
​
命令演示:
[email protected]:/home$ ls
yangyang
[email protected]:/home$ cd /home/yangyang/
[email protected]:~$ cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,rock
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:rock
floppy:x:25:
tape:x:26:
sudo:x:27:rock
audio:x:29:pulse
dip:x:30:rock
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:rock
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
systemd-journal:x:101:
systemd-timesync:x:102:
systemd-network:x:103:
systemd-resolve:x:104:
systemd-bus-proxy:x:105:
input:x:106:
crontab:x:107:
syslog:x:108:
netdev:x:109:
messagebus:x:110:
uuidd:x:111:
ssl-cert:x:112:
lpadmin:x:113:rock
lightdm:x:114:
nopasswdlogin:x:115:
whoopsie:x:116:
mlocate:x:117:
ssh:x:118:
avahi-autoipd:x:119:
avahi:x:120:
bluetooth:x:121:
scanner:x:122:saned
colord:x:123:
pulse:x:124:
pulse-access:x:125:
rtkit:x:126:
saned:x:127:
rock:x:1000:
sambashare:x:128:rock
mysql:x:129:
user1:x:1001:
[email protected]:~$ ls -l /home/
總用量 4
drwxr-xr-x 30 yangyang rock 4096 9月   6 19:04 yangyang
[email protected]:~$ su - root
密碼: 
[email protected]:~# groupadd python1804
[email protected]:~# cat /etc/group
root:x:0:
daemon:x:1:
bin:x:2:
sys:x:3:
adm:x:4:syslog,rock
tty:x:5:
disk:x:6:
lp:x:7:
mail:x:8:
news:x:9:
uucp:x:10:
man:x:12:
proxy:x:13:
kmem:x:15:
dialout:x:20:
fax:x:21:
voice:x:22:
cdrom:x:24:rock
floppy:x:25:
tape:x:26:
sudo:x:27:rock
audio:x:29:pulse
dip:x:30:rock
www-data:x:33:
backup:x:34:
operator:x:37:
list:x:38:
irc:x:39:
src:x:40:
gnats:x:41:
shadow:x:42:
utmp:x:43:
video:x:44:
sasl:x:45:
plugdev:x:46:rock
staff:x:50:
games:x:60:
users:x:100:
nogroup:x:65534:
systemd-journal:x:101:
systemd-timesync:x:102:
systemd-network:x:103:
systemd-resolve:x:104:
systemd-bus-proxy:x:105:
input:x:106:
crontab:x:107:
syslog:x:108:
netdev:x:109:
messagebus:x:110:
uuidd:x:111:
ssl-cert:x:112:
lpadmin:x:113:rock
lightdm:x:114:
nopasswdlogin:x:115:
whoopsie:x:116:
mlocate:x:117:
ssh:x:118:
avahi-autoipd:x:119:
avahi:x:120:
bluetooth:x:121:
scanner:x:122:saned
colord:x:123:
pulse:x:124:
pulse-access:x:125:
rtkit:x:126:
saned:x:127:
rock:x:1000:
sambashare:x:128:rock
mysql:x:129:
user1:x:1001:
python1804:x:1002:
[email protected]:~# useradd -m zhangsan -g python1804
[email protected]:~# passwd  zhangsan
輸入新的 UNIX 密碼: 
重新輸入新的 UNIX 密碼: 
passwd:已成功更新密碼
[email protected]:~# su - zhangsan
[email protected]:~$ pwd
/home/zhangsan
[email protected]:~$ ll
總用量 32
drwxr-xr-x 2 zhangsan python1804 4096 9月   6 19:44 ./
drwxr-xr-x 4 root     root       4096 9月   6 19:44 ../
-rw-r--r-- 1 zhangsan python1804  220 9月   1  2015 .bash_logout
-rw-r--r-- 1 zhangsan python1804 3771 9月   1  2015 .bashrc
-rw-r--r-- 1 zhangsan python1804 8980 4月  20  2016 examples.desktop
-rw-r--r-- 1 zhangsan python1804  655 6月  24  2016 .profile

11>usermod 修改使用者的基本資訊

-c<備註>  修改使用者帳號的備註文字。 
-d登入目錄>  修改使用者登入時的目錄。 
-e<有效期限>  修改帳號的有效期限。 
-f<緩衝天數>  修改在密碼過期後多少天即關閉該帳號。 
#-g<群組>  修改使用者所屬的群組。 
-G<群組>  修改使用者所屬的附加群組。 
#-l<帳號名稱>  修改使用者帳號名稱。 
-L  鎖定使用者密碼,使密碼無效。 
-s<shell>  修改使用者登入後所使用的shell。 
-u<uid>  修改使用者ID。 
-U  解除密碼鎖定。

12>groupdel 刪除組

#注意:如果使用者組做為一個使用者的主組,則不能直接刪除,如果想要刪除,則首先需要刪除使用者

13>sudo 讓當前使用者暫時以管理員的身份root來執行命令

/etc/sudores:使用者名稱以及別名,主機名以及別名,配置資訊【使用者以什麼樣的身份進行執行】
一般情況下,擁有管理員許可權的使用者設定一個

14>chmod 修改檔案許可權

rw-  當前使用者的許可權 【u】          
rw-  同組內其他使用者的許可權  【g】   
r--  其他組內使用者的許可權  【o】
​
演示命令:
#字母法
[email protected]:/root$ cd /home/yangyang/Desktop/
[email protected]:~/Desktop$ touch file1.txt
[email protected]:~/Desktop$ vim file1.txt 
[email protected]:~/Desktop$ cat file1.txt 
today is a good day
[email protected]:~/Desktop$ ll
總用量 16
drwxr-xr-x  2 yangyang yangyang 4096 9月   6 22:28 ./
drwxr-xr-x 30 yangyang yangyang 4096 9月   6 22:28 ../
-rw-r--r--  1 yangyang yangyang   35 9月   6 18:00 a1.txt
-rw-rw-r--  1 yangyang yangyang   20 9月   6 22:28 file1.txt
[email protected]:~/Desktop$ chmod u+x file1.txt 
[email protected]:~/Desktop$ ll
總用量 16
drwxr-xr-x  2 yangyang yangyang 4096 9月   6 22:28 ./
drwxr-xr-x 30 yangyang yangyang 4096 9月   6 22:28 ../
-rw-r--r--  1 yangyang yangyang   35 9月   6 18:00 a1.txt
-rwxrw-r--  1 yangyang yangyang   20 9月   6 22:28 file1.txt*
#數字法
[email protected]:~/Desktop$ touch file2.txt
[email protected]:~/Desktop$ ll
總用量 16
drwxr-xr-x  2 yangyang yangyang 4096 9月   6 22:32 ./
drwxr-xr-x 30 yangyang yangyang 4096 9月   6 22:28 ../
-rw-r--r--  1 yangyang yangyang   35 9月   6 18:00 a1.txt
-rwxrw-r--  1 yangyang yangyang   20 9月   6 22:28 file1.txt*
-rw-rw-r--  1 yangyang yangyang    0 9月   6 22:32 file2.txt
[email protected]:~/Desktop$ chmod 0764 file2.txt     #0表示佔位
[email protected]:~/Desktop$ ll
總用量 16
drwxr-xr-x  2 yangyang yangyang 4096 9月   6 22:32 ./
drwxr-xr-x 30 yangyang yangyang 4096 9月   6 22:28 ../
-rw-r--r--  1 yangyang yangyang   35 9月   6 18:00 a1.txt
-rwxrw-r--  1 yangyang yangyang   20 9月   6 22:28 file1.txt*
-rwxrw-r--  1 yangyang yangyang    0 9月   6 22:32 file2.txt*

15>chgrp 修改檔案所屬組

格式:chgrp 新的組名 檔名

3.系統管理

1>ps 報告當前系統的程序狀態

​ 程序是處於執行期的程式以及它所包含的所有資源的總稱,包括虛擬處理器,虛擬空間,暫存器,堆疊,全域性資料段等。​ 針對使用者程序,又可以分為互動程序、批處理程序和守護程序三類。 ​ (1) 互動程序:由一個shell終端啟動的程序,在執行過程中,需要與使用者進行互動操作,可以運行於前臺,也可以執行在後臺。 ​ (2) 批處理程序:該程序是一個程序集合,負責按順序啟動其他的程序。 ​ (3) 守護程序:守護程序是一直執行的一種程序,經常在linux系統啟動時啟動,在系統關閉時終止。它們獨立於控制終端並且週期性的執行某種任務或等待處理某些發生的事件。例如httpd程序,一直處於執行狀態,等待使用者的訪問。還有經常用的crond程序,這個程序類似與windows的計劃任務,可以週期性的執行使用者設定的某些任務。​ ps命令是最基本同時也是非常強大的程序檢視命令,使用該命令可以確定有哪些程序正在執行和執行的狀態、程序是否結束、程序有沒有僵死、哪些程序佔用了過多的資源等等,總之大部分資訊都是可以通過執行該命令得到的

​ -a:顯示所有程序(包括其他使用者的程序)

​ -u:使用者以及其他詳細資訊

​ -x:顯示沒有控制終端的程序

​ -ef:顯示所有

2>kill 刪除執行中的程式或工作

​ -a:當處理當前程序時,不限制命令名和程序號的對應關係;​ -l <資訊編號>:若不加<資訊編號>選項,則-l引數會列出全部的資訊名稱;​ -p:指定kill 命令只打印相關程序的程序號,而不傳送任何訊號;​ -s <資訊名稱或編號>:指定要送出的資訊;​ -u:指定使用者

3>df 顯示磁碟分割槽上的可使用的磁碟空間

​ 注意:預設顯示單位為KB

​ 可以利用該命令來獲取硬碟被佔用了多少空間,目前還剩下多少空間等資訊

4>du 顯示檔案的記憶體大小

​ 注意:與df命令不同的是du命令是對檔案和目錄磁碟使用的空間的檢視

5>crontab 提交和管理使用者的需要週期性執行的任務

​ 注意:當安裝完成作業系統後,預設會安裝此服務工具,並且會自動啟動crond程序,crond程序每分鐘會定期檢查是否有要執行的任務,如果有要執行的任務,則自動執行該任務

6>free 顯示當前系統未使用的和已使用的記憶體數目,還可以顯示被核心使用的記憶體緩衝區

​ -b:以Byte為單位顯示記憶體使用情況;

​ -k:以KB為單位顯示記憶體使用情況;

​ -m:以MB為單位顯示記憶體使用情況;

​ -o:不顯示緩衝區調節列;

​ -s<間隔秒數>:持續觀察記憶體使用狀況;

​ -t:顯示記憶體總和列;

​ -V:顯示版本資訊

             total        used        free      shared  buff/cache   available
Mem:           1970         988         107          12         875         754
Swap:          4093           2        4091
​
​
說明:
第一部分
total:記憶體總數
used:已經使用的記憶體數
free:空閒的記憶體數
shared:當前已經廢棄不用的記憶體數
buff/cache :快取記憶體數
available:

7>mode 許可權標記

8>alias 給命令起別名

​ 格式:alias 別名=原名

9>關機重啟

reboot:重啟
shutdown -h now   立刻關機
shutdown -r now   立刻重啟
shutdown -h +1    一分鐘之後關機
clear 清屏
​
init 0      關機
init 6      重啟

Linux命令大全: man.linuxde.net

三、shell程式設計

1.簡介

1.1什麼是shell

把在終端下執行的命令儲存到檔案中,這個檔案就是一個shell程式

簡單來說,shell程式設計就是對一對Linux命令的邏輯化處理

/bin/bash,bash是大多數Linux系統預設的shell

1.2shell解析器的型別

bash,ash,ksh,csh等,預設使用bash

[email protected]:~$ echo $SHELL
/bin/bash

1.3shell的作用

比如ls,cat... cd ,如果會重複使用某些linux命令,可以將命令寫入到檔案中,編寫了shell指令碼,然後如果再次使用到這些命令的時候,只需要執行該shell指令碼,即可實現相應的效果

2.第一個shell程式

2.1實現

#!/bin/bash
echo "first"

2.2執行

方式一:作為可執行程式執行

​ 注意:最後執行的時候使用的是./xx.sh

方式二:作為直譯器引數執行

​ 注意:/bin/bash或者/bin/sh ,在檔案中,第一行的宣告可以省略掉【#!/bin/bash】

[email protected]:~/Desktop$ mkdir shell
[email protected]:~/Desktop$ cd shell/
[email protected]:~/Desktop/shell$ touch first.sh
[email protected]:~/Desktop/shell$ vim first.sh 
[email protected]:~/Desktop/shell$ ll
總用量 12
drwxrwxr-x 2 yangyang yangyang 4096 9月   6 23:31 ./
drwxr-xr-x 3 yangyang yangyang 4096 9月   6 23:30 ../
-rw-rw-r-- 1 yangyang yangyang   25 9月   6 23:31 first.sh
[email protected]:~/Desktop/shell$ chmod u+x first.sh 
[email protected]:~/Desktop/shell$ ll
總用量 12
drwxrwxr-x 2 yangyang yangyang 4096 9月   6 23:31 ./
drwxr-xr-x 3 yangyang yangyang 4096 9月   6 23:30 ../
-rwxrw-r-- 1 yangyang yangyang   25 9月   6 23:31 first.sh*
[email protected]:~/Desktop/shell$ first.sh
first.sh:未找到命令
[email protected]:~/Desktop/shell$ ./first.sh 
first
[email protected]:~/Desktop/shell$ /bin/bash first.sh 
first
[email protected]:~/Desktop/shell$ /bin/sh first.sh
first

3.shell變數

3.1定義變數

定義:變數名 = 值

echo ${變數名}

說明:變數名外面的花括號可加可不加,為了幫助直譯器識別變數的邊界

shell中的變數也可以被重新賦值

3.2只讀變數

3.3刪除變數

unset:變數被刪除之後將不能再使用,unset不能刪除只讀變數

程式碼演示:

#!/bin/bash
echo "first"
​
#定義變數
yourname="zhangsan"
echo $yourname
num=10
echo ${num}
echo "your name is ${yourname}"
​
yourname="lisi"
echo ${yourname}
​
#只讀變數
myurl="www.baidu.com"
readonly myurl
myurl="1000phone.com"
​
#刪除變數
score=100
unset score
echo ${score}             

4.字串和陣列

4.1字串

字串可以是雙引號,也可以是單引號,也可以不用引號

單引號字串的限制:

​ a.單引號中的任何字元都會原樣輸出,單引號字串中出現的變數是無效的

​ b.單引號字串中不能再出現單引號【轉義也不行】

#!/bin/bash
#定義字串
name="abc"
str="hello,${name} \n"
​
#拼接字串
s1="hello,"$name""
echo ${str} ${s1}
​
#獲取字串的長度
echo ${#name}
​
#提取子字串
string1="today is a good day"
echo ${string1:2:6}    #字串:開始索引:向後獲取幾位字元
​
#查詢子字串
echo `expr index "$string1" is`
​
總結:
雙引號:可以包含除了$  `  \   "之外的任意字元
單引號:其中的任意字元都不會被解析,會原樣輸出
反引號:會將其中的內容作為命令輸出
反斜線:轉義特定的字元

4.2陣列

bash只支援一維陣列,並且沒有限定陣列的大小

定義:陣列名=(值1 值2 值3.。。。)

程式碼演示:

#!/bin/bash
​
#定義陣列
arr1=(10 20 30)
echo ${arr1}
arr2=(
10
20
30
)
echo ${arr2}
​
​
#獲取陣列中的元素
echo ${arr1[2]}
​
#獲取陣列中的全部元素
echo ${arr1[@]}
​
#獲取陣列的長度
l=${#arr1[@]}
l1=${#arr1[*]}
l2=${#arr1[2]}