1. 程式人生 > >Shell筆記系列七

Shell筆記系列七

du/df

磁碟空間是一種有限資源,du(disk usage) 和df(disk free)命令可以報告磁碟的使用情況

找出某個檔案佔用的磁碟空間:

[[email protected] test]$ du hello.txt 
4	hello.txt

遞迴的查考某個目錄中所有檔案的磁碟使用情況

[[email protected] test]$ du -a www.csdn.net/
104	www.csdn.net/nav/newarticles
0	www.csdn.net/nav/watchers
140	www.csdn.net/nav/news
......

du命令預設顯示檔案佔用的總位元組數,以KB,MB或GB為單位顯示磁碟使用情況,可以使用-h選項。-b選項以位元組為單位列印(預設),-k以KB為單位列印檔案大小,-m以MB為單位列印檔案大小,-B以指定塊為單位列印檔案大小。

[[email protected] test]$ du -h hello.txt 
4.0K	hello.txt
[[email protected] test]$ 

-c選項可以計算出檔案或目錄所佔用的總的磁碟空間,-s選項則只輸出總計資料,可以和-h配置列印。

[[email protected] test]$ du -sh www.csdn.net/
25M	www.csdn.net/

--exclude選項可以與萬用字元或單個檔名配合使用;--max-depth 可以限制du遍歷目錄的層數。

time

可以測量出應用程式的執行時間。time application  ,time命令或執行application,當application執行完畢後,time命令將其real時間,sys時間,user時間輸出到stderr中,將application的正常輸出傳送到stdout中。

[[email protected] test]$ time ls
hello.txt        [email protected]  output3.tar  www.csdn.net  yes.pub
image.baidu.com  output2.tar           output.tar   yes

real	0m0.003s
user	0m0.001s
sys	0m0.002s

/usr/bin/time -o ouput.txt command  : 可以將相關的時間統計資訊寫入檔案,

/usr/bin/time -a -o output.txt command  :可以將相關的時間統計資訊追加到檔案的末尾。

-f可以指定輸出哪些統計資訊及其格式 :

[[email protected] test]$ /usr/bin/time -f "Time spend %U " -a -o timespent.log ls
hello.txt	 [email protected]  output3.tar  timespent.log  yes
image.baidu.com  output2.tar	       output.tar   www.csdn.net   yes.pub
[[email protected] test]$ cat timespent.log
Time spend 0.00 

引數解釋:time命令預設報告3類時間:

Real:指的是壁鐘時間即命令開始到執行結束的時間。

User:指程序花費在使用者模式的中的CPU時間。

Sys:指程序花費在核心中的CPU時間。

who

可以獲取當前登入使用者的相關資訊,該命令會顯示登入名,使用者所使用的TTY,登入時間以及登入使用者的遠端主機名。

TTY:是與文字終端相關聯的裝置檔案,當用戶產生一個新終端,對應的裝置檔案就會出現在/dev中,可以使用tty命令獲取當前終端的裝置路徑。

[[email protected] test]$ who
land     :0           2018-12-13 06:34 (:0)
land     pts/1        2018-12-13 07:26 (:0)

w

w命令可以獲取更詳細的與使用者登入有關的資訊。

users

列出當前的登入的使用者列表。

last

可以獲取來自檔案/var/log/wtmp建立之後登入過系統的使用者列表,可以追溯到很久

[[email protected] test]$ last
land     pts/1        :0               Thu Dec 13 07:26   still logged in   
land     pts/1        :0               Thu Dec 13 06:50 - 07:15  (00:24)    
land     pts/0        :0               Thu Dec 13 06:50 - 08:04  (01:14)    
land     pts/1        :0               Thu Dec 13 06:43 - 06:48  (00:05)    

ps

ps命令可以顯示出系統中程序的詳細資訊,包括CPU的使用情況,所執行的命令,記憶體佔用,程序狀態等。

logger

守護程序和系統程序的日誌檔案位於/var/log目錄中,守護程序sylogd使用syslog標準協議處理日誌

向日志文件/var/log/message中寫入資訊

[[email protected] ~]# logger this is my first to use the logger command 
[[email protected] ~]# tail -n 1 /var/log/messages
Dec 13 08:31:49 localhost land: this is my first to use the logger command
[[email protected] ~]# 

選項-t可以定義訊息標籤

選項-f可以將其他檔案的內容記錄到系統日誌中。

fsck

檢查檔案系統,如果檔案系統長時間沒有檢查或者懷疑檔案有損壞,Linux在啟動的時候會自動執行fsck,也可以手動執行該命令

fsck /dev/sdb1

選項-A可以檢查指定裝置的所有檔案系統。

選項-a指示fsck嘗試自動修復錯誤。

which

用來找好粗某個命令的位置

whereis

用來返回命令的路徑,還可以打印出其對應的命令手冊以及原始碼的路徑。

whatis

會輸出指定命令的一行簡單描述,描述資訊是從命令手冊中解析出來的。

file

可以用來確定檔案的型別。

kill

訊號能夠中斷正在執行的程式,當程序接受到一個訊號時,它會執行對應的訊號處理程式作為響應,編譯型的應用程式使用系統呼叫kill生成訊號,通過kill命令實現。

終止程序,kill命令預設傳送SIGTERM訊號,訊號用來終止程序,程序ID列表中使用空格來分隔各個程序。

[[email protected] ~]$ top &
[1] 2968
[[email protected] ~]$ kill 2968

[1]+  Stopped                 top

選項-s可以指定傳送給程序的訊號

kill -s SINGAL PID 

hostname/uname

可以輸出當前系統的主機名

crontab

使用cron進行排程

允許任務能夠按照固定的時間間隔在系統後臺自動執行,cron使用一個表,表中儲存了需要執行的一系列指令碼或命令以及執行的時間。cron常用於排程系統維護任務,例如備份。

cron表指定了執行的時間以及要執行的命令,cron表中的每一行都定義了單條命令,命令可以是指令碼或二進位制可執行檔案。cron表中的每一行均由6個欄位組成,每個欄位之間以空格分隔並按照以下順序排列:

分鐘,小時,天,月份,星期中的某天,命令。

前5個欄位指明命令開始執行的時間,多個值之間使用逗號分隔,星號表示任何時間段,除號表示排程的時間間隔。(在分鐘欄位上出現*/5表示每隔5分鐘)

/etc/crontab檔案

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root

# For details see man 4 crontabs

# Example of job definition:
# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

在每天中每小時的第二分鐘執行指令碼test.sh

02 * * * * /home/land/test.sh

在每週日的時候,每隔2小時執行指令碼script.sh

00  /2 * * 0 / home/land/scripth   

crontab命令採用互動式或使用預先寫好的檔案

crontab -e 

02 * * * 1  /home/land/test2.sh

執行cron作業使用的許可權同建立crontab的使用者的許可權相同,如果需要執行更高的許可權命令,需要以root使用者身份執行crontab命令。

crontab -i 可列出當前使用者的cron表

crontab -r 可以刪除當前使用者的cron表。

useradd

用來建立新使用者

[[email protected] ~]$ useradd xixi -p 123456 -m

deluser

用來刪除使用者

[[email protected] ~]$ deluser xixi --remove-all-files

cssh

用於修改使用者的預設shell

[[email protected] ~]$ chsh xixi -s SHELL

passwd

用於修改使用者的密碼,不加任何引數,則預設修改當前使用者的密碼

[[email protected] ~]$ passwd land

addgroup

建立一個新的使用者組

[[email protected] ~]$ addgroup mysql

在建立組的時候,將一個特定的使用者,新增到組中

[[email protected] ~]$ addgroup xixi mysql

delgroup

刪除一個使用者組

[[email protected] ~]$ delgroup mysql

 

 

參考《Linux Shell 指令碼攻略》