【配置优化】我拿到VPS服务器必做的那些事 - 开发调优 - LINUX DO

同步来源:树洞剪藏 源站剪藏 ID:88 原文地址:https://linux.do/t/topic/160305
【配置优化】我拿到VPS服务器必做的那些事 - 开发调优 - LINUX DO
跳到主要内容
话题
我的帖子
关于
友链
文档
更多
外部链接
Status
Connect
Channel
Telegram
Shared Chat
类别
开发调优
资源荟萃
文档共建
跳蚤市场
前沿快讯
福利羊毛
搞七捻三
运营反馈
深海幽域
所有类别
标签
抽奖
公告
精华神帖
快问快答
人工智能
所有标签
消息
收件箱
频道
常规频道
直接消息
聊天
真诚 、 友善 、 团结 、 专业 ,共建你我引以为荣之社区。 《常见问题解答》
【配置优化】我拿到 VPS 服务器必做的那些事
开发调优
一、系统设置
更新软件库
更新、安装必备软件
校正系统时间
系统参数调优
二、BBR
开启BBRX加速
开启BBR加速(备选)
三、添加SWAP
四、安装Docker、Docker-compose以及修改配置
Docker
Docker安装
非大陆服务器
大陆服务器Docker安装
查看Docker版本
开机自动启动
卸载Docker
Docker-compose安装
查看Docker Compose版本
五、修改SSH端口
六、密钥登录
七、安装fail2ban
Jump to end
Timeline
崔裕姝 Yuju 大预言家
9 7月 26 日 #1
之前看到有佬友发过类似的帖子,但是其中的部分配置我觉得有更好的实现方式,因此我也来给出我的调优方案。(如果有改进会持续更新…)
BTW,我的系统基本都是 Debian 系列的,所以如果有命令在你的系统上不适用,可以回帖询问。
一、系统设置
更新软件库
apt update - y && apt upgrade - y
更新、安装必备软件
apt install sudo curl wget nano
校正系统时间
将时区改为改成上海
sudo timedatectl set-timezone Asia/Shanghai
查看当前时区:
timedatectl
列出所有时区:
timedatectl list-timezones
系统参数调优
这个功能通过调整各种系统和网络参数来优化服务器的性能。
实现方法 :
内核参数调整 :例如,增加 TCP 缓冲区大小、修改系统队列长度等,这些改变有助于提高网络吞吐量和减少延迟。
性能优化 :安装和配置 Tuned 和其他系统性能优化工具来自动调整和优化服务器的运行状态。
资源限制 :例如,设置文件打开数量的限制,这可以防止某些类型的资源耗尽攻击。
通过这些功能,你的服务器不仅能够更有效地管理资源,还能提高对外部威胁的防护能力,保障系统稳定运行。
bash <(wget -qO- https://raw.githubusercontent.com/jerry048/Tune/main/tune.sh) -t
二、BBR
BBR 是 Google 提出的一种新型拥塞控制算法(Bottleneck Bandwidth and RTT),全称为瓶颈带宽和往返传播时间。
在 Linux 系统中,BBR 主要有以下特点和作用:
提高网络性能 :它可以显著提高吞吐量和降低 TCP 连接的延迟,使数据传输更加高效。
适应不同网络环境 :适合高延迟、高带宽的网络链路,以及慢速接入网络的用户,能在一定丢包率的网络链路上充分利用带宽,并降低网络链路上的缓冲区占用率从而降低延迟。
优化拥塞控制 :BBR 改变了传统基于丢包反馈的拥塞控制机制,通过精确测量往返传播时间(RTT)和瓶颈带宽等参数来更有效地控制数据发送速率,避免了传统算法中因单纯丢包判断拥塞而导致的带宽利用率不高和端到端延迟大等问题。
提升网络稳定性 :有助于减少网络拥塞和数据包丢失,提高网络的稳定性和可靠性。
因为我本人是 PT 玩家,所以接触到了一位大佬自己魔改的 BBR 版本,也就是 BBRx。该版本调整了类似 startup (启动阶段)、 drain (排空阶段)、 probe_bw (探测带宽阶段)、 probe_rtt (探测往返时间阶段)等状态下的一些关键参数,如 pacing_gain(发送速率增益)、cwnd_gain(拥塞窗口增益)等,个人来说觉得比原版 BBR 的效果更好,如果不喜欢的话,可以选择原版 BBR 进行安装。
开启 BBRX 加速
bash <(wget -qO- https://raw.githubusercontent.com/jerry048/Tune/main/tune.sh) -x
重启 VPS、使内核更新和 BBR 设置都生效
sudo reboot
确认 BBR 开启
如果你想确认 BBR 是否正确开启,可以使用下面的命令:
lsmod | grep bbr
此时应该返回这样的结果:
tcp_bbrx tcp_bbr
再次重启 VPS
sudo reboot
如果只有 tcp_bbr 则再等几分钟 reboot
此时再进行查询:
lsmod | grep bbr
此时应该返回这样的结果:
tcp_bbrx
开启 BBR 加速(备选)
wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
也是重启 VPS 生效
三、添加 SWAP
在 Linux 系统中, SWAP (交换空间)是指一块磁盘空间,用于在物理内存(RAM)不足时,作为临时的扩展内存来使用。当系统的物理内存使用量接近饱和,Linux 内核会将一些不常使用的内存页交换到 SWAP 分区中,从而为当前运行的程序腾出更多的物理内存。当这些被交换出去的内存页再次被需要时,它们会被重新换回到物理内存中。 SWAP 分区的存在可以在一定程度上避免由于物理内存不足导致系统性能严重下降或进程被强制终止的情况。
因此, SWAP 对于内存小的 VPS 非常有必要,可以提高我们的运行效率。
这里我们用脚本来添加。
wget -O swap.sh https://raw.githubusercontent.com/yuju520/Script/main/swap.sh && chmod +x swap.sh && clear && ./swap.sh
查看当前内存
free - m
四、安装 Docker、Docker-compose 以及修改配置
Docker
Docker 安装
非大陆服务器
wget -qO- get .docker.com | bash
或
curl - fsSL https: / / get.docker.com - o get - docker.sh && sh get - docker.sh
大陆服务器 Docker 安装
curl https://install.1panel.live/docker-install -o docker-install && sudo bash ./docker-install && rm -f ./docker-install
查看 Docker 版本
docker -v
开机自动启动
sudo systemctl enable docker
卸载 Docker
sudo apt-get purge docker-ce docker-ce-cli containerd.io sudo apt-get remove docker docker-engine sudo rm -rf /var/lib/docker sudo rm -rf /var/lib/containerd
Docker-compose 安装
经佬友反馈,Docker 从 18.06.0-ce 版本就开始自带 Docker Compose 工具,因此,我们只需要检验 Docker Compose 的版本。
查看 Docker Compose 版本
docker compose version
五、修改 SSH 端口
修改 SSH 端口通常有以下几个主要原因:
增强安全性 :SSH 服务默认使用的 22 端口是攻击者经常扫描和尝试攻击的目标。通过将端口修改为一个不常见的数值,可以减少自动攻击和暴力破解的风险,因为攻击者通常会首先针对常见的默认端口进行攻击。
例如,如果攻击者使用自动化工具扫描大量服务器,这些工具可能主要集中在 22 端口。而修改了端口后,就降低了被这类工具轻易发现和攻击的可能性。
减少误连接和非法访问尝试 :一些网络环境中可能存在大量的随机连接请求或非法访问尝试,针对默认的 22 端口。更改端口可以减少这类无意义的连接请求。
假设您的服务器处于一个公共网络环境中,经常会收到大量的随机连接尝试,其中很多是针对常见端口的。修改 SSH 端口可以减少这类不必要的干扰。
将默认的 22 端口修改为 55520 (暗戳戳地表白) @wanwan
sudo sed -i 's/^#?Port 22.*/Port 55520/g' /etc/ssh/sshd_config
重启 sshd 服务
sudo systemctl restart sshd
六、密钥登录
一键生成你的密钥
wget -O key.sh https://raw.githubusercontent.com/yuju520/Script/main/key.sh && chmod +x key.sh && clear && ./key.sh
!!!注意:请牢记你生成的密钥,否则会有无法连接 SSH 的后果。!!!
七、安装 fail2ban
安装 fail2ban
apt install fail2ban
配置 fail2ban
fail2ban 的配置文件通常位于 /etc/fail2ban/ 目录下,fail2ban 的.conf 配置文件都是可以被.local 覆盖,所以配置方式建议是添加.local 文件,不修改原来的配置文件。
nano /etc/fail2ban/jail.local
配置文件如下:
[DEFAULT] #忽略的IP列表,不受设置限制(白名单) ignoreip = 127.0 . 0.1
#允许ipv6 allowipv6 = auto
#日志修改检测机制(gamin、polling和auto这三种) backend = systemd
#针对各服务的检查配置,如设置bantime、findtime、maxretry和全局冲突,服务优先级大于全局设置
[sshd]
#是否激活此项(true/false) enabled = true
#过滤规则filter的名字,对应filter.d目录下的sshd.conf filter = sshd
#ssh端口 port = ssh
#动作的相关参数 action = iptables[name=SSH, port=ssh, protocol=tcp]
#检测的系统的登陆日志文件 logpath = /var/log/secure
#屏蔽时间,单位:秒 bantime = 86400
#这个时间段内超过规定次数会被ban掉 findtime = 86400
#最大尝试次数 maxretry = 3
Ctrl+S 保存并退出
设置开机自动启动 fail2ban
sudo systemctl enable fail2ban
重新启动 fail2ban
sudo systemctl restart fail2ban
查看 fail2ban 的状态
sudo systemctl status fail2ban
查看所有可用 jail 的状态
fail2ban-client status
感谢你的点赞,你的每一个小心心都证明了我不是只会水贴
2 个回复
heart
+1
clap
814
回复
【配置优化】小白福音!Yuju一键工具箱上线! 41 怎么每天都有人扫我服务器 17 拿到一台新VPS之后应该做什么? 13 新手问:新 VPS 到手的 to do list? 12 sed 命令修改 Debian11 端口怎么没有用? 4 其他 3 个
8.9k
浏览量
1.5k
赞
12
链接
172
用户
73
12
6
4
3
阅读时间
20 分钟
热门回复
总结
rabbit rabbit95555 圆圆满满
7月 26 日 #2
先 mark 住,太强了佬 1 个回复
10 回复
崔裕姝 Yuju 大预言家
rabbit 7月 26 日 #3
都是跟大佬们学的
9 回复
白鸭 Baiya 浴火重生
7月 26 日 #4
感谢感谢
4 回复
Eleven 浴火重生
7月 26 日 #5
Mark; 感谢分享
4 回复
Victor P vickunwu
7月 26 日 #6
Mark 了
去研究一下脚本
2 回复
pushpin lal 海纳百川
7月 26 日 #7
感谢分享
3 回复
橘子汽水 administrators 浴火重生
7月 26 日 #8
感谢分享 建议写一个一键脚本 哈哈 1 个回复
2 回复
上次访问
崔裕姝 Yuju 大预言家
橘子汽水 7月 26 日 #9
万一有些配置别人不需要咋整 1 个回复
6 回复
Bridge Engineer civil 圆圆满满
7月 26 日 #10
感谢分享,大佬今天分享太多辣 1 个回复
2 回复
崔裕姝 Yuju 大预言家
Bridge Engineer 7月 26 日 #11
知识储备暂时还没被榨干
14 回复
Przeblysk 活跃用户
7月 26 日 #12
非常棒 感觉可以偷到自己的 md 文件里哈哈哈哈 1 个回复
4 回复
崔裕姝 Yuju 大预言家
Przeblysk 7月 26 日 #13
读书人的事情,怎么能说偷呢 1 个回复
5 回复
Przeblysk 活跃用户 崔裕姝 7月 26 日 #14
拉比克:这叫借
5 回复
橘子汽水 administrators 浴火重生 崔裕姝 7月 26 日 #15
可以选择的,分享一下我的
#!/bin/bash user= ${SUDO_USER} dl_host= "https://db2.666666.xyz"
#定义输出颜色的功能 rmsg () { echo -e "\033[31m$\033[0m" ; } gmsg () { echo -e "\033[32m$\033[0m" ; } bmsg () { echo -e "\033[34m$*\033[0m" ; }
#定义菜单的字典 和 选择的字典 declare -A options declare -A choices=([0]= "এ" [1]= "এ" [2]= "এ" [3]= "এ" [4]= "এ" [5]= "এ" ) #从options 里面获取的keys 顺序会变化, 所以这里写个数组直接定义菜单顺序 keys=(0 1 2 3 4 5) #定义菜单选项 options[0]= "AOSP编译环境配置" options[1]= "配置gitconfig、repo" options[2]= "配置adb及USB规则" options[3]= "配置ssh、vim、samba" options[4]= "安装AS、Chrome、Bcompare、jadx" options[5]= "配置docker-compose环境"
#定义错误信息变量 ERROR= " " #清理显示 clear
#显示菜单 function MENU { bmsg "请使用sudo ./init.sh来执行此脚本" bmsg "菜单选项" for NUM in ${keys[*]} ; do gmsg "[" " ${choices[$NUM]:- } " "]" $NUM ") ${options[$NUM]} " done rmsg " $ERROR " }
showMenu (){ #循环菜单达到多选目的 while MENU && read -e -p "根据菜单选择需要部署/取消,按Enter结束: " -n1 SELECTION && [[ -n " $SELECTION " ]]; do clear if [[ ${options[$SELECTION]} ]]; then if [[ " ${choices[$SELECTION]} " == "এ" ]]; then unset choices[ $SELECTION ] else choices[ $SELECTION ]= "এ" fi ERROR= " " else ERROR= "非法参数: $SELECTION " fi done }
配置软件源及安装几个基本软件
set_base_env (){ bmsg "##### 安装基本软件 #####" sudo apt-get -y update && sudo apt-get -y upgrade sudo apt-get install -y -qq --no-install-recommends git vim openssh-server git-core curl wget unzip zip sudo apt-get -y remove --purge modemmanager firefox sudo snap remove firefox sudo dpkg --configure -a bmsg "##### end install base env #####" }
set_apt_env (){
bmsg "##### 安装必要的软件 #####"
sudo apt-get install -y -qq --no-install-recommends openjdk-11-jdk fcitx fcitx-table-wbpy git-core openssh-server g++ samba python-is-python3
zip unzip flex bc rsync bison gperf gnupg m4 ccache curl genisoimage xsltproc tofrodos aapt jq
build-essential gcc-multilib g++-multilib libc6-dev-i386 lib32z-dev lib32ncurses5-dev kmod dpkg-dev x11proto-core-dev zlib1g-dev
libsdl1.2-dev libx11-dev libgl1-mesa-dev libgl1-mesa-dev libxml2-utils libssl-dev vim git openjdk-8-jdk openssh-server sudo git-lfs
net-tools python2 python2.7 usbutils imagemagick less device-tree-compiler cpio lz4 libncurses5 mkbootimg libxml-simple-perl
curl -sL https://deb.nodesource.com/setup_18.x | sudo bash -
sudo apt-get -y install nodejs
sudo dpkg --configure -a
bmsg "##### end apt install android build env #####"
}
set_smbconf (){ mkdir -p /etc/samba/ && touch /etc/samba/smb.conf cat >> /etc/samba/smb.conf << EOF [Movies] comment = readonly path = /work/share/Movies public = yes browsable = yes read only = yes guest ok = yes [Camera] comment = writeable path = /work/share/Camera public = yes browsable = yes writeable = yes force user = master create mask = 0755 EOF #service smbd restart }
set_gitconfig (){ cat > /home/ $user /.gitconfig << EOF [user] name = master email = [email protected] [core] editor = vim quotepath = false [color] ui = auto status = auto log = auto [alias] lg = log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit --topo-order br = branch co = checkout ci = commit [pack] windowMemory = 100m packSizeLimit = 100m threads = 1 [url "https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/"] insteadof = https://android.googlesource.com [url " [email protected] :"] insteadof = git://github.com/ [commit] template = ~/.gitmessage EOF }
配置usb规则
set_usb_rules (){ rulePath= "/etc/udev/rules.d/51-android.rules" bmsg "##### 配置USB文件 $rulePath #####" mkdir -p /etc/udev/rules.d/ echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="05c6", MODE="0666", GROUP="plugdev"' > $rulePath echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="18d1", MODE="0666", GROUP="plugdev"' >> $rulePath echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="2e04", MODE="0666", GROUP="plugdev"' >> $rulePath echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1532", MODE="0666", GROUP="plugdev"' >> $rulePath echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="2207", MODE="0666", GROUP="plugdev"' >> $rulePath echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="1f3a", MODE="0666", GROUP="plugdev"' >> $rulePath echo 'SUBSYSTEM=="usb", ATTR{idVendor}=="22d9", MODE="0666", GROUP="plugdev"' >> $rulePath sudo service udev restart }
#配置chrome浏览器 down_chrome (){ bmsg "##### 下载安装 google-chrome #####" curl -s https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb -o /tmp/google_chrome.deb sudo dpkg -i /tmp/google_chrome.deb }
下载安装BC
down_bcompare (){ bmsg "##### 下载安装 bcompare #####" #curl -s https://www.scootersoftware.com/bcompare-4.4.3.26655_amd64.deb -o /tmp/bcompare.deb curl -s $dl_host /soft/zbcompare-4.4.3.26655_amd64.deb -o /tmp/bcompare.deb sudo dpkg -i /tmp/bcompare.deb mkdir -p /home/ $user /.config/bcompare/ mkdir -p /home/ $user /bin/ curl -s $dl_host /conf/bcompare/BC4Key.txt -o /home/ $user /.config/bcompare/BC4Key.txt curl -s $dl_host /conf/bcompare/BCPreferences.xml -o /home/ $user /.config/bcompare/BCPreferences.xml curl -s $dl_host /conf/bcompare/BCCommands.xml -o /home/ $user /.config/bcompare/BCCommands.xml curl -s $dl_host /conf/bcompare/BCFileFormats.xml -o /home/ $user /.config/bcompare/BCFileFormats.xml curl -s $dl_host /conf/bcompare/menu.ini -o /home/ $user /.config/bcompare/menu.ini sed -i "s/keexjEP3t4Mue23hrnuPtY4TdcsqNiJL-5174TsUdLmJSIXKfG2NGPwBL6vnRPddT7tH29qpkneX63DO9ECSPE9rzY1zhThHERg8lHM9IBFT+rVuiY823aQJuqzxCKIE1bcDqM4wgW01FH6oCBP1G4ub01xmb4BGSUG6ZrjxWHJyNLyIlGvOhoY2HAYzEtzYGwxFZn2JZ66o4RONkXjX0DF9EzsdUef3UAS+JQ+fCYReLawdjEe6tXCv88GKaaPKWxCeaUL9PejICQgRQOLGOZtZQkLgAelrOtehxz5ANOOqCaJgy2mJLQVLM5SJ9Dli909c5ybvEhVmIC0dc9dWH+/N9KmiLVlKMU7RJqnE+WXEEPI1SgglmfmLc1yVH7dqBb9ehOoKG9UE+HAE1YvH1XX2XVGeEqYUY-Tsk7YBTz0WpSpoYyPgx6Iki5KLtQ5G-aKP9eysnkuOAkrvHU8bLbGtZteGwJarev03PhfCioJL4OSqsmQGEvDbHFEbNl1qJtdwEriR+VNZts9vNNLk7UGfeNwIiqpxjk4Mn09nmSd8FhM4ifvcaIbNCRoMPGl6KU12iseSe+w+1kFsLhX+OhQM8WXcWV10cGqBzQE9OqOLUcg9n0krrR3KrohstS9smTwEx9olyLYppvC0p5i7dAx2deWvM1ZxKNs0BvcXGukR+/g" /usr/lib/beyondcompare/BCompare echo "sed -i 's/<CheckID(.*)/<CheckID Value="252180231804521"/>/' ~/.config/bcompare/BCState.xml" >/home/ $user /bin/bcKey chmod a+x /home/ $user /bin/bcKey chown -R $user : $user /home/ $user /.config/bcompare/ chown -R $user : $user /home/ $user /bin/ }
下载安装AS
down_as (){ bmsg "##### 下载安装AS #####" curl -s https://r3---sn-j5o7dn7z.gvt1-cn.com/edgedl/android/studio/ide-zips/2023.2.1.23/android-studio-2023.2.1.23-linux.tar.gz -o /tmp/android_studio.tar.gz #curl -s https://r4---sn-j5o7dn7s.gvt1.com/edgedl/android/studio/ide-zips/2022.1.1.21/android-studio-2022.1.1.21-linux.tar.gz -o /tmp/android_studio.tar.gz tar -zxf /tmp/android_studio.tar.gz -C /opt/ chown -R $user : $user /opt/android-studio desktop= "/usr/share/applications/android-studio.desktop" echo "[Desktop Entry]" > $desktop echo "Type=Application" >> $desktop echo "Name=Android Studio" >> $desktop echo "Exec=/opt/android-studio/bin/studio.sh" >> $desktop echo "Icon=/opt/android-studio/bin/studio.png" >> $desktop echo "Categories=Development;IDE;" >> $desktop echo "Terminal=false" >> $desktop echo "StartupNotify=true" >> $desktop }
down_jadx (){ bmsg "##### 下载安装 jadx #####" curl -s $dl_host /soft/jadx-1.3.5.zip -o /tmp/jadx.zip unzip /tmp/jadx.zip -d /opt/jadx > /dev/null ln -sf /opt/jadx/bin/jadx-gui /usr/bin/jxx }
配置adb及fastboot
set_android_tools (){ bmsg "##### 安装及配置adb、fastboot工具 #####" #https://developer.android.google.cn/studio/releases/platform-tools curl -sL https://dl.google.com/android/repository/platform-tools-latest-linux.zip -o /tmp/platform-tools-linux.zip rm -rf /usr/bin/fastboot /usr/bin/adb /usr/lib/android-sdk/ unzip /tmp/platform-tools-linux.zip -d /usr/lib/android-sdk/ ln -sf /usr/lib/android-sdk/platform-tools/adb /usr/bin/adb ln -sf /usr/lib/android-sdk/platform-tools/fastboot /usr/bin/fastboot }
下载私有文件
set_others (){ mkdir -p /home/ $user /.android/ mkdir -p /home/ $user /.ssh/ curl -s $dl_host /conf/android/adbkey -o /home/ $user /.android/adbkey curl -s $dl_host /conf/android/adbkey.pub -o /home/ $user /.android/adbkey.pub curl -s $dl_host /conf/ssh/id_rsa -o /home/ $user /.ssh/id_rsa curl -s $dl_host /conf/ssh/id_rsa.pub -o /home/ $user /.ssh/id_rsa.pub curl -s $dl_host /conf/vimrc -o /home/ $user /.vimrc chown -R $user : $user /home/ $user / chmod 600 /home/ $user /.ssh/id_rsa*
装todesk后无法远程控制
if [ -f "/etc/gdm3/custom.conf" ]; then sed -i "s/#WaylandEnable/WaylandEnable/" /etc/gdm3/custom.conf fi }
配置repo
set_repo (){ bmsg "##### 为 $user 添加环境变量 #####" echo "export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'" >> /etc/profile bmsg "##### 配置vim repo 等 #####" curl -s https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o /usr/bin/repo chmod +x /usr/bin/repo sudo apt-get clean }
down_docker (){
bmsg "##### 安装docker 及docker-compose #####"
curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun
curl -L https://g.666666.xyz/https://github.com/docker/compose/releases/download/v2.17.2/docker-compose-` uname -s- uname -m` -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
bmsg "##### 配置docker权限 #####"
usermod -aG docker $user
}
actions (){ set_base_env if [[ " ${!choices[@]} " =~ "0" ]]; then set_apt_env fi if [[ " ${!choices[@]} " =~ "1" ]]; then set_gitconfig && set_repo fi if [[ " ${!choices[@]} " =~ "2" ]]; then set_usb_rules && set_android_tools fi if [[ " ${!choices[@]} " =~ "3" ]]; then set_smbconf && set_others fi if [[ " ${!choices[@]} " =~ "4" ]]; then down_chrome && down_bcompare && down_as && down_jadx fi if [[ " ${!choices[@]} " =~ "5" ]]; then down_docker fi }
main (){ if [[ $EUID -ne 0 ]]; then rmsg "权限需要提升:该安装程序必须由sudo执行" 1>&2 exit fi showMenu bmsg "当前选择的是: ${!choices[@]} " actions }
main $* rmsg "脚本执行结束,最好重启"
3 个回复
17 回复
大帅哥 handsome 种子用户
7月 26 日 #16
送我一台宝贝 1 个回复
13 回复
崔裕姝 Yuju 大预言家
橘子汽水 7月 26 日 #17
学习了,有空搓一个
3 回复
崔裕姝 Yuju 大预言家
大帅哥 7月 26 日 #18
什么宝贝的量词居然是 “台”
5 回复
Oraclee 活跃用户
7月 26 日 #19
xui 还有嗷妹妹哈哈哈哈 1 个回复
6 回复
崔裕姝 Yuju 大预言家
Oraclee 7月 26 日 #20
xui 不是每个服务器都必做的吧,这个单独配置比较好
2 回复
开始阅读 启用自动点赞
楼主
等级