2024-08-11



#!/bin/bash
# 安装 PHP 7.2.17 的脚本
 
# 定义 PHP 版本和依赖包
PHP_VERSION=7.2.17
DEVTOOLSET_VERSION=4
 
# 安装 EPEL 和 Remi 仓库
yum install -y epel-release
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
 
# 安装编译 PHP 所需的依赖包
yum install -y \
    gcc \
    gcc-c++ \
    make \
    zlib-devel \
    libxml2-devel \
    libjpeg-devel \
    libpng-devel \
    freetype-devel \
    giflib-devel \
    libmcrypt-devel \
    libicu-devel \
    libzip-devel \
    bzip2-devel \
    curl-devel \
    openssl-devel \
    sqlite-devel \
    systemd-devel \
    libxslt-devel \
    oniguruma-devel \
    libwebp-devel \
    libxpm-devel \
    libgd-devel \
    libxslt-devel \
    pcre-devel \
    recode-devel \
    krb5-devel \
    libldap2-devel \
    libjpeg-turbo-devel
 
# 安装 devtoolset,用于更高版本的 GCC 编译
yum install -y "centos-release-scl"
yum install -y "devtoolset-${DEVTOOLSET_VERSION}"
scl enable devtoolset-"${DEVTOOLSET_VERSION}" bash
 
# 下载 PHP 源码并解压
curl -LO https://www.php.net/distributions/php-"${PHP_VERSION}".tar.gz
tar xzf php-"${PHP_VERSION}".tar.gz
cd php-"${PHP_VERSION}"
 
# 配置 PHP 编译选项
./configure \
    --prefix=/usr/local/php \
    --with-curl \
    --with-freetype-dir \
    --with-gd \
    --with-gettext \
    --with-iconv-dir \
    --with-kerberos \
    --with-libdir=lib64 \
    --with-libxml-dir \
    --with-mysqli \
    --with-openssl \
    --with-pcre-regex \
    --with-pear \
    --with-pdo-mysql \
    --with-xmlrpc \
    --with-xsl \
    --with-zlib \
    --enable-bcmath \
    --enable-fpm \
    --enable-libxml \
    --enable-inline-optimization \
    --enable-mbregex \
    --enable-mbstring \
    --enable-opcache \
    --enable-pcntl \
    --enable-shmop \
    --enable-soap \
    --enable-sockets \
    --enable-sysvsem \
    --enable-xml \
    --enable-zip
 
# 编译和安装 PHP
make -j$(nproc)
make install
 
# 配置 PHP-FPM
cp php.ini-development /usr/local/php/lib/php.ini
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
 
# 创建 systemd service 文件
tee /etc/systemd/system/php-fpm.service <<EOF
[Unit]
Description=The PHP FastCGI Process Manager
After=syslog.target network.target
 
[Service]
Type=simple
PIDFile=/run/php-fpm.pid
ExecStart=/usr/local/php/sbin/php-fpm --noda
2024-08-11



# 使用grep搜索特定文本
grep "特定文本" 文件名
 
# 使用正则表达式搜索特定模式
grep "正则表达式" 文件名
 
# 不区分大小写地搜索特定文本
grep -i "特定文本" 文件名
 
# 只输出匹配行的前后几行
grep -C 数量 "特定文本" 文件名
 
# 只输出匹配行的前面几行
grep -B 数量 "特定文本" 文件名
 
# 只输出匹配行的后面几行
grep -A 数量 "特定文本" 文件名
 
# 显示匹配行的行号
grep -n "特定文本" 文件名
 
# 只输出匹配的文件名
grep -l "特定文本" 文件名或目录
 
# 只显示没有匹配的行
grep -v "特定文本" 文件名
 
# 使用grep递归搜索目录中所有文件
grep -r "特定文本" 目录
 
# 使用grep时忽略二进制文件
grep -I "特定文本" 文件名或目录
 
# 使用grep时指定文件扩展名
grep "特定文本" 文件名 --include="*.扩展名"
 
# 使用grep时排除特定文件
grep "特定文本" 文件名 --exclude="文件名"
 
# 使用grep时排除目录
grep "特定文本" 文件名 --exclude-dir="目录名"
 
# 使用grep时同时排除多个文件或目录
grep "特定文本" 文件名 --exclude="文件名" --exclude-dir="目录名"
 
# 使用grep时打印匹配行的数量
grep -c "特定文本" 文件名
 
# 使用grep时仅输出匹配的部分
grep -o "特定文本" 文件名

这个示例展示了grep命令的一些常见用法,包括搜索特定文本、使用正则表达式、区分大小写、输出行号、递归搜索、忽略二进制文件、指定文件扩展名、排除特定文件和目录,以及打印匹配行的数量。这些是在日常工作中经常使用的grep命令的功能和用法。

2024-08-11



#!/bin/bash
 
# 获取系统运行时间、进程数、负载均值
uptime=$(uptime | awk '{print $3 $4}' | sed 's/,//')
procs=$(vmstat 1 2 | awk 'NR==3 {print $4}')
loadavg=$(vmstat 1 2 | awk 'NR==3 {print $13 $14 $15}')
 
# 输出系统信息
echo "系统运行时间: $uptime"
echo "当前进程数: $procs"
echo "负载均值: $loadavg"
 
# 获取内存信息
meminfo=$(vmstat 1 2 | awk 'NR==4 {print $12 $13 $14 $15}')
echo "内存信息: $meminfo"
 
# 获取虚拟内存信息
vmstatinfo=$(vmstat 1 2 | awk 'NR==5 {print $1 $2 $3 $4}')
echo "虚拟内存信息: $vmstatinfo"
 
# 获取IO统计信息
iostat=$(vmstat 1 2 | awk 'NR==6 {print $1 $2 $3 $4}')
echo "IO统计信息: $iostat"
 
# 获取CPU使用率信息
cpuinfo=$(vmstat 1 2 | awk 'NR==5 {print $5}')
echo "CPU使用率: $cpuinfo%"

这段代码使用了vmstat命令来获取系统的运行时间、进程数、负载均值、内存、虚拟内存、IO和CPU的相关统计信息,并将它们输出到控制台。这是一个简化版本的脚本,主要用于演示如何使用vmstat命令来获取系统信息,并且可以作为学习和参考。

2024-08-11

在Linux/Unix系统中,sed是一种流编辑器,它能够用于基于文本模式的搜索、替换、新增和删除等操作。下面是使用sed提取文件中特定行的几种方法:

  1. 提取第N行:



sed -n 'Np' filename

这里的N是你想提取的行号。例如,要提取第5行,你可以运行sed -n '5p' filename

  1. 提取从第N行到第M行:



sed -n 'N,Mp' filename

这里的N和M是你想提取的开始和结束行号。例如,要提取从第2行到第5行,你可以运行sed -n '2,5p' filename

  1. 提取匹配特定模式的行:



sed -n '/pattern/p' filename

这里的pattern是你想匹配的文本模式。例如,要提取含有单词"error"的所有行,你可以运行sed -n '/error/p' filename

  1. 提取从匹配特定模式开始到N行:



sed -n '/pattern/,+Np' filename

这里的pattern是你想匹配的文本模式,N是你想提取多少行。例如,要提取含有单词"start"的行开始,并且包括接下来的3行,你可以运行sed -n '/start/,+3p' filename

  1. 提取从第N行到匹配特定模式结束:



sed -n 'N,/pattern/p' filename

这里的N是你想开始提取的行号,pattern是你想匹配的文本模式。例如,要提取从第5行开始,并且包括接下来直到含有单词"end"的行结束,你可以运行sed -n '5,/end/p' filename

以上就是使用sed提取文件特定行的一些方法。记住,-n选项是用来告诉sed只输出被处理的行,而不自动输出输入文件的每行。

2024-08-11

由于篇幅所限,这里提供一个简化的Linux命令行安装Oracle数据库的步骤概览和关键命令。请确保在执行以下步骤之前已经满足了Oracle数据库的系统要求和先决条件。

  1. 下载Oracle数据库软件包。
  2. 解压软件包。
  3. 配置内核参数和用户环境。
  4. 创建Oracle用户和组。
  5. 设置Oracle安装环境变量。
  6. 运行安装脚本。
  7. 配置和启动Oracle实例。
  8. 创建数据库(可选)。

以下是一些关键命令的示例:




# 1. 下载Oracle数据库软件包
wget http://download.oracle.com/otn-pub/otn_software/db-software/official/oracle-database-software/12.2/oracle-database-ee-12.2-1.0.0.0-linux-x86_64.zip
 
# 2. 解压软件包
unzip oracle-database-ee-12.2-1.0.0.0-linux-x86_64.zip
 
# 3. 配置内核参数和用户环境
sudo sh -c "echo oracle > /etc/oracle-release"
sudo vi /etc/sysctl.conf # 添加内核参数
sudo sysctl -p # 应用内核参数更改
 
# 4. 创建Oracle用户和组
sudo groupadd oinstall
sudo groupadd dba
sudo useradd -g oinstall -G dba -m oracle
sudo passwd oracle
 
# 5. 设置Oracle安装环境变量
sudo su - oracle
vi ~/.bash_profile # 添加环境变量
source ~/.bash_profile
 
# 6. 运行安装脚本(以下命令在Oracle用户的环境下执行)
cd /path/to/oracle/database/software
./runInstaller
 
# 7. 安装完成后执行配置脚本
cd $ORACLE_BASE/oraInventory/orainstRoot.sh
cd $ORACLE_HOME/root.sh
 
# 8. 创建数据库(可选)
dbca
 
# 注意:以上步骤仅为示例,具体步骤可能根据Oracle版本和操作系统环境有所不同。

请确保在执行以上命令时,根据您的系统环境和Oracle安装包的实际路径调整命令。在执行安装过程中,可能会要求您接受许可协议,并根据提示进行配置。在安装完成后,记得检查Oracle的版权和许可协议。

2024-08-11

设备树(Device Tree)是一种数据结构,用于描述硬件设备的树状层次结构信息。在Linux系统中,它是一种可以被Linux内核解析的数据结构,用于替代早期的硬件描述参数。

设备树文件通常使用.dts(Device Tree Source)扩展名,是一种文本格式的文件。下面是一个简单的设备树节点和属性的例子:




/ {
    node1 {
        key1 = <value1>;
        key2 = <value2>;
        subnode@unit-address {
            key3 = <value3>;
        };
    };
 
    node2 {
        key4 = <value4>;
        key5 = "string value";
    };
};

在上面的例子中,/ 是根节点,node1node2 是两个子节点,每个节点可以包含多个属性(key-value对)。属性值可以是32位整数、64位整数、字符串或者其他类型的数据。

设备树编译工具能够将.dts文件编译成二进制格式的.dtb(Device Tree Blob)文件,供Linux内核使用。

在Linux内核中,可以通过如下方式加载设备树:




#include <linux/of.h>
#include <linux/platform_device.h>
 
struct device_node *node;
 
node = of_find_node_by_path("/node1");
if (node) {
    // 找到节点,可以读取属性等操作
}

在这段代码中,of_find_node_by_path 用于在设备树中查找指定路径的节点。如果找到了节点,就可以使用相关函数读取属性等信息。

2024-08-11

要在Linux系统上离线安装MySQL,你需要提前下载MySQL的压缩包(通常是.tar.gz格式),然后将其拷贝到目标机器上进行安装。以下是基本的安装步骤:

  1. 将MySQL压缩包拷贝到Linux系统上。
  2. 解压缩包。
  3. 安装MySQL服务器。
  4. 初始化数据库并启动服务。

以下是具体的命令:




# 假设你下载的MySQL压缩包是mysql-VERSION-linux-glibc2.12-x86_64.tar.gz
# 将其拷贝到/path/to/mysql目录
 
# 解压缩
tar -zxvf /path/to/mysql/mysql-VERSION-linux-glibc2.12-x86_64.tar.gz -C /usr/local
 
# 进入解压后的目录
cd /usr/local
 
# 重命名解压后的文件夹
mv mysql-VERSION-linux-glibc2.12-x86_64 mysql
 
# 创建MySQL用户和组
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
 
# 设置权限
chown -R mysql:mysql mysql/
 
# 安装MySQL服务
cd mysql
 
# 创建一个配置文件
cp support-files/my-default.cnf /etc/my.cnf
 
# 初始化数据库
bin/mysqld --initialize --user=mysql
 
# 安装MySQL服务并启动
scripts/mysql_install_db --user=mysql
chown -R root .
chown -R mysql data
 
# 启动MySQL服务
bin/mysqld_safe --user=mysql &
 
# 记录初始临时密码
cat /var/log/mysqld.log | grep 'temporary password'

在执行这些步骤之前,请确保你的Linux系统上已经安装了必要的依赖,如libaio等。如果你的系统是Debian或者Ubuntu,可以使用apt-get install libaio来安装。

在执行mysqld --initialize命令后,你会得到一个初始临时密码,请记录下来以便登录MySQL。之后,你可以使用这个临时密码登录MySQL并修改密码。




mysql -u root -p

登录后,运行以下命令修改密码:




ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword';

替换NewPassword为你想要设置的新密码。

请注意,这些步骤可能会根据你下载的MySQL版本和你的Linux发行版有所不同。

2024-08-11



#!/bin/bash
# 安装Gaussian和Gaussview的脚本
 
# 更新系统软件包列表
sudo apt-get update
 
# 安装Gaussian软件包
sudo apt-get install -y gaussian
 
# 下载Gaussview源码
wget http://www.gaussian.com/gaussview/gaussview-2.6.tar.gz
 
# 解压Gaussview源码
tar -xzf gaussview-2.6.tar.gz
 
# 进入解压后的目录
cd gaussview-2.6/
 
# 配置Gaussview
./configure
 
# 编译并安装Gaussview
make
sudo make install
 
# 清理下载的文件
cd ..
rm -rf gaussview-2.6/ gaussview-2.6.tar.gz
 
# 打印安装完成信息
echo "Gaussian和Gaussview安装完成。"

这段代码提供了一个简洁的示例,展示了如何在Linux系统中快速安装Gaussian和Gaussview。代码首先通过apt-get更新软件包列表,然后安装Gaussian软件包。接下来,代码下载Gaussview的源码,解压并进入目录,运行配置脚本,编译并安装Gaussview,最后清理不再需要的文件。

2024-08-11

这个问录入的是关于在Linux本地部署一个名为Langchain-Chatchat-v0.3+Xinference的项目,具体版本为1.5-72B。由于没有提供具体的部署步骤和代码,我将提供一个通用的部署指南和示例代码。

首先,确保你的Linux系统已经安装了Python和必要的包管理工具(如pip)。

  1. 克隆或下载项目代码:



git clone https://github.com/your-repo/Langchain-Chatchat-v0.3+Xinference.git
cd Langchain-Chatchat-v0.3+Xinference
  1. 安装项目依赖:



pip install -r requirements.txt
  1. 根据项目文档配置环境变量和其他必要设置。
  2. 运行项目:



python run.py

或者根据项目提供的其他运行命令。

请注意,这个过程可能需要根据项目的具体要求进行调整,比如选择合适的Python版本,处理不同的环境依赖问题,或者按照项目文档中的特定部署指南进行操作。如果你在部署过程中遇到具体的错误或问题,请提供详细的错误信息以便进一步的解决。