以下是几个可以提高工作效率的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"