树洞剪藏#剪藏#树洞剪藏

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

2024 年 11 月 15 日1 分钟
分享Twitter / XTelegram微博
【配置优化】我拿到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 回复

开始阅读 启用自动点赞

楼主

等级

相关文章