当前位置: 首页 > backend >正文

19个一键脚本liux脚本

一、系统信息类(3个)

  1. 全面系统信息查看
    #!/bin/bash

系统信息综合查看

echo -e “\n===== 系统基础信息 ="
uname -a # 内核版本
cat /etc/os-release | head -n 3 # 系统版本
hostname -I # 主机IP
echo -e "\n
= 资源使用 ="
free -h # 内存状态
df -hT # 磁盘分区
top -bn 1 | head -n 10 # 进程占用
echo -e "\n
= 网络与服务 =====”
ifconfig | grep "inet " # 网络接口
netstat -antp | head -n 5 # 网络连接
ps -ef | grep [s]ervice # 关键服务进程
2. 硬件信息检测
#!/bin/bash

硬件信息查看

echo -e “\n===== CPU信息 ="
lscpu | grep “Model name|CPU(s)”
echo -e "\n
= 内存信息 ="
dmidecode -t memory | grep -E “Size|Type” | head -6
echo -e "\n
= 磁盘信息 ="
fdisk -l | grep “Disk /dev”
lsblk -f # 磁盘挂载详情
echo -e "\n
= 显卡信息 =====”
lspci | grep -i vga
3. 系统运行时间统计
#!/bin/bash

系统运行时长与负载

echo -e “\n系统已运行: ( u p t i m e − p ) " e c h o − e " 当 前 负 载 : (uptime -p)" echo -e "当前负载: (uptimep)"echoe"(uptime | awk -F ‘load average:’ ‘{print $2}’)”
echo -e “\n最近登录用户:”
last -n 5 | head -n 4 # 最近登录记录
echo -e “\n当前登录用户:”
who
二、环境部署类(4个)

  1. LNMP环境部署(CentOS)
    #!/bin/bash

LNMP环境部署(CentOS)

yum update -y
yum install -y nginx mariadb-server php-fpm php-mysqlnd
systemctl start nginx mariadb
systemctl enable nginx mariadb

配置Nginx

cat > /etc/nginx/conf.d/wordpress.conf << EOF
server {
listen 80;
server_name example.com;
root /usr/share/nginx/html;
index index.php index.html;
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
EOF
nginx -t && systemctl restart nginx
5. LAMP环境部署(Ubuntu)
#!/bin/bash

LAMP环境部署(Ubuntu)

apt update && apt upgrade -y
apt install -y apache2 mysql-server php php-mysql
systemctl start apache2 mysql
systemctl enable apache2 mysql

测试PHP

echo “<?php phpinfo(); ?>” > /var/www/html/info.php
echo “LAMP环境已部署,访问http://服务器IP/info.php测试”
6. Docker快速安装
#!/bin/bash

Docker一键安装

curl -fsSL https://get.docker.com -o get-docker.sh
sh get-docker.sh
systemctl start docker
systemctl enable docker

添加当前用户到docker组(避免sudo)

usermod -aG docker $USER
echo “Docker安装完成,重启后生效”
7. Nginx虚拟主机创建
#!/bin/bash

Nginx虚拟主机创建

read -p “请输入域名:” domain
read -p “请输入网站根目录:” webroot

mkdir -p $webroot
chown -R nginx:nginx $webroot

cat > /etc/nginx/conf.d/$domain.conf << EOF
server {
listen 80;
server_name $domain;
root KaTeX parse error: Can't use function '\.' in math mode at position 57: … location ~ \̲.̲php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
EOF

nginx -t && systemctl restart nginx
echo “虚拟主机已创建,域名: d o m a i n , 根 目 录 : domain,根目录: domainwebroot”
三、服务管理类(4个)

  1. 服务状态批量检查
    #!/bin/bash

服务状态检查脚本

services=(“nginx” “mysql” “docker” “sshd”)
echo -e “\n===== 服务状态检查 =====”
for service in ${services[@]}; do
if systemctl status KaTeX parse error: Expected 'EOF', got '&' at position 9: service &̲> /dev/null; th…(systemctl is-active s e r v i c e ) e c h o " service) echo " service)echo"service: [KaTeX parse error: Expected group after '^' at position 8: {status^̲^}]" else …service: [未安装]"
fi
done
9. 服务一键启停脚本
#!/bin/bash

服务快速启停工具

echo -e “\n请选择操作:”
echo “1. 启动所有服务”
echo “2. 停止所有服务”
echo “3. 重启所有服务”
read -p “请输入选项(1-3):” choice

services=(“nginx” “mysql” “php-fpm”)

case $choice in
1) for service in ${services[@]}; do systemctl start $service; done ;;
2) for service in ${services[@]}; do systemctl stop $service; done ;;
3) for service in ${services[@]}; do systemctl restart $service; done ;;
*) echo “无效选项” && exit 1 ;;
esac

echo -e “\n操作完成,当前服务状态:”
for service in ${services[@]}; do systemctl status $service | head -n 2; done
10. 防火墙基础配置
#!/bin/bash

Firewalld防火墙配置

systemctl start firewalld
systemctl enable firewalld

echo -e “\n请输入需要开放的端口(用空格分隔,如’80 443 22’):”
read -a ports

for port in p o r t s [ @ ] ; d o f i r e w a l l − c m d − − p e r m a n e n t − − a d d − p o r t = {ports[@]}; do firewall-cmd --permanent --add-port= ports[@];dofirewallcmdpermanentaddport=port/tcp
done

firewall-cmd --reload
echo -e “\n防火墙已配置,开放端口:${ports[*]}”
11. 日志服务管理
#!/bin/bash

系统日志管理脚本

echo -e “\n===== 日志管理工具 =====”
echo “1. 清理所有日志”
echo “2. 清理指定天数前的日志”
echo “3. 查看日志占用”
read -p “请选择操作(1-3):” choice

case c h o i c e i n 1 ) f i n d / v a r / l o g − t y p e f − e x e c t r u n c a t e − s 0 e c h o " 所 有 日 志 已 清 空 " ; ; 2 ) r e a d − p " 请 输 入 天 数 ( 如 30 ) : " d a y s f i n d / v a r / l o g − t y p e f − m t i m e + choice in 1) find /var/log -type f -exec truncate -s 0 {} \; echo "所有日志已清空" ;; 2) read -p "请输入天数(如30):" days find /var/log -type f -mtime + choicein1)find/var/logtypefexectruncates0echo"";;2)readp"(30)"daysfind/var/logtypefmtime+days -exec truncate -s 0 {} ;
echo “$days天前的日志已清空”
;;
3)
du -sh /var/log/*
;;
*) echo “无效选项” && exit 1 ;;
esac
四、系统维护类(4个)

  1. 磁盘空间清理
    #!/bin/bash

磁盘空间清理脚本

echo -e “\n===== 开始清理系统 =====”
echo “1. 清理临时文件”
echo “2. 清理包缓存”
echo “3. 清理日志文件”
echo “4. 全部清理”
read -p “请选择操作(1-4):” choice

case $choice in
1) rm -rf /tmp/* /var/tmp/* ;;
2) yum clean all || apt clean ;;
3) find /var/log -type f -mtime +30 -exec truncate -s 0 {} ; ;;
4)
rm -rf /tmp/* /var/tmp/*
yum clean all || apt clean
find /var/log -type f -mtime +30 -exec truncate -s 0 {} ;
;;
*) echo “无效选项” && exit 1 ;;
esac

echo -e “\n清理完成,当前磁盘使用:”
df -h
13. 系统优化脚本(基础版)
#!/bin/bash

系统基础优化脚本

echo -e “\n===== 系统优化开始 =====”

关闭不必要的服务

systemctl stop postfix && systemctl disable postfix

调整文件描述符

cat >> /etc/security/limits.conf << EOF

  •   soft    nofile  65536
    
  •   hard    nofile  65536
    

EOF

优化内核参数

cat > /etc/sysctl.d/99-optimize.conf << EOF
net.ipv4.tcp_fin_timeout = 2
net.ipv4.tcp_keepalive_time = 600
net.ipv4.tcp_max_syn_backlog = 16384
net.ipv4.ip_local_port_range = 1024 65000
EOF
sysctl -p
echo -e “\n系统优化完成,部分设置需重启生效”
14. 定时任务备份脚本
#!/bin/bash

数据定时备份脚本

backup_dir="/backup/$(date +%Y%m%d)"
mkdir -p $backup_dir

备份数据库(需提前设置MySQL密码)

read -p “请输入MySQL密码:” mysql_pass
mysqldump -u root -p$mysql_pass --all-databases > $backup_dir/all_databases.sql

备份网站目录

web_dirs=("/var/www/html" “/etc/nginx/conf.d”)
for dir in ${web_dirs[@]}; do
if [ -d $dir ]; then
tar -czf b a c k u p d i r backup_dir backupdir(basename $dir).tar.gz $dir
fi
done

保留7天备份

find /backup -type d -mtime +7 -exec rm -rf {} ;

echo -e “\n备份完成,路径:$backup_dir”
echo “7天前的备份已清理”
15. 系统垃圾文件清理
#!/bin/bash

系统垃圾文件清理

echo -e “\n===== 清理系统垃圾 =====”

清理yum缓存

if command -v yum &> /dev/null; then
yum clean all
echo “Yum缓存已清理”

清理apt缓存

elif command -v apt &> /dev/null; then
apt clean
echo “Apt缓存已清理”
fi

清理编译缓存

rm -rf /usr/src/debug/*
rm -rf /tmp/*~

清理旧内核(CentOS)

if [ -f /etc/redhat-release ]; then
package-cleanup --oldkernels --count=1
echo “旧内核已清理,保留最新1个”
fi

echo -e “\n垃圾清理完成”
五、安全与监控类(4个)

  1. 简单入侵检测脚本
    #!/bin/bash

简单入侵检测脚本

echo -e “\n===== 系统安全检查 =====”
echo “1. 异常登录检查”
echo “2. 异常用户检查”
echo “3. 端口扫描”
echo “4. 全部检查”
read -p “请选择操作(1-4):” choice

case $choice in
1)
echo “最近异常登录:”
last | grep -i “failed” | head -10
;;
2)
echo “非标准用户:”
grep -vE “^(root|bin|daemon|sys|sync|shutdown|halt|mail|operator|games|nobody)” /etc/passwd
;;
3)
echo “开放端口:”
netstat -antp | grep LISTEN
;;
4)
echo “最近异常登录:”
last | grep -i “failed” | head -10
echo -e “\n非标准用户:”
grep -vE “^(root|bin|daemon|sys|sync|shutdown|halt|mail|operator|games|nobody)” /etc/passwd
echo -e “\n开放端口:”
netstat -antp | grep LISTEN
;;
*) echo “无效选项” && exit 1 ;;
esac
17. 监控服务安装脚本
#!/bin/bash

监控服务安装(Prometheus+Grafana)

echo -e “\n===== 安装监控服务 =====”

安装依赖

yum install -y wget unzip || apt install -y wget unzip

下载Prometheus

wget https://github.com/prometheus/prometheus/releases/download/v2.45.0/prometheus-2.45.0.linux-amd64.tar.gz
tar -xzf prometheus-2.45.0.linux-amd64.tar.gz -C /opt/
ln -s /opt/prometheus-2.45.0.linux-amd64 /opt/prometheus

下载Grafana

wget https://dl.grafana.com/oss/release/grafana-10.1.0-1.x86_64.rpm
yum install -y grafana-10.1.0-1.x86_64.rpm || dpkg -i grafana-10.1.0-1.x86_64.deb

启动服务

systemctl start prometheus grafana-server
systemctl enable prometheus grafana-server

echo -e “\n监控服务已安装:”
echo “Prometheus访问:http://服务器IP:9090”
echo “Grafana访问:http://服务器IP:3000(默认账号密码:admin/admin)”
18. 防火墙日志审计
#!/bin/bash

防火墙日志审计脚本

echo -e “\n===== 防火墙日志分析 =====”

检查防火墙日志是否启用

if grep -q “firewalld” /etc/rsyslog.conf; then
echo “防火墙日志已启用,分析最近100条记录:”
grep “firewalld” /var/log/messages | tail -n 100
else
echo “防火墙日志未启用,是否开启?(y/n)”
read -p “选择:” choice
if [ $choice == “y” ]; then
echo “local0.* /var/log/firewalld.log” >> /etc/rsyslog.conf
systemctl restart rsyslog
echo “防火墙日志已启用,重启后生效”
fi
fi
19. 系统安全加固脚本(基础版)
#!/bin/bash

系统基础安全加固

echo -e “\n===== 系统安全加固开始 =====”

禁止root远程登录

sed -i ‘s/PermitRootLogin yes/PermitRootLogin no/g’ /etc/ssh/sshd_config

限制SSH登录失败次数

sed -i ‘s/#MaxAuthTries 6/MaxAuthTries 3/g’ /etc/ssh/sshd_config

关闭IPv6(可选)

echo “net.ipv6.conf.all.disable_ipv6 = 1” >> /etc/sysctl.conf

禁止空密码

passwd -d “” 2>/dev/null

加强密码策略(CentOS)

if [ -f /etc/redhat-release ]; then
authconfig --passminlen=8 --passminclasses=3 --update
fi
systemctl restart sshd
echo -e “\n安全加固完成,建议创建普通用户并使用sudo”
重要使用提醒:

  1. 脚本执行权限:通过chmod +x 脚本名.sh赋予执行权限,用sudo bash 脚本名.sh运行(需root权限)。

  2. 环境适配:CentOS/Ubuntu的包管理命令(yum/apt)不同,部分脚本需手动修改。

  3. 风险意识:涉及系统修改的脚本(如内核优化、日志清理)可能影响服务,务必先备份数据。

  4. 定制需求:若需特定功能(如Redis部署、Python环境搭建),可进一步说明场景,避免盲目使用“一键脚本”。

Linux管理的核心是“理解每一步操作”,建议将脚本拆分成小功能逐步执行,避免因一键脚本的不可控性导致问题哦!

http://www.xdnf.cn/news/14305.html

相关文章:

  • K8S中使用英伟达GPU
  • java 设计模式_行为型_16访问者模式
  • C++继承和多态
  • 基于ssm的老年人健康管理系统
  • 手机验证码自动化处理:从原理到企业级解决方案
  • 从数据孤岛到智能决策:数据编排如何重构企业数据架构?
  • Magentic-ui项目相关整理
  • java 设计模式_行为型_14策略模式
  • Seata如何与Spring Cloud整合?
  • MATLAB交互式贝塞尔曲线演示
  • Softhub软件下载站实战开发(一):项目总览
  • python中判断与循环使用
  • 怎么理解自动驾驶技术中的agent
  • MVVM框架:让前端开发像搭积木一样简单!
  • spring-security5-oauth2系列:密码授权模式
  • Go同步原语与数据竞争:原子操作(atomic)
  • 【LangChain】4 基于文档的问答
  • 【量化】策略交易之动量策略(Momentum)
  • Transformer实战——从词袋模型到Transformer:NLP技术演进
  • Kubernetes镜像拉取认证指南
  • 勇者和魔塔的算法题
  • Linux进程池详解:从入门到理解
  • Vue 3 九宫格抽奖系统,采用优雅的 UI 设计和流畅的动画效果
  • 【工具变量】全国分省数字基础设施水平数据集-含原始数据及处理代码(2005-2024年)
  • LLMs 系列实操科普(6)
  • 网络代理设置
  • leetcode0765. 情侣牵手-hard
  • HTTP和HTTPS协议
  • Design Compiler:解组(Ungroup)
  • Modbus协议全方位解析与C#开发实战指南