Linux资料库
常用命令分类索引
常用命令分类整理(不包含详情)
用户及用户组管理
top命令的基本使用
命令大全示例
书籍学习笔记
菜鸟教程学习笔记
10个实用的shell脚本
linux服务器优化
监控应用服务端口并发量
记录正在执行的SQL
本文档使用 MrDoc 发布
-
+
首页
10个实用的shell脚本
# 1. 备份目录 ```bash #!/bin/bash SOURCE_DIR="/path/to/source" BACKUP_DIR="/path/to/backup" TIMESTAMP=$(date +"%Y%m%d%H%M%S") if [ ! -d "$BACKUP_DIR" ]; then mkdir -p "$BACKUP_DIR" fi tar -czf "$BACKUP_DIR/backup_$TIMESTAMP.tar.gz" -C "$SOURCE_DIR" . echo "Backup of $SOURCE_DIR completed at $BACKUP_DIR/backup_$TIMESTAMP.tar.gz" ``` # 2. 监控系统资源 ```bash #!/bin/bash LOG_FILE="/var/log/system_monitor.log" INTERVAL=5 while true; do DATE=$(date +"%Y-%m-%d %H:%M:%S") CPU=$(top -bn1 | grep "Cpu(s)" | sed "s/.*, *\([0-9.]*\)%* id.*/\1/" | awk '{print 100 - $1"%"}') MEM=$(free -m | awk 'NR==2{printf "%.2f%%", $3*100/$2 }') DISK=$(df -h | awk '$NF=="/"{printf "%s", $5}') echo "$DATE CPU: $CPU, Memory: $MEM, Disk: $DISK" >> $LOG_FILE sleep $INTERVAL done ``` # 3. 自动更新系统 ```bash #!/bin/bash sudo apt-get update sudo apt-get -y upgrade sudo apt-get -y autoremove sudo apt-get -y autoclean echo "System update and cleanup completed." ``` # 4. 数据库备份 ```bash #!/bin/bash DB_NAME="your_database" DB_USER="your_username" DB_PASS="your_password" BACKUP_DIR="/path/to/backup" TIMESTAMP=$(date +"%Y%m%d%H%M%S") mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > "$BACKUP_DIR/db_backup_$TIMESTAMP.sql.gz" echo "Database backup completed at $BACKUP_DIR/db_backup_$TIMESTAMP.sql.gz" ``` # 5. 自动上传文件到FTP服务器 ```bash #!/bin/bash FTP_SERVER="ftp.example.com" FTP_USER="your_username" FTP_PASS="your_password" LOCAL_FILE="/path/to/local/file" REMOTE_DIR="/path/to/remote/dir" ftp -inv $FTP_SERVER <<EOF user $FTP_USER $FTP_PASS cd $REMOTE_DIR put $LOCAL_FILE bye EOF echo "File uploaded to $FTP_SERVER:$REMOTE_DIR" ``` # 6. 监控日志文件中的关键字 ```bash #!/bin/bash LOG_FILE="/var/log/syslog" KEYWORD="ERROR" EMAIL="your_email@example.com" tail -Fn0 $LOG_FILE | while read line; do echo "$line" | grep "$KEYWORD" &> /dev/null if [ $? = 0 ]; then echo "$line" | mail -s "Error found in log file" $EMAIL fi done ``` # 7. 自动生成报告 ```bash #!/bin/bash REPORT_DIR="/path/to/report" REPORT_FILE="$REPORT_DIR/report_$(date +"%Y%m%d").txt" if [ ! -d "$REPORT_DIR" ]; then mkdir -p "$REPORT_DIR" fi echo "Report generated on $(date)" > $REPORT_FILE echo "==========================" >> $REPORT_FILE df -h >> $REPORT_FILE echo "" >> $REPORT_FILE free -m >> $REPORT_FILE echo "" >> $REPORT_FILE uptime >> $REPORT_FILE echo "Report saved at $REPORT_FILE" ``` # 8. 检查并重新启动崩溃的服务 ```bash #!/bin/bash SERVICE_NAME="apache2" if ! pgrep -x "$SERVICE_NAME" > /dev/null; then echo "$SERVICE_NAME is not running. Starting $SERVICE_NAME." systemctl start $SERVICE_NAME else echo "$SERVICE_NAME is running." fi ``` # 9. 定期清理临时文件 ```bash #!/bin/bash TEMP_DIR="/path/to/temp" DAYS_OLD=7 find $TEMP_DIR -type f -mtime +$DAYS_OLD -exec rm -f {} \; echo "Old temporary files deleted." ``` # 10. 自动检测并报告网络连接状态 ```bash #!/bin/bash HOST="8.8.8.8" LOG_FILE="/var/log/network_status.log" INTERVAL=10 while true; do DATE=$(date +"%Y-%m-%d %H:%M:%S") if ping -c 1 $HOST &> /dev/null; then echo "$DATE Network is up" >> $LOG_FILE else echo "$DATE Network is down" >> $LOG_FILE fi sleep $INTERVAL done ``` 每个脚本都可以根据需要进行调整,以适应特定的环境和需求。 https://mp.weixin.qq.com/s/Gy0i3YoVjlrfE3dvLsRIdw
孙端己
2024年7月30日 17:17
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码