2024-08-13



#!/bin/bash
# 安装PostgreSQL的脚本
 
# 定义安装函数
install_postgresql() {
    # 安装依赖
    sudo apt-get update
    sudo apt-get install -y build-essential zlib1g-dev libssl-dev libreadline-dev libpq-dev
 
    # 下载PostgreSQL源码
    wget https://ftp.postgresql.org/pub/source/v13.3/postgresql-13.3.tar.gz
 
    # 解压源码
    tar -zxvf postgresql-13.3.tar.gz
 
    # 进入解压后的目录
    cd postgresql-13.3
 
    # 配置编译选项
    ./configure --prefix=/usr/local/postgresql --enable-locale --enable-utf8
 
    # 编译和安装
    make
    sudo make install
 
    # 创建用户和组
    sudo groupadd postgresql
    sudo useradd -g postgresql postgresql
 
    # 初始化数据目录
    sudo -u postgresql /usr/local/postgresql/bin/initdb -D /usr/local/postgresql/data
 
    # 更改数据目录权限
    sudo chown -R postgresql:postgresql /usr/local/postgresql/data
 
    # 启动PostgreSQL服务
    sudo -u postgresql /usr/local/postgresql/bin/postgres -D /usr/local/postgresql/data > /dev/null 2>&1 &
 
    # 添加环境变量
    echo "export PATH=$PATH:/usr/local/postgresql/bin" >> ~/.bashrc
    source ~/.bashrc
 
    # 检查PostgreSQL服务状态
    psql --version
}
 
# 执行安装函数
install_postgresql

这段代码提供了一个简化版本的PostgreSQL源码编译安装过程。它包括下载源码、解压、配置、编译、安装、用户和组的创建、数据目录的初始化、服务的启动以及环境变量的设置。这个过程是在假设基本的Linux环境和依赖已经安装好的情况下进行的。

2024-08-13



#!/bin/bash
# 一键部署traefik及内网穿透工具frp的Docker脚本
 
# 更新系统并安装Docker
sudo apt-get update
sudo apt-get install -y docker.io
 
# 拉取traefik及frp相关镜像
docker pull traefik
docker pull frps
 
# 创建traefik配置文件目录
mkdir -p /root/traefik/{conf,logs}
 
# 创建traefik动态配置文件
cat << EOF > /root/traefik/conf/traefik.toml
logLevel = "INFO"
defaultEntryPoints = ["http","https"]
 
[entryPoints]
  [entryPoints.http]
  address = ":80"
    [entryPoints.http.redirect]
    entryPoint = "https"
  [entryPoints.https]
  address = ":443"
    [entryPoints.https.tls]
 
[api]
  dashboard = true
  entryPoint = "traefik"
 
[ping]
EOF
 
# 运行traefik容器
docker run -d --name=traefik \
  -v /root/traefik/conf/traefik.toml:/traefik.toml \
  -v /root/traefik/logs:/traefik_logs \
  -p 80:80 -p 443:443 -p 8080:8080 \
  -e DOCKER_API_VERSION=1.29 \
  -v /var/run/docker.sock:/var/run/docker.sock \
  traefik
 
# 创建frp配置文件目录
mkdir -p /root/frp/{conf,logs}
 
# 创建frp服务端配置文件
cat << EOF > /root/frp/conf/frps.ini
[common]
bind_port = 7000
EOF
 
# 运行frp服务端容器
docker run -d --name=frps \
  -v /root/frp/conf/frps.ini:/etc/frp/frps.ini \
  -p 7000:7000 \
  -p 7500:7500 \
  frps
 
# 提示信息
echo "traefik及frp服务已部署,请访问 http://<您的服务器IP>:8080 来管理traefik,并配置内网穿透。"

这个脚本首先会更新系统并安装Docker,然后拉取traefik和frps的Docker镜像,并创建相关的配置文件。之后,它会启动traefik和frps的Docker容器,并输出一条提示信息,告诉用户如何访问traefik的Web UI和配置frp进行内网穿透。

2024-08-13



#!/bin/sh
 
# 使用ping命令测试网络连接
# 参考:https://www.shellscript.sh/tips/ping-command-examples/
 
# 测试连接到www.example.com的连通性
ping -c 4 www.example.com
 
# 使用IP地址测试连通性,并显示每次ping的结果详情
ping -c 4 192.168.1.1
 
# 每次发送ping包间隔1秒
ping -i 1 www.example.com
 
# 发送更大的数据包,默认为56字节,最大可以65507字节
ping -s 64 www.example.com
 
# 指定TTL值,设置数据包的生存时间
ping -t 128 www.example.com
 
# 无间断地发送ping包,直到用户终止
ping -f www.example.com
 
# 以更详细的方式显示ping结果
ping -d www.example.com
 
# 以RFC Ping的格式显示ping结果
ping -R www.example.com
 
# 显示ping命令的版本信息
ping -V
 
# 无限期地发送ping包,除非用户终止
ping www.example.com
 
# 注意:实际使用中需要根据实际环境和需求选择合适的参数。

这个示例脚本展示了如何使用ping命令的不同选项来测试网络连接。每个选项都有详细的注释说明其用途。在实际使用中,你可以根据需要选择适当的选项来调整ping命令的行为。

2024-08-13



# 更新 Kali Linux 系统
sudo apt-update
sudo apt-upgrade -y
 
# 安装 Docker
sudo apt-get install -y docker.io
 
# 添加当前用户到 docker 组以免每次使用 docker 命令时都需要 sudo
sudo usermod -aG docker $USER
 
# 重新登录或重启以确保用户组变更生效
 
# 测试 Docker 是否正确安装
docker --version
 
# 运行一个测试容器,例如运行一个 hello-world 容器
docker run hello-world

这段代码首先更新了 Kali Linux 系统,然后安装了 Docker。之后,将当前用户添加到 docker 组,这样就不必每次使用 docker 命令时都使用 sudo。最后,测试 Docker 是否安装成功并运行了一个测试容器。

2024-08-13

在CentOS 7中配置Linux镜像源可以提高软件包安装和更新的速度。以下是如何配置镜像源的步骤:

  1. 备份当前的Yum仓库配置。



sudo cp /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
  1. 编辑CentOS-Base.repo文件。



sudo vi /etc/yum.repos.d/CentOS-Base.repo
  1. 替换文件中的baseurl和mirrorlist。以下是一个示例,使用阿里云的镜像源:



[base]
name=CentOS-$releasever - Base - Aliyun
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#released updates 
[updates]
name=CentOS-$releasever - Updates - Aliyun
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras - Aliyun
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus - Aliyun
baseurl=http://mirrors.aliyun.com/centos/$releasever/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
  1. 清除Yum缓存并生成新的缓存。



sudo yum clean all
sudo yum makecache

现在您已经配置了新的镜像源,可以使用yum update来进行更新测试。

2024-08-13

报错解释:

这个错误表明你的Linux系统在尝试从一个名为"base"的软件仓库中安装或更新软件时,无法找到一个有效的基础URL。这通常发生在使用基于RPM的系统(如CentOS或Red Hat Enterprise Linux)上,当系统的yum或dnf配置文件中指定的仓库地址不正确或者仓库配置文件损坏时。

解决方法:

  1. 检查网络连接:确保你的Linux系统可以正常访问互联网或者已定义的内部仓库服务器。
  2. 检查仓库配置:查看/etc/yum.repos.d/目录下的.repo文件,确认baseurlmirrorlist指向的URL是有效的。
  3. 清除缓存:运行yum clean alldnf clean all来清除缓存,然后再尝试更新或安装软件。
  4. 重新加载仓库数据:运行yum makecachednf makecache来重新生成仓库缓存。
  5. 如果问题依旧,可能需要检查DNS解析问题,或者联系你的系统管理员来获取正确的仓库配置信息。
2024-08-13

Linux是一种开源的操作系统,被广泛用于服务器,嵌入式系统和个人计算机等多种场景。以下是一些基本的Linux命令和概念,可以帮助你入门:

  1. 打开终端:你可以通过快捷键Ctrl+Alt+T在大多数Linux发行版中打开终端。
  2. 查看当前目录下的文件和文件夹:使用ls命令。
  3. 改变当前目录:使用cd命令(例如,cd /home会将当前目录改变到home目录)。
  4. 创建新的文件夹:使用mkdir命令(例如,mkdir new_folder)。
  5. 删除文件或文件夹:使用rm命令(例如,rm filename删除文件,rm -r foldername删除文件夹及其内容)。
  6. 查看文件内容:使用cat命令(例如,cat filename)。
  7. 复制和移动文件:使用cp命令复制文件(例如,cp source destination),使用mv命令移动文件。
  8. 查看系统的当前工作目录:使用pwd命令。
  9. 运行程序或脚本:使用bash scriptname或直接输入脚本的路径(如果它已经有执行权限)。
  10. 查看或编辑文件:使用lessnano命令(例如,less filenamenano filename)。
  11. 查看或配置网络:使用ifconfig(较老的系统)或ip addr命令。
  12. 查看当前登录用户:使用whoamiwho命令。
  13. 查看系统的进程列表:使用ps命令。
  14. 结束进程:使用kill命令(例如,kill PID)。
  15. 安装软件包:使用包管理器如apt(在Debian/Ubuntu上)或yum(在CentOS上)。
  16. 系统关机和重启:使用shutdown命令(例如,shutdown now立即关闭系统,shutdown -r now重新启动系统)。

这些是Linux操作的基础,更复杂的操作需要更多的学习和实践。

2024-08-13

要在Windows 11中卸载Linux子系统(WSL2)和去掉Linux图标,你可以执行以下步骤:

  1. 卸载Linux子系统(WSL2):

    打开PowerShell(管理员)并执行以下命令:

    
    
    
    wsl --unregister
  2. 去掉开始菜单中的Linux图标:

    执行以下步骤:

    • 打开设置(Win+I)。
    • 点击“应用”。
    • 在应用列表中找到“Microsoft Store”并点击它。
    • 点击“高级设置”。
    • 关闭“开发者模式”。

请注意,这将关闭开发者模式,这可能会影响其他功能。如果你之后想要重新启用它,可以按照同样的步骤重新打开。

以上步骤将会卸载WSL2和移除Linux图标。如果你只想卸载WSL2而保留Linux图标,只需运行第一个命令即可。

2024-08-13

要编写一个简单的Shell脚本并在Linux环境中执行它,请按照以下步骤操作:

  1. 打开文本编辑器,例如使用nanovi
  2. 编写脚本。例如,创建一个脚本来打印"Hello, World!"。



#!/bin/bash
echo "Hello, World!"
  1. 保存文件,并将其保存为script.sh
  2. 通过运行以下命令为脚本文件添加执行权限:



chmod +x script.sh
  1. 执行脚本:



./script.sh

确保脚本的第一行指定了正确的shebang(#!/bin/bash),这告诉系统使用bash来执行这个脚本。如果你的系统中没有/bin/bash,你可能需要替换为系统中实际的bash路径。

2024-08-13

在Linux系统中,可以通过调整虚拟内存配置来解决因为物理内存不足而导致的项目自动挂掉的问题。虚拟内存是硬盘上的一部分,被用作当物理内存不足时的内存缓存。

以下是一些可以尝试的方法:

  1. 增加交换空间(Swap Space):

    使用swapon命令来增加交换空间。例如,创建一个1GB的交换分区:

    
    
    
    sudo fallocate -l 1G /swapfile
    sudo chmod 600 /swapfile
    sudo mkswap /swapfile
    sudo swapon /swapfile

    为了使交换空间在重启后依然有效,需要将其添加到/etc/fstab文件中:

    
    
    
    /swapfile none swap sw 0 0
  2. 调整overcommit的设置:

    如果Linux内核设置了overcommit\_memory的配置,可能会导致系统认为有足够的内存来接受新的内存分配,即使物理内存和交换空间都已满。可以通过设置vm.overcommit_memory为1来允许更多的内存分配:

    
    
    
    sudo sysctl vm.overcommit_memory=1
  3. 优化内存使用:

    检查和优化项目的内存使用情况。可能需要对代码进行优化,减少内存泄漏,或者调整数据库配置以更有效地使用内存。

  4. 关闭不需要的服务和进程:

    如果有一些不需要的服务和进程占用内存,可以尝试关闭它们来释放内存。

  5. 使用cgroups来限制资源使用:

    可以使用cgroups来限制项目的内存使用,当内存使用超过某个阈值时,系统可以自动杀死一些进程来释放内存。

在调整虚拟内存配置时,请确保系统的交换空间和overcommit的设置不会导致系统不稳定或者安全问题。如果不熟悉这些配置,建议咨询更有经验的系统管理员。