1、信息从MySQL中导出
#!/bin/sh
# 导出产品信息
/usr/local/mysql/bin/mysql -uroot -p123456 <<EOF
use adbmarket;
SELECT id, NAME, package_name, VERSION , OWNER, cpid FROM app_info ORDER BY id ASC INTO OUTFILE '/tmp/app_info.csv' FIELDS TERMINATED BY ',';
EOF
# 移动文件至目的地
rm -rf /mnt/android/soft/adbmarket/app_info*.csv
mv /tmp/app_info.csv /mnt/android/soft/adbmarket/app_info_org.csv
#转码
iconv -c -f utf8 -t gb18030 /mnt/android/soft/adbmarket/app_info_org.csv > /mnt/android/soft/adbmarket/app_info.csv
2、信息从Redis中导出
# Export Redis Data
for a in `/usr/local/redis/bin/redis-cli -a "moubai" info keyspace | sed '/^#.*\|^$/d' | awk -F: '{print $1}' | awk -Fdb '{print $2}'`
do
echo $a
for b in `/usr/local/redis/bin/redis-cli -a "moubai" -n $a keys "*"`
do
/usr/local/redis/bin/redis-cli -a "moubai" -n $a hgetall $b > /mnt/rediskeybackup/db$a/$b.csv
done
done
3、MySQL数据库备份
#!/bin/sh
# File: MySQL_Backup_Script.sh
# Database info
DB_NAME_01="adbstat"
DB_NAME_02="channelapp"
DB_USER="root"
DB_PASS="123456"
# Others vars
BIN_DIR="/usr/local/mysql/bin"
BCK_DIR="/usr/local/MySQLBackup"
DATE=`date +%F`
# TODO
#$BIN_DIR/mysqldump -hlocalhost -u$DB_USER -p$DB_PASS $DB_NAME_01 | gzip > $BCK_DIR/${DB_NAME_01}_$DATE.gz
#$BIN_DIR/mysqldump -hlocalhost -u$DB_USER -p$DB_PASS $DB_NAME_02 | gzip > $BCK_DIR/${DB_NAME_02}_$DATE.gz
# DONOT SHOW USER AND PWD
$BIN_DIR/mysqldump -hlocalhost $DB_NAME_01 | gzip > $BCK_DIR/${DB_NAME_01}_$DATE.gz
$BIN_DIR/mysqldump -hlocalhost $DB_NAME_02 | gzip > $BCK_DIR/${DB_NAME_02}_$DATE.gz
# DEL 3 DAY AGO
rm -rf $BCK_DIR/${DB_NAME_01}_`date -d"1 day ago" +"%F"`.gz
rm -rf $BCK_DIR/${DB_NAME_02}_`date -d"1 day ago" +"%F"`.gz
# Recover
#恢复/导入大的gzip数据库到MySQL
#gunzip < dbname.gz | mysql -u Username -p dbname
4、重启nginx,去除错误连接
/usr/local/nginx/sbin/nginx -s stop
sleep 2s
/usr/local/nginx/sbin/nginx
5、限定nginx打开文件数
for pid in `ps aux | grep nginx | grep -v grep|awk '{print$2}'`
do
cat /proc/${pid}/limits | grep 'Max open files'
done
6、Nginx服务重启
#/usr/nginx/sbin/nginx -s stop
#/usr/nginx/sbin/nginx &
7、查看Nginx的并发连接
netstat -n | awk '/^tcp/ {++state[$NF]} END {for(key in state) print key,"t",state[key]}'
8、查看PHP进程
#ps -ef | grep php
9、时间相关处理
# 秒转正常日期时间格式
date +"%F %T" -d @1601903947
# 输出:2020-10-05 21:19:07
# 时间转成秒数
date +%s
# 秒数转换成标准时间格式
date -d @1601903947
# 输出:2020年 10月 05日 星期一 21:19:07 CST
# 秒数转换成标准时间格式
date -d @1601903947 -u
# 输出:2020年 10月 05日 星期一 13:19:07 UTC
# 正常格式
date +"%F %T
10、清理内存,手动释放一下内存
sync && echo 3 > /proc/sys/vm/drop_caches
echo 'Clean OK!'
11、检查超过指定大小的文件
find / -printf "%k %p\n" | sort -g -k 1,1 | awk '{if($1 > 10000) print $1/1024 "MB" " " $2 }' |tail -n 1000
#find /usr -printf "%k %p\n" | sort -g -k 1,1 | awk '{if($1 > 10000) print $1/1024 "MB" " " $2 }' |tail -n 1000
#find / -path "/mntnew" -prune -printf "%k %p\n" | sort -g -k 1,1 | awk '{if($1 > 10000) print $1/1024 "MB" " " $2 }' |tail -n 1000
12、检查进程状态
#!/bin/sh
# 执行检查操作的函数,这里的$1为函数的参数,加双引号可让grep结果换行,加-e让echo换行
function check(){
echo -e "`ps -ef |grep $1 |grep -v "grep" |grep -v "sh"`"
count=`ps -ef |grep $1 |grep -v "grep" |grep -v "sh" |wc -l`
echo $count
if [ 0 == $count ];then
echo "Not Run, Start $1 Process......"
#sh $1.sh
else
echo "Running......"
fi
}
# 函数传参,这里的$1为当前脚本的参数
check $1
#processString 表示进程特征字符串,能够查询到唯一进程的特征字符串