日志备份、服务启动等常用Linux脚本
日志备份
#!/bin/bash
SRC_HOST='192.168.10.3' # ip
SRC_USER='root' # 用户名
SRC_PWD='123456' # 密码
SRC_DATABASE_PREFIX='service_' # 需要备份的数据库名前缀
SRC_BACKUP_DIR='/data/mysql_backup_data/' # 备份的目录
TIME=$(date "+%Y%m%d-%H%M%S") # 备份文件时间格式
echo "当前时间 ${TIME}"
BACKUP_FILENAME="${SRC_DATABASE_PREFIX}_${TIME}.sql"
echo "正在备份数据库至文件: ${BACKUP_FILENAME}"
mysqldump -h${SRC_HOST} -u${SRC_USER} -p${SRC_PWD} --default-character-set=utf8 --skip-add-locks --skip-lock-tables -B $(mysql -h${SRC_HOST} -u${SRC_USER} -p${SRC_PWD} -Bse "show databases like '${SRC_DATABASE_PREFIX}%';" 2>/dev/null) >${SRC_BACKUP_DIR}${BACKUP_FILENAME} 2>/dev/null
echo "数据库备份完毕"
echo "删除10天前的备份文件"
find ${SRC_BACKUP_DIR} -name "*.sql" -mtime +10 -exec rm -rf {} \; # 只保留10天的备份文件
服务启动
执行命令 bash job.sh {start|stop|status|restart} xxx.jar
#!/bin/bash
JAR_NAME="$2" # 第二个参数,jar包
JAR_NAME_OLD=$(cat ./.JAR_NAME)
[ -z ${JAR_NAME} ] && JAR_NAME=${JAR_NAME_OLD};
if [ -z ${JAR_NAME} ];then echo $"Usage: $0 {start|stop|status|restart} name.jar";exit 11;fi;
PORT="8080" # 端口
# 启动
function _start() {
nohup java -jar ${JAR_NAME} --spring.profiles.active=release --server.port=${PORT} 2>&1 >> /data/logs/${JAR_NAME}.log &
[ $? -eq 0 ] && echo ${JAR_NAME} >./.JAR_NAME
echo $! ; tail -f /data/logs/${JAR_NAME}.log
}
# 停止
function _stop() {
PID=$(ps -aux | grep "$JAR_NAME_OLD" | grep "server.port" | grep "$PORT" | grep -v "grep" | awk '{print $2}')
if [ -z ${PID} ]
then
echo "$JAR_NAME_OLD" NOT RUNNING
else
kill -9 ${PID}
fi
echo stop finished
}
# 状态
function _status() {
PS_TITLE=$(ps -aux | head -1);
PS_INFO=$(ps -aux | grep "$JAR_NAME_OLD" | grep "server.port" | grep "$PORT" | grep -v "grep")
echo -e "${PS_TITLE}\n${PS_INFO}";
#[ -z ${PS_INFO} ] && echo NOT RUNNING
}
case "$1" in
start)
_stop;
sleep 1;
_start;
;;
stop)
_stop
;;
status)
_status
;;
restart|reload)
_stop;
sleep 1;
_start
;;
*)
echo $"Usage: $0 {start|stop|status|restart}" # 可选参数
exit 1
esac
系统服务文件配置
/lib/systemd/system/
下创建 demo.service
[Unit]
Description=Open Demo daemon
After=network.target # 在网卡之后启动
[Service]
ExecStart=/usr/bin/sh /usr/bin/demo >> /var/log/demo.log # 执启动的文件
Restart=on-failure
RestartSec=3s
[Install]
WantedBy=multi-user.target
systemctl start demo # 启动
systemctl enable demo # 开机自起