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 指令碼攻略》