#!/bin/bash
# 編寫 nginx 啟動指令碼
# 本指令碼編寫完成後,放置在/etc/init.d/目錄下,就可以被 linux 系統自動識別到該指令碼
# 如果本指令碼名為/etc/init.d/nginx,則 service nginx start 就可以啟動該服務
# service nginx stop 就可以關閉服務
# service nginx restart 可以重啟服務
# service nginx status 可以檢視服務狀態
program=/usr/local/nginx/sbin/nginx
pid=/usr/local/nginx/logs/nginx.pid
start(
)status(
)case
$1in
start)
start;
;stop)
stop;
;restart)
stop
sleep 1
start;
;status)
status;;*)
echo
"你輸入的語法格式錯誤"
esac
#!/bin/bash
# 自動對磁碟分割槽、格式化、掛載
# 對虛擬機器的 vdb 磁碟進行分割槽格式化,使用《將需要的分割槽指令匯入給程式 fdisk
# n(新建分割槽),p(建立主分割槽),1(分割槽編號為 1),兩個空白行(兩個回車,相當於將整個磁碟分乙個區)
# 注意:1 後面的兩個回車(空白行)是必須的!
fdisk /dev/vdb <<
eofnp1
wqeof#格式化剛剛建立好的分割槽
mkfs.xfs /dev/vdb1
#建立掛載點目錄
if[ -e /data ]
;then
exit
fimkdir /data
#自動掛載剛剛建立的分割槽,並設定開機自動掛載該分割槽
echo
'/dev/vdb1 /data xfs defaults 1 2'
>> /etc/fstab
mount -a
#!/bin/bash
# 自動優化 linux 核心引數
#指令碼針對 rhel7
cat>> /usr/lib/sysctl.d/00‐system.conf <<
eoffs.file‐max=65535
net.ipv4.tcp_timestamps = 0
net.ipv4.tcp_synack_retries = 5
net.ipv4.tcp_syn_retries = 5
net.ipv4.tcp_tw_recycle = 1
net.ipv4.tcp_tw_reuse = 1
net.ipv4.tcp_fin_timeout = 30
#net.ipv4.tcp_keepalive_time = 120
net.ipv4.ip_local_port_range = 1024 65535
kernel.shmall = 2097152
kernel.shmmax = 2147483648
kernel.shmmni = 4096
kernel.sem = 5010 641280 5010 128
net.core.wmem_default=262144
net.core.wmem_max=262144
net.core.rmem_default=4194304
net.core.rmem_max=4194304
net.ipv4.tcp_fin_timeout = 10
net.ipv4.tcp_keepalive_time = 30
net.ipv4.tcp_window_scaling = 0
net.ipv4.tcp_sack = 0
eof
sysctl –p
#mkdir /data/scripts
#vim /data/scripts/nginx_log.sh
#!/bin/bash
# 切割 nginx 日誌檔案(防止單個檔案過大,後期處理很困難)
logs_path=
"/usr/local/nginx/logs/"
mv$access.log $access_$(
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
#!/bin/bash
# 檢測 mysql 資料庫連線數量
# 本指令碼每 2 秒檢測一次 mysql 併發連線數,可以將本指令碼設定為開機啟動指令碼,或在特定時間段執行
# 以滿足對 mysql 資料庫的監控需求,檢視 mysql 連線是否正常
# 本案例中的使用者名稱和密碼需要根據實際情況修改後方可使用
log_file=/var/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
#!/bin/bash
# 根據 md5 校驗碼,檢測檔案是否被修改
# 本示例指令碼檢測的是/etc 目錄下所有的 conf 結尾的檔案,根據實際情況,您可以修改為其他目錄或檔案
# 本指令碼在目標資料沒有被修改時執行一次,當懷疑資料被人篡改,再執行一次
# 將兩次執行的結果做對比,md5 碼發生改變的檔案,就是被人篡改的檔案
for i in
$(ls /etc/*.conf)
do md5sum "$i"
>> /var/log/conf_file.log
done
#!/bin/bash
# 檢測 mysql 服務是否存活
# host 為你需要檢測的 mysql 主機的 ip 位址,user 為 mysql 賬戶名,passwd 為密碼
# 這些資訊需要根據實際情況修改後方可使用
host=192.168.51.198
user=root
passwd=123456
mysqladmin -h '$host' -u '$user' -p'$passwd'
ping
&>/dev/nullif[
$? -eq 0 ]
then
echo
"mysql is up"
else
echo
"mysql is down"
fi
#!/bin/bash
# 備份 mysql 的 shell 指令碼(mysqldump版本)
# 定義變數 user(資料庫使用者名稱),passwd(資料庫密碼),date(備份的時間標籤)
# dbname(需要備份的資料庫名稱,根據實際需求需要修改該變數的值,預設備份 mysql 資料庫)
user=root
passwd=123456
dbname=mysql
date=
$(date +%y%m%d)
# 測試備份目錄是否存在,不存在則自動建立該目錄
[! -d /mysqlbackup ]
&&mkdir /mysqlbackup
# 使用 mysqldump 命令備份資料庫
mysqldump -u "$user" -p "$passwd"
"$dbname"
> /mysqlbackup/"$dbname"-$.sql
#!/bin/bash
# 將檔案中所有的小寫字母轉換為大寫字母
# $1是位置引數,是你需要轉換大小寫字母的檔名稱
# 執行指令碼,給定乙個檔名作為引數,指令碼就會將該檔案中所有的小寫字母轉換為大寫字母
tr"[a‐z]"
"[a‐z]"
<
$1
#!/bin/bash
# 非互動自動生成 ssh 金鑰檔案
# ‐t 指定 ssh 金鑰的演算法為 rsa 演算法;‐n 設定金鑰的密碼為空;‐f 指定生成的金鑰檔案》存放在**
rm -rf ~/.ssh/
ssh‐keygen -t rsa -n '' -f ~/.ssh/id_rsa
站長常用Shell指令碼整理分享1 10
bin bash 編寫hello world指令碼 echo hello world bin bash 統計當前 linux 系統中可以登入計算機的賬戶數量 grep bash etc passwd wc l bin bash 編寫批量修改副檔名指令碼,如批量將 txt 檔案修改為 doc 檔案 執...
站長常用Shell指令碼整理分享31 40
bin bash 顯示當前計算機中所有賬戶的使用者名稱 下面使用3種不同的方式列出計算機中所有賬戶的使用者名稱 指定以 為分隔符,列印 etc passwd 檔案的第 1 列 awk f etc passwd 指定以 為分隔符,列印 etc passwd 檔案的第 1 列 cut d f1 etc ...
站長常用Shell指令碼整理分享51 59
bin bash 一鍵配置 vnc 遠端桌面伺服器 無密碼版本 指令碼配置的 vnc 伺服器,客戶端無需密碼即可連線 客戶端僅有檢視遠端桌面的許可權,沒有滑鼠和鍵盤的操作許可權 rpm quiet q tigervnc serverif ne 0 then yum y tigervnc server...