linux
一、通用命令
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 管道符
规则:
- 左侧得到结果
- 右侧输入左侧结果进行执行
- 即:左边的命令结果作为右侧命令的输入
例: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用户给予权限】
给予权限
- 执行
visudo
命令 - 在末尾添加:
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"
- 直接执行hello.txt会执行内部的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 修改时间
- rm -f /etc/localtime
- ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
手动修改
- yum install ntp
- systemctl enable nptd
- 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
- 修改vmnet网段
- 子网IP:192.168.49.0
- 子网掩码:255.255.255.0
- 网关IP:192.168.49.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
- 重启
- systemctl restart network
TYPE=Ethernet |
- 重启网卡
- 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 |
五、文件相关
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 |
这样做可以帮助你保持目录结构的整洁性,方便找到和管理源代码文件。当你需要编译和安装软件时,可以在相应的源代码目录中执行构建和安装命令。
需要注意的是,解压源代码文件的位置并不会对最终编译和安装的结果产生影响。你可以根据自己的喜好和需求,选择合适的位置来解压源代码文件。
6.0.1 /usr/local
放软件的源代码压缩包,即文件有src的
在 Linux 系统中,/usr/local
目录是用于安装本地软件的目录。它被用于存放系统管理员手动安装的软件,这些软件通常不是通过操作系统的包管理器进行安装的。
下面是 /usr/local
目录下可能存放的东西的一些示例:
- 本地编译的软件:当你从源代码编译并手动安装软件时,通常会选择将其安装到
/usr/local
目录下。这包括自定义编译的软件、实验性软件或软件的最新版本,这些软件不会与操作系统默认提供的软件包发生冲突。 - 系统管理员安装的软件:系统管理员可以选择将一些本地安装的软件放在
/usr/local
目录下,这些软件可能是为了满足特定的需求或为了管理系统。 - 额外软件包:一些额外的软件包或扩展也可以放在
/usr/local
目录下。这些软件包可能是从第三方提供的源中手动安装的,或者是与操作系统预装软件包不相关的软件。
需要注意的是,/usr/local
目录的使用也是一种约定俗成的做法,它提供了一个通用的位置用于存放本地安装的软件。不同的软件开发者或系统管理员可能有不同的安装偏好和惯例。
在查看 /usr/local
目录时,你可能会看到各种各样的子目录,每个子目录对应一个特定的软件或应用程序。这些子目录的命名通常会遵循命名空间或软件的名称。例如,一个名为 myapp
的应用程序可能会安装在 /usr/local/myapp
目录下。
总而言之,/usr/local
目录提供了一个用于存放本地安装软件的标准位置,使得系统管理员可以方便地管理和维护这些软件,同时与系统自带软件包保持分离。
6.0.2 /opt
在 Linux 系统中,/opt
目录是用于安装额外软件的目录。它被用来存放第三方软件或应用程序,这些软件通常不会与操作系统的核心组件进行混合安装。
下面是 /opt
目录下可能存放的东西的一些示例:
- 第三方应用程序:许多独立的商业软件或专有软件会选择将其安装在
/opt
目录下。这些软件包括一些商业数据库、图形设计工具、各种开发工具、模拟器等。 - 大型应用程序:某些大型应用程序可能会选择将其安装在
/opt
目录下。这些应用程序可能由多个组件组成,需要独立的目录结构,并且不会与操作系统的其他部分混合在一起。例如,一些复杂的服务器软件或框架可能会使用/opt
目录作为安装位置。 - 额外软件包:一些操作系统的附加软件包或扩展也可以放在
/opt
目录下。这些软件包可能提供额外的功能或工具,可供用户选择安装和使用。
需要注意的是,/opt
目录的使用并不是强制性的,它只是一种约定俗成的安装目录。不同的软件开发者或发行版可能有不同的安装偏好和惯例。因此,具体放置在 /opt
目录下的内容可能因系统设置、发行版或软件开发者而异。
在查看 /opt
目录时,你可能会看到各种各样的子目录,每个子目录对应一个特定的软件或应用程序。这些子目录会遵循特定的命名规则,通常是根据软件的名称或开发者来命名。例如,一个名为 myapp
的应用程序可能会安装在 /opt/myapp
目录下。
总而言之,/opt
目录提供了一个统一的位置供第三方软件或应用程序安装,并有助于保持系统的整洁和组织结构。
6.0.3 /usr/local
和 /opt
区别
下面是 /usr/local
目录和 /opt
目录的主要区别:
- 文件系统层次结构:
/usr/local
目录是符合标准的文件系统层次结构(Filesystem Hierarchy Standard,FHS)的一部分。它是 Linux 系统中用于存放本地软件的标准位置之一,与操作系统的核心组件和其他系统目录(例如/bin
、/sbin
、/usr
等)紧密集成。而/opt
目录虽然常用,但不是 FHS 的一部分,它被视为一个可选的安装目录,并且更多地用于第三方软件的安装。 - 安装方式:
/usr/local
目录通常用于存放通过源代码编译并手动安装的软件。这些软件通常是从官方源代码仓库或开发者的源代码中获取,并通过手动编译和安装步骤进行安装。相比之下,/opt
目录更常用于存放以二进制形式提供的第三方软件包,这些软件包可能是由软件开发商提供的预编译的安装包。 - 文件位置:
/usr/local
目录中的软件通常被安装在/usr/local/bin
、/usr/local/lib
、/usr/local/include
等子目录下,其中二进制文件位于/usr/local/bin
,库文件位于/usr/local/lib
,头文件位于/usr/local/include
。而/opt
目录中的软件通常被安装在独立的子目录下,例如/opt/myapp
。 - 系统集成:由于
/usr/local
目录是标准的一部分,其中安装的软件可能会与操作系统的其他组件(如系统库、工具链等)有一定的交互和依赖关系。相比之下,/opt
目录中的软件通常更独立,并且不会与操作系统的其他部分混合在一起。
综上所述,/usr/local
目录适用于存放本地编译和手动安装的软件,与操作系统的核心组件紧密集成;而 /opt
目录适用于存放第三方提供的预编译软件包,更独立且不与操作系统的其他部分混合。
6.0.4 安装前检查
检查rpm包是否存在:
rpm -qa | grep pcre |
如果存在则执行卸载:
sudo rpm -e --nodeps pcre-8.32-17.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)的原因如下:
- PCRE(Perl Compatible Regular Expressions,兼容Perl的正则表达式):PCRE库是一种正则表达式库,它提供了强大的模式匹配功能。许多软件在其代码中使用正则表达式来进行字符串匹配和处理。因此,如果一个软件依赖于PCRE,那么你需要安装PCRE库以确保软件能够正常运行。
- Zlib:Zlib是一个广泛使用的数据压缩库,它提供了在应用程序中进行数据压缩和解压缩的功能。许多软件在处理压缩文件或网络通信时需要使用Zlib库。安装Zlib库可以确保软件能够正确地处理压缩数据。
- 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
命令通常在构建成功后,将生成的可执行文件、库文件或其他必要的文件复制到指定的目标位置。这样,软件就被安装到系统中,可以在其他地方使用了。
需要注意的是,make
和make install
命令的具体操作是由Makefile文件定义的。在执行这两个命令之前,你应该确保在正确的目录下,且已经按照软件包的要求进行了适当的配置和依赖项安装。
此外,有些软件包可能还提供其他构建和安装方式,如使用CMake、Meson等工具生成的构建系统,或者直接提供预编译的二进制文件。因此,在安装软件包之前,最好查看软件包的文档或官方网站,了解其构建和安装过程的具体要求。
② 安装位置
make install
命令通常将编译生成的可执行文件、库文件和其他必要的文件安装到系统中的预定义位置。具体的安装位置取决于软件包的配置和约定。
在大多数情况下,软件包的安装位置遵循一些常见的约定:
- 可执行文件:通常会安装到系统的
/usr/local/bin
或/usr/bin
目录中。这些目录是用于存放可执行文件的标准位置。安装后,你可以在终端中直接运行这些可执行文件。 - 库文件:库文件通常会安装到系统的
/usr/local/lib
或/usr/lib
目录中。这些目录是用于存放库文件的标准位置。安装后,其他程序可以链接并使用这些库文件。 - 配置文件:配置文件可能会安装到不同的位置,具体取决于软件包的约定。常见的位置包括
/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,可以按照以下步骤卸载它:
进入你之前编译和安装 PCRE 的源代码目录。
执行以下命令以卸载已安装的文件:
sudo make uninstall
```
如果没有 `make uninstall` 目标,你可以尝试执行以下命令:
````
sudo make remove
````
这些命令将根据之前的安装过程中生成的 Makefile,从系统中删除已安装的文件。检查卸载结果。你可以尝试执行一些与 PCRE 相关的命令或尝试编译其他软件包,以确保 PCRE 已经被成功卸载。
② 无源代码目录的卸载
已经删除了 PCRE 的源代码文件,但仍然想卸载 PCRE,可以尝试以下方法:
查找安装位置:首先,你需要确定 PCRE 的安装位置。你可以尝试通过以下方式找到 PCRE 的可执行文件路径:
which pcretest
```
这个命令将显示 PCRE 的可执行文件的路径。记下这个路径,因为你稍后需要用到它。手动删除文件:使用安装位置中的路径,手动删除与 PCRE 相关的文件和目录。通常,PCRE 的安装文件分布在多个位置,例如可执行文件、库文件、头文件等。你可以使用以下命令来删除这些文件(请将
<installation_path>
替换为实际的安装路径):sudo rm -rf <installation_path>
```
注意:这是一个危险的操作,请确保你已经正确指定了安装路径,以防止误删除其他重要文件。清理残留文件:卸载 PCRE 后,你可能还需要清理一些残留文件和目录。这些文件可能位于
/usr/local/bin
、/usr/local/lib
或其他系统库目录中。
可以使用以下命令来删除这些残留文件(请谨慎使用sudo
命令):sudo rm -rf /usr/local/bin/pcre*
sudo rm -rf /usr/local/lib/libpcre*
```
根据你的安装情况,可能还需要删除其他相关文件和目录。验证卸载:完成上述步骤后,你可以尝试运行
pcretest
命令来验证 PCRE 是否已被成功卸载。如果你看到一个类似于 “command not found” 的错误提示,说明 PCRE 已经成功卸载。
6.2.5 源文件解压路径
1.
6.2.6 查询是否可进行源代码安装
解压后查看是否存在configure
文件,一般在根目录下
要确定是否可以使用特定的方式安装 PCRE(如源代码安装),你可以参考以下资源:
- 官方文档:查阅 PCRE 的官方文档。官方文档通常提供了关于 PCRE 安装的详细说明,包括不同的安装选项和方法。
- 安装说明:在 PCRE 的下载页面、官方网站或源代码包中,通常会包含一个名为 “INSTALL”、”README” 或 “INSTALLATION” 的文件。这些文件中通常会提供关于如何安装和卸载 PCRE 的说明。
- 社区讨论:参与 PCRE 的用户社区或论坛,并寻求其他用户的经验和建议。其他用户可能会分享他们的安装经验,包括使用源代码安装的方法。
- 包管理器:如果你的操作系统使用包管理器(如 apt、yum、dnf 等),你可以尝试使用包管理器来安装 PCRE。在终端中运行适用于你的包管理器的安装命令,并搜索 PCRE 相关的软件包。如果找到符合条件的软件包,那么你可以使用包管理器来安装 PCRE,而不需要进行源代码安装。
6.2.5 安装
源代码安装的一般步骤:
- 获取源代码:从软件的官方网站或代码仓库中获取软件的源代码。通常,源代码以压缩文件(如.tar.gz 或 .zip)的形式提供。
- 安装编译工具和依赖项:在编译软件之前,需要确保系统中安装了必要的编译工具和依赖项。这些工具和依赖项可能包括编译器、构建工具(如 make)、开发库和其他相关软件包。你可以使用包管理器来安装这些工具和依赖项。
- 解压源代码:将下载的源代码压缩文件解压到你选择的目录中。
- 进入源代码目录:使用终端进入解压后的源代码目录。
- 配置:运行配置脚本(通常是 configure 脚本),该脚本将检查系统环境并生成适当的配置文件。你可以通过指定选项来自定义配置,例如安装路径或启用/禁用特定功能。
- 编译:运行编译命令(通常是 make 命令),它将根据源代码和配置生成可执行文件。
- 安装:运行安装命令(通常是 make install 命令),该命令将将编译生成的文件复制到指定的安装路径中。
- 可选:执行其他设置或配置步骤:有些软件可能需要进行额外的设置或配置,例如创建配置文件、添加环境变量或启动服务。这些步骤通常在软件的官方文档中有详细说明。
6.3 手动安装
6.4 虚拟化和容器
6.5 软件商店
七、Shell命令
创建文件
vim test.sh |
写入内容
#!/bin/bash |
运行
1.作为可执行程序 |
八、其他
7.1 处理目录
- ls (list files)
- -a : 全部文件,包括隐藏文件(开头为.的文件)
- -l : 昌数据串列出,包含文件属性与权限等数据
- cd (change directory)
- 绝对目录: /目录
- 相对目录: ./目录
- 家目录: ~ (/root目录)
- 上级目录: ../目录
- pwd (print work directory)
- -P : 显示出确实的路径,而非使用链接(link)路径
- mkdir (make directory)
- -m : 配置文件权限,直接配置 mkdir -m 771 dirspace
- -p : 递归创建多级目录
- rmdir (remove directory)
- -p : 该目录起一次性删除多级空目录
- cp (copy file)
- -a : 相当于-pdr
- -d : 若来源档为链接档的属性(link file),则复制链接档属性而非文件本身
- -f : 强制force的意思,若目标文件已经存在且无法开启,则移除后再次尝试
- -i : 若目标档destination已存在,在覆盖时会先询问动作的进行
- -l : 进行硬连接hard link的链接档创建,而非复制文件本身
- -p : 连同文件的属性一起复制过去,而非使用默认属性
- -r : 递归持续复制,用于目录的复制行
- -s : 复制为符号链接档symbolic link,即【捷径】文件
- -u : 若destination 比 source旧才能升级destination
- rm (remove)
- -f : 强制删除,忽略不存在的文件,force
- -i : 互动模式,删除前会询问使用者是否删除
- -r : 递归删除
- mv (move file)
- 语法1 : mv [-fiu] source destination
- 语法2 : mv [options] source1 source2 … directory
- -f : 如果目标文件已存在,不会询问而直接覆盖
- -i : 目标文件destination已经存在时,会询问是否覆盖
- -u : 目标文件已存在且source比较新,才会升级update
7.2 文件内容查看
- cat 正着看
- tac 倒着看(最后一行开始)
- nl
- -b 指定行号的指定方式
- a 不论是否为空行,也同样列出行号(cat -n)
- t 如果有空行,空的那一行不列出行号(默认值)
- -n 累出行号表示的方法
- ln 最左边
- rn 最右边且不加0
- rz 最右方且加0
- -w 行号栏位占用的位数
- -b 指定行号的指定方式
- more
- 空格space 下翻一页
- enter 下翻一行
- /字串 在当前显示内容中乡下搜索子串这个关键字
- :f 立刻显示出档名以及当前显示的行数
- q 退出
- b 回滚页数,只对文件有用
- less 类似于more
- head
- -n 接数字,取出前n行
- tail
- -n 接数字,取出后n行
- -f 持续侦测后面所接的档名,等待按下ctrl+c结束tail的侦测
7.3 更新
检查更新
sudo yum update |
7.4 安装JDK
yum -y list java* |
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 |
7.5.2. 提升权限
由于 MySQL 安装过程中,会通过 MySQL 用户在 /tmp 目录下新建 tmp_db 文件,所以需要给 /tmp 目录较大的权限:
chmod -R 777 /tmp |
7.5.3. 检查依赖
这一步需要检查系统中是否存在一些安装MySQL时需要的依赖库。因为考虑到大家有些是在虚拟机上安装的Linux系统。如果安装系统的时候用的是最小安装等原因,可能就不存在这些库。
- 执行两个查询命令看是否存在依赖库:
rpm -qa|grep libaio |
- 如果不存在则需要安装:
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 |
准备安装包方法 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 |
注意:
安装 server 会比较慢;
- 如果前面第 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 |
- 关闭服务
systemctl stop mysqld.service |
- 查看服务状态
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) |
7.5.9. 修改字符集
- 输入以下语句可以发现数据库和服务端的默认字符都是latin1,如果不修改容易出现乱码:
show variables like 'character%'; |
- 输入 “vim /etc/my.cnf “ 或用Xftp打开 “/etc/my.cnf “ 文件进行编辑,在最后加上
character_set_server=utf8 |
- 重启MySQL服务
systemctl restart mysqld |
- 重新连入数据库后修改数据库的字符集(其中mydb为数据库名)
alter database mydb character set 'utf8'; |
- 修改数据库表的字符集(其中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 |
- 重启网卡
- nmcli c reload ens33
- nmcli c up ens33
7.8 防火墙
# 无法访问说明端口80未开放 |