一、通用命令

init 3 : 切换dos窗口(alt[+crtl]+f2)

init 5 : 切换视图(cmd输入startx)

关机 shutdown 重启 reboot

命令使用文档查看

man [command]

1.1 常用命令

  • ls [ -a -l -h ] [路径]

  • mkdir [ -p ] 目录

  • touch 文件

  • cat 文件

  • more 文件

  • cp [ -r ] 被复制的文件 复制到的文件/目录目的地

    • -r:复制文件夹时使用
  • mv 参数1 参数2

    • 移动文件
  • rm [ -r -f ] 参数1 参数2…

    • -r:层次结构使用
    • -f:强制删除,force,慎用
  • su - root

    • 切换到root用户
    • exit退出到上一个登录用户
  • which 命令

    • 查看程序文件路径
  • find [ 起始路径 ] -name “文件名”

    • 查找文件路径,支持通配符*
  • grep [ -n ] 关键字 文件路径

    • 查找文件内容
    • 该文件路径可作为管道符入口
  • wc [ -c -m -l -w ] 文件路径

    • 统计文件行数,单词数等
    • -c:bytes数量
    • -m:字符数量
    • -l: 行数
    • -w:单词数
  • echo 输出的内容

    • 内容被反引号包含时成为命令

      echo `pwd`

      结果:/root/Documents
  • tail [ -f -num ] 路径

    • -f:follow,持续追踪并输出
    • -num:显示的行数,例:-10
  • ln -s 参1 参2

    • -s,软链接,相当于快捷方式
  • date [ -d ] [+格式化日期]

    • date “+%Y-%m-%d”:指定格式显示当前日期
    • date -d “+1 day”:显示后一天的日期,其中+ -为前后时间

1.2 管道与重定向符

1.2.1 管道符

规则:

  1. 左侧得到结果
  2. 右侧输入左侧结果进行执行
  3. 即:左边的命令结果作为右侧命令的输入

例:cat test.txt | grep -n bamboo

1.2.2 重定向符

  • “>”:左侧的结果会覆盖并写入右侧的文件中
  • “>>”:左侧的结果会追加并写入右侧的文件中

1.3 vi/vim

1.3.1 键盘命令模式

  • yy:复制行
  • p:黏贴
  • dd:删除行
  • ndd:删除此行开始一下n行
  • u:撤销操作
  • /:搜索

1.3.2 输入模式

  • i:进入输入模式
  • esc:退出输入模式

1.3.3 底线模式

  • :set nu:显示行号
  • wq :保存退出
  • q:退出
  • q!:强制退出

1.3 账户相关

在这里使用用户名为bamboo

1.3.1 账户目录

普通用户:/home/bamboo

管理员用户:/root

1.3.2 切换用户

  • su - root:切换root用户
  • 参数-:加载环境变量,加上即可
  • 注:普通用户切换时需要验证密码,root用户切换目录时无需验证
  • exit:退回上一个目录

1.3.3 sudo

  • sudo 命令
    • 临时取得管理员权限执行命令【需要root用户给予权限】

给予权限

  1. 执行visudo命令
  2. 在末尾添加:bamboo ALL=(ALL) NOPASSWD=ALL

1.3.4 用户组

用户组创建:groupadd 组名

用户组删除:groupdel 组名

1.3.5 用户

添加用户

  • useradd 用户名 -g 用户组 -d /home/用户名
    • -g:设置此用户的用户组
    • -d:设置该用户的目录,默认为:/home/用户名

删除用户

  • userdel [ -r ] 用户名
    • -r:添加此参数时删除与用户名相关的目录

修改用户所属

  • usermod -aG 用户组 用户名
    • 将用户添加到该用户组
    • usermod -aG root dragon

1.4 权限与所属

1.4.1 chmod

  • r:读权限,对标4
  • w:写权限,对标2
  • x:执行权限,对标1
    • x权限相当于交予文件夹cd的执行权限,否则无法进入;如果是文件,则直接执行文件内bash命令
  • 无权限:对标0
  • 命令:chmod [ -R ] [权限] 文件/文件名

给予文件权限

  • chmod u-rwx,g=rx,o=x hello.txt
    • 直接执行hello.txt会执行内部的bash命令,例如echo "execute bash"

给予文件夹权限

  • chmod -R 731 hello
    • hello在这里是个文件夹,同时给予此文件夹和内部所有的文件权限

1.4.2 chown

改变文件所属的用户或组别,此命令仅能在root下执行

chown [ -R ] [用户][:][用户组] 文件/文件夹

1.5 yum与apt

1.5.1 yum

centOS下使用yum安装软件

语法:

  • 使用前更新yum:yum update
  • yum [ -y ] install weget
  • yum [ -y ] remove weget
  • yum search weget

1.5.2 apt

Ubuntu下使用apt安装软件

语法:

  • apt [ -y ] [ install | remove | search ] 软件包名

1.6 systemctl

  • systemctl [ start | stop | status | enable | disable ] 服务名
    • start:启动
    • stop:停止
    • status:状态
    • enable:开机自启动
    • disable:禁止开机自启动

1.7 修改时间

  1. rm -f /etc/localtime
  2. ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

手动修改

  1. yum install ntp
  2. systemctl enable nptd
  3. npt date -u ntp.aliyun.com

二、网络相关

2.1 IP

  • ifconfig
    • 缺失安装net-tools
    • yum -y install net-tools

2.2 主机名

  • hostname
  • hostnamectl set-hostname 主机名

2.3 DNS服务器

公开DNS:

  • 114.114.114.114
  • 8.8.8.8

2.4 静态IP

  1. 修改vmnet网段
    • 子网IP:192.168.49.0
    • 子网掩码:255.255.255.0
    • 网关IP:192.168.49.2
  2. 修改网关文件
    • cd /etc/sysconfig/network-scripts/
    • vim ifcfg-ens33
    • 修改以下字段:
      • BOOTPROTO=static
      • ONBOOT=yes
      • IPADDR=192.168.49.10
      • NETMASK=255.255.255.0
      • GATEWAY=192.168.49.2
      • DNS1=192.168.49.2
  3. 重启
    • systemctl restart network
TYPE=Ethernet
BOOTPROTO=static ##静态ip
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=ens33
#UUID=57972749-df25-4f04-8fbf-a3744a0b23e8
DEVICE=ens33
ONBOOT=yes #系统启动时开启
IPADDR=192.168.49.10 # 静态ip地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.49.2 # 第3步中查看的网关ip
DNS1=192.168.49.2 #DNS1 同物理主机
DNS2=8.8.8.8 #DNS2**
PREFIX=24
UUID=c96bc909-188e-ec64-3a96-6a90982b08ad
HWADDR=00:0C:29:95:3E:AB
  • 重启网卡
    • nmcli c reload ens33
    • nmcli c up ens33

2.5 ping

  • ping [ -c num ] 主机或IP
  • IP可以通过修改C:\Windows\System32\drivers\etc\hosts进行域名解析

2.6 wget

非交互式文件下载器

  • wget [ -b ] url
  • -b:后台下载,日志保存到wget-log下
  • 使用tail -f wget-log追踪下载进度

2.7 curl

  • curl [ -O ] url
  • -O:下载时使用
  • 默认访问指定url,做一个请求返回功能,在视图下相当于访问页面

2.8 端口

  • 公认端口:1~1023
  • 注册端口:1024~49151
  • 动态端口:49152~65535

2.8.1 nmap

nmap查看端口占用情况

  • yum -y install nmap
  • nmap 127.0.0.1

2.8.2 netstat

  • yum -y install net-tools
  • netstat -anp | grep 端口号

三、进程相关

3.1 进程管理

3.1.1 查询进程

ps -ef | grep redis

3.2.2 关闭进程

kill [ -9 ] 进程ID

3.2 主机状态

  • top [ -i ]
    • -i:只显示运行状态
    • 更多参数阅帮助文档

3.3 磁盘管理

3.3.1 磁盘使用率

df -h

3.3.2 磁盘速率

iostat -x

3.3.3 网络情况

sar -n DEV 3 2

四、环境变量

4.1 查看环境变量

  • env:查看环境变量
  • env | grep PATH:查看PATH环境变量
  • $符:取环境变量
    • echo $PATH
    • echo ${PATH}AAA

4.2 设置环境变量

4.2.1 临时生效

  • export NAME=bamboo

4.2.2 永久生效

  • 当前用户:~/.bashrc
  • 所有用户:/etc/profile
  • 生效环境变量:source 配置文件

4.2.3 自定义PATH

进入/etc/profile文件

export PATH=$PATH:/root/myenv
# 或
export JAVA_HOME=/...
export PATH=$JAVA_HOME/bin:$PATH

五、文件相关

5.1 上传、下载

rz、sz

5.1.1 安装lrzsz

  • yum -y install lrzsz

5.1.2 上传

  • rz:适合传输小文件,大文件巨慢

解决乱码:

  • 使用 rz -be
  • -b:–binary 用binary的方式上传下载,不解释字符为ascii;
  • -e:–escape 强制escape 所有控制字符,比如Ctrl+x,DEL等

5.1.3 下载

  • sz 下载的文件:【finalshell默认下载到桌面】

5.2 压缩、解压

5.2.1 压缩格式

  • tar:普通压缩,不减少文件体积
  • gzip:减少文件体积的压缩,常见格式.tar.gz
  • zip:普通压缩

5.2.2 tar

  • tar [ -c -v -x -f -z -C ] 参数1 2….
    • -c:压缩模式
    • -v:显示过程
    • -x:解压模式
    • -f:压缩或解压时创建的文件
    • -z:gzip模式
    • -C:解压所得到的目的地

① 压缩

  • tar -cvf test.tar 1.txt 2.txt
  • tar -zcvf test.tar.gz 1.txt 2.txt

② 解压

  • tar -xvf test.tar
  • tar -xvf test.tar -C /home/user
  • tar -zxvf test.tar.gz -C /home/user

5.2.3 zip

① 压缩

  • zip [ -r ] 参数1 2 …
  • zip test.zip a.txt b.txt …
  • zip -r test.zip tst bamboo a.txt …

② 解压

  • unzip [ -d ] 参数
  • unzip test.zip -d /home/user

六、安装软件包

6.0 注意事项

存放目录问题:

6.0.1 源文件解压目录

在正常情况下,你可以选择将源代码文件解压缩到任何你喜欢的目录中。没有一个固定的标准位置来解压源代码文件。

然而,为了方便管理和组织,通常建议将源代码文件解压缩到一个专门用于存放源代码的目录中。一种常见的做法是在用户的主目录下创建一个名为 “src” 或 “source” 的目录,并将源代码文件解压到该目录中。

例如,在用户的主目录中创建一个名为 “src” 的目录,并将源代码文件解压到其中:

mkdir ~/src
cd ~/src
tar -xf source_code.tar.gz

这样做可以帮助你保持目录结构的整洁性,方便找到和管理源代码文件。当你需要编译和安装软件时,可以在相应的源代码目录中执行构建和安装命令。

需要注意的是,解压源代码文件的位置并不会对最终编译和安装的结果产生影响。你可以根据自己的喜好和需求,选择合适的位置来解压源代码文件。

6.0.1 /usr/local

放软件的源代码压缩包,即文件有src的

在 Linux 系统中,/usr/local 目录是用于安装本地软件的目录。它被用于存放系统管理员手动安装的软件,这些软件通常不是通过操作系统的包管理器进行安装的。

下面是 /usr/local 目录下可能存放的东西的一些示例:

  1. 本地编译的软件:当你从源代码编译并手动安装软件时,通常会选择将其安装到 /usr/local 目录下。这包括自定义编译的软件、实验性软件或软件的最新版本,这些软件不会与操作系统默认提供的软件包发生冲突。
  2. 系统管理员安装的软件:系统管理员可以选择将一些本地安装的软件放在 /usr/local 目录下,这些软件可能是为了满足特定的需求或为了管理系统。
  3. 额外软件包:一些额外的软件包或扩展也可以放在 /usr/local 目录下。这些软件包可能是从第三方提供的源中手动安装的,或者是与操作系统预装软件包不相关的软件。

需要注意的是,/usr/local 目录的使用也是一种约定俗成的做法,它提供了一个通用的位置用于存放本地安装的软件。不同的软件开发者或系统管理员可能有不同的安装偏好和惯例。

在查看 /usr/local 目录时,你可能会看到各种各样的子目录,每个子目录对应一个特定的软件或应用程序。这些子目录的命名通常会遵循命名空间或软件的名称。例如,一个名为 myapp 的应用程序可能会安装在 /usr/local/myapp 目录下。

总而言之,/usr/local 目录提供了一个用于存放本地安装软件的标准位置,使得系统管理员可以方便地管理和维护这些软件,同时与系统自带软件包保持分离。

6.0.2 /opt

在 Linux 系统中,/opt 目录是用于安装额外软件的目录。它被用来存放第三方软件或应用程序,这些软件通常不会与操作系统的核心组件进行混合安装。

下面是 /opt 目录下可能存放的东西的一些示例:

  1. 第三方应用程序:许多独立的商业软件或专有软件会选择将其安装在 /opt 目录下。这些软件包括一些商业数据库、图形设计工具、各种开发工具、模拟器等。
  2. 大型应用程序:某些大型应用程序可能会选择将其安装在 /opt 目录下。这些应用程序可能由多个组件组成,需要独立的目录结构,并且不会与操作系统的其他部分混合在一起。例如,一些复杂的服务器软件或框架可能会使用 /opt 目录作为安装位置。
  3. 额外软件包:一些操作系统的附加软件包或扩展也可以放在 /opt 目录下。这些软件包可能提供额外的功能或工具,可供用户选择安装和使用。

需要注意的是,/opt 目录的使用并不是强制性的,它只是一种约定俗成的安装目录。不同的软件开发者或发行版可能有不同的安装偏好和惯例。因此,具体放置在 /opt 目录下的内容可能因系统设置、发行版或软件开发者而异。

在查看 /opt 目录时,你可能会看到各种各样的子目录,每个子目录对应一个特定的软件或应用程序。这些子目录会遵循特定的命名规则,通常是根据软件的名称或开发者来命名。例如,一个名为 myapp 的应用程序可能会安装在 /opt/myapp 目录下。

总而言之,/opt 目录提供了一个统一的位置供第三方软件或应用程序安装,并有助于保持系统的整洁和组织结构。

6.0.3 /usr/local/opt区别

下面是 /usr/local 目录和 /opt 目录的主要区别:

  1. 文件系统层次结构:/usr/local 目录是符合标准的文件系统层次结构(Filesystem Hierarchy Standard,FHS)的一部分。它是 Linux 系统中用于存放本地软件的标准位置之一,与操作系统的核心组件和其他系统目录(例如 /bin/sbin/usr 等)紧密集成。而 /opt 目录虽然常用,但不是 FHS 的一部分,它被视为一个可选的安装目录,并且更多地用于第三方软件的安装。
  2. 安装方式:/usr/local 目录通常用于存放通过源代码编译并手动安装的软件。这些软件通常是从官方源代码仓库或开发者的源代码中获取,并通过手动编译和安装步骤进行安装。相比之下,/opt 目录更常用于存放以二进制形式提供的第三方软件包,这些软件包可能是由软件开发商提供的预编译的安装包。
  3. 文件位置:/usr/local 目录中的软件通常被安装在 /usr/local/bin/usr/local/lib/usr/local/include 等子目录下,其中二进制文件位于 /usr/local/bin,库文件位于 /usr/local/lib,头文件位于 /usr/local/include。而 /opt 目录中的软件通常被安装在独立的子目录下,例如 /opt/myapp
  4. 系统集成:由于 /usr/local 目录是标准的一部分,其中安装的软件可能会与操作系统的其他组件(如系统库、工具链等)有一定的交互和依赖关系。相比之下,/opt 目录中的软件通常更独立,并且不会与操作系统的其他部分混合在一起。

综上所述,/usr/local 目录适用于存放本地编译和手动安装的软件,与操作系统的核心组件紧密集成;而 /opt 目录适用于存放第三方提供的预编译软件包,更独立且不与操作系统的其他部分混合。

6.0.4 安装前检查

检查rpm包是否存在:

rpm -qa | grep pcre

# pcre-8.32-17.el7.x86_64
# pcre2-10.23-2.el7.x86_64
# pcre2-utf16-10.23-2.el7.x86_64

如果存在则执行卸载:

sudo rpm -e --nodeps pcre-8.32-17.el7.x86_64
sudo rpm -e --nodeps pcre2-10.23-2.el7.x86_64
sudo rpm -e --nodeps pcre2-utf16-10.23-2.el7.x86_64

6.1 包管理器

大多数 Linux 发行版都提供了包管理器,用于方便地安装、更新和卸载软件包。常见的包管理器包括:

  • APT(Advanced Package Tool):用于 Debian、Ubuntu 等基于 Debian 的发行版。
  • YUM(Yellowdog Updater, Modified):用于 CentOS、Fedora、Red Hat Enterprise Linux(RHEL)等发行版。
  • DNF(Dandified YUM):用于最新版本的 Fedora 和 RHEL。
  • Zypper:用于 openSUSE。
  • Pacman:用于 Arch Linux。
  • Portage:用于 Gentoo。

使用包管理器可以轻松地从官方软件仓库中获取软件包,并自动解决依赖关系。

6.1.1 yum

常用yum命令:

  • 检查yum软件包更新:

    yum check-update
  • 更新软件包:

    yum update
  • 搜索软件包:

    yum search <keyword>
  • 安装软件包:

    yum -y install <package_name>
  • 删除软件包:

    yum -y remove <package_name>
  • 显示软件包信息:

    yum info <package_name>
  • 列出已安装的软件包:

    yum list installed
  • 清理缓存:

    yum clean all

6.2 源代码编译

6.2.0 安装GCC依赖

yum install -y gcc gcc-c++

6.2.1 常用依赖

在Linux系统上安装软件时,需要安装这几个依赖项(pcre、zlib、openssl)的原因如下:

  1. PCRE(Perl Compatible Regular Expressions,兼容Perl的正则表达式):PCRE库是一种正则表达式库,它提供了强大的模式匹配功能。许多软件在其代码中使用正则表达式来进行字符串匹配和处理。因此,如果一个软件依赖于PCRE,那么你需要安装PCRE库以确保软件能够正常运行。
  2. Zlib:Zlib是一个广泛使用的数据压缩库,它提供了在应用程序中进行数据压缩和解压缩的功能。许多软件在处理压缩文件或网络通信时需要使用Zlib库。安装Zlib库可以确保软件能够正确地处理压缩数据。
  3. OpenSSL:OpenSSL是一个开源的加密库,它提供了许多加密算法和安全通信协议的实现,如SSL和TLS。许多软件在进行安全通信、加密和解密操作时依赖于OpenSSL库。如果一个软件需要使用SSL/TLS协议进行网络通信或进行加密操作,那么你需要安装OpenSSL库以满足软件的依赖需求。

这些依赖项是广泛使用的开源库,它们提供了核心功能和支持,使得软件能够在Linux系统上正常运行,并提供了强大的正则表达式、数据压缩和加密功能。通过安装这些依赖项,你可以确保软件在安装和运行过程中不会遇到缺少必要功能的问题。

6.2.2 ./configure

./configure命令通常是GNU Autotools构建系统中的一部分,用于配置软件包的构建过程。

GNU Autotools是一套用于自动化软件包配置、编译和安装的工具集。它包括Autoconf、Automake和Libtool等工具。其中,Autoconf工具用于生成可移植的配置脚本,而./configure命令就是由Autoconf生成的配置脚本。

通过运行./configure命令,它会检查系统环境,包括检测所需的库、依赖项和编译器选项等,然后根据系统的特性和用户的配置选项生成一个Makefile,该Makefile用于后续的编译和安装过程。

需要注意的是,不是所有的软件包都使用GNU Autotools构建系统,因此并不是所有的软件都需要运行./configure命令进行配置。某些软件包可能使用其他构建系统,如CMake、Meson等,或者直接提供预编译的二进制文件。因此,在安装软件包之前,最好查看软件包的文档或官方网站,了解其构建和安装过程的具体要求。

6.2.3 make && make install

① 解释

make && make install 是一种常见的用于编译和安装软件的命令组合。它通常用于使用Makefile来构建和安装源代码。

make命令是一个构建工具,它根据Makefile中的规则和依赖关系,将源代码编译成可执行文件或库文件。当你运行make命令时,它会根据当前目录下的Makefile文件执行相应的编译操作,生成目标文件或可执行文件。

如果编译成功,即没有出现错误,那么接下来的动作是执行make install命令。make install命令通常在构建成功后,将生成的可执行文件、库文件或其他必要的文件复制到指定的目标位置。这样,软件就被安装到系统中,可以在其他地方使用了。

需要注意的是,makemake install命令的具体操作是由Makefile文件定义的。在执行这两个命令之前,你应该确保在正确的目录下,且已经按照软件包的要求进行了适当的配置和依赖项安装。

此外,有些软件包可能还提供其他构建和安装方式,如使用CMake、Meson等工具生成的构建系统,或者直接提供预编译的二进制文件。因此,在安装软件包之前,最好查看软件包的文档或官方网站,了解其构建和安装过程的具体要求。

② 安装位置

make install命令通常将编译生成的可执行文件、库文件和其他必要的文件安装到系统中的预定义位置。具体的安装位置取决于软件包的配置和约定。

在大多数情况下,软件包的安装位置遵循一些常见的约定:

  1. 可执行文件:通常会安装到系统的/usr/local/bin/usr/bin目录中。这些目录是用于存放可执行文件的标准位置。安装后,你可以在终端中直接运行这些可执行文件。
  2. 库文件:库文件通常会安装到系统的/usr/local/lib/usr/lib目录中。这些目录是用于存放库文件的标准位置。安装后,其他程序可以链接并使用这些库文件。
  3. 配置文件:配置文件可能会安装到不同的位置,具体取决于软件包的约定。常见的位置包括/etc目录和/usr/local/etc目录。配置文件通常用于自定义软件包的行为和设置。

请注意,上述的安装位置仅作为一般的约定,并不是绝对的规则。不同的软件包可能有不同的安装位置和约定。为了确定特定软件包的安装位置,最好查看软件包的文档、官方网站或安装说明。

此外,你也可以通过在运行./configure时指定--prefix选项来自定义安装位置。通过--prefix选项,你可以将软件包安装到你指定的目录中,而不是默认的系统目录。例如,可以使用./configure --prefix=/opt/myapp来将软件包安装到/opt/myapp目录下。

总之,具体的安装位置取决于软件包的配置和约定,可以通过查看软件包的文档或官方指南来获得准确的信息。

注意事项

  • 使用./configure --prefix=/opt/myapp安装后需要配置环境变量,由于不是默认的,所以无法直接调用
  • 可以通过ln -s软连接到/usr/local/sbin…的目录下,前提是可行的情况,只有上述设置了环境变量仍然不生效时使用

6.2.4 卸载

① 源代码目录的卸载

  • sudo make uninstall

如果通过编译源代码并使用 make install 安装了 PCRE,可以按照以下步骤卸载它:

  1. 进入你之前编译和安装 PCRE 的源代码目录。

  2. 执行以下命令以卸载已安装的文件:

    sudo make uninstall
    ```

    如果没有 `make uninstall` 目标,你可以尝试执行以下命令:
    ````
    sudo make remove
    ````

    这些命令将根据之前的安装过程中生成的 Makefile,从系统中删除已安装的文件。
  3. 检查卸载结果。你可以尝试执行一些与 PCRE 相关的命令或尝试编译其他软件包,以确保 PCRE 已经被成功卸载。

② 无源代码目录的卸载

已经删除了 PCRE 的源代码文件,但仍然想卸载 PCRE,可以尝试以下方法:

  1. 查找安装位置:首先,你需要确定 PCRE 的安装位置。你可以尝试通过以下方式找到 PCRE 的可执行文件路径:

    which pcretest
    ```

    这个命令将显示 PCRE 的可执行文件的路径。记下这个路径,因为你稍后需要用到它。
  2. 手动删除文件:使用安装位置中的路径,手动删除与 PCRE 相关的文件和目录。通常,PCRE 的安装文件分布在多个位置,例如可执行文件、库文件、头文件等。你可以使用以下命令来删除这些文件(请将 <installation_path> 替换为实际的安装路径):

    sudo rm -rf <installation_path>
    ```

    注意:这是一个危险的操作,请确保你已经正确指定了安装路径,以防止误删除其他重要文件。
  3. 清理残留文件:卸载 PCRE 后,你可能还需要清理一些残留文件和目录。这些文件可能位于/usr/local/bin/usr/local/lib 或其他系统库目录中。
    可以使用以下命令来删除这些残留文件(请谨慎使用 sudo 命令):

    sudo rm -rf /usr/local/bin/pcre*
    sudo rm -rf /usr/local/lib/libpcre*
    ```

    根据你的安装情况,可能还需要删除其他相关文件和目录。
  4. 验证卸载:完成上述步骤后,你可以尝试运行 pcretest 命令来验证 PCRE 是否已被成功卸载。如果你看到一个类似于 “command not found” 的错误提示,说明 PCRE 已经成功卸载。

6.2.5 源文件解压路径

1.

6.2.6 查询是否可进行源代码安装

解压后查看是否存在configure文件,一般在根目录下

要确定是否可以使用特定的方式安装 PCRE(如源代码安装),你可以参考以下资源:

  1. 官方文档:查阅 PCRE 的官方文档。官方文档通常提供了关于 PCRE 安装的详细说明,包括不同的安装选项和方法。
  2. 安装说明:在 PCRE 的下载页面、官方网站或源代码包中,通常会包含一个名为 “INSTALL”、”README” 或 “INSTALLATION” 的文件。这些文件中通常会提供关于如何安装和卸载 PCRE 的说明。
  3. 社区讨论:参与 PCRE 的用户社区或论坛,并寻求其他用户的经验和建议。其他用户可能会分享他们的安装经验,包括使用源代码安装的方法。
  4. 包管理器:如果你的操作系统使用包管理器(如 apt、yum、dnf 等),你可以尝试使用包管理器来安装 PCRE。在终端中运行适用于你的包管理器的安装命令,并搜索 PCRE 相关的软件包。如果找到符合条件的软件包,那么你可以使用包管理器来安装 PCRE,而不需要进行源代码安装。

6.2.5 安装

源代码安装的一般步骤:

  1. 获取源代码:从软件的官方网站或代码仓库中获取软件的源代码。通常,源代码以压缩文件(如.tar.gz 或 .zip)的形式提供。
  2. 安装编译工具和依赖项:在编译软件之前,需要确保系统中安装了必要的编译工具和依赖项。这些工具和依赖项可能包括编译器、构建工具(如 make)、开发库和其他相关软件包。你可以使用包管理器来安装这些工具和依赖项。
  3. 解压源代码:将下载的源代码压缩文件解压到你选择的目录中。
  4. 进入源代码目录:使用终端进入解压后的源代码目录。
  5. 配置:运行配置脚本(通常是 configure 脚本),该脚本将检查系统环境并生成适当的配置文件。你可以通过指定选项来自定义配置,例如安装路径或启用/禁用特定功能。
  6. 编译:运行编译命令(通常是 make 命令),它将根据源代码和配置生成可执行文件。
  7. 安装:运行安装命令(通常是 make install 命令),该命令将将编译生成的文件复制到指定的安装路径中。
  8. 可选:执行其他设置或配置步骤:有些软件可能需要进行额外的设置或配置,例如创建配置文件、添加环境变量或启动服务。这些步骤通常在软件的官方文档中有详细说明。

6.3 手动安装

6.4 虚拟化和容器

6.5 软件商店

七、Shell命令

创建文件

vim test.sh

写入内容

#!/bin/bash
echo 'hello world'

运行

1.作为可执行程序
chmod +x ./test.sh #使脚本具有执行权限
./test.sh #执行

2.作为解释器参数
/bin/sh test.sh

八、其他

7.1 处理目录

  1. ls (list files)
    • -a : 全部文件,包括隐藏文件(开头为.的文件)
    • -l : 昌数据串列出,包含文件属性与权限等数据
  2. cd (change directory)
    • 绝对目录: /目录
    • 相对目录: ./目录
    • 家目录: ~ (/root目录)
    • 上级目录: ../目录
  3. pwd (print work directory)
    • -P : 显示出确实的路径,而非使用链接(link)路径
  4. mkdir (make directory)
    • -m : 配置文件权限,直接配置 mkdir -m 771 dirspace
    • -p : 递归创建多级目录
  5. rmdir (remove directory)
    • -p : 该目录起一次性删除多级目录
  6. cp (copy file)
    • -a : 相当于-pdr
    • -d : 若来源档为链接档的属性(link file),则复制链接档属性而非文件本身
    • -f : 强制force的意思,若目标文件已经存在且无法开启,则移除后再次尝试
    • -i : 若目标档destination已存在,在覆盖时会先询问动作的进行
    • -l : 进行硬连接hard link的链接档创建,而非复制文件本身
    • -p : 连同文件的属性一起复制过去,而非使用默认属性
    • -r : 递归持续复制,用于目录的复制行
    • -s : 复制为符号链接档symbolic link,即【捷径】文件
    • -u : 若destination 比 source旧才能升级destination
  7. rm (remove)
    • -f : 强制删除,忽略不存在的文件,force
    • -i : 互动模式,删除前会询问使用者是否删除
    • -r : 递归删除
  8. mv (move file)
    • 语法1 : mv [-fiu] source destination
    • 语法2 : mv [options] source1 source2 … directory
    • -f : 如果目标文件已存在,不会询问而直接覆盖
    • -i : 目标文件destination已经存在时,会询问是否覆盖
    • -u : 目标文件已存在且source比较新,才会升级update

7.2 文件内容查看

  1. cat 正着看
  2. tac 倒着看(最后一行开始)
  3. nl
    • -b 指定行号的指定方式
      • a 不论是否为空行,也同样列出行号(cat -n)
      • t 如果有空行,空的那一行不列出行号(默认值)
    • -n 累出行号表示的方法
      • ln 最左边
      • rn 最右边且不加0
      • rz 最右方且加0
    • -w 行号栏位占用的位数
  4. more
    • 空格space 下翻一页
    • enter 下翻一行
    • /字串 在当前显示内容中乡下搜索子串这个关键字
    • :f 立刻显示出档名以及当前显示的行数
    • q 退出
    • b 回滚页数,只对文件有用
  5. less 类似于more
  6. head
    • -n 接数字,取出前n行
  7. tail
    • -n 接数字,取出后n行
    • -f 持续侦测后面所接的档名,等待按下ctrl+c结束tail的侦测

7.3 更新

检查更新

sudo yum update

7.4 安装JDK

yum -y list java*
yum install -y java-1.8.0-openjdk.x86_64
# 目录在/usr/lib/jvm

7.5 安装MySQL

7.5.1 删除已有的相关包

  • 查找已安装的MySQL软件包:
rpm -qa|grep mysql
  • CentOS7下还需要查找是否存在mariadb包:
rpm -qa|grep mariadb
  • 如果输入上述两个命令后都输出存在有包,则需要执行删除命令。

例如,前两步中终端输出了“mysql-libs-5.1.73-1.el6.x86_64”和“mariadb-libs-5.5.56-2.el7.x86_64”,则:

rpm -e --nodeps mysql-libs-5.1.73-1.el6.x86_64
rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64

7.5.2. 提升权限

由于 MySQL 安装过程中,会通过 MySQL 用户在 /tmp 目录下新建 tmp_db 文件,所以需要给 /tmp 目录较大的权限:

chmod -R 777 /tmp

7.5.3. 检查依赖

这一步需要检查系统中是否存在一些安装MySQL时需要的依赖库。因为考虑到大家有些是在虚拟机上安装的Linux系统。如果安装系统的时候用的是最小安装等原因,可能就不存在这些库。

  • 执行两个查询命令看是否存在依赖库:
rpm -qa|grep libaio
rpm -qa|grep net-tools
  • 如果不存在则需要安装:
yum -y install libaio net-tools

7.5.4. 准备安装包

准备安装包方法 1

  • 首先进入到 /opt目录:
cd /opt
  • 使用 wget下载并解压,在下载的过程中会显示进度条,包含 (下载完成百分比,已经下载的字节,当前下载速度,剩余下载时间) :
wget http://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar
tar -xvf mysql-5.7.16-1.el7.x86_64.rpm-bundle.tar

准备安装包方法 2

  • 点击进入 官网 (点击此处) 可以直接下载安装包,或者使用本文作者提供的 网盘地址 (点击此处,提取码: fiqc) 进行下载。

  • 下载完成后,解压,会看到很多 rpm 包,其中的 4 个是必要的:

    ​ mysql-community-common-5.7.16-1.el6.x86_64.rpm
    ​ mysql-community-libs-5.7.16-1.el6.x86_64.rpm
    ​ mysql-community-client-5.7.16-1.el6.x86_64.rpm
    ​ mysql-community-server-5.7.16-1.el6.x86_64.rpm

这 4 个安装包通过 Xtfp 复制到 /opt下

7.5.5. 开始安装

使用 rpm 命令按顺序依次安装 4 个包:

rpm -ivh mysql-community-common-5.7.16-1.el7.x86_64.rpm 
rpm -ivh mysql-community-libs-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-client-5.7.16-1.el7.x86_64.rpm
rpm -ivh mysql-community-server-5.7.16-1.el7.x86_64.rpm

注意:

  1. 安装 server 会比较慢;

    1. 如果前面第 1.3 步没检查好,在安装 mysql-community-server 会报错。

查看MySQL 的安装版本

执行 “ mysqladmin -–version “ 命令,类似 “ java -version “ 如果输出版本消息,即为安装成功。

7.5.6. 相应配置

  • MySQL 5.7下载完后需要手动初始化:
mysqld --initialize --user=mysql
  • 查看并记住初始密码,“root@localhost:” 后面的就是初始化密码,要记下来,后面连接数据库会用到。
cat /var/log/mysqld.log | tail -n 10

7.5.7. 启动 MySQL 服务

  • 启动服务
systemctl start mysqld.service
1
  • 关闭服务
systemctl stop mysqld.service
1
  • 查看服务状态
systemctl status mysqld
  • 查看是否自启动
systemctl list-unit-files|grep mysqld.service
  • 设置自启动
systemctl enable mysqld.sercice

7.5.8. 首次登陆

  • 首次登陆通过 “mysql -uroot -p” 进行登录,在 “Enter password:” 后输入初始化密码。

  • 因为初始化密码默认是过期的,必须修改新密码后才能正常使用数据库

ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
  • 如果想设置简单的密码,可以根据自己需要来设置以下参数:
set global validate_password_policy=LOW; // 设置密码的验证强度等级为低(LOW)
set global validate_password_length=6; // 设置密码长度为6,最小为4

7.5.9. 修改字符集

  • 输入以下语句可以发现数据库和服务端的默认字符都是latin1,如果不修改容易出现乱码:
show variables like 'character%';
  • 输入 “vim /etc/my.cnf “ 或用Xftp打开 “/etc/my.cnf “ 文件进行编辑,在最后加上
character_set_server=utf8
init_connect=’SET NAMES utf8’
  • 重启MySQL服务
systemctl restart mysqld
  • 重新连入数据库后修改数据库的字符集(其中mydb为数据库名)
alter database mydb character set 'utf8';
1
  • 修改数据库表的字符集(其中mytbl为表名)
alter table mytbl convert to character set 'utf8';

7.5.10. 远程访问

  • 输入以下语句查看MySQL的用户信息:
select user,host from mysql.user;
  • host:表示连接类型

    • %:表示所有远程通过 TCP方式的连接
    • IP地址:如 (192.168.1.2,127.0.0.1) 通过制定ip地址进行的TCP方式的连接
    • 机器名:通过制定i网络中的机器名进行的TCP方式的连接
    • ::1:IPv6的本地ip地址 等同于IPv4的 127.0.0.1
    • localhost:本地方式通过命令行方式的连接 ,比如mysql -u xxx -p 123xxx 方式的连接。
  • user:表示用户名

    同一用户通过不同方式链接的权限是不一样的。

  • authentication_string:密码

    所有密码串通过password (明文字符串)生成的密文字符串。加密算法为MYSQLSHA1,不可逆。MySQL 5.7的密码保存到authentication_string字段中不再使用password字段(在5.5中使用)。

  • 修改远程连接条件

    update mysql.user host='%' where user='root';
    systemctl restart mysqld

7.6 旧整合命令

echo string/$variable 输出字符串或变量提取后的值

longtype = ‘–’ shorttype = ‘-‘

man [command] //help txt

Date

date “+%Y-%m-%d %H:%M:%S” //lookdate

data -s “20220409 11:12:13” //setdate

timedatectl status|set-time|set-timezone //look or set datetime

reboot poweroff

wget //“web get”:download webfile

ps -aux //system status

pstree //similar up

top //dynamic system status

pidof [serviceName] //search service id

kill [PID|serviceName] //kill status

ifconfig //“interface config”:local Internet

uname -a //cat system kernel

uptime //cat system load information

free -h //cat memory usage

who //cat current user

last //last login information

ping -c [number] ipAddress

netstat //“network status”

history [-c:clear] //used command,path:~/.bash_history

sosreport //sos report

pwd //print working directory

cd [..|~:currentUserHome|/:rootHome] //change directory

ls [-al|-ld] //list

tree //tree graphic directory

find [searchDirectory] [condition]

​ wildcard character:”*”

​ condition:

​ -name “string”

locate

whereis

which

cat -n [string or file] //cconcatenate

more [file] // big cat

head -n [num] [filename]

tail -n [num] [filename]

​ -f //refresh

tr [oldstring] [newstring] //translate

​ example:cat file.txt | tr [a-z] [A-Z]

wc -lwc [filename]

touch [filename]

mkdir -p [filename] //make directory

copy -r [dir] [newdir]

mv [filedir] [newfiledir]

rm -rf [newfile]

7.7 设置网络

  • cd /etc/sysconfig/network-scripts/

  • vim ifcfg-ens33

TYPE=Ethernet
BOOTPROTO=static ##静态ip
PROXY_METHOD=none
BROWSER_ONLY=no
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=ens33
#UUID=57972749-df25-4f04-8fbf-a3744a0b23e8
DEVICE=ens33
ONBOOT=yes #系统启动时开启
IPADDR=192.168.0.120 # 静态ip地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.0.2 # 第3步中查看的网关ip
DNS1=101.226.4.6 #DNS1 同物理主机
DNS2=8.8.8.8 #DNS2**
PREFIX=24
UUID=c96bc909-188e-ec64-3a96-6a90982b08ad
HWADDR=00:0C:29:95:3E:AB
  • 重启网卡
    • nmcli c reload ens33
    • nmcli c up ens33

7.8 防火墙

# 无法访问说明端口80未开放
# 查看开放的端口号
firewall-cmd --list-all
# 设置开放的端口号
# 增加服务
firewall-cmd --add-service=http --permanent
# 增加端口
sudo firewall-cmd --add-port=80/tcp --permanent
# 删除端口
sudo firewall-cmd --remove-port=80/tcp --permanent
# 重启防火墙
firewall-cmd --reload