1,統計當前linux系統中可以登入計算機的賬戶數量
#!/bin/bash
#統計當前linux系統中可以登入計算機的賬戶有多少個
grep "bash$" /etc/passwd |wc -l
2,檢測mysql資料庫連線數量
#!/bin/bash
#檢測mysql資料庫連線數量
#本指令碼每2秒檢測一次mysql併發連線數,可以將本指令碼設定為開機啟動指令碼,或在特定時間段執行,以滿足對mysql資料庫的監控需求,檢視mysql連線是否正常
#本案例中的使用者名稱和密碼需要根據實際情況修改後方可使用
log_file=/val/log/mysql_count.log
user=root
passwd=123456
while :
do sleep 2
count=`mysqladmin -u "$user" -p "$passwd" status |awk ''`
echo "`date +%y-%m-%d` 併發連線數為:$count" >>$log_file
done
3,ps3和select用法
#!/bin/bash
ps3="select your will exec menu:"
select i in "apache安裝" "mysql安裝" "php安裝"
docase $i in
apache安裝)
;; mysql安裝)
echo -e "\033[32mwait install mysql...\033[0m"
;;php安裝)
echo -e "\033[32mwait install php...\033[0m"
;;*) echo -e "\033[32musage: \033[0m"
;;esac
done
4,輸入的賬戶名稱寫入到陣列儲存
#!/bin/bash
#讀取使用者輸入的賬戶名稱,將賬戶名寫入到陣列儲存
#定義陣列名稱為name,陣列的下表為i,小標從0開始,每輸入乙個賬戶名,下標加1,繼續存下乙個賬戶
#最後,輸入over,指令碼輸入總結性資訊後指令碼退出
i=0while :
do read -p "請輸入賬戶名,輸入over結束:" key
if [ $key == "over" ];then
break
else
name[$i]=$key
let i++
fidone
echo "總賬戶名數量:$"
echo "$"
5,檢視所有遠端連線本機的ip
#!/bin/bash
#檢視有多少遠端的ip連線本機(不管是通過ssh還是web還是ftp都統計)
#使用netstat -atn可以檢視本機的所有連線狀態,-a檢視所有,-t僅顯示tcp連線的資訊,-n數字格式顯示
#local address(第四列是本機的ip和埠資訊)
#foreign address(第五列是遠端主機的ip和埠資訊)
#使用awk命令僅顯示第五列資料,再顯示第1列ip位址的資訊
#sort可以按大小排序,最後使用uniq將多餘重複的刪除,並統計重複的次數
netstat -atn |awk '' |awk '' |sort -nr |uniq -c
6,切割nginx日誌檔案
#!/bin/bash
#切割nginx日誌檔案(防止單個檔案過大,後期處理很困難)
#mkdir /data/scripts
#vim /data/scripts/nginx_log.sh
logs_path="/usr/local/nginx/logs/"
mv $access.log $accese_$(date -d "yesterday" +"%y%m%d").log
kill -usr1 `cat /usr/local/nginx/logs/nginx.pid`
#chmod +x /data/scripts/nginx_log.sh
#crontab -e 指令碼寫完後,將指令碼放入計畫任務每天執行一次指令碼
#0 1 * * * /data/scripts/nginx_log.sh
7,生成自簽名私鑰和證書
#!/bin/bash
#生成自簽名私鑰和證書
read -p "請輸入存放證書的目錄:" dir
if [ ! -d $dir ];then
echo "該目錄不存在"
exit
firead -p "請輸入私鑰名稱" name
#使用openssl生成私鑰
openssl genrsa -out $/$.key
#使用openssl生成證書
#subj選項可以在生成證書時,非互動自動填寫common name資訊
openssl req -new -x509 -key $/$.key -subj "/cn=common" -out $/$.crt
8,編寫批量修改副檔名指令碼,如批量將txt檔案修改為doc檔案
#!/bin/bash
#執行指令碼時,需要給指令碼新增位置引數
#指令碼名txt doc(可以將txt的副檔名修改為doc)
#指令碼名doc jpg(可以將doc的副檔名修改為jpg)
for i in "ls *.$1"
domv $i $.$2
done
9,迴圈關閉區域網中所有主機
#!/bin/bash
#迴圈關閉區域網中所有主機
#假設本機ip為192.168.4.100,編寫指令碼關閉除自己外的其他所有主機
#指令碼執行,需要提前給所有其他主機傳遞ssh金鑰,滿足無密碼連線
for i in
do [ $i -eq 100 ] && continue
echo "正在關閉192.168.4.$i..."
ssh 192.168.4.$i poweroff
done
10,統計linux程序相關數量資訊
#!/bin/bash
#統計linux程序相關數量資訊
running=0
sleeping=0
stoped=0
zombie=0
#在proc目錄下所有以數字開始的都是當前計算機正在執行的程序的程序pid
#每個pid編號的目錄下記錄有該程序相關的資訊
for pid in /proc/[1-9]*
do procs=$[procs+1]
stat=$(awk '' $pid/stat)
#每個pid目錄下都有乙個stat檔案,該檔案的第3列是該程序的狀態資訊
case $stat in
r) running=$[running+1];;
t) stoped=$[stoped+1];;
s) sleeping=$[sleeping+1];;
z) zombie=$[zombie+1];;
esac
done
echo "程序統計資訊如下"
echo "總程序數為:$procs"
echo "runing程序數為:$running"
echo "stoped程序數為:$stoped"
echo "sleeping程序數為:$sleeping"
echo "zombie程序數為:$zombie"
C語言呼叫SHELL指令碼
在linux 環境下shell指令碼具有非常強大的功能!使用shell可以很方便的使用和管理linux系統,最近學習了一點shell知識,所以一直在 想要是可以在c c 中呼叫shell指令碼那該有多好啊!因為使用c c 要幾百行 才能搞定的!使用shell只要短短十幾行就可以輕鬆搞定!includ...
Shell指令碼(三) Shell指令碼入門
1 指令碼格式 指令碼以 bin bash開頭 指定解析器 2 第乙個shell指令碼 helloworld 1 需求 建立乙個shell指令碼,輸出helloworld 2 案例實操 atguigu hadoop101 datas touch helloworld.sh atguigu hadoo...
Shell指令碼和shell
1.shell script,shell指令碼與windows dos下的批處理相似,也就是用各類命令預先放入到乙個檔案中,方便一次性執行的乙個程式檔案,主要是方便管理員進行設定或者管理用的。但是它比windows下的批處理更強大,比用其他程式設計程式編輯的程式效率更高,畢竟它使用了linux un...