目錄
第一部分:操作文件及目錄
1. 文件屬性(查看文件屬性命令stat)
struct stat {
dev_t st_dev; /* 設備 */
ino_t st_ino; /* 節點 */
mode_t st_mode; /* 模式 */
nlink_t st_nlink; /* 硬連接 */
uid_t st_uid; /* 用戶ID */
gid_t st_gid; /* 組ID */
dev_t st_rdev; /* 設備類型 */
off_t st_off; /* 文件字節數 */
unsigned long st_blksize; /* 塊大小 */
unsigned long st_blocks; /* 塊數 */
time_t st_atime; /* 最後一次訪問時間 */
time_t st_mtime; /* 最後一次修改時間 */
time_t st_ctime; /* 最後一次改變時間(指屬性) */
};
2. 文件類型
文件類型對應文件屬性中的st_mode,文件類型有很多種,常見的有常規文件、符號鏈接(硬鏈接、軟鏈接)、管道文件、設備文件(符號設備、塊設備)、socket文件等,不同的文件類型對應不同的功能和作用。
file,這個命令用來查看各類文件的屬性,和 stat 命令相比,它可以進一步識別普通文件。
3. 文件屬主
文件屬主包括該文件所屬用戶,以及該文件所屬的用戶組,用戶可以屬於多個組。
管理命令:
- useradd , userdel 創建和刪除用戶
- groupadd , groupdel 創建和刪除用戶組
- passwd 修改用戶密碼
配置信息管理文件說明:
- /etc/passwd 存放用戶信息
- /etc/group 存放用戶組信息
- /etc/shadow 存放密碼
常用命令:
- chown [-R] 用戶名:組名 文件名 修改文件屬主,-R表示遞歸修改
- chmod [+/- rwx]/[八進制數字] 文件名 修改文件權限
4. 高頻使用命令彙總
- cd:切換目錄
- mkdir:創建目錄
- touch:創建文件
- vim:編輯文件內容,或新建一個文件並進入編輯狀態
- cat/less/more/head/tail... 查看文件內容
- ls: 顯示當前目錄下的文件和目錄
- cp:複製文件或目錄
- ln:創建鏈接文件
硬鏈接,創建方式:ln + 源文件名 + 目標文件名
軟連接,即符號鏈接,創建方式:ln -s + 源文件名 + 目標文件名
- mv:重命名或移動文件
- rm:刪除文件,刪除目錄使用rm -r +目錄名稱
5. 應用示例
#!/bin/bash
#遍歷目錄下所有的文件是目錄還是文件
for file in /Users/*
do
if test -d ${file}; then
echo "${file}是目錄"
else
echo "${file}是文件"
fi
done
#按行讀取文件內容
while read LINE; do echo $LINE; done < test.sh
第二部分:監控程序
監測程序
ps: 顯示運行在當前控制檯下的屬於當前用戶的進程;
top: 實時顯示進程信息;
kill PID: 終止進程,kill -s HUP 3904
監測磁盤空間
mount:輸出當前系統上掛載媒體的設備列表
mount -t type device directory 手動掛載媒體設備的命令,示例:mount -t vfat /dev/sdb1 /media/disk/
type參數指定了磁盤被格式化的文件系統類型
- vfat:windows長文件系統;
- ntfs: 。。。高級文件系統;
- iso9660:標準CD-ROM文件系統;
umount:卸載掛載設備,從Linux系統上移除一個可移動設備時,不能從系統上直接刪除,而是要先卸載
umount [directory | device] 卸載移動設備的命令
df:查看所有易掛載設備的使用情況
du:顯示某個特定目錄磁盤使用情況 [-c -h -s]
sort [-n -M -r] 對文件內容排序 -n以數字排序,-M三字符月份名排序, 反序排序
tar -cvf test.tar test/ test2/ 歸檔文件 ----> tar -xvf test.jar 從已有歸檔文件中提取文件(.tgz結尾的文件使用-zxvf解壓)
應用示例: 監控系統服務,併發送異常報警郵件第三部分:編輯器相關使用
#!/bin/bash
#a mail alarm which could monitor a server batchly
#by author @GuoChunli 2019
cat << EOF
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+++++++++++++++++Welcome to use auto server monitor++++++++++++++++
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
EOF
EMAIL=email.txt
DATE=`date`
#check it's a file ,then traverse all elements in the file
if [[ -z $1 ]];then
echo -e "\033[31m {Usage: nginx | mysql | monitorServers.txt} \033[0m"
exit
fi
if [ -f $1 -a "$1" == "monitorServers.txt" ];then
for i in `cat monitorServers.txt | grep -v "#"`
do
count=` ps -ef | grep $i | grep -v email | grep -v grep | wc -l `
M_IPADDR=`ipconfig getoption en0 router | grep "Bcast" | awk '{print $2}' | cut -d: -f 2`
if [[ $count -eq 0 ]]; then
cat > $EMAIL << EOF
********************server monitor*****************
通知類型: malfunction
服務:$i
主機:$M_IPADDR
狀態:Warning
日期/時間:$DATE
其他信息:
CRITICAL - $i Server connection is abnormal, please check!
***************************************************
EOF
dos2unix $EMAIL
echo -e "\033[31m The server $i is abnormal, please check! \033[0m"
mail -s "$M_IPADDR $i is abnormal" [email protected] < $EMAIL >> /dev/null 2>&1
else
echo "The server $i is in service!"
fi
done
else
count=` ps -ef | grep $1 | grep -v email | grep -v "grep" | wc -l `
M_IPADDR=`ipconfig getoption en0 router | grep "Bcast" | awk '{print $2}' | cut -d: -f 2`
if [[ $count -eq 0 ]]; then
cat > $EMAIL << EOF
********************server monitor*****************
通知類型: malfunction
服務:$1
主機:$M_IPADDR
狀態:Warning
日期/時間:$DATE
其他信息:
CRITICAL - $1 Server connection is abnormal, please check!
***************************************************
EOF
dos2unix $EMAIL
echo -e "\033[31m The server $1 is abnormal, please check! \033[0m"
mail -s "$M_IPADDR $1 is abnormal" [email protected] < $EMAIL >> /dev/null 2>&1
else
echo "The server $1 is in service!"
fi
fi
第三部分:編輯器相關使用
vim 編輯器(vi improved,簡稱vim)
vi編輯器是Unix系統最初的編輯器,它使用控制檯圖形模式來模擬文本編輯窗口,允許查看文件中的行、在文本中移動、插入、編輯和替換文本。
apt-get 用於自動從互聯網的軟件倉庫中搜索、安裝、升級、卸載軟件或操作系統。
vim編輯器在內存緩衝區域處理數據。
vim編輯器有兩種操作模式:
- 普通模式,將按鍵解釋爲命:令h(左) j(下) k(上) l(右)
- 插入模式
x 刪除當前光標所在位置的字符
dd 刪除光標所在行
dw 刪除光標所在位置的單詞
d$ 刪除光標所在位置至行尾的內容
J 刪除光標所在行的換行符
u 撤銷上一編輯命令
a 在當前光標位置後追加
A 在當前光標坐在行行尾追加
r [char] 用char替換光標所在位置的單個字符
R [text] 用text覆蓋光標所在位置的數據,知道按下esc
v 進入可視模式
y 複製(y$複製內容至當前行尾)
p 粘貼
:s/old/new/ 替換
:s/lod/new/g 替換所有old
:n, ms/old/new/g 替換行號n和m之間所有old
:%s/old/new/g 替換整個文件中的所有old
:%s/old/new/gc 替換整個文件中的所有old,但每次出現時提示
nano 編輯器
nano myprog.c 啓動編輯器,nano控制命令在使用時,不區分大小寫
附錄
1. Linux下掛載點說明
- / : 虛擬目錄的根目錄,通常不會在這裏存儲文件
- /usr :用戶安裝軟件的目錄
- /var :可變目錄,用以存放經常變化的文件,比如日誌文件
- /bin :二進制目錄,存放許多GNU用戶級的工具
- /dev :設備目錄,Linux在這裏創建設備節點
- /home :主目錄,Linux在這裏創建用戶目錄
- /etc :系統配置文件目錄
- /boot :啓動目錄,存放啓動文件
- /opt :可選目錄,通常用於存放可選的軟件包
- /lib :庫目錄,存放系統和應用程序的庫文件
- /tmp :臨時目錄,可以在該目錄創建和刪除臨時工作文件