查看命令位置:which
which 查看可執行文件的位置。
命令格式:which 可執行文件名稱
命令參數:
-n 指定文件名長度,指定的長度必須大于或等于所有文件中最長的文件名。
-p 與-n參數相同,但此處的包括了文件的路徑。
-w 指定輸出時欄位的寬度。
-V 顯示版本信息
Linux命令-用戶、權限管理
用戶是Unix/Linux系統工作中重要的一環,用戶管理包括用戶與組賬號的管理。
在Unix/Linux系統中,不論是由本機或是遠程登錄系統,每個系統都必須擁有一個賬號,并且對于不同的系統資源擁有不同的使用權限。
Unix/Linux系統中的root賬號通常用于系統的維護和管理,它對Unix/Linux操作系統的所有部分具有不受限制的訪問權限。
在Unix/Linux安裝的過程中,系統會自動創建許多用戶賬號,而這些默認的用戶就稱為“標準用戶”。
在大多數版本的Unix/Linux中,都不推薦直接使用root賬號登錄系統。
查看當前用戶:whoami
whoami該命令用戶查看當前系統當前賬號的用戶名。可通過cat /etc/passwd查看系統用戶信息。
由于系統管理員通常需要使用多種身份登錄系統,例如通常使用普通用戶登錄系統,然后再以su命令切換到root身份對傳統進行管理。這時候就可以使用whoami來查看當前用戶的身份。
看登錄用戶:who
who命令用于查看當前所有登錄系統的用戶信息。
退出登錄賬戶: exit
如果是圖形界面,退出當前終端;
如果是使用ssh遠程登錄,退出登陸賬戶;
如果是切換后的登陸用戶,退出則返回上一個登陸賬號。
添加用戶賬號:useradd
在Unix/Linux中添加用戶賬號可以使用adduser或useradd命令,因為adduser命令是指向useradd命令的一個鏈接,因此,這兩個命令的使用格式完全一樣。
useradd命令的使用格式如下: useradd [參數] 新建用戶賬號
相關說明:
Linux每個用戶都要有一個主目錄,主目錄就是第一次登陸系統,用戶的默認當前目錄(/home/用戶);
每一個用戶必須有一個主目錄,所以用useradd創建用戶的時候,一定給用戶指定一個主目錄;
用戶的主目錄一般要放到根目錄的home目錄下,用戶的主目錄和用戶名是相同的;
如果創建用戶的時候,不指定組名,那么系統會自動創建一個和用戶名一樣的組名。
-c ? ? ? ? comment 指定一段注釋性描述。
-d ? ? ? ? 目錄 指定用戶主目錄,如果此目錄不存在,則同時使用-m選項,可以創建主目錄。
-g ? ? ? ?用戶組 指定用戶所屬的用戶組。
-G ? ? ? ? 用戶組,用戶組 指定用戶所屬的附加組。
-s ? ? ? ? ?Shell文件 指定用戶的登錄Shell。
-u ? ? ? ? 用戶號 指定用戶的用戶號,如果同時有-o選項,則可以重復使用其他用戶的標識號。
設置用戶密碼:passwd
在Unix/Linux中,超級用戶可以使用passwd命令為普通用戶設置或修改用戶口令。用戶也可以直接使用該命令來修改自己的口令,而無需在命令后面使用用戶名。
?sudo ?passwd +用戶名
刪除用戶:userdel
userdel -r laowang
切換用戶:su
可以通過su命令切換用戶,su后面可以加“-”。su和su –命令不同之處在于,su -切換到對應的用戶時會將當前的工作目錄自動轉換到切換后的用戶主目錄。
注意:如果是ubuntu平臺,需要在命令前加“sudo”,如果在某些操作需要管理員才能操作,ubuntu無需切換到root用戶即可操作,只需加“sudo”即可。sudo是ubuntu平臺下允許系統管理員讓普通用戶執行一些或者全部的root命令的一個工具,減少了root 用戶的登陸和管理時間,提高了安全性。
查看有哪些用戶組
方法1:cat /etc/group
方法2:groupmod +三次tab鍵
添加、刪除組賬號:groupadd、groupdel
groupadd 新建組賬號
groupdel 組賬號
cat /etc/group 查看用戶組
修改用戶所在組:usermod
usermod -g 用戶組 用戶名
查看用戶在哪些組
groups laowang
為創建的普通用戶添加sudo權限
新創建的用戶,默認不能sudo,需要進行一下操作
sudo usermod -a -G adm 用戶名
sudo usermod -a -G sudo 用戶名
usermod -g 與 -G的區別
-g用來制定這個用戶默認的用戶組
-G一般配合'-a'來完成向其它組添加
修改文件權限:chmod
chmod 修改文件權限有兩種使用格式:字母法與數字法。
字母法:chmod u/g/o/a +/-/= rwx 文件
u 表示該檔案的擁有者,g 表示與該檔案的擁有者屬于同一個群體(group)者,o 表示其他以外的人,a 表示這三者皆是。
+ 表示增加權限、- 表示取消權限、= 表示唯一設定權限。
r 表示可讀取,w 表示可寫入,x 表示可執行,X 表示只有當該檔案是個子目錄或者該檔案已經被設定過為可執行。
-c : 若該檔案權限確實已經更改,才顯示其更改動作
-f : 若該檔案權限無法被更改也不要顯示錯誤訊息
-v : 顯示權限變更的詳細資料
-R : 對目前目錄下的所有檔案與子目錄進行相同的權限變更(即以遞回的方式逐個變更)
--help : 顯示輔助說明
--version : 顯示版本
范例 :將檔案 file1.txt 設為所有人皆可讀取 :
chmod ugo+r file1.txt
將檔案 file1.txt 設為所有人皆可讀取 :
chmod a+r file1.txt
將檔案 file1.txt 與 file2.txt 設為該檔案擁有者,與其所屬同一個群體者可寫入,但其他以外的人則不可寫入 :
chmod ug+w,o-w file1.txt file2.txt
將 ex1.py 設定為只有該檔案擁有者可以執行 :
chmod u+x ex1.py
將目前目錄下的所有檔案與子目錄皆設為任何人可讀取 :
chmod -R a+r *
此外chmod也可以用數字來表示權限如 chmod 777 file
語法為:chmod abc file
其中a,b,c各為一個數字,分別表示User、Group、及Other的權限。
r=4,w=2,x=1
若要rwx屬性則4+2+1=7;
若要rw-屬性則4+2=6;
若要r-x屬性則4+1=7。
范例:
chmod a=rwx file?和?chmod 777 file,效果相同
chmod ug=rwx,o=x file?和?chmod 771 file,效果相同
修改文件所有者:chown
1.命令格式:
chown [選項]... [所有者][:[組]] 文件...
2.命令功能:
通過chown改變文件的擁有者和群組。在更改文件的所有者或所屬群組時,可以使用用戶名稱和用戶識別碼設置。普通用戶不能將自己的文件改變成其他的擁有者。其操作權限一般為管理員。
3.命令參數:
必要參數:
-c 顯示更改的部分的信息
-f 忽略錯誤信息
-h 修復符號鏈接
-R 處理指定目錄以及其子目錄下的所有文件
-v 顯示詳細的處理信息
-deference 作用于符號鏈接的指向,而不是鏈接文件本身
選擇參數:
--reference=<目錄或文件> 把指定的目錄/文件作為參考,把操作的文件/目錄設置成參考文件/目錄相同擁有者和群組
--from=<當前用戶:當前群組> 只有當前用戶和群組跟指定的用戶和群組相同時才進行改變
--help 顯示幫助信息
--version 顯示版本信息
4.使用實例:
實例1:改變擁有者和群組
命令:
chown mail:mail log2012.log
修改文件所屬組:chgrp
1.命令格式:
chgrp?[選項]?[組]?[文件]
2.命令功能:
chgrp命令可采用群組名稱或群組識別碼的方式改變文件或目錄的所屬群組。使用權限是超級用戶。
3.命令參數:
必要參數:
-c?當發生改變時輸出調試信息
-f?不顯示錯誤信息
-R?處理指定目錄以及其子目錄下的所有文件
-v?運行時顯示詳細的處理信息
--dereference?作用于符號鏈接的指向,而不是符號鏈接本身
--no-dereference?作用于符號鏈接本身
選擇參數:
--reference=<文件或者目錄>
--help?顯示幫助信息
--version?顯示版本信息
4.使用實例:
實例1:改變文件的群組屬性
命令:
chgrp?-v?bin?log2012.log
查看當前日歷:cal
cal命令用于查看當前日歷,-y顯示整年日歷:
示或設置時間:date
設置時間格式(需要管理員權限):date [MMDDhhmm[[CC]YY][.ss]] +format
CC為年前兩位yy為年的后兩位,前兩位的mm為月,后兩位的mm為分鐘,dd為天,hh為小時,ss為秒。如: date 010203042016.55。
顯示時間格式(date '+%y,%m,%d,%H,%M,%S'):
%H 小時(以00-23來表示)。
%I 小時(以01-12來表示)。
%K 小時(以0-23來表示)。
%l 小時(以0-12來表示)。
%M 分鐘(以00-59來表示)。
%P AM或PM。
%r 時間(含時分秒,小時以12小時AM/PM來表示)。
%s 總秒數。起算時間為1970-01-01 00:00:00 UTC。
%S 秒(以本地的慣用法來表示)。
%T 時間(含時分秒,小時以24小時制來表示)。
%X 時間(以本地的慣用法來表示)。
%Z 市區。
%a 星期的縮寫。
%A 星期的完整名稱。
%b 月份英文名的縮寫。
%B 月份的完整英文名稱。
%c 日期與時間。只輸入date指令也會顯示同樣的結果。
%d 日期(以01-31來表示)。
%D 日期(含年月日)。
%j 該年中的第幾天。
%m 月份(以01-12來表示)。
%U 該年中的周數。
%w 該周的天數,0代表周日,1代表周一,異詞類推。
%x 日期(以本地的慣用法來表示)。
%y 年份(以00-99來表示)。
%Y 年份(以四位數來表示)。
%n 在顯示時,插入新的一行。
%t 在顯示時,插入tab。
MM 月份(必要)
DD 日期(必要)
hh 小時(必要)
mm 分鐘(必要)
ss 秒(選擇性)
選擇參數:
-d<字符串> 顯示字符串所指的日期與時間。字符串前后必須加上雙引號。
-s<字符串> 根據字符串來設置日期與時間。字符串前后必須加上雙引號。
-u 顯示GMT。
--help 在線幫助。
--version 顯示版本信息
4.使用說明:
1.在顯示方面,使用者可以設定欲顯示的格式,格式設定為一個加號后接數個標記,其中可用的標記列表如下: % :? 打印出 %:
%n : 下一行
%t : 跳格
%H : 小時(00..23)
%I : 小時(01..12)
%k : 小時(0..23)
%l : 小時(1..12)
%M : 分鐘(00..59)
%p : 顯示本地 AM 或 PM
%r : 直接顯示時間 (12 小時制,格式為 hh:mm:ss [AP]M)
%s : 從 1970 年 1 月 1 日 00:00:00 UTC 到目前為止的秒數
%S : 秒(00..61)
%T : 直接顯示時間 (24 小時制)
%X : 相當于 %H:%M:%S
%Z : 顯示時區 %a : 星期幾 (Sun..Sat)
%A : 星期幾 (Sunday..Saturday)
%b : 月份 (Jan..Dec)
%B : 月份 (January..December)
%c : 直接顯示日期與時間
%d : 日 (01..31)
%D : 直接顯示日期 (mm/dd/yy)
%h : 同 %b
%j : 一年中的第幾天 (001..366)
%m : 月份 (01..12)
%U : 一年中的第幾周 (00..53) (以 Sunday 為一周的第一天的情形)
%w : 一周中的第幾天 (0..6)
%W : 一年中的第幾周 (00..53) (以 Monday 為一周的第一天的情形)
%x : 直接顯示日期 (mm/dd/yy)
%y : 年份的最后兩位數字 (00.99)
%Y : 完整年份 (0000..9999)
2.在設定時間方面:
date -s //設置當前時間,只有root權限才能設置,其他只能查看。
date -s 20080523 //設置成20080523,這樣會把具體時間設置成空00:00:00
date -s 01:01:01 //設置具體時間,不會對日期做更改
date -s “01:01:01 2008-05-23″ //這樣可以設置全部時間
date -s “01:01:01 20080523″ //這樣可以設置全部時間
date -s “2008-05-23 01:01:01″ //這樣可以設置全部時間
date -s “20080523 01:01:01″ //這樣可以設置全部時間
3.加減:
date +%Y%m%d? ? ? ? //顯示前天年月日
date +%Y%m%d --date="+1 day"? //顯示前一天的日期
date +%Y%m%d --date="-1 day"? //顯示后一天的日期
date +%Y%m%d --date="-1 month"? //顯示上一月的日期
date +%Y%m%d --date="+1 month"? //顯示下一月的日期
date +%Y%m%d --date="-1 year"? //顯示前一年的日期
date +%Y%m%d --date="+1 year"? //顯示下一年的日期
查看進程信息:ps
進程是一個具有一定獨立功能的程序,它是操作系統動態執行的基本單元。
工具標識進程的5種狀態碼:
D 不可中斷 uninterruptible sleep (usually IO)
R 運行 runnable (on run queue)
S 中斷 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
1.命令格式:
ps[參數]
2.命令功能:
用來顯示當前進程的狀態
3.命令參數:auxwr
-a 顯示同一終端下的所有程序
r? 顯示當前終端的進程
u? 指定用戶的所有進程
x 顯示沒有終端控制的進程
w 顯示加寬
-au 顯示較詳細的資訊
-aux 顯示所有包含其他使用者的行程
動態顯示進程:top
top命令用來動態顯示運行中的進程。top命令能夠在運行后,在指定的時間間隔更新顯示信息。可以在使用top命令時加上-d?來指定顯示信息更新的時間間隔。
d 指定每兩次屏幕信息刷新之間的時間間隔。當然用戶可以使用s交互命令來改變之。
p 通過指定監控進程ID來僅僅監控某個進程的狀態。
q 該選項將使top沒有任何延遲的進行刷新。如果調用程序有超級用戶權限,那么top將以盡可能高的優先級運行。
S 指定累計模式
s 使top命令在安全模式中運行。這將去除交互命令所帶來的潛在危險。
i 使top不顯示任何閑置或者僵死進程。
c 顯示整個命令行而不只是顯示命令名
Ctrl+L 擦除并且重寫屏幕。
h或者? 顯示幫助畫面,給出一些簡短的命令總結說明。
k? ? ? 終止一個進程。系統將提示用戶輸入需要終止的進程PID,以及需要發送給該進程什么樣的信號。一般的終止進程可以使用15信號;如果不能正常結束那就使用信號9強制結束該進程。默認值是信號15。在安全模式中此命令被屏蔽。
i 忽略閑置和僵死進程。這是一個開關式命令。
q 退出程序。
r 重新安排一個進程的優先級別。系統提示用戶輸入需要改變的進程PID以及需要設置的進程優先級值。輸入一個正值將使優先級降低,反之則可以使該進程擁有更高的優先權。默認值是10。
S 切換到累計模式。
s 改變兩次刷新之間的延遲時間。系統將提示用戶輸入新的時間,單位為s。如果有小數,就換算成m s。輸入0值則系統將不斷刷新,默認值是5 s。需要注意的是如果設置太小的時間,很可能會引起不斷刷新,從而根本來不及看清顯示的情況,而且系統負載也會大大增加。
f或者F 從當前顯示中添加或者刪除項目。
o或者O 改變顯示項目的順序。
l 切換顯示平均負載和啟動時間信息。
m 切換顯示內存信息。
t 切換顯示進程和CPU狀態信息。
c 切換顯示命令名稱和完整命令行。
M 根據駐留內存大小進行排序。
P 根據CPU使用百分比大小進行排序。
T 根據時間/累計時間進行排序。
W 將當前設置寫入~/.toprc文件中。這是寫top配置文件的推薦方法
終止進程:kill
kill命令指定進程號的進程,需要配合 ps 使用。
使用格式:kill [-signal] pid
信號值從0到15,其中9為絕對終止,可以處理一般信號無法終止的進程。
kill 9133 :9133 為應用程序所對應的進程號
有些進程不能直接殺死,這時候我們需要加一個參數“ -9 ”,“ -9 ” 代表強制結束:
關機重啟:reboot、shutdown、init
reboot [-n] [-w] [-d] [-f] [-h] [-i]
-n: 停系統之前不同步
-w: 只寫wtmp reboot記錄并離開
-d: 不寫wtmp記錄
-f: 強制停機或重啟
-h: 讓硬盤處于單機模式
-i: 關閉所有的網絡接口
# shutdown -h now #立刻關機
# shutdown -h 2:30 'halt'? #2點30分關機,注意以本機時間為準
# halt -p? ? ? ? ? ? ? ? ? #立刻關機
# init 0? ? ? ? ? ? ? ? ? #立即將系統運行級別切換為0,即關機
# shutdown now? ? ? ? ? ? #切換至單人操作模式(不加任何選項時)
重啟例子
# shutdown -k now 'reboot' #發出警告訊息,但沒有真的關機.
# shutdown -t5 -r now? #立刻重啟, 但在警告和刪除進程之間,延遲5秒鐘.
# init 6? ? ? ? ? ? ? ? ? #立即將系統運行級別切換為6,即重啟
# shutdown -r +10 'reboot' #10分鐘后重啟
# shutdown -c? ? ? ? ? ? ? #取消之前的shutdown命令
# shutdown -r now? ? ? ? ? #立刻重啟
檢測磁盤空間:df
df命令用于檢測文件系統的磁盤空間占用和空余情況,可以顯示所有文件系統對節點和磁盤塊的使用情況。
必要參數:
-a 全部文件系統列表
-h 方便閱讀方式顯示
-H 等于“-h”,但是計算式,1K=1000,而不是1K=1024
-i 顯示inode信息
-k 區塊為1024字節
-l 只顯示本地文件系統
-m 區塊為1048576字節
--no-sync 忽略 sync 命令
-P 輸出格式為POSIX
--sync 在取得磁盤信息前,先執行sync命令
-T 文件系統類型
檢測目錄所占磁盤空間:du
du命令用于統計目錄或文件所占磁盤空間的大小,該命令的執行結果與df類似,du更側重于磁盤的使用狀況。
du命令的使用格式如下: du [選項] 目錄或文件名
查看或配置網卡信息:ifconfig
如果,我們只是敲:ifconfig,它會顯示所有網卡的信息