shell实用脚本
  9JCEeX0Eg8g4 2023年11月13日 19 0

以下是几个可以提高工作效率的Linux脚本示例:

1.自动备份文件脚本

该脚本可以定期自动备份指定目录下的文件,避免数据丢失。

bash复制代码#!/bin/bash
BACKUP_DIR=/home/user/backup
SOURCE_DIR=/home/user/docs
DATE=$(date +%Y-%m-%d_%H-%M-%S)
tar -czvf $BACKUP_DIR/docs_backup_$DATE.tar.gz $SOURCE_DIR

2.自动清理垃圾文件脚本

该脚本可以定期自动清理指定目录下的过期文件或文件夹,释放存储空间。

bash复制代码#!/bin/bash
TARGET_DIR=/home/user/tmp
find $TARGET_DIR -type f -mtime +7 -exec rm {} \;
find $TARGET_DIR -type d -empty -delete

3.自动启动服务脚本

该脚本可以在系统启动时自动启动指定的服务,避免手动操作。

bash复制代码#!/bin/bash
SERVICE_NAME=my_service
SERVICE_PATH=/home/user/my_service
sudo systemctl enable $SERVICE_NAME.service
sudo systemctl start $SERVICE_NAME.service

4.多进程执行命令脚本

该脚本可以同时启动多个进程,并在所有进程执行完成后输出执行结果。

bash复制代码#!/bin/bash
COMMAND="echo hello"
for i in {1..5}
do 
    eval $COMMAND & 
done
wait
echo "All processes done"

5.自动化部署脚本

该脚本可以自动化执行应用程序的部署流程,包括拉取代码、编译、打包、上传等操作。

bash复制代码#!/bin/bash
APP_NAME=my_app
GIT_REPO=https://github.com/user/my_app.git
CODE_DIR=/home/user/my_app
BUILD_DIR=/home/user/build
DEPLOY_DIR=/var/www/my_app
# 拉取最新代码
git clone $GIT_REPO $CODE_DIR
# 编译并打包
cd $CODE_DIR && make && tar -czvf $APP_NAME.tar.gz $BUILD_DIR
# 上传至部署服务器
scp -r $APP_NAME.tar.gz user@123.456.789:/tmp/
# 解压缩并部署
ssh user@123.456.789 "cd $DEPLOY_DIR && tar -xzvf /tmp/$APP_NAME.tar.gz"

6.自动化测试脚本

该脚本可以自动化执行应用程序的测试流程,包括单元测试、集成测试、验收测试等操作。

bash复制代码#!/bin/bash
APP_NAME=my_app
TEST_SCRIPT=/home/user/my_app/test.sh
LOG_FILE=/home/user/my_app/test.log
# 执行测试脚本,并将日志输出到文件中
$TEST_SCRIPT > $LOG_FILE 2>&1
# 检查测试结果
if grep -q "FAIL" "$LOG_FILE"; then
    echo "Tests failed"
else
    echo "All tests passed"
fi

7.日志自动备份脚本

该脚本可以定期备份指定日志文件,避免因存储空间不足或其他原因导致日志丢失。

bash复制代码#!/bin/bash
LOG_DIR=/var/log/my_app
BACKUP_DIR=/home/user/backup
DATE=$(date +%Y-%m-%d_%H-%M-%S)
cp $LOG_DIR/*.log $BACKUP_DIR/logs_$DATE/

8.自动化备份MySQL数据库脚本

该脚本可以定期自动备份MySQL数据库,避免数据丢失。

bash复制代码#!/bin/bash
BACKUP_DIR=/home/user/backup
MYSQL_USER=root
MYSQL_PASSWORD=my_password
DATABASE_NAME=my_database
DATE=$(date +%Y-%m-%d_%H-%M-%S)
# 备份数据库
mysqldump -u $MYSQL_USER -p$MYSQL_PASSWORD $DATABASE_NAME > $BACKUP_DIR/$DATABASE_NAME-$DATE.sql

9.自动清理过期镜像脚本

该脚本可以定期自动清理过期的Docker镜像,释放存储空间。

bash复制代码#!/bin/bash
EXPIRE_DAYS=7
docker image prune -a --force --filter "until=$EXPIRE_DAYS"

10.自动化更新服务器安全补丁脚本

该脚本可以定期自动更新服务器的安全补丁,提高系统的安全性。

bash复制代码#!/bin/bash
sudo apt-get update && sudo apt-get upgrade -y

11.自动化部署Django应用程序脚本

该脚本可以自动化执行Django应用程序的部署流程,包括拉取代码、安装依赖、数据库迁移等操作。

bash复制代码#!/bin/bash
APP_NAME=my_django_app
GIT_REPO=https://github.com/user/my_django_app.git
CODE_DIR=/home/user/my_django_app
VENV_DIR=/home/user/my_venv
PIP_FILE=/home/user/requirements.txt
DEPLOY_DIR=/var/www/my_django_app
# 拉取最新代码
git clone $GIT_REPO $CODE_DIR
# 创建虚拟环境
python3 -m venv $VENV_DIR
source $VENV_DIR/bin/activate
# 安装依赖
pip install -r $PIP_FILE
# 数据库迁移
cd $CODE_DIR && python manage.py migrate
# 收集静态文件
python manage.py collectstatic --noinput
# 上传至部署服务器
rsync -avz --exclude=".git/" $CODE_DIR/ user@123.456.789:$DEPLOY_DIR/
# 重启服务
ssh user@123.456.789 "sudo systemctl restart my_django_app.service"

12.自动化打包Nginx日志脚本

该脚本可以定期自动打包Nginx的访问日志,避免占用过多磁盘空间。

bash复制代码#!/bin/bash
LOG_DIR=/var/log/nginx
BACKUP_DIR=/home/user/backup
DATE=$(date +%Y-%m-%d_%H-%M-%S)
# 打包日志文件
tar -czvf $BACKUP_DIR/nginx_logs_$DATE.tar.gz $LOG_DIR/*.log
# 删除已打包的日志文件
rm -f $LOG_DIR/*.log
# 重启Nginx服务
sudo systemctl reload nginx.service

13.自动化备份Redis数据脚本

该脚本可以定期自动备份Redis数据库,避免数据丢失。

bash复制代码#!/bin/bash
BACKUP_DIR=/home/user/backup
REDIS_PASSWORD=my_password
DATE=$(date +%Y-%m-%d_%H-%M-%S)
# 备份数据库
redis-cli -a $REDIS_PASSWORD SAVE
cp /var/lib/redis/dump.rdb $BACKUP_DIR/redis_backup_$DATE.rdb

14.自动化压缩图片脚本

该脚本可以批量自动压缩指定目录下的图片文件,减小图片文件大小。

bash复制代码#!/bin/bash
INPUT_DIR=/home/user/images
OUTPUT_DIR=/home/user/compressed_images
QUALITY=50
# 遍历指定目录下的所有jpg文件,并进行压缩
for file in $INPUT_DIR/*.jpg; do
    filename=$(basename "$file")
    extension="${filename##*.}"
    filename="${filename%.*}"
    convert $file -quality $QUALITY $OUTPUT_DIR/$filename-compressed.$extension
done

15.自动化备份Git仓库脚本

该脚本可以定期自动备份Git仓库,避免数据丢失。

bash复制代码#!/bin/bash
BACKUP_DIR=/home/user/backup
GIT_REPO=/home/user/my_git_repo.git
DATE=$(date +%Y-%m-%d_%H-%M-%S)
# 备份仓库
cd $GIT_REPO && git bundle create $BACKUP_DIR/git_backup_$DATE.bundle --all

16.自动化部署Vue.js应用程序脚本

该脚本可以自动化执行Vue.js应用程序的部署流程,包括拉取代码、安装依赖、打包、上传等操作。

bash复制代码#!/bin/bash
APP_NAME=my_vue_app
GIT_REPO=https://github.com/user/my_vue_app.git
CODE_DIR=/home/user/my_vue_app
DEPLOY_DIR=/var/www/my_vue_app
# 拉取最新代码
git clone $GIT_REPO $CODE_DIR
# 安装依赖并打包
cd $CODE_DIR && npm install && npm run build
# 上传至部署服务器
rsync -avz --exclude=".git/" $CODE_DIR/dist/ user@123.456.789:$DEPLOY_DIR/
# 重启服务
ssh user@123.456.789 "sudo systemctl restart my_vue_app.service"

17.自动化备份MySQL数据库脚本

该脚本可以定期自动备份MySQL数据库,避免数据丢失。

bash复制代码#!/bin/bash
BACKUP_DIR=/home/user/backup
DB_NAME=my_database
DB_USER=my_user
DB_PASSWORD=my_password
DATE=$(date +%Y-%m-%d_%H-%M-%S)
# 备份数据库
mysqldump -u$DB_USER -p$DB_PASSWORD $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.sql

18.自动化部署Node.js应用程序脚本

该脚本可以自动化执行Node.js应用程序的部署流程,包括拉取代码、安装依赖、重启服务等操作。

bash复制代码#!/bin/bash
APP_NAME=my_node_app
GIT_REPO=https://github.com/user/my_node_app.git
CODE_DIR=/home/user/my_node_app
DEPLOY_DIR=/var/www/my_node_app
# 拉取最新代码
git clone $GIT_REPO $CODE_DIR
# 安装依赖
cd $CODE_DIR && npm install
# 重启服务
pm2 restart $APP_NAME

19.自动化备份PostgreSQL数据库脚本

该脚本可以定期自动备份PostgreSQL数据库,避免数据丢失。

bash复制代码#!/bin/bash
BACKUP_DIR=/home/user/backup
DB_NAME=my_database
DB_USER=my_user
DB_PASSWORD=my_password
DATE=$(date +%Y-%m-%d_%H-%M-%S)
# 备份数据库
pg_dump -U $DB_USER -F c $DB_NAME > $BACKUP_DIR/$DB_NAME-$DATE.dump

20.自动化部署React应用程序脚本

该脚本可以自动化执行React应用程序的部署流程,包括拉取代码、安装依赖、打包、上传等操作。

bash复制代码#!/bin/bash
APP_NAME=my_react_app
GIT_REPO=https://github.com/user/my_react_app.git
CODE_DIR=/home/user/my_react_app
DEPLOY_DIR=/var/www/my_react_app
# 拉取最新代码
git clone $GIT_REPO $CODE_DIR
# 安装依赖并打包
cd $CODE_DIR && npm install && npm run build
# 上传至部署服务器
rsync -avz --exclude=".git/" $CODE_DIR/build/ user@123.456.789:$DEPLOY_DIR/
# 重启服务
ssh user@123.456.789 "sudo systemctl restart my_react_app.service"
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  wwLZeziuqjLR   2023年12月08日   100   0   0 Dockercentosbash
  mjtHZIki74si   2023年12月06日   31   0   0 ubuntubash