权限
xx.sh没有权限
授权
网络
查看端口占用情况
端口转发
查看路由表
删除路由表规则
添加路由规则
10.1.189.0
表示目标网络 255.255.255.0
表示掩码 10.160.12.254
表示网关 eth1
表示网口
磁盘
查看磁盘空间
查看innode空间
- 在Linux中,每个文件不管大小,都会对应一个
innode
,它是专门用来保存文件属性、权限和指针(指向block)的; block
用于存放文件的实际数据; innode
与block
,任意一个满了,都会导致磁盘空间不足
的错误
调整磁盘大小
- 将/home的磁盘划归到/root目录去,以/home有380G为例
性能
内存管理:
进程信息
查看进程资源
工具
查找
vim编辑器
返回之前的目录
安装包软件
RPM
RedHat package manage
的简写, - linux的一种软件包,软件包以
.rpm
结尾,安装语法: rpm -ivh xxx.rpm
, 卸载语法: rpm -e xxx
- rpm安装的缺点是 文件的关联性太大,有时候装一个软件要安装其他很多的软件包,很麻烦;
- 本质上是一种包
RPM的机制原理
- RPM 包管理器使用一个数据库来记录系统中安装的所有软件包的信息。这个数据库通常位于
/var/lib/rpm
目录下。数据库记录了每个软件包的安装路径、文件列表、依赖关系等信息,方便用户查询和管理软件包。 - RPM 包中包含一组脚本,这些脚本在安装、卸载和升级过程中执行。常见的脚本包括:
- %pre: 在安装前执行的脚本。
- %post: 在安装后执行的脚本。
- %preun: 在卸载前执行的脚本。
- %postun: 在卸载后执行的脚本。
- %triggerin: 在其他包安装时触发的脚本。
- %triggerun: 在其他包卸载时触发的脚本。
- %triggerpostun: 在其他包卸载后触发的脚本
RPM 包的安装过程
- 下载和验证 RPM 包
用户从可信的源下载 RPM 包。使用 rpm -K 命令验证 RPM 包的完整性和签名。
- 解析元数据
RPM 包管理器解析 RPM 包中的元数据信息,提取软件包的名称、版本、依赖关系等信息。
- 检查依赖关系
RPM 包管理器检查系统中是否已经安装了所有必需的依赖项。如果依赖项缺失,RPM 包管理器会提示用户解决依赖关系。
- 执行预安装脚本
如果 RPM 包中包含 %pre 脚本,RPM 包管理器会在安装前执行这些脚本。
- 解压和安装文件
RPM 包管理器解压 RPM 包中的文件,并将它们安装到指定的路径。
- 执行安装后脚本
如果 RPM 包中包含 %post 脚本,RPM 包管理器会在安装后执行这些脚本。
- 更新数据库
RPM 包管理器将新安装的软件包信息记录到数据库中,以便后续查询和管理
RPM包的卸载过程
- 解析元数据
RPM 包管理器解析 RPM 包中的元数据信息,提取软件包的名称、版本、文件列表等信息。22
- 执行预卸载脚本
如果 RPM 包中包含 %preun 脚本,RPM 包管理器会在卸载前执行这些脚本。2
- 删除文件
RPM 包管理器删除软件包安装的文件和目录。22
- 执行卸载后脚本
如果 RPM 包中包含 %postun 脚本,RPM 包管理器会在卸载后执行这些脚本。2
- 更新数据库
RPM 包管理器从数据库中移除已卸载的软件包信息
RPM安装的本质
- RPM 包中包含的是已经编译好的二进制文件,而不是源代码,安装过程快捷更多。
- 脚本的作用,是为了解决依赖关系,或者 移动编译好的二进制文件到指定位置。
- 本质上是预编译安装。
源代码安装过程(编译)
- 区别于上方的预编译安装过程,源代码安装过程是编译安装。
- 下载源代码包:用户从软件的官方网站或可信的源下载源代码包(通常是 .tar.gz 或 .tar.bz2 文件)。
- 解压源代码包:使用 tar 命令解压源代码包。
- 配置编译环境:进入解压后的目录,运行
./configure
命令。./configure 脚本会检查系统的编译环境,并生成 Makefile 文件。 - 编译源代码:运行 make 命令进行编译。编译过程会生成可执行文件和库文件。
- 安装编译结果:运行
make install
命令将编译生成的文件安装到指定的路径。 - 卸载软件:如果需要卸载软件,可以运行
make uninstall
命令(前提是软件的 Makefile 文件中定义了 uninstall 目标)。 make install
的主要作用是将编译生成的可执行文件、库文件、配置文件和文档等安装到系统中指定的位置, 本质上是调用 Makefile 文件中的 install 目标
YUM
Yellow dog Updater Modified
的简写, Yellow Dog
这个名字来源于开发者Michael Lee Yohe
的宠物狗,这只狗是一只黄色的拉布拉多犬。 - 是 CentOS 和 Fedora 中广泛使用的软件包管理工具,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
- 安装语法:
yum install xxx
, 卸载语法: yum remove xxx
- 本质上是一个安装包的软件
YUM关键特性
- yum 不会保留已下载的 RPM 包文件,但是默认会在
/var/cache/yum/x86_64/7/<repository_name>/packages
目录下缓存已安装的 RPM 包;如果缓存被清理过,就无法找到了。没清理过缓存的情况下可以在此寻找rpm包 - 使用
downloadonly
插件,可以用来下载但不安装 RPM 包,这样可以将 RPM 包保留在指定的目录中。yum install yum-plugin-downloadonly
,yum install --downloadonly --downloaddir=/path/to/download/directory package_name
YUM与RPM的对比
- rpm 只能安装已经下载到本地机器上的rpm 包
- yum能在线下载并安装rpm包,能更新系统,且还能自动处理包与包之间的依赖问题
YUM源
- YUM 源是指包含软件包及其元数据的远程或本地存储位置。这些源可以是
HTTP、FTP
服务器,也可以是本地文件系统上的目录 - 每个源都有一个配置文件。 通常位于
/etc/yum.repos.d/
目录下,文件名以 .repo
结尾 - 当 yum 执行命令(如 install、update、remove)时,它会根据配置文件中的信息从指定的仓库中查找和下载软件包。
常见的YUM源及管理
- 官方源:由操作系统发行商提供的默认仓库,如 CentOS 的 Base 和 Extras 仓库。
- 第三方源:由第三方提供的仓库,如
EPEL(Extra Packages for Enterprise Linux)、RPM Fusion
等。 - 本地源:可以在本地文件系统上创建仓库,用于内部软件包的分发和管理。
- 列出所有仓库:
yum repolist
- 刷新仓库缓存:
yum clean all
,yum makecache
- 禁用仓库: 编辑相应的
.repo 文件
,将 enabled 设置为 0
YUM绕过gpk检查
本地yum源搭建过程
- 创建本地目录
- 创建仓库源数据
- 配置yum源
- 刷新YUM缓存
- 测试源是否可用
systemctl执行过程及问题排查
执行机制
- 在
/usr/lib/systemd/system/jenkins.service
服务单元配置文件中,定义了某个服务的启动用户和启动命令。最终通过exec
启动进程。 具体内容可看 /usr/bin/jenkins
启动脚本 - 本质上,就是通过特定用户去执行特定命令,包括命令参数。
- 与直接启动shell脚本的区别,就是 启动用户,与启动命令的环境参数不同。
服务单元配置文件的组成
[Unit]
:描述服务的基本信息,如描述,依赖等。 [Service]
:定义了如何控制这个服务,比如启动命令 (ExecStart)、停止命令 (ExecStop)、重启行为 (Restart) 等 [Install]
:定义了当使用 systemctl enable 命令启用服务时,应该创建哪些符号链接。这决定了服务何时会被启动,例如开机启动。
问题排查思路
- 分为两个维度的错误: 1. 进程启动之前即报错,比如权限问题无法执行(此时无法看到具体的错误原因); 2.程序启动过程中的错误,一般可以通过日志进行处理;
- 启动之前的错误,排查方式不唯一
systemctl status jenkins
查看 - 通过
journalctl -xe
查看, - 通过
journalctl -u jenkins
查看。
木马进程排查方法(pid=18789为例)
- 查看进程的环境变量:
cat /proc/18789/environ
- 查看进程的启动命令:
cat /proc/18789/cmdline
- 查看网络链接:
netstat -tulnp | grep 18789
- 查看打开的文件描述符:
ls -l /proc/18789/fd
- 查看系统日志:
dmesg | grep 18789 或 journalctl -u <service_name> | grep 18789