以下是几个 Linux 常用脚本示例:
- 自动备份脚本
这个脚本用于定期备份指定目录中的文件,并将备份文件保存到另一个目录中。
#!/bin/bashbackup_dir="/home/user/backup/"source_dir="/home/user/important_data/"date=$(date +'%Y-%m-%d')backup_file="backup-$date.tar.gz"tar -czf $backup_dir$backup_file $source_direcho "Backup completed successfully"
- 自动清理临时文件脚本
这个脚本用于清理指定目录下的所有文件,以及指定天数前的所有文件。
#!/bin/bashtemp_dir="/tmp/"max_age_days=7find $temp_dir -type f -mtime +$max_age_days -exec rm {} \;rm -f $temp_dir*echo "Temp files cleaned up successfully"
- 网站定时截图脚本
这个脚本使用 PhantomJS 和 CasperJS 来自动化截图网页并保存截图。
#!/bin/bashsite_url="http://www.example.com"output_dir="/home/user/screenshots/"casperjs --ssl-protocol=any /path/to/screenshot.js "$site_url" "$output_dir"
其中 screenshot.js 是执行截图的脚本,可以定义网页的大小、图片格式等选项。
- 目录同步脚本
这个脚本用于定期将本地指定目录的文件同步到远程服务器。
#!/bin/bashlocal_dir="/home/user/data/"remote_dir="/mnt/remote_data/"remote_server="user@remote.server.com"rsync -avz $local_dir $remote_server:$remote_direcho "Data synced successfully"
- 端口扫描脚本
这个脚本用于扫描指定的 IP 地址和端口,检查它们是否可用。
#!/bin/bashhost="www.example.com"port=80nc -zv $host $port > /dev/null 2>&1if [ $? -eq 0 ]; then echo "The port is open"else echo "The port is closed"fi
- 自动更新软件脚本
这个脚本用于定期自动更新系统中的所有软件包。
#!/bin/bashsudo apt-get update -ysudo apt-get upgrade -yecho "System updated successfully"
- 监控系统资源脚本
这个脚本用于监控系统的 CPU、内存和磁盘使用情况,并在达到某个阈值时发送警报邮件。
#!/bin/bashcpu_threshold=80mem_threshold=80disk_threshold=80email_recipient="user@example.com"get_cpu_usage() { top -bn1 | grep load | awk '{printf "%.2f%%\n", $(NF-2)}'}get_mem_usage() { free | grep Mem | awk '{printf "%.2f%%\n", $3/$2 * 100.0}'}get_disk_usage() { df -h | awk '$NF=="/"{printf "%s\n", $5}'}if [ $(get_cpu_usage | cut -d'.' -f1) -gt $cpu_threshold ]; then echo "CPU usage is above the threshold, sending email" echo "CPU usage is at $(get_cpu_usage)" | mailx -s "CPU Usage Alert" $email_recipientfiif [ $(get_mem_usage | cut -d'.' -f1) -gt $mem_threshold ]; then echo "Memory usage is above the threshold, sending email" echo "Memory usage is at $(get_mem_usage)" | mailx -s "Memory Usage Alert" $email_recipientfiif [ $(get_disk_usage | cut -d'%' -f1) -gt $disk_threshold ]; then echo "Disk usage is above the threshold, sending email" echo "Disk usage is at $(get_disk_usage)" | mailx -s "Disk Usage Alert" $email_recipientfi
- 自动清理旧日志脚本
这个脚本用于定期清理指定目录下的旧日志文件。
#!/bin/bashlog_dir="/var/log/"max_age_days=30find $log_dir -type f -mtime +$max_age_days -exec rm {} \;echo "Log files cleaned up successfully"
- 自动部署脚本
这个脚本用于自动部署应用程序及其依赖,例如 Django 应用程序。
#!/bin/bashapp_name="myapp"app_dir="/opt/myapp/"venv_dir="/opt/myapp/env/"git pull origin mastersource $venv_dir/bin/activatepip install -r requirements.txtpython manage.py migratepython manage.py collectstatic --noinputsudo systemctl restart $app_nameecho "Application deployed successfully"
- 定时重启服务脚本
这个脚本用于定时重启指定的服务,以确保其稳定运行。
#!/bin/bashservice_name="my_service"max_uptime_seconds=$((24*60*60)) # 1天while truedo uptime_seconds=$(systemctl show -p ActiveEnterTimestamp $service_name | awk -F '=' '{print $2}') if [ $uptime_seconds -ge $max_uptime_seconds ]; then sudo systemctl restart $service_name echo "Service restarted successfully" fi sleep 3600 # 每小时检查一次done
以上是几个常用的 Linux 脚本示例,它们可以帮助你自动化各种系统管理任务,提高工作效率和可靠性。
来源地址:https://blog.csdn.net/m0_55877125/article/details/129995193